verilog赋值原则之阻塞赋值与非阻塞赋值

更新时间:2023-07-16 21:42:04 阅读: 评论:0

verilog赋值原则之阻塞赋值与⾮阻塞赋值
mac无法开机⼀. 阻塞赋值与⾮阻塞赋值的区别
阻塞赋值(Blocking)符号为“ = ”,如:b = a ;
可以认为是只有⼀个步骤的操作,计算RHS(等号右边)并更新LHS(等号左边),和C语⾔的赋值很类似。其中“阻塞”⼆字的意思是在同⼀个块语句中,后⾯的赋值语句是在前⼀个语句赋值结束后才开始赋值的。
个人分析报告
⾮阻塞赋值(Non_blocking)符号为“ <= ”,如:b <= a ;
当⼀个块语句中有多条赋值语句时,同时计算RHS,计算完成后同时更新LHS。
挑豆的意思举⼀个例⼦:左侧腰疼
`timescale 1ns/1ns
module blocking ();
reg[1:0] a,b,c;
归脾丸的副作用与禁忌
initial begin
a = 2'd1;
b = 2'd2;
c = 2'd3;
#10
小店村a = 2'd0;
b = a;
c = b;
$display("a=%d b=%d c=%d ",a,b,c);
end
endmodule
运⾏结果为:
自信的英语
穿城大饼
若将上述代码的阻塞赋值都改为⾮阻塞赋值,则运⾏结果为:
⼆. 赋值原则
1. ⾮阻塞赋值只能⽤于寄存器型变量,只能在initial块和always块中使⽤。阻塞赋值既可以⽤于寄存器型变量,也可以⽤于线⽹型变量。
2. 通常在设计可综合的RTL代码时,描述组合逻辑⽤阻塞赋值,描述时序逻辑⽤⾮阻塞赋值。
3. 在同⼀个块语句中描述组合逻辑和时序逻辑的混合逻辑时,⽤⾮阻塞赋值。
4. 尽量不要在同⼀个always块中同时使⽤阻塞赋值和⾮阻塞赋值。
5. 不能在多个always块中对同⼀个变量进⾏赋值(如果⽤两个always块对同⼀个变量赋值,⽆论其中经过了怎样的条件判断,最终都相当于将两个触发信号连在同⼀个寄存器的CLK端,这显然不合符数
字逻辑电路的规则,这样的代码在综合时会报错)。

本文发布于:2023-07-16 21:42:04,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1100313.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:赋值   阻塞   逻辑   计算
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图