请verilog高手指点一下!

来源:百度知道 编辑:UC知道 时间:2024/05/01 16:58:17
(1)当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: A=1:
begin
A=1;
B=1;
end
endcase
书上答案:A=1 and B=0 为什么是这个答案啊,非常不理解。请说详细点!
(2)设计状态机的时候必须要有parameter项吗?假设我要设计一个状态机,
那么参数定义的时候应该想到考虑到那些东西呢?
最好详细点,谢谢!(答案好了多给分)
没有打错。这是夏老师的书上的一个练习题。 CASE语句不是并行的吗?
他怎么就执行A=1呢
哥哥们,回答详细点啊。我可以+分啊

(1)当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: A=1:
begin
A=1;
B=1;
end
endcase
书上答案:A=1 and B=0 为什么是这个答案啊,非常不理解。请说详细点!
我来补充一下,case语句确实是并行的,但具体执行的时候是一个一个语句扫描的,也就有点像if elseif。。。。扫描到了一个符合的,就执行,然后就跳出。所以具体在电路设计的时候,一般不允许这么写的,里面所有的case语句都要互斥,然后有一个default,上面这个例子只是做联系么,这个有点像多路器,想想具体的电路就知道了

(2)设计状态机的时候必须要有parameter项吗?假设我要设计一个状态机,
那么参数定义的时候应该想到考虑到那些东西呢?
parameter就是一个宏定义,用起来方便,跟用define来做一样的,为的就是增加RTL代码的可读性。
考虑的东西么,你状态机的状态的数量,用一个有意义的名字在定义,这些东西全是为了增加可读性。
谢谢,有问题在联系哦~~~~~

当然是A=1,B=0啊。当ADDRESS为5’b0X000时执行5'b00???: A=1;然后就结束casex,B的值没有变还是初始值0,A的值则变为1
CASEX有优先级啊,它先找到5'b00???: 符合5’b0X000当然就执行 A=1啊。

这个是对的,当casex分支选项命中,case语句立即退出

你没打错吧?