方波中的毛刺



在FPGA設計中,經常要對外部輸入的信號捕捉上升沿。

在某些設計中,外部輸入信號為方波信號,由比較器輸出。

 

如上圖,比較器輸出方波后,電路設計欠佳,產生抖動,下降沿產生毛刺,如果FPGA邏輯設計不好,容易在方波下降沿時再次捕捉到上升沿。

在電路無法更改的情況下,只能更改FPGA邏輯設計,過濾毛刺。

在捕捉邊沿中通常使用以下邏輯:

時序邏輯:

always@(posedge sys_clk)

begin

   reg1 <= rising_in;

   reg2 <= reg1;

end 

組合邏輯:

assign rising_cap = reg1 & (~reg2);

方案一:

通過降頻采集外部輸入信號:

always@(posedge sys_clk)

begin

  if(div_clk)

  begin

    reg1 <= rising_in;

    reg2 <= reg1;

  end

end 

將sys_clk分頻到div_clk,注意分頻時要滿足采樣定理。通過降頻,過濾毛刺。

方案二:

在某些設計中,由於使用方波上升沿進行完全同步,而且整個系統使用sys_clk,所以不能進行分頻設計。

對信號進行多次采樣,過濾毛刺。

always@(posedge sys_clk)

begin

   reg1 <= rising_in;

   reg2 <= reg1;

   reg3 <= reg2;

   reg4 <= reg3;

   reg5 <= reg4;

   reg6 <= reg5;

   reg7 <= reg6;

   reg8 <= reg7;

end 

組合邏輯:

assign rising_cap = reg1 & reg2 & reg3 & reg4 & (~& reg5)

                              & (~& reg6) & (~& reg7) & (~& reg8);

在方波上升沿很陡的情況下,可使用上述方式,方波上升沿的上升時間可由電路電阻改變。


版權所有權歸卿萃科技 杭州FPGA事業部,轉載請注明出處

作者:杭州卿萃科技ALIFPGA

原文地址:杭州卿萃科技FPGA極客空間 微信公眾號

掃描二維碼關注杭州卿萃科技FPGA極客空間


 


免責聲明!

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



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