用移位寄存器实现边沿检测(功能仿真及ISE综合)

举报
李锐博恩 发表于 2021/07/15 08:12:34 2021/07/15
【摘要】 目录 边沿检测 这是如何实现的呢? 下面给出Verilog HDL代码: 给出测试代码: 在Modelsim进行功能仿真: ISE中进行综合得到RTL Schematic: 边沿检测 顾名思义,就是检测一个信号的边沿,当信号上升沿或下降沿到来时,获取一个脉冲信号。 时序图如下图: 这是如何实现的呢? 下面给出分析过程: 如下图: d0为输入...

目录

边沿检测

这是如何实现的呢?

下面给出Verilog HDL代码:

给出测试代码:

在Modelsim进行功能仿真:

ISE中进行综合得到RTL Schematic:


边沿检测

顾名思义,就是检测一个信号的边沿,当信号上升沿或下降沿到来时,获取一个脉冲信号。

时序图如下图:

这是如何实现的呢?

下面给出分析过程:

如下图:

d0为输入信号D延迟1拍得到的信号,同理d2是输入信号D延迟2拍得到的信号,上图同时给出了d0和D的取反信号。

可以发现:

原始信号与延迟一拍的信号 d0 的反向信号相与,就是上升沿脉冲;

而原始信号取反,然后与延迟一拍信号d0相与就是下降沿脉冲。

如果担心采样不稳定,可以利用延迟两拍的 d1 信号进行相 与。如果担心不定态,还可以将脉冲信号进行锁存。

下面给出Verilog HDL代码:


  
  1. //脉冲检测
  2. module dff(clk, D, reset, D_falling_edge, D_rising_edge);
  3. input clk;
  4. input D;
  5. input reset;
  6. output D_rising_edge,D_falling_edge;
  7. reg d0;
  8. reg d1;
  9. reg Q;
  10. always @(posedge clk or negedge reset)
  11. begin
  12. if(!reset)
  13. begin
  14. d0 <= 1'b0;
  15. d1 <= 1'b0;
  16. Q <= 1'b0;
  17. end
  18. else
  19. begin
  20. d0 <= D;
  21. d1 <= d0;
  22. Q <= d1;
  23. end
  24. end
  25. assign D_falling_edge = d0 & (~D);
  26. assign D_rising_edge = (~d0) & D;
  27. endmodule

给出测试代码:


  
  1. //测试文件
  2. module dff_tb;
  3. reg D;
  4. reg clk;
  5. reg reset;
  6. wire D_falling_edge, D_rising_edge;
  7. always
  8. begin
  9. #10 clk = ~clk;
  10. end
  11. initial
  12. begin
  13. clk = 1'b0;
  14. reset = 1'b0;
  15. D = 1'b0;
  16. #30 reset = 1'b1;
  17. #30 D = 1'b1;
  18. #80 D = 1'b0;
  19. end
  20. dff u1(.clk(clk), .reset(reset), .D(D), .D_falling_edge(D_falling_edge), .D_rising_edge(D_rising_edge));
  21. endmodule

在Modelsim进行功能仿真:

ISE中进行综合得到RTL Schematic:

这个原理图我们是可以看懂的,RTL Schematic就是寄存器传输级电路原理图,它是由各门电路组成,通过看RTL图可以初步验证自己的HDL描述是否正确。

 

参考文献:http://www.elecfans.com/emb/fpga/20180415662221.html

 

 

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/81486321

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。