數(shù)字電路中的幾個(gè)基本概念
建立時(shí)間和保持時(shí)間
建立時(shí)間(setupTIme)是指在觸發(fā)器的時(shí)鐘信號(hào)上升沿到來以前,數(shù)據(jù)穩(wěn)定不變的時(shí)間,如果建立時(shí)間不夠,數(shù)據(jù)將不能在這個(gè)時(shí)鐘上升沿被打入觸發(fā)器;保持時(shí)間(hold TIme)是指在觸發(fā)器的時(shí)鐘信號(hào)上升沿到來以后,數(shù)據(jù)穩(wěn)定不變的時(shí)間,如果保持時(shí)間不夠,數(shù)據(jù)同樣不能被打入觸發(fā)器。數(shù)據(jù)穩(wěn)定傳輸必須滿足建立和保持時(shí)間的要求。
本文引用地址:http://m.butianyuan.cn/article/201710/365647.htm在設(shè)計(jì)中,當(dāng)然希望建立時(shí)間越短越好,而保持時(shí)間呢,也越短越好。也就是說,最好信號(hào)在時(shí)鐘邊沿到達(dá),而在到達(dá)后,馬上被采用,這樣,理論上效率是最好的。當(dāng)然了,理論而已。
競(jìng)爭(zhēng)和冒險(xiǎn)
PLD內(nèi)部毛刺產(chǎn)生的原因
我們?cè)谑褂梅至⒃O(shè)計(jì)數(shù)字系統(tǒng)時(shí),由于PCB走線時(shí),存在分布電感和電容,所以幾納秒的毛刺將被自然濾除,而在PLD內(nèi)部決無分布電感和電容,所以在PLD/FPGA設(shè)計(jì)中,競(jìng)爭(zhēng)和冒險(xiǎn)問題將變的較為突出。這一點(diǎn)用模擬電路的觀點(diǎn)很容易理解,例如在一個(gè)延遲鏈條上,加兩個(gè)電容,就把這個(gè)毛刺給濾掉。
FPGA中的冒險(xiǎn)現(xià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)。(與分立元件不同,由于PLD內(nèi)部不存在寄生電容電感,這些毛刺將被完整的保留并向下一級(jí)傳遞,因此毛刺現(xiàn)象在PLD、FPGA設(shè)計(jì)中尤為突出)我們無法保證所有連線的長(zhǎng)度一致,所以輸入信號(hào)在輸入端同時(shí)變化,但經(jīng)過PLD內(nèi)部的走線,到達(dá)或門的時(shí)間也是不一樣的,毛刺必然產(chǎn)生??梢愿爬ǖ闹v,只要輸入信號(hào)同時(shí)變化,(經(jīng)過內(nèi)部走線)組合邏輯必將產(chǎn)生毛刺。將它們的輸出直接連接到時(shí)鐘輸入端、清零或置位端口的設(shè)計(jì)方法是錯(cuò)誤的,這可能會(huì)導(dǎo)致嚴(yán)重的后果。所以我們必須檢查設(shè)計(jì)中所有時(shí)鐘、清零和置位等對(duì)毛刺敏感的輸入端口,確保輸入不會(huì)含有任何毛刺.
如何處理毛刺
(1)使用同步電路,D觸發(fā)器:我們可以通過改變?cè)O(shè)計(jì),破壞毛刺產(chǎn)生的條件,來減少毛刺的發(fā)生。例如,在數(shù)字電路設(shè)計(jì)中,常常采用格雷碼計(jì)數(shù)器取代普通的二進(jìn)制計(jì)數(shù)器,這是因?yàn)楦窭状a計(jì)數(shù)器的輸出每次只有一位跳變,消除了競(jìng)爭(zhēng)冒險(xiǎn)的發(fā)生條件,避免了毛刺的產(chǎn)生。毛刺并不是對(duì)所有的輸入都有危害,例如D觸發(fā)器的D輸入端,只要毛刺不出現(xiàn)在時(shí)鐘的上升沿并且滿足數(shù)據(jù)的建立和保持時(shí)間,就不會(huì)對(duì)系統(tǒng)造成危害,我們可以說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í)間)
(2)對(duì)信號(hào)進(jìn)行采用得方法,即使用另一個(gè)使能信號(hào):以上方法可以大大減少毛刺,但它并不能完全消除毛刺,有時(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)的影響。兩種基本的采樣方法:一種方法是在輸出信號(hào)的保持時(shí)間內(nèi),用一定寬度的高電平脈沖與輸出信號(hào)做邏輯與運(yùn)算,由此獲取輸出信號(hào)的電平值。上述方法的一個(gè)缺點(diǎn)是必須人為的保證sample信號(hào)必須在合適的時(shí)間中產(chǎn)生,另一種更常見的方法是利用D觸發(fā)器的D輸入端對(duì)毛刺信號(hào)不敏感的特點(diǎn),在輸出信號(hào)的保持時(shí)間內(nèi),用觸發(fā)器讀取組合邏輯的輸出信號(hào),這種方法類似于將異步電路轉(zhuǎn)化為同步電路。但這會(huì)有一個(gè)時(shí)鐘周期的延遲。
在仿真時(shí),我們也可能會(huì)發(fā)現(xiàn)在FPGA器件對(duì)外輸出引腳上有輸出毛刺,但由于毛刺很短,加上PCB本身的寄生參數(shù),大多數(shù)情況下,毛刺通過PCB走線,基本可以自然被慮除,不用再外加阻容濾波。
如前所述,優(yōu)秀的設(shè)計(jì)方案,如采用格雷碼計(jì)數(shù)器,同步電路等,可以大大減少毛刺,但它并不能完全消除毛刺。毛刺并不是對(duì)所有輸入都有危害,例如D觸發(fā)器的D輸入端,只要毛刺不出現(xiàn)在時(shí)鐘的上升沿并且滿足數(shù)據(jù)的建立和保持時(shí)間,就不會(huì)對(duì)系統(tǒng)造成危害。因此我們可以說D觸發(fā)器的D輸入端對(duì)毛刺不敏感。但對(duì)于D觸發(fā)器的時(shí)鐘端,置位端,清零端,則都是對(duì)毛刺敏感的輸入端,任何一點(diǎn)毛刺就會(huì)使系統(tǒng)出錯(cuò),但只要認(rèn)真處理,我們可以把危害降到最低直至消除。下面我們就對(duì)幾種具體的信號(hào)進(jìn)行探討。
清除和置位信號(hào)
清除和置位信號(hào)要求象對(duì)待時(shí)鐘那樣小心地考慮它們,因?yàn)檫@些信號(hào)對(duì)毛刺也是非常敏感的。正如使用時(shí)鐘那樣,最好的清除和置位是從器件的引腳單直接地驅(qū)動(dòng)。有一個(gè)主復(fù)位Reset引腳是常用的最好方法,主復(fù)位引腳給設(shè)計(jì)項(xiàng)目中每個(gè)觸發(fā)器饋送清除或置位信號(hào)。幾乎所有PLD器件都有專門的全局清零腳和全局置位。如果必須從器件內(nèi)產(chǎn)生清除或置位信號(hào),則要按照“門控時(shí)鐘”的設(shè)計(jì)原則去建立這些信號(hào),確保輸入無毛刺。
若采用門控清除或者門控置位,則單個(gè)引腳或者觸發(fā)器作為清除或置位的源,而有其它信號(hào)作為地址或控制線。在清除或復(fù)位的有效期間,地址或控制線必須保持穩(wěn)定
異步輸入信號(hào)
按照定義,異步輸入不是總能滿足(它們所饋送的觸發(fā)器的)建立和保持時(shí)間的要求。因此,異步輸入常常會(huì)把錯(cuò)誤的數(shù)據(jù)鎖存到觸發(fā)器,或者使觸發(fā)器進(jìn)入亞穩(wěn)定的狀態(tài),在該狀態(tài)下,觸發(fā)器的輸出不能識(shí)別為l或0。如果沒有正確地處理,亞穩(wěn)性會(huì)導(dǎo)致嚴(yán)重的系統(tǒng)可靠性問題。
采用附加觸發(fā)器同步使能信號(hào)的方法可保證不違反計(jì)數(shù)器的建立時(shí)間,從而解決可靠性的問題。雖然同步觸發(fā)器仍會(huì)感受到亞穩(wěn)性,但它在下一個(gè)時(shí)鐘邊沿之前是穩(wěn)定的。通常,為在EPLD中避免亞穩(wěn)性問題,決不能把一個(gè)異步信號(hào)輸出到器件內(nèi)兩個(gè)或更多的觸發(fā)器中。同步異步輸入的另一種方法示于圖4.2.16。輸入驅(qū)動(dòng)一個(gè)觸發(fā)器的時(shí)鐘,該觸發(fā)器的數(shù)據(jù)輸入接到Vcc。這個(gè)電路對(duì)于檢測(cè)短于一個(gè)時(shí)鐘周期的異步事件是有用的。
評(píng)論