verilog 檢測上升沿和下降沿的一種方法


                各位好,有個問題像大家請教一下,檢測上升沿和下降沿的 ,當檢測到上升沿時

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

復制代碼

你的比較方法不對,這種邊沿檢測法,用的是時序電路,最小時間當然是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級寄存器打拍的方法,只要系統設計合理,不在乎那兩個時鍾周期。

如果想使用邊沿檢測法做你如上所述的輸出,並且想減小輸出延時,只能提高檢測時鍾頻率!

你的延時肯定是兩個時鍾周期啊,產生rising_edge或者falling_edge需要一個時鍾周期,檢測它們然后產生輸出由需要一個周期。

posedge 和 negedge  本身就是類似邊沿檢測的功能

規范設計時,還得用時鍾采樣打拍

學習學習

受教育了。

常用的方法,哈哈                   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM