verilog问题,能解释下为啥是这个答案吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog问题,能解释下为啥是这个答案吗相关的知识,希望对你有一定的参考价值。
在下一个程序段中,当ADDRESS的值等于5'b0X000时,问casex执行完后A和B的值是多少。
A=0;
B=0;
casex(ADDRESS)
5'b00???: A=1;
5'b01???: B=1;
5'b10?00,5'b11?00:
begin
A=1;
B=1;
end
endcase
标准答案: A=1 and B=0;
所以5‘b00???是满足5’b0x000的
因为这里‘x’和‘?’ 一样会被看成是任意满足的数值。
如果在实际电路里面这种语义的东西是综合不出来的。所以请尽量避免进到casex()的信号是带有x数值的信号。追问
(5‘b00???是满足5’b0x000 )?那(5'b01???不满足5’b0x000吗)
0和x匹配,1和x就不匹配了?
顺序执行的意思就是匹配完了第一个就不会匹配第二个了。否则也没有parallel_case的说法了。
参考技术A 在casez语句中,如果分支表达式某些位的值为高阻z,那么对这些位的比较就会忽略,不予考虑,而只关注其他位的比较结果。在casex语句中,则把这种处理方式进一步扩展到对x的处理,即如果比较双方有一方的某些位的值是z或x,那么这些位的比较就不予考虑。
题中5‘b0X000的X不考虑,所以与之匹配的是5’b00???。A的值为1,B的值不变 参考技术B case语句条件互斥不需要考虑优先级,但是casex是有优先级的,上面的优先级高所以答案就是你看到的了。。
verilog: 看代码时遇一问题:把两个12位的数扩展成13位相加,为啥在前面补最高位,不应该补0吗?
默认的reg类型是unsigned。所以需要程序员自己判断这个变量是不是有可能是负数。有可能的话就需要做符号扩展。就是你看见的东西。如果声明成signed reg的话,就不需要做扩展了,只需要保证被赋值的变量位数够用就行了。追问
如果原来的符号位为1,那么数不是变了吗?如1_1011(-11)变成11_1011(-27)
追答你写的数都是-5. 取反加一。
追问也就是说我们处理的数据都是以补码形式表示的
参考技术A 这样应该是减法吧,变成补码相加的 参考技术B 是不是 有符号位的加法,最高位可能代表符号吧?最好贴出上下文看看。追问
如果原来的符号位为1,那么数不是变了吗?如1_1011(-11)变成11_1011(-27)
追答关键代码贴出来看看啊,否则怎么帮你分析?
以上是关于verilog问题,能解释下为啥是这个答案吗的主要内容,如果未能解决你的问题,请参考以下文章
你能解释一下为啥 DirectoryInfo.GetFiles 会产生这个 IOException 吗?
verilog: 看代码时遇一问题:把两个12位的数扩展成13位相加,为啥在前面补最高位,不应该补0吗?
verilog中if else中能套if else吗,有啥错误啊,为啥??? case中能套if else吗 case中能套case吗