Testbench 阻塞赋值与非阻塞赋值

来源:互联网 发布:长沙理工大学教务网络 编辑:程序博客网 时间:2024/05/21 22:36

Testbench中阻塞赋值与非阻塞赋值

复制代码
 1 module test(); 2 reg a; 3 reg b; 4 reg c; 5 initial begin 6   a=1'b0; 7   b=1'b0; 8   c=1'b1; 9   10   #1011   a=1'b1;12   b=#5 1'b1;13   c=1'b0;14   //b=#5 1'b0;15   16   #517   a<=1'b0;18   c<=#2 1'b1;19 end20 endmodule
复制代码
B=#5 1b1,使其后时钟推移,相当于#5 B=1'b1

复制代码
 1 module test(); 2 reg a; 3 reg b; 4 reg c; 5 initial begin 6   a=1'b0; 7   b=1'b0; 8   c=1'b1; 9   10   #1011   a=1'b1;12   b<=#5 1'b1;13   c=1'b0;14   //b=#5 1'b0;15   16   #517   a<=1'b0;18   c<=#2 1'b1;19 end20 endmodule
复制代码
b<=#5 1'b1;只是本句延迟5单位,其后语句不受影响

复制代码
 1 module test(); 2 reg a; 3 reg b; 4 reg c; 5 initial  6 begin 7   a=1'b0; 8   b=1'b0; 9   c=1'b1;10   11   #1012   a=1'b1;13   b<=#5 1'b1;14   c=1'b0;15   b=#5 1'b0;16   17   #518   a<=1'b0;19   c<=#2 1'b1;20 end21 endmodule
复制代码
在同一时刻有<=和=,那么<=赋值生效,同时,电路时刻根据=往后推若干单位

以上三个例子都是在说明,对于内延时,<=对其后语句没有影响,而=使其后语句延迟若干个单位。

复制代码
 1 `timescale 10ns/ 1ns 2 module test(); 3 reg a; 4 reg b; 5 reg c; 6 reg d; 7 initial begin 8   a<=1; 9   c<=1;10 end11 initial begin12   #5 a=0;13   b=a;14 end15 initial begin16   #5 c<=0;17   d<=c;18 end19 endmodule
复制代码
级联D触发器模型

此时,不同的initial模块都在0时刻激活。在第一个initial语句,在时刻0,a和c均被赋值1,在第二个initial语句中,在时刻5,a被阻塞赋值0,在同一时刻,b被赋值a。而在第三个initial语句中,同样在时刻5 c被非阻塞赋值赋值0,在同一时刻d被非阻塞性赋值为之前c的值。

0 0
原创粉丝点击