方波中的毛刺

方波中的毛刺


在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極客空間 微信公眾號


分享到:


相關文章: