当前位置:   article > 正文

Verilog中两级D触发器的代码实现

Verilog中两级D触发器的代码实现

按照两级 D 触发器的模型进行时序分析,具体可以分析在同一时刻两个 D 触发器输出的数据有何不同,其 RTL 图如下:

代码如下:

(CSDN代码块不支持Verilog,代码复制到notepad++编辑器中,语言选择Verilog,看得更清楚)

  1. module top(d, clk, q, q1) ;
  2. input d ;
  3. input clk ;
  4. output reg q ;
  5. output reg q1 ;
  6. always @(posedge clk)
  7. begin
  8. q <= d ;
  9. end
  10. always @(posedge clk)
  11. begin
  12. q1 <= q ;
  13. end
  14. endmodule

激励文件如下:

  1. `timescale 1 ns/1 ns
  2. module top_tb() ;
  3. reg d ;
  4. reg clk ;
  5. wire q ;
  6. wire q1 ;
  7. initial
  8. begin
  9. d = 0 ;
  10. clk = 0 ;
  11. forever
  12. begin
  13. #({$random}%100)
  14. d = ~d ;
  15. end
  16. end
  17. always #10 clk = ~clk ;
  18. top
  19. t0(.d(d),.clk(clk),.q(q),.q1(q1)) ;
  20. endmodule

仿真结果如下,可以看到 t0 时刻,d 为 0,q 输出为 0,t1 时刻,q 随着 d 的数据变化而变化,而此时钟跳变之前 q 的值仍为 0,那么 q1 的值仍为 0,t2 时刻,时钟跳变前 q 的值为 1,则 q1 的值相应为 1,q1 相对于 q 落后一个周期。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/677044
推荐阅读
相关标签
  

闽ICP备14008679号