verilog 检测上升沿和下降沿的一种方法

2019-07-16 00:17发布

各位好,有个问题像大家请教一下,检测上升沿和下降沿的 ,当检测到上升沿时


out 输出1,检测到下降沿时out 输出0,用的以下的代码,
但是用逻辑分析仪查看波形如下,out 输出1延迟了两个时钟周期20ns,请问下有


没有好的代码方法让这个延迟时间短一点,测量了别人的延迟只有5ns




  1. reg sig_in0;
  2. reg sig_in1;

  3. wire rising_edge;
  4. wire falling_edge;

  5. assign  rising_edge  = ~sig_in0 &  sig_in1;
  6. assign  falling_edge =  sig_in0 & ~sig_in1;

  7. always@(posedge clk) begin
  8.       sig_in0 <= sig_in1;
  9.       sig_in1 <= mcu_sig_3 ;
  10. end

  11. always @(posedge clk)  begin
  12.        if( falling_edge_3)
  13.            out <= 0;         
  14.         else if(rising_edge_3)
  15.            out <= 1;   
  16. end
复制代码



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
glace12123
2019-07-16 03:14
你的比较方法不对,这种边沿检测法,用的是时序电路,最小时间当然是1个时钟周期,你说的5ns,估计是组合逻辑的延时吧,这是不能比较的。
比如
always @(posedge  mcu_sig_3 or negedge rst_n)
begin
   if(!rst_n)
      out <= 0;
   else
      out <= 1;
end

这个从判断mcu_sig_3上升沿,到out输出,就快, 几ns而已,就是一个选择器的输出延时而已。。。。但这种方法没有意思,FPGA设计的边沿判断,都是采用2级寄存器打拍的方法,只要系统设计合理,不在乎那两个时钟周期。

一周热门 更多>