把变量赋值给寄存器_阻塞赋值和非阻塞赋值的区别与记忆

罗成:Verilog语法之六:阻塞赋值与非阻塞赋值​zhuanlan.zhihu.com

通过上面的文章先了解下,阻塞赋值和非阻塞赋值的区别。

b<=a;
c<=b;
非阻塞赋值
b=a;
c=b;
阻塞赋值

阻塞赋值中阻塞的意思是要等一会儿,阻塞了,先让赋值变量得到一个新值,然后阻塞赋值得到的是赋值变量刚刚得到的新值。

非阻塞赋值中非阻塞的意思是要直接传输,不等。非阻塞赋值得到的是赋值变量的旧值,原来的那个值。

现在有一个问题,对于上面的两种代码,那个电路容易实现呢。

我们可能会想,阻塞赋值,有阻塞应该会比较难实现,答案不对。阻塞赋值赋予的是变量新值,所以其得到的值应该是和原变量的值一模一样,随着原变量变化而变化,所以阻塞赋值的实现等于一根导线。b 和 c相对于一根导线。

fb678940416f726995a6b67f404b2e24.png
阻塞

对于非阻塞赋值,其虽然是非阻塞的,但是其代码要去实现非阻塞的效果确实难的,需要中间加个寄存器,隔开两个变量,才能实现非阻塞赋值得到的是赋值变量的旧值。

9e8af962c83b2959a9af4eca7ef82e33.png
非阻塞

这里的b和c之间加了一个寄存器。

到这里你大概就明白了为什么时序电路需要非阻塞赋值,而组合电路是阻塞赋值。

记忆:

= 阻塞赋值

<= 非阻塞赋值

你可以把<想象成一个寄存器,=想象成一根导线。

在你写代码的时候,就不要从文字上理解,直接对于电路,管他什么阻塞不阻塞的文绉绉的表达。(为什么呢?因为这里似乎存在一个否定否定的逻辑(阻塞和非),人脑在理解这种双重否定的时候就比较困难,所以不能从复杂的文字去理解一个本来就很简单的东西)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值