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   #10
11   a=1'b1;
12   b=#5 1'b1;
13   c=1'b0;
14   //b=#5 1'b0;
15   
16   #5
17   a<=1'b0;
18   c<=#2 1'b1;
19 end
20 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   #10
11   a=1'b1;
12   b<=#5 1'b1;
13   c=1'b0;
14   //b=#5 1'b0;
15   
16   #5
17   a<=1'b0;
18   c<=#2 1'b1;
19 end
20 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   #10
12   a=1'b1;
13   b<=#5 1'b1;
14   c=1'b0;
15   b=#5 1'b0;
16   
17   #5
18   a<=1'b0;
19   c<=#2 1'b1;
20 end
21 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 end
11 initial begin
12   #5 a=0;
13   b=a;
14 end
15 initial begin
16   #5 c<=0;
17   d<=c;
18 end
19 endmodule
级联D触发器模型

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

转载于:https://www.cnblogs.com/fkl523/p/4029467.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值