原来的文章名称是这样的:把变量赋值给寄存器_阻塞赋值和非阻塞赋值的区别与记忆,刚好也解答了我的问题
通过上面的文章先了解下,阻塞赋值和非阻塞赋值的区别。
b<=a;
c<=b;
非阻塞赋值
b=a;
c=b;
阻塞赋值
阻塞赋值中阻塞的意思是要等一会儿,阻塞了,先让赋值变量得到一个新值,然后阻塞赋值得到的是赋值变量刚刚得到的新值。
非阻塞赋值中非阻塞的意思是要直接传输,不等。非阻塞赋值得到的是赋值变量的旧值,原来的那个值。
现在有一个问题,对于上面的两种代码,那个电路容易实现呢。
我们可能会想,阻塞赋值,有阻塞应该会比较难实现,答案不对。阻塞赋值赋予的是变量新值,所以其得到的值应该是和原变量的值一模一样,随着原变量变化而变化,所以阻塞赋值的实现等于一根导线。b 和 c相对于一根导线。
对于非阻塞赋值,其虽然是非阻塞的,但是其代码要去实现非阻塞的效果确实难的,需要中间加个寄存器,隔开两个变量,才能实现非阻塞赋值得到的是赋值变量的旧值。
非阻塞
这里的b和c之间加了一个寄存器。
到这里你大概就明白了为什么时序电路需要非阻塞赋值,而组合电路是阻塞赋值。
记忆:
= 阻塞赋值
<= 非阻塞赋值
你可以把<想象成一个寄存器,=想象成一根导线。
在你写代码的时候,就不要从文字上理解,直接对于电路,管他什么阻塞不阻塞的文绉绉的表达。(为什么呢?因为这里似乎存在一个否定否定的逻辑(阻塞和非),人脑在理解这种双重否定的时候就比较困难,所以不能从复杂的文字去理解一个本来就很简单的东西)
————————————————
版权声明:本文为优快云博主「talich」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/weixin_28687807/article/details/112655650