可以通過以下幾種方法來消除毛刺:
1、輸出加 D觸發器
這是一種比較傳統的去除毛刺的方法。原理就是用一個 D 觸發器去讀帶毛刺的信號, 利用 D 觸發器對輸入信號的毛刺不敏感的特點,去除信號中的毛刺。在實際中,對于簡單 的邏輯電路,尤其是對信號中發生在非時鐘跳變沿的毛刺信號,去除效果非常的明顯。
但是如果毛刺信號發生在時鐘信號的跳變沿,D 觸發器的效果就沒有那么明顯了(加 D 觸發器以后的輸出 q,仍含有毛刺)。另外,D 觸發器的使用還會給系統帶來一定的延時, 特別是在系統級數較多的情況下,延時也將變大,因此在使用 D 觸發器去除毛刺的時候, 一定要視情況而定,并不是所有的毛刺都可以用 D 觸發器來消除。
2、信號同步法 設計數字電路的時候采用同步電路可以大大減少毛刺。由于大多數毛刺都比較短(大
概幾個納秒),只要毛刺不出現在時鐘跳變沿,毛刺信號就不會對系統造成危害了。因此一 般認為,只要在整個系統中使用同一個時鐘就可以實現系統同步。但是,時鐘信號在 FPGA 器件中傳遞時是有延時的,我們無法預知時鐘跳變沿的精確位置。也就是說我們無法保證在 某個時鐘的跳變沿讀取的數據是一個穩定的數據,尤其是在多級設計中,這個問題就更加突 出。因此,做到真正的"同步"就是去除毛刺信號的關鍵問題。所以同步的關鍵就是保證在時 鐘的跳變沿讀取的數據是穩定的數據而不是毛刺數據。以下為兩種具體的信號同步方法。
(1)信號延時同步法 信號延時法,它的原理就是在兩級信號傳遞的過程中加一個延時環節,從而保證在下一
個模塊中讀取到的數據是穩定后的數據,即不包含毛刺信號。這里所指的信號延時可以是數 據信號的延時,也可以是時鐘信號的延時。
(2)狀態機控制 使用狀態機也可以實現信號的同步和消除毛刺的目的。在數據傳遞比較復雜的多模塊系
統中,由狀態機在特定的時刻分別發出控制特定模塊的時鐘信號或者模塊使能信號,狀態機 的循環控制就可以使得整個系統協調運作,同時減少毛刺信號。那么只要我們在狀態機的觸 發時間上加以處理,就可以避免競爭冒險,從而抑制毛刺的產生。
3、格雷碼計數器
對于一般的二進制或十進制計數器,在計數時,將有多位信號同時跳變。例如一個 3bit
二進制計數器,由’111’轉換為’000’時,必將產生毛刺。此時,使用格雷碼計數器將避免毛