阻塞和非阻塞赋值语句的用法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
阻塞式赋值
一种理想化的数据传输,是立即发生的, 不存在任何延时行为。 在同一过程结构中,允许对同一目标变量 多次赋值,即对于同一目标变量允许有多 个驱动源。
具有顺序赋值的特点,即过程中的阻塞式 赋值语句的先后顺序位置将直接影响最后 的结果或综合结果。
5 非阻塞赋值语句(相当于VHDL中的信号赋值)
例1和例2的RTL Viewer
例1和例2的仿真波形
非阻塞赋值语句也是出现在initial和always块语 句中,赋值符号是“<=”,格式为 赋值变量 <= 表达式;
在非阻塞赋值语句中,赋值号“<=”左边的赋值 变量也必须是reg型变量,其值不象在过程赋值 语句那样,语句结束时即刻得到,而在该块语句 结束才可得到。
建议:在时序逻辑电路的设计中,采用非阻塞型 赋值语句
4 过程赋值语句(相当于VHDL中的变量赋值)
过程赋值语句出现在initial和always块语句中,赋值 符号是“=”,格式为: 赋值变量 = 表达式; 在过程赋值语句中,赋值号“=”左边的赋值变量必 须是reg(寄存器)型变量,其值在该语句结束即可 得到。如果一个块语句中包含若干条过程赋值语句, 那么这些过程赋值语句是按照语句编写的顺序由上 至下一条一条地执行,前面的语句没有完成,后面 的语句就不能执行,就象被阻塞了一样。因此,过 程赋值语句也称为阻塞赋值语句。
always @(posedge clock)
m = 3;
n = 75;
n <= m;
r = n; 语句执行结束后,r的值是75,而不是3,因为第3行 是非阻塞赋值语句“n <= m”,该语句要等到本块语 句结束时,n的值才能改变。
2016/12/5 5
非阻塞式赋值语句与阻塞式赋值语句
例 1: module DDF3(clk,D,Q); input clk,D; output reg Q; reg a,b; always@(posedge clk) begin a<=D; b<=a; Q<=b; end endmodule 例 2: module DFF3(clk,D,Q); input clk,D; output reg Q; reg a,b; always@(posedge clk) begin a=D; b=a; Q=b; end endmodule
非来自百度文库塞式赋值
在过程语句中,比较接近真实的电路赋值 和输出。 有一个特殊的延时操作,而且在赋值过程 中不影响其它同类语句的赋值操作。 同阻塞式赋值一样,允许对同一目标信号 多次赋值或驱动。Verilog规定,被赋值 的目标变量接受最接近过程结束的那一个 驱动源的数据。
例如,在下面的块语句中包含4条赋值语句