用移位寄存器实现边沿检测的技巧

网友投稿 106 2024-03-07


本文记录一下关于用移位寄存器实现边沿检测的技巧。要学会硬件思维式的“模块式”读写代码,那么请多看别人的代码,并用ISE或者VIVADO综合出来看看。

用移位寄存器实现边沿检测的技巧

边沿检测

边沿检测,顾名思义,就是检查信号的边沿,当信号的上升沿或者下降沿到来时,获取一个脉冲信号,时序图如下所示:

上图的检测信号同时输出上升沿检测和下降沿检测。那么这个波形怎么来的呢,我们来看看下面几组波形:

可以发现:

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

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

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

多级触发器的代码如下所示:

module DFF_N #(parameter N=1)(

2 input clk,

3 input reset,

4 input [N-1:0] D,

5 output [N-1:0] D_rising_edge, //上升沿检测

6 output [N-1:0] D_falling_edge //下降沿检测

7 );

8 reg [N-1:0]d0;

9 reg [N-1:0]d1;

10 reg [N-1:0]Q;

11 always@(posedge clk or negedge reset)

12 if(!reset)begin

13 d0 <= 0;

14 d1 <= 0;

15 Q <= 0;

16 end else begin

17 d0 <= D;

18 d1 <= d0;

19 Q <= d1;

20 end

21

22 assign D_rising_edge = ~d0 & D; //关键

23 assign D_falling_edge= d0 & ~D; //关键

24 endmodule

综合得到的电路如下所示:

这个电路把代码中的Q触发器优化掉了。两个输出信号D_rising_edge 、D_falling_edge分别输出上升沿检测信号脉冲和下降沿检测信号脉冲。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:智能扫地机器人好用吗_智能机器人吸尘器优势介绍
下一篇:便携式农药残留检测仪的原理及特点是什么
相关文章

 发表评论

暂时没有评论,来抢沙发吧~