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 落后一个周期。

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

king_machine design

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

举报

选择你想要举报的内容(必选)
  • 内容涉黄
  • 政治相关
  • 内容抄袭
  • 涉嫌广告
  • 内容侵权
  • 侮辱谩骂
  • 样式问题
  • 其他
点击体验
DeepSeekR1满血版
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回顶部

登录后您可以享受以下权益:

×