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