《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > FPGA設(shè)計(jì)中的亞穩(wěn)態(tài)及其緩解措施
FPGA設(shè)計(jì)中的亞穩(wěn)態(tài)及其緩解措施
來源:電子技術(shù)應(yīng)用2012年第8期
汪路元
北京空間飛行器總體設(shè)計(jì)部,北京100094
摘要: 亞穩(wěn)態(tài)是異步數(shù)字電路設(shè)計(jì)中的固有現(xiàn)象。針對FPGA產(chǎn)品研制中的亞穩(wěn)態(tài)問題,分析了其產(chǎn)生的原因,闡述了亞穩(wěn)態(tài)對系統(tǒng)可靠性的影響和評估方法,并針對單比特異步傳輸、多比特異步傳輸和復(fù)位三種情況下的亞穩(wěn)態(tài)提出緩解措施。該措施可以在工程實(shí)踐中參考使用。
中圖分類號: TP331.2
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)08-0013-03
Metastable state and mitigation measures in FPGA design
Wang Luyuan
Beijing Institute of Spacecraft System Engineering,Beijing 100094,China
Abstract: Metastable state is inherent in asynchronous digital circuits.This paper introduces the metastable state in FPGA design and analyses the effect on system reliability. Finally,several approaches that can be used in project are discussed to mitigate the effect in the process of one bit or many bits asynchronous transmission or reset.
Key words : flip-flop;metastable state;MTBF;reset

    在進(jìn)行FPGA設(shè)計(jì)時(shí),往往只關(guān)心“0”和“1”兩種狀態(tài)。然而在工程實(shí)踐中,除了“0”、“1”外還有其他狀態(tài),亞穩(wěn)態(tài)就是其中之一。亞穩(wěn)態(tài)是指觸發(fā)器或鎖存器無法在某個(gè)規(guī)定時(shí)間段內(nèi)達(dá)到一個(gè)可確認(rèn)的狀態(tài)[1]。當(dāng)一個(gè)觸發(fā)器進(jìn)入亞穩(wěn)態(tài)時(shí),既無法預(yù)測該單元的輸出電平,也無法預(yù)測何時(shí)輸出才能穩(wěn)定在某個(gè)正確的電平上。在亞穩(wěn)態(tài)期間,觸發(fā)器輸出一些中間級電平,甚至可能處于振蕩狀態(tài),并且這種無用的輸出電平可以沿信號通道上的各個(gè)觸發(fā)器級聯(lián)式傳播下去。亞穩(wěn)態(tài)是異步數(shù)字電路設(shè)計(jì)中的固有現(xiàn)象,但是由于其偶發(fā)性和溫度敏感性的特點(diǎn),在產(chǎn)品前期測試過程中很難發(fā)現(xiàn)。當(dāng)前多個(gè)型號的FPGA產(chǎn)品研制過程中暴露的質(zhì)量問題均與亞穩(wěn)態(tài)有關(guān),而且多是在設(shè)備研制后期進(jìn)行高低溫試驗(yàn)時(shí)出現(xiàn),嚴(yán)重影響了產(chǎn)品研制。因此,亞穩(wěn)態(tài)對系統(tǒng)的危害性應(yīng)該引起足夠重視,并在設(shè)計(jì)初期階段應(yīng)采取有效緩解措施,以提高系統(tǒng)的可靠性。

1 亞穩(wěn)態(tài)產(chǎn)生的原因
    所有數(shù)字器件(包括FPGA)的信號傳輸都有一定的時(shí)序要求,以保證每個(gè)器件將捕獲的輸入信號正確輸出。對于觸發(fā)器,為了確保操作的可靠性,輸入信號必須在時(shí)鐘沿的某段時(shí)間(觸發(fā)器的建立時(shí)間)之前保持穩(wěn)定,并且持續(xù)到時(shí)鐘沿之后的某段時(shí)間(觸發(fā)器的保持時(shí)間)才能改變,而且該觸發(fā)器的輸入反映到輸出還需要經(jīng)過一定的延時(shí)(時(shí)鐘到輸出的時(shí)間)。如果數(shù)據(jù)信號的變化違反了建立時(shí)間或者保持時(shí)間的要求,則觸發(fā)器的輸出會處于亞穩(wěn)態(tài)。此時(shí),觸發(fā)器的輸出會在高電平“1”和低電平“0”之間盤旋一段時(shí)間,這也意味著觸發(fā)器的輸出達(dá)到一個(gè)穩(wěn)定的高或者低電平的狀態(tài)所需要的時(shí)間會大于時(shí)鐘到輸出的時(shí)間。這樣觸發(fā)器輸出端Q在有效時(shí)鐘沿之后較長一段時(shí)間處于不確定狀態(tài),這段時(shí)間稱為決斷時(shí)間。在這段時(shí)間里Q端可能為毛刺、振蕩或某一固定電壓值,而不是等于數(shù)據(jù)輸入端D的值。經(jīng)過決斷時(shí)間之后Q端將穩(wěn)定到“0”或“1”上,但究竟是“0”還是“1”,是隨機(jī)的,與輸入沒有必然的聯(lián)系。圖1所示是第一級觸發(fā)器存在建立時(shí)間或保持時(shí)間沖突時(shí)導(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)在以下兩個(gè)方面:
    (1)導(dǎo)致后端電路產(chǎn)生邏輯誤判,尤其是多扇出電路中,由于扇出延時(shí)的差別會導(dǎo)致各負(fù)載端識別出不同的邏輯電平,使系統(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)象。因此,為了便于估算,工程實(shí)踐中提出了一種統(tǒng)計(jì)模型來評估亞穩(wěn)態(tài)所造成的危害程度,即平均無故障時(shí)間MTBF(Mean Time Between Failures)。MTBF的定義如下[2]:
    
    MTBF的計(jì)算對象是一個(gè)觸發(fā)器,在實(shí)際中器件生產(chǎn)廠家先通過特殊的測試手段得到產(chǎn)品的MTBF,然后再確定公式中的參數(shù)指標(biāo)向外發(fā)布。用戶可以根據(jù)這些參數(shù)指標(biāo)定量計(jì)算當(dāng)前設(shè)計(jì)的可靠性。對于常用的Actel公司的FPGA和Xilinx SRAM型FPGA,器件廠商均公布了T0和?子的數(shù)值[3-4],實(shí)際使用時(shí)可以進(jìn)行評估計(jì)算。
3 FPGA設(shè)計(jì)中的亞穩(wěn)態(tài)緩解措施
    在FPGA設(shè)計(jì)中,只要不滿足內(nèi)部觸發(fā)器的建立時(shí)間和保持時(shí)間要求,就會出現(xiàn)亞穩(wěn)態(tài)。對于一個(gè)全同步設(shè)計(jì)來說,時(shí)鐘和數(shù)據(jù)相位關(guān)系固定,所有觸發(fā)器都由一個(gè)時(shí)鐘信號驅(qū)動(dòng),雖然在不同點(diǎn)也存在相位差別,但開發(fā)工具會通過計(jì)算時(shí)鐘信號線的走線長度來預(yù)測傳輸延時(shí),并通過時(shí)鐘域內(nèi)的時(shí)鐘樹綜合算法來求得優(yōu)化的結(jié)構(gòu),使觸發(fā)器的建立時(shí)間和保持時(shí)間滿足要求,不出現(xiàn)亞穩(wěn)態(tài),這也是所有設(shè)計(jì)規(guī)范都推薦采用全同步設(shè)計(jì)的一個(gè)重要原因。但是,實(shí)際的系統(tǒng)一般都不只有一個(gè)時(shí)鐘,而是一個(gè)多時(shí)鐘系統(tǒng),例如常見的下行鏈路數(shù)據(jù)復(fù)接設(shè)備,一般是有多少路輸入就有多少個(gè)時(shí)鐘,因而需要分析其中的異步傳輸路徑并采取緩解措施。
3.1 針對單比特信號異步傳輸?shù)膩喎€(wěn)態(tài)緩解措施
    (1)慢時(shí)鐘域信號進(jìn)入快時(shí)鐘域(兩者周期相差1倍以上)
    慢時(shí)鐘域信號進(jìn)入快速時(shí)鐘域是工程實(shí)踐中遇到最多的一種情況,輸入信號從CLK1時(shí)鐘域進(jìn)入到CLK2時(shí)鐘域時(shí)可以通過兩級觸發(fā)器級聯(lián)的方式來緩解亞穩(wěn)態(tài),具體電路如圖3所示。

    圖3電路中,由于無法預(yù)知異步輸入信號ASY_IN的翻轉(zhuǎn)時(shí)刻,所以同步器第一級觸發(fā)器的輸出Q1存在亞穩(wěn)態(tài),該信號通過FPGA布線路徑傳輸至第二級觸發(fā)器的輸入端。設(shè)CLK2的時(shí)鐘周期為T,且假定CLK2到兩個(gè)觸發(fā)器的時(shí)鐘延時(shí)相等(即偏斜為零),第一級觸發(fā)器輸出到第二級觸發(fā)器輸入端的路徑傳輸延時(shí)為tnet,其余時(shí)序參數(shù)定義同圖1。則只要滿足tco+tres+tnet+tsu≤T,Q1就有足夠的時(shí)間從亞穩(wěn)態(tài)恢復(fù)至穩(wěn)定態(tài),并滿足第二級觸發(fā)器的建立時(shí)間要求,所以第二級觸發(fā)器的輸出是穩(wěn)定態(tài)。同時(shí)還要注意的是,信號在CLK2時(shí)鐘域內(nèi)會有T~2T的延時(shí)。
    設(shè)計(jì)中,可以通過增加觸發(fā)器級聯(lián)的數(shù)目來獲得更大的MTBF,但是這樣會進(jìn)一步增大信號延時(shí)并占用更多FPGA資源。綜合考慮現(xiàn)有FPGA器件工藝和電氣參數(shù),一般情況下,二級觸發(fā)器的級聯(lián)已經(jīng)可以滿足實(shí)際要求了。
    (2)慢時(shí)鐘域信號進(jìn)入快時(shí)鐘域(兩者周期相差1倍以內(nèi))
    從亞穩(wěn)態(tài)的機(jī)理可以知道,圖3中Q1的亞穩(wěn)態(tài)恢復(fù)結(jié)果可能是“0”也可能是“1”,所以要求CLK1的周期必須是CLK2周期的2倍以上,才能保證當(dāng)異步輸入信號為單周期脈沖時(shí),在CLK2時(shí)鐘域信號不丟失。所以對于兩個(gè)時(shí)鐘周期相差1倍以內(nèi)的情況,圖3的電路是不合適的,可以采用圖4所示的脈沖擴(kuò)展同步電路來緩解亞穩(wěn)態(tài)。
   

 

 

3.2 多比特并行信號異步傳輸?shù)膩喎€(wěn)態(tài)緩解措施
    在許多應(yīng)用中,跨時(shí)鐘域傳送的不只是簡單的單比特信號,很多時(shí)候是并行數(shù)據(jù)信號的跨時(shí)鐘域傳輸。這種情況下,不能簡單地對并行信號的每一位獨(dú)立使用圖3所示同步器。因?yàn)閷?shí)際電路中無法保證并行信號同時(shí)翻轉(zhuǎn),這樣做會導(dǎo)致輸出采集到錯(cuò)誤的信號值,對系統(tǒng)功能產(chǎn)生影響。針對這種應(yīng)用可以采用異步FIFO或雙口RAM來解決[5]。
    在FPGA中,有現(xiàn)成的RAM硬核,設(shè)計(jì)時(shí)可以通過開發(fā)工具配置這些RAM的使用方式,可配成異步FIFO或雙口RAM。該類存儲器讀寫控制分別采用兩個(gè)完全獨(dú)立的時(shí)鐘域,異步FIFO內(nèi)部采用格雷碼計(jì)數(shù)器進(jìn)行編址,操作簡單,提供了現(xiàn)成的半滿、全滿和空信號(這些信號均經(jīng)過了跨時(shí)鐘域處理,可以直接在讀時(shí)鐘域和寫時(shí)鐘域使用)。當(dāng)采用雙口RAM時(shí),需要自行處理地址信號的跨時(shí)鐘域,此處需要注意的是,要將多比特的地址信息在各自時(shí)鐘域中轉(zhuǎn)化為單比特,然后再使用單比特同步器來解決。
3.3 異步復(fù)位過程的亞穩(wěn)態(tài)緩解措施
    異步復(fù)位由于其實(shí)時(shí)性好、設(shè)計(jì)簡單以及與FPGA底層庫單元(帶異步復(fù)位的觸發(fā)器)結(jié)合性好等特點(diǎn),受到廣大設(shè)計(jì)師的青睞,但是在使用過程中往往忽略了其中的亞穩(wěn)態(tài)問題。類似于觸發(fā)器對輸入信號建立時(shí)間和保持時(shí)間的要求,異步復(fù)位信號在釋放時(shí)有恢復(fù)時(shí)間(Recovery time)和移除時(shí)間(Removal time)的要求,如圖6所示。

    圖中,trec為恢復(fù)時(shí)間,指復(fù)位信號釋放時(shí)刻與緊隨其后的有效時(shí)鐘沿間的最小時(shí)間;trem為移除時(shí)間,指時(shí)鐘有效沿時(shí)刻與之后的復(fù)位信號釋放之間的最小時(shí)間。這就要求異步復(fù)位釋放時(shí)刻與時(shí)鐘的有效沿盡量遠(yuǎn),即異步復(fù)位應(yīng)該和時(shí)鐘沒有任何關(guān)系。其實(shí)不然,對于觸發(fā)器,異步復(fù)位信號對內(nèi)部保持電路和直接輸出電路都有影響。當(dāng)復(fù)位信號有效時(shí),輸出清零;當(dāng)復(fù)位信號釋放后,輸出由保持電路決定,如果復(fù)位信號釋放時(shí)刻離時(shí)鐘沿太近,則輸出會在清零和數(shù)據(jù)保持之間出現(xiàn)亞穩(wěn)態(tài)。
    實(shí)際電路中,可以采用異步復(fù)位同步釋放的方式來緩解復(fù)位導(dǎo)致亞穩(wěn)態(tài)的影響。低電平有效的異步復(fù)位同步釋放實(shí)現(xiàn)電路如圖7所示。圖7電路既保持了異步復(fù)位實(shí)時(shí)性好的優(yōu)點(diǎn),又緩解了復(fù)位釋放時(shí)刻的亞穩(wěn)態(tài),實(shí)際應(yīng)用中可以參考。

    隨著FPGA功能復(fù)雜度和運(yùn)行頻率的大幅提升,亞穩(wěn)態(tài)已經(jīng)成為危害系統(tǒng)可靠性的重要隱患,必須在設(shè)計(jì)初期采取緩解措施,以獲得滿足要求的MTBF,將亞穩(wěn)態(tài)的影響降低至系統(tǒng)允許范圍。根據(jù)實(shí)際需要,靈活運(yùn)用文中的緩解措施,便可以減小亞穩(wěn)態(tài)的影響,提高系統(tǒng)可靠性。
參考文獻(xiàn)
[1] 沈立,朱來文,陳宏偉,等譯.高速數(shù)字設(shè)計(jì)[M].北京:電子工業(yè)出版社,2004:96-105.
[2] FOLEY C.Characterizing metastability[C].Proceedings of Second International Symposium on Date of Conference. Conference Publications,1996:175-184.
[3] Xilinx Corporation.Metastability considerations[R].1997.
[4] Actel Corporation.Metastability characterization report for actel antifuse FPGAs[R].2006.
[5] CUMMINGS C E,ALFKE P.Simulation and synthesis techniques for asynchronous FIFO design with asynchronous pointer comparisons[C].SNUG 2002(Synopsys Users Group Conference,San Jose,CA,2002) User Papers,March 2002.Section TB2,3rd paper.2002.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。