zoukankan      html  css  js  c++  java
  • 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的值。

  • 相关阅读:
    使用Twitter异常检测框架遇到的坑
    Python从入门到精通
    Windows中几个内存相当的指标
    Windows应用程序进程级别统一监控实践
    基于时序数据的微内核预警引擎架构设计
    Flink1.4.0连接Kafka0.10.2时遇到的问题
    wait和sleep的区别
    JVM几种垃圾回收器介绍
    二叉树的非递归遍历
    段页式内存管理
  • 原文地址:https://www.cnblogs.com/fkl523/p/4029467.html
Copyright © 2011-2022 走看看