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