Verilog阻塞赋值与非阻塞赋值通俗理解

对于阻塞赋值和非阻塞赋值,概念烦人,难记,直接看例子吧,一句话就能搞定(个人理解)随便写一个always块,初始化我就不写了,a,b都为零。
这个是非阻塞赋值(不用管什么名字,知道怎么用就行),一个上升沿之后,a=1,b=0
always@(posedge clk)begin
a <=1;
b <=a;
end
这个是阻塞赋值(不用管什么名字,知道怎么用就行),一个上升沿之后,a=1,b=1
always@(posedge clk)begin
a =1;
b =a;
end
总结 两种情况对赋值常数的没有影响,对赋值变量的会有影响,再具体一些总结:“<=”这种赋值就是看进入always块之前"<="右边是什么值左边就被赋什么值,看第一个例子,第一次进入always之前,a等于零所以b被赋值为零。而“=”赋值,就是看进入always块运算之后是多少,就赋值多少,看第二个例子,进入always之后,a = 1了,所以b = 1。不用去管什么概念,名字,认清楚符号就行了。

举例:
初始值a,b,c为0
always@(posedge clk)begin
a <= 1;
b <= a;
c <= b;
end
第一次进入之前初始值a,b,c为0,第一次进入之后a=1,b=0,c=0;
第二次进入之前a=1,b=0,c=0,第二次赋值a=1,b=1,c=0;
第三次进入之前a=1,b=1,c=0,第三次赋值a=1,b=1,c=1;
看进入always之前的值

初始值a,b,c为0
always@(posedge clk)begin
a = 1;
b = a;
c = b;
end
不看进入之前,直接进入赋值,a = 1 ,运行完之后运行第二个,b = a = 1,c = b =1。
看运算之后的值
这样还不能理解,就写代码写代码写代码,看仿真看仿真看仿真。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值