关于一段verilog组合逻辑代码

2024-12-18 16:48:25
推荐回答(3个)
回答1:

always@(*) begin
addra= address0; //首先赋一个初始值
addrb= address2
if(enter==3||enter==4||enter==5)
addra= address1; //然后根据条件改变这个值即可
else if(enter==6||enter==7||enter==8)
addra= address2;
end
你这个程序有问题,就是会生成锁存器,因为这个enter肯定超过三位了,要不加个default,或者其他地方需要改,提醒一下!

回答2:

always@(*) begin
case(enter)
3,4,5:
begin
addra= address1;
addrb= address2;
end

6,7,8:
begin
addra= address2;
addrb= address2;
end
default:
begin
addra= address0;
addrb= address2;
end
endcase
其实样式无所谓,综合出来的硬件是一样的。

回答3:

一共就
addra= address0;addrb= address2
addra= address1;addrb= address2;
addra= address2;addrb= address2;
这三种情况么 总结一下enter的状态 用if else啊 没看见你enter是怎么来的 只能这么推测, 这是状态机的方法,verilog最常用的方法。