码迷,mamicode.com
首页 > 其他好文 > 详细

Verilog中阻塞(=)与非阻塞语句(<=)

时间:2020-02-03 18:46:05      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:article   多级   --   input   作用   声明   实现   表示   数据   

阻塞赋值语句(=)与非阻塞赋值语句(<=)
区别叙述如下:
       1、在串行语句中,阻塞赋值语句按照排列顺序依次执行;非阻塞赋值语句没有先后之分,并行执行,排在前面语句不影响后面语句(实质是通过每级之间加一个D触发器实现)。
       2、赋值语句执行时,阻塞的先计算右端表达式的值,然后立刻将值赋给左边变量;非阻塞的也是先计算右端表达式的值,但是要等待延时后再将值赋给左边(同样因为D触发器)。文字叙述起来不直观,我们看例子。
例:下面代码实现一个寄存器
**********************************************************
module resist(din,clk,out1,out2,out3);
  input din,clk;
  output out1,out2,out3;
  reg out1,out2,out3;
  always@(posedge clk)   //上升沿触发
    begin
      out1=din;                   // 使用阻塞赋值语句
      out2=out1;
      out3=out2;
    end
endmodule
**********************************************************
测试代码如下:
**********************************************************
module resist_tb;
  reg din,clk;
  wire out1,out2,out3;
  resist U1(din,clk,out1,out2,out3);
  always #100 clk=~clk;    //时钟周期为200
  initial
  begin
    clk=0;              // clk开始为0
    din=1;
    #350 din=0;    // 传递的数据
    #400 din=1;
    #400 din=0;
    #2000 $finish;
  end
endmodule
**********************************************************
仿真wave图像:
       我们从wave图形上看到out1、out2、out3是完全相同的。
所以实际电路是:
明显电路为一寄存器,不过可以同时输出到out1、out2、out3。
而如若将模型中阻塞赋值语句改为非阻塞赋值语句:
out1=din;                          out1<=din; 
out2=out1;      ---->        out2<=out1;
out3=out2;                      out3<=out2;
测试代码不变,仿真后wave图形为:

       我们发现out3落后out2一个时钟周期,out2落后out1一个时钟周期;这正是因为非阻塞赋值语句要等待时钟的效果。具体是在一个上升沿到来时,数据din,out1‘,out2‘(‘表示上个时钟时的数据),数据平行(并行)向右移动,out2得到的并不是当前out1,而是上个时钟D触发器存储out1‘(=d‘),当前out1=d,这样out2要得到din就比out1落后一个时钟周期,同样out3与out2相比,这其中就是由于各个D触发器的作用。
      实际电路即为:
      这两个实质差别就在于非阻塞会引入D触发器,各个数据必须按时钟节拍从左向右传递,而阻塞赋值语句代码从左往右顺序写不会引入多级D触发器。
————————————————
版权声明:本文为CSDN博主「ChunyuY19」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/c_ycy/article/details/53883794

Verilog中阻塞(=)与非阻塞语句(<=)

标签:article   多级   --   input   作用   声明   实现   表示   数据   

原文地址:https://www.cnblogs.com/hegangben/p/12256579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!