寄存器变量为什么不能使用非阻塞赋值

原来的文章名称是这样的:把变量赋值给寄存器_阻塞赋值和非阻塞赋值的区别与记忆,刚好也解答了我的问题
通过上面的文章先了解下,阻塞赋值和非阻塞赋值的区别。
	b<=a;
	c<=b;
	非阻塞赋值
b=a;
		c=b;
		阻塞赋值

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

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

现在有一个问题,对于上面的两种代码,那个电路容易实现呢。
我们可能会想,阻塞赋值,有阻塞应该会比较难实现,答案不对。阻塞赋值赋予的是变量新值,所以其得到的值应该是和原变量的值一模一样,随着原变量变化而变化,所以阻塞赋值的实现等于一根导线。b 和 c相对于一根导线。
在这里插入图片描述

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

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

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

记忆:
= 阻塞赋值

<= 非阻塞赋值

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

在你写代码的时候,就不要从文字上理解,直接对于电路,管他什么阻塞不阻塞的文绉绉的表达。(为什么呢?因为这里似乎存在一个否定否定的逻辑(阻塞和非),人脑在理解这种双重否定的时候就比较困难,所以不能从复杂的文字去理解一个本来就很简单的东西)
————————————————
版权声明:本文为CSDN博主「talich」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_28687807/article/details/112655650

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值