FPGA設(shè)計中的亞穩(wěn)態(tài)及其緩解措施
摘 要: 亞穩(wěn)態(tài)是異步數(shù)字電路設(shè)計中的固有現(xiàn)象。針對FPGA產(chǎn)品研制中的亞穩(wěn)態(tài)問題,分析了其產(chǎn)生的原因,闡述了亞穩(wěn)態(tài)對系統(tǒng)可靠性的影響和評估方法,并針對單比特異步傳輸、多比特異步傳輸和復(fù)位三種情況下的亞穩(wěn)態(tài)提出緩解措施。該措施可以在工程實踐中參考使用。
關(guān)鍵詞: 觸發(fā)器;亞穩(wěn)態(tài);MTBF;復(fù)位
在進行FPGA設(shè)計時,往往只關(guān)心“0”和“1”兩種狀態(tài)。然而在工程實踐中,除了“0”、“1”外還有其他狀態(tài),亞穩(wěn)態(tài)就是其中之一。亞穩(wěn)態(tài)是指觸發(fā)器或鎖存器無法在某個規(guī)定時間段內(nèi)達到一個可確認的狀態(tài)[1]。當一個觸發(fā)器進入亞穩(wěn)態(tài)時,既無法預(yù)測該單元的輸出電平,也無法預(yù)測何時輸出才能穩(wěn)定在某個正確的電平上。在亞穩(wěn)態(tài)期間,觸發(fā)器輸出一些中間級電平,甚至可能處于振蕩狀態(tài),并且這種無用的輸出電平可以沿信號通道上的各個觸發(fā)器級聯(lián)式傳播下去。亞穩(wěn)態(tài)是異步數(shù)字電路設(shè)計中的固有現(xiàn)象,但是由于其偶發(fā)性和溫度敏感性的特點,在產(chǎn)品前期測試過程中很難發(fā)現(xiàn)。當前多個型號的FPGA產(chǎn)品研制過程中暴露的質(zhì)量問題均與亞穩(wěn)態(tài)有關(guān),而且多是在設(shè)備研制后期進行高低溫試驗時出現(xiàn),嚴重影響了產(chǎn)品研制。因此,亞穩(wěn)態(tài)對系統(tǒng)的危害性應(yīng)該引起足夠重視,并在設(shè)計初期階段應(yīng)采取有效緩解措施,以提高系統(tǒng)的可靠性。
1 亞穩(wěn)態(tài)產(chǎn)生的原因
所有數(shù)字器件(包括FPGA)的信號傳輸都有一定的時序要求,以保證每個器件將捕獲的輸入信號正確輸出。對于觸發(fā)器,為了確保操作的可靠性,輸入信號必須在時鐘沿的某段時間(觸發(fā)器的建立時間)之前保持穩(wěn)定,并且持續(xù)到時鐘沿之后的某段時間(觸發(fā)器的保持時間)才能改變,而且該觸發(fā)器的輸入反映到輸出還需要經(jīng)過一定的延時(時鐘到輸出的時間)。如果數(shù)據(jù)信號的變化違反了建立時間或者保持時間的要求,則觸發(fā)器的輸出會處于亞穩(wěn)態(tài)。此時,觸發(fā)器的輸出會在高電平“1”和低電平“0”之間盤旋一段時間,這也意味著觸發(fā)器的輸出達到一個穩(wěn)定的高或者低電平的狀態(tài)所需要的時間會大于時鐘到輸出的時間。這樣觸發(fā)器輸出端Q在有效時鐘沿之后較長一段時間處于不確定狀態(tài),這段時間稱為決斷時間。在這段時間里Q端可能為毛刺、振蕩或某一固定電壓值,而不是等于數(shù)據(jù)輸入端D的值。經(jīng)過決斷時間之后Q端將穩(wěn)定到“0”或“1”上,但究竟是“0”還是“1”,是隨機的,與輸入沒有必然的聯(lián)系。圖1所示是第一級觸發(fā)器存在建立時間或保持時間沖突時導(dǎo)致Q1出現(xiàn)亞穩(wěn)態(tài)的示意圖。
2 亞穩(wěn)態(tài)與系統(tǒng)可靠性
由于亞穩(wěn)態(tài)輸出在穩(wěn)定下來之前可能是毛刺、振蕩、固定的某一電壓值,因此亞穩(wěn)態(tài)對系統(tǒng)的影響主要表現(xiàn)在以下兩個方面:
(1)導(dǎo)致后端電路產(chǎn)生邏輯誤判,尤其是多扇出電路中,由于扇出延時的差別會導(dǎo)致各負載端識別出不同的邏輯電平,使系統(tǒng)功能發(fā)生紊亂。
(2)輸出0~1之間的中間電壓值還會使下一級產(chǎn)生亞穩(wěn)態(tài),即導(dǎo)致亞穩(wěn)態(tài)在系統(tǒng)中傳播。
亞穩(wěn)態(tài)的出現(xiàn)是一種概率現(xiàn)象,并且結(jié)果正確與否也是一種概率現(xiàn)象。因此,為了便于估算,工程實踐中提出了一種統(tǒng)計模型來評估亞穩(wěn)態(tài)所造成的危害程度,即平均無故障時間MTBF(Mean Time Between Failures)。MTBF的定義如下[2]:
MTBF的計算對象是一個觸發(fā)器,在實際中器件生產(chǎn)廠家先通過特殊的測試手段得到產(chǎn)品的MTBF,然后再確定公式中的參數(shù)指標向外發(fā)布。用戶可以根據(jù)這些參數(shù)指標定量計算當前設(shè)計的可靠性。對于常用的Actel公司的FPGA和Xilinx SRAM型FPGA,器件廠商均公布了T0和?子的數(shù)值[3-4],實際使用時可以進行評估計算。
3 FPGA設(shè)計中的亞穩(wěn)態(tài)緩解措施
在FPGA設(shè)計中,只要不滿足內(nèi)部觸發(fā)器的建立時間和保持時間要求,就會出現(xiàn)亞穩(wěn)態(tài)。對于一個全同步設(shè)計來說,時鐘和數(shù)據(jù)相位關(guān)系固定,所有觸發(fā)器都由一個時鐘信號驅(qū)動,雖然在不同點也存在相位差別,但開發(fā)工具會通過計算時鐘信號線的走線長度來預(yù)測傳輸延時,并通過時鐘域內(nèi)的時鐘樹綜合算法來求得優(yōu)化的結(jié)構(gòu),使觸發(fā)器的建立時間和保持時間滿足要求,不出現(xiàn)亞穩(wěn)態(tài),這也是所有設(shè)計規(guī)范都推薦采用全同步設(shè)計的一個重要原因。但是,實際的系統(tǒng)一般都不只有一個時鐘,而是一個多時鐘系統(tǒng),例如常見的下行鏈路數(shù)據(jù)復(fù)接設(shè)備,一般是有多少路輸入就有多少個時鐘,因而需要分析其中的異步傳輸路徑并采取緩解措施。
3.1 針對單比特信號異步傳輸?shù)膩喎€(wěn)態(tài)緩解措施
(1)慢時鐘域信號進入快時鐘域(兩者周期相差1倍以上)
慢時鐘域信號進入快速時鐘域是工程實踐中遇到最多的一種情況,輸入信號從CLK1時鐘域進入到CLK2時鐘域時可以通過兩級觸發(fā)器級聯(lián)的方式來緩解亞穩(wěn)態(tài),具體電路如圖3所示。
圖3電路中,由于無法預(yù)知異步輸入信號ASY_IN的翻轉(zhuǎn)時刻,所以同步器第一級觸發(fā)器的輸出Q1存在亞穩(wěn)態(tài),該信號通過FPGA布線路徑傳輸至第二級觸發(fā)器的輸入端。設(shè)CLK2的時鐘周期為T,且假定CLK2到兩個觸發(fā)器的時鐘延時相等(即偏斜為零),第一級觸發(fā)器輸出到第二級觸發(fā)器輸入端的路徑傳輸延時為tnet,其余時序參數(shù)定義同圖1。則只要滿足tco+tres+tnet+tsu≤T,Q1就有足夠的時間從亞穩(wěn)態(tài)恢復(fù)至穩(wěn)定態(tài),并滿足第二級觸發(fā)器的建立時間要求,所以第二級觸發(fā)器的輸出是穩(wěn)定態(tài)。同時還要注意的是,信號在CLK2時鐘域內(nèi)會有T~2T的延時。
設(shè)計中,可以通過增加觸發(fā)器級聯(lián)的數(shù)目來獲得更大的MTBF,但是這樣會進一步增大信號延時并占用更多FPGA資源。綜合考慮現(xiàn)有FPGA器件工藝和電氣參數(shù),一般情況下,二級觸發(fā)器的級聯(lián)已經(jīng)可以滿足實際要求了。
(2)慢時鐘域信號進入快時鐘域(兩者周期相差1倍以內(nèi))
從亞穩(wěn)態(tài)的機理可以知道,圖3中Q1的亞穩(wěn)態(tài)恢復(fù)結(jié)果可能是“0”也可能是“1”,所以要求CLK1的周期必須是CLK2周期的2倍以上,才能保證當異步輸入信號為單周期脈沖時,在CLK2時鐘域信號不丟失。所以對于兩個時鐘周期相差1倍以內(nèi)的情況,圖3的電路是不合適的,可以采用圖4所示的脈沖擴展同步電路來緩解亞穩(wěn)態(tài)。