FPGA器件的競(jìng)爭(zhēng)與冒險(xiǎn)現(xiàn)象及消除方法
摘 要:現(xiàn)場(chǎng)可編程門陣列(FPGA)由于其內(nèi)部構(gòu)成,容易引起競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象,從而使電路工作的穩(wěn)定性大受影響,電路也容易產(chǎn)生誤動(dòng)作,以致產(chǎn)生意想不到的后果。本文詳細(xì)介紹了冒險(xiǎn)現(xiàn)象的產(chǎn)生,并結(jié)合實(shí)例介紹了消除競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象的各種方法。這些方法主要通過改變?cè)O(shè)計(jì),破壞毛刺產(chǎn)生的條件來減少毛刺的發(fā)生。他能夠使FPGA設(shè)計(jì)中毛刺的出現(xiàn)幾率減到最小,大大減少了邏輯錯(cuò)誤,加強(qiáng)了電路工作的穩(wěn)定性,有效地抑制了干擾,使設(shè)計(jì)也更加優(yōu)化、合理。
關(guān)鍵詞:FPGA;競(jìng)爭(zhēng)冒險(xiǎn);毛刺;邏輯錯(cuò)誤
在數(shù)字電路設(shè)計(jì)中,經(jīng)常需要考慮競(jìng)爭(zhēng)和冒險(xiǎn)現(xiàn)象帶來的問題。尤其是采用FPGA器件后,這個(gè)問題尤為明顯,為了改善系統(tǒng)性能,加強(qiáng)系統(tǒng)的穩(wěn)定性,有效地抑制干擾,使得設(shè)計(jì)更加優(yōu)化、合理,本文將對(duì)競(jìng)爭(zhēng)與冒險(xiǎn)帶來的問題與消除方法加以詳細(xì)討論。
1 FPGA中的冒險(xiǎn)現(xiàn)象
在使用分立元件設(shè)計(jì)數(shù)字系統(tǒng)時(shí),由于PCB走線時(shí)存在分布電感和電容,所以幾納秒的毛刺將被自然濾除,而在PLD內(nèi)部無分布電感和電容,所以在PLD/FPGA設(shè)計(jì)中,競(jìng)爭(zhēng)和冒險(xiǎn)問題將變得尤為突出,電路工作的穩(wěn)定性也大受影響。
由于信號(hào)在FPGA器件內(nèi)部通過連線和邏輯單元時(shí)都有一定的延時(shí)。延時(shí)的大小與連線的長(zhǎng)短和邏輯單元的數(shù)目有關(guān),同時(shí)還受器件的制造工藝、工作電壓、溫度等條件的影響。另外信號(hào)高低電平的轉(zhuǎn)換也需要一定的過渡時(shí)間。所以多路信號(hào)的電平值發(fā)生變化時(shí),在信號(hào)變化的瞬間,組合邏輯的輸出有先后順序,并不是同時(shí)變化,往往會(huì)出現(xiàn)一些不正確的尖峰信號(hào),這些尖峰信號(hào)稱為“毛刺”。如果一個(gè)組合邏輯電路中有“毛刺“出現(xiàn),就說明該電路存在“冒險(xiǎn)”。
由于無法保證所有連線的長(zhǎng)度一致,所以即使4個(gè)輸入信號(hào)在輸入端同時(shí)變化,但經(jīng)過PLD內(nèi)部的走線到達(dá)或門的時(shí)間也是不一樣的,必然產(chǎn)生毛刺。概括來說,只要輸入信號(hào)同時(shí)變化,經(jīng)過內(nèi)部走線后,組合邏輯必將產(chǎn)生毛刺。如將他們的輸出直接連接到時(shí)鐘輸入端、清零或置位端口,就可能會(huì)導(dǎo)致嚴(yán)重的后果。所以在設(shè)計(jì)電路時(shí)必須檢查設(shè)計(jì)中所有時(shí)鐘、清零和置位等對(duì)毛刺十分敏感的輸入端口,確保輸入不會(huì)含有任何毛刺。
2 毛刺的消除
可以通過改變?cè)O(shè)計(jì),破壞毛刺產(chǎn)生的條件來減少毛刺的發(fā)生。毛刺并不是對(duì)所有的輸入都有危害,對(duì)于D觸發(fā)器的D輸入端,只要毛刺不出現(xiàn)在時(shí)鐘的上升沿并且不滿足數(shù)據(jù)的建立和保持時(shí)間,就不會(huì)對(duì)系統(tǒng)造成危害,因此可認(rèn)為D觸發(fā)器的D輸入端對(duì)毛刺不敏感。根據(jù)這個(gè)特性,應(yīng)當(dāng)在系統(tǒng)中盡可能采用同步電路,因?yàn)橥诫娐沸盘?hào)的變化都發(fā)生在時(shí)鐘沿,只要毛刺不出現(xiàn)在時(shí)鐘的沿口并且不滿足數(shù)據(jù)的建立和保持時(shí)間,就不會(huì)對(duì)系統(tǒng)造成危害。由于毛刺很短,多為幾納秒,基本上都不可能滿足數(shù)據(jù)的建立和保持時(shí)間。
這種方法可以大大減少毛刺,但他并不能完全消除毛刺,必須手工修改電路來去除毛刺。一般,冒險(xiǎn)出現(xiàn)在信號(hào)發(fā)生電平轉(zhuǎn)換的時(shí)刻,即在輸出信號(hào)的建立時(shí)間內(nèi)會(huì)發(fā)生冒險(xiǎn),而在輸出信號(hào)的保持時(shí)間內(nèi)是不會(huì)有毛刺信號(hào)出現(xiàn)的。如果在輸出信號(hào)的保持時(shí)間內(nèi)對(duì)其進(jìn)行“采樣”,就可以消除毛刺信號(hào)的影響。
“采樣”可通過兩種方法實(shí)現(xiàn):一種是在輸出信號(hào)的保持時(shí)間內(nèi),用一定寬度的高電平脈沖與輸出信號(hào)做邏輯“與”運(yùn)算,由此獲取輸出信號(hào)的電平值。
TEST端引出的是一個(gè)帶有毛刺的信號(hào),由于有采樣脈沖SAMPLE的輸入,在SAMPLE為高電平前,輸出端與門關(guān)閉,OUT端沒有輸出。從前面的分析看出,由于毛刺信號(hào)主要存在于輸出信號(hào)的建立時(shí)間內(nèi),所以可通過控制SAMPLE信號(hào)在TEST信號(hào)建立時(shí)間后再開放與門的方法來消除毛刺。從圖4所示仿真圖中可以看出OUT端得到的不帶毛刺的信號(hào)。
上述方法的一個(gè)缺點(diǎn)是必須人為地保證SAMPLE信號(hào)必須在合適的時(shí)間中產(chǎn)生,否則仍不能得到滿意的結(jié)果。另一種實(shí)現(xiàn)方法是可利用D觸發(fā)器的D輸入端對(duì)毛刺信號(hào)不敏感的特點(diǎn),在輸出信號(hào)的保持時(shí)間內(nèi),用D觸發(fā)器讀取組合邏輯的輸出信號(hào),這種方法類似于將異步電路轉(zhuǎn)化為同步電路。圖5給出了應(yīng)用這種方法的電路實(shí)例。
從以上分析看出,通過上述的電路處理可以有效減少毛刺的產(chǎn)生,從而減少邏輯錯(cuò)誤,提高芯片工作的穩(wěn)定性。
3 結(jié) 語
FPGA在數(shù)字電路設(shè)計(jì)中雖功能強(qiáng)大,修改靈活,但內(nèi)部易產(chǎn)生冒險(xiǎn)而出現(xiàn)工作不穩(wěn)定情況,采取以上措施,可有效減少毛刺的產(chǎn)生,從而減少邏輯錯(cuò)誤,大大提高芯片工作的穩(wěn)定性。
來源:零八我的愛0次