上升沿检测系统

时间:2014-02-14 04:21:52

标签: verilog system-verilog

module syncrisedgedetect(input logic sig_a, rst,clk,output logic sig_a_risedge);

  logic sig_a_d1;

  always @(posedge clk or negedge rst)
  begin
    if(!rst)
      sig_a_d1<=1'b0;
    else
      sig_a_d1<=sig_a;
  end

  assign sig_a_risedge=sig_a & !sig_a_d1;

endmodule

嗨,我在一本关于sig_a的上升沿检测的书中遇到了这段代码。 谁能解释一下它的工作原理?

由于

1 个答案:

答案 0 :(得分:5)

这是一个基本的同步边缘检测电路。

在时钟的每个上升沿sig_a对输入clk进行采样。采样值已注册;也就是说,sig_a_d1sig_a延迟一个时钟周期的值。

当输入上升沿时,输出将转到1。对sig_a_risedge的分配是对此负责的。它表示“如果当前值为sig_a并且上一个时钟周期的值为1”,则“{1}}上升优势”。

请注意,只有当输入信号的频率低于时钟频率时,才能正常工作。如果输入在采样时钟的单个时钟周期内全部变为0,则可能会丢失边沿。