永发信息网

关于verilog中,寄存器赋值出现不纯净的跳变

答案:1  悬赏:0  手机版
解决时间 2021-04-06 23:56
  • 提问者网友:王者佥
  • 2021-04-06 04:00
关于verilog中,寄存器赋值出现不纯净的跳变
最佳答案
  • 五星知识达人网友:从此江山别
  • 2021-04-06 05:19
assign语句后的赋值会生成组合逻辑,也就是从b到a会生成一条导线,将他们连接,b的值如果改变,a的值同时也会改变;

a<=b这种赋值方式为“非阻塞赋值”,这种方式是等所在的begin....end块执行完毕后,才会把b的值赋给a,在这之前,a的值仍然保持原值。例如:

假设a中的值为十进制数10,b为15,c为20;

begin
b=a;//b的值立即改变,现在b的值为10
c=b;//c的值立即改变,现在c的值为10
end

但是,以下例子又不同:

假设a中的值为十进制数10,b为15,c为20
begin
b<=a;//b的值不立即改变,现在b的值仍为15
c<=b;//c的值不立即改变,现在c的值仍为20
end

begin块结束后,b被赋给a的值,b为10,c被赋给b的值,c为15。

发现了吗?实际上阻塞赋值生成了一个移位寄存器。追问那出现这样不纯净的跳变是因为什么啊谢谢
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯