文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)08-0013-03
在進(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ā)器或鎖存器無(wú)法在某個(gè)規(guī)定時(shí)間段內(nèi)達(dá)到一個(gè)可確認(rèn)的狀態(tài)[1],。當(dāng)一個(gè)觸發(fā)器進(jìn)入亞穩(wěn)態(tài)時(shí),,既無(wú)法預(yù)測(cè)該單元的輸出電平,也無(wú)法預(yù)測(cè)何時(shí)輸出才能穩(wěn)定在某個(gè)正確的電平上,。在亞穩(wěn)態(tài)期間,,觸發(fā)器輸出一些中間級(jí)電平,,甚至可能處于振蕩狀態(tài),并且這種無(wú)用的輸出電平可以沿信號(hào)通道上的各個(gè)觸發(fā)器級(jí)聯(lián)式傳播下去,。亞穩(wěn)態(tài)是異步數(shù)字電路設(shè)計(jì)中的固有現(xiàn)象,,但是由于其偶發(fā)性和溫度敏感性的特點(diǎn),在產(chǎn)品前期測(cè)試過(guò)程中很難發(fā)現(xiàn),。當(dāng)前多個(gè)型號(hào)的FPGA產(chǎn)品研制過(guò)程中暴露的質(zhì)量問(wèn)題均與亞穩(wěn)態(tài)有關(guān),,而且多是在設(shè)備研制后期進(jìn)行高低溫試驗(yàn)時(shí)出現(xiàn),嚴(yán)重影響了產(chǎn)品研制,。因此,,亞穩(wěn)態(tài)對(duì)系統(tǒng)的危害性應(yīng)該引起足夠重視,并在設(shè)計(jì)初期階段應(yīng)采取有效緩解措施,,以提高系統(tǒng)的可靠性,。
1 亞穩(wěn)態(tài)產(chǎn)生的原因
所有數(shù)字器件(包括FPGA)的信號(hào)傳輸都有一定的時(shí)序要求,以保證每個(gè)器件將捕獲的輸入信號(hào)正確輸出,。對(duì)于觸發(fā)器,,為了確保操作的可靠性,輸入信號(hào)必須在時(shí)鐘沿的某段時(shí)間(觸發(fā)器的建立時(shí)間)之前保持穩(wěn)定,,并且持續(xù)到時(shí)鐘沿之后的某段時(shí)間(觸發(fā)器的保持時(shí)間)才能改變,,而且該觸發(fā)器的輸入反映到輸出還需要經(jīng)過(guò)一定的延時(shí)(時(shí)鐘到輸出的時(shí)間)。如果數(shù)據(jù)信號(hào)的變化違反了建立時(shí)間或者保持時(shí)間的要求,,則觸發(fā)器的輸出會(huì)處于亞穩(wěn)態(tài),。此時(shí),觸發(fā)器的輸出會(huì)在高電平“1”和低電平“0”之間盤旋一段時(shí)間,,這也意味著觸發(fā)器的輸出達(dá)到一個(gè)穩(wěn)定的高或者低電平的狀態(tài)所需要的時(shí)間會(huì)大于時(shí)鐘到輸出的時(shí)間,。這樣觸發(fā)器輸出端Q在有效時(shí)鐘沿之后較長(zhǎng)一段時(shí)間處于不確定狀態(tài),這段時(shí)間稱為決斷時(shí)間,。在這段時(shí)間里Q端可能為毛刺,、振蕩或某一固定電壓值,而不是等于數(shù)據(jù)輸入端D的值,。經(jīng)過(guò)決斷時(shí)間之后Q端將穩(wěn)定到“0”或“1”上,,但究竟是“0”還是“1”,是隨機(jī)的,,與輸入沒(méi)有必然的聯(lián)系,。圖1所示是第一級(jí)觸發(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)定下來(lái)之前可能是毛刺,、振蕩,、固定的某一電壓值,因此亞穩(wěn)態(tài)對(duì)系統(tǒng)的影響主要表現(xiàn)在以下兩個(gè)方面:
(1)導(dǎo)致后端電路產(chǎn)生邏輯誤判,,尤其是多扇出電路中,,由于扇出延時(shí)的差別會(huì)導(dǎo)致各負(fù)載端識(shí)別出不同的邏輯電平,,使系統(tǒng)功能發(fā)生紊亂。
(2)輸出0~1之間的中間電壓值還會(huì)使下一級(jí)產(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ì)模型來(lái)評(píng)估亞穩(wěn)態(tài)所造成的危害程度,,即平均無(wú)故障時(shí)間MTBF(Mean Time Between Failures)。MTBF的定義如下[2]:
MTBF的計(jì)算對(duì)象是一個(gè)觸發(fā)器,,在實(shí)際中器件生產(chǎn)廠家先通過(guò)特殊的測(cè)試手段得到產(chǎn)品的MTBF,,然后再確定公式中的參數(shù)指標(biāo)向外發(fā)布。用戶可以根據(jù)這些參數(shù)指標(biāo)定量計(jì)算當(dāng)前設(shè)計(jì)的可靠性,。對(duì)于常用的Actel公司的FPGA和Xilinx SRAM型FPGA,,器件廠商均公布了T0和?子的數(shù)值[3-4],實(shí)際使用時(shí)可以進(jìn)行評(píng)估計(jì)算,。
3 FPGA設(shè)計(jì)中的亞穩(wěn)態(tài)緩解措施
在FPGA設(shè)計(jì)中,,只要不滿足內(nèi)部觸發(fā)器的建立時(shí)間和保持時(shí)間要求,就會(huì)出現(xiàn)亞穩(wěn)態(tài),。對(duì)于一個(gè)全同步設(shè)計(jì)來(lái)說(shuō),,時(shí)鐘和數(shù)據(jù)相位關(guān)系固定,所有觸發(fā)器都由一個(gè)時(shí)鐘信號(hào)驅(qū)動(dòng),,雖然在不同點(diǎn)也存在相位差別,,但開發(fā)工具會(huì)通過(guò)計(jì)算時(shí)鐘信號(hào)線的走線長(zhǎng)度來(lái)預(yù)測(cè)傳輸延時(shí),并通過(guò)時(shí)鐘域內(nèi)的時(shí)鐘樹綜合算法來(lái)求得優(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),,例如常見(jiàn)的下行鏈路數(shù)據(jù)復(fù)接設(shè)備,,一般是有多少路輸入就有多少個(gè)時(shí)鐘,因而需要分析其中的異步傳輸路徑并采取緩解措施,。
3.1 針對(duì)單比特信號(hào)異步傳輸?shù)膩喎€(wěn)態(tài)緩解措施
(1)慢時(shí)鐘域信號(hào)進(jìn)入快時(shí)鐘域(兩者周期相差1倍以上)
慢時(shí)鐘域信號(hào)進(jìn)入快速時(shí)鐘域是工程實(shí)踐中遇到最多的一種情況,,輸入信號(hào)從CLK1時(shí)鐘域進(jìn)入到CLK2時(shí)鐘域時(shí)可以通過(guò)兩級(jí)觸發(fā)器級(jí)聯(lián)的方式來(lái)緩解亞穩(wěn)態(tài),具體電路如圖3所示,。
圖3電路中,,由于無(wú)法預(yù)知異步輸入信號(hào)ASY_IN的翻轉(zhuǎn)時(shí)刻,,所以同步器第一級(jí)觸發(fā)器的輸出Q1存在亞穩(wěn)態(tài),該信號(hào)通過(guò)FPGA布線路徑傳輸至第二級(jí)觸發(fā)器的輸入端,。設(shè)CLK2的時(shí)鐘周期為T,,且假定CLK2到兩個(gè)觸發(fā)器的時(shí)鐘延時(shí)相等(即偏斜為零),第一級(jí)觸發(fā)器輸出到第二級(jí)觸發(fā)器輸入端的路徑傳輸延時(shí)為tnet,,其余時(shí)序參數(shù)定義同圖1,。則只要滿足tco+tres+tnet+tsu≤T,Q1就有足夠的時(shí)間從亞穩(wěn)態(tài)恢復(fù)至穩(wěn)定態(tài),,并滿足第二級(jí)觸發(fā)器的建立時(shí)間要求,,所以第二級(jí)觸發(fā)器的輸出是穩(wěn)定態(tài)。同時(shí)還要注意的是,,信號(hào)在CLK2時(shí)鐘域內(nèi)會(huì)有T~2T的延時(shí),。
設(shè)計(jì)中,可以通過(guò)增加觸發(fā)器級(jí)聯(lián)的數(shù)目來(lái)獲得更大的MTBF,,但是這樣會(huì)進(jìn)一步增大信號(hào)延時(shí)并占用更多FPGA資源,。綜合考慮現(xiàn)有FPGA器件工藝和電氣參數(shù),一般情況下,,二級(jí)觸發(fā)器的級(jí)聯(lián)已經(jīng)可以滿足實(shí)際要求了,。
(2)慢時(shí)鐘域信號(hào)進(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)異步輸入信號(hào)為單周期脈沖時(shí),,在CLK2時(shí)鐘域信號(hào)不丟失。所以對(duì)于兩個(gè)時(shí)鐘周期相差1倍以內(nèi)的情況,,圖3的電路是不合適的,,可以采用圖4所示的脈沖擴(kuò)展同步電路來(lái)緩解亞穩(wěn)態(tài)。
3.2 多比特并行信號(hào)異步傳輸?shù)膩喎€(wěn)態(tài)緩解措施
在許多應(yīng)用中,,跨時(shí)鐘域傳送的不只是簡(jiǎn)單的單比特信號(hào),,很多時(shí)候是并行數(shù)據(jù)信號(hào)的跨時(shí)鐘域傳輸。這種情況下,,不能簡(jiǎn)單地對(duì)并行信號(hào)的每一位獨(dú)立使用圖3所示同步器,。因?yàn)閷?shí)際電路中無(wú)法保證并行信號(hào)同時(shí)翻轉(zhuǎn),這樣做會(huì)導(dǎo)致輸出采集到錯(cuò)誤的信號(hào)值,,對(duì)系統(tǒng)功能產(chǎn)生影響,。針對(duì)這種應(yīng)用可以采用異步FIFO或雙口RAM來(lái)解決[5]。
在FPGA中,,有現(xiàn)成的RAM硬核,,設(shè)計(jì)時(shí)可以通過(guò)開發(fā)工具配置這些RAM的使用方式,可配成異步FIFO或雙口RAM。該類存儲(chǔ)器讀寫控制分別采用兩個(gè)完全獨(dú)立的時(shí)鐘域,,異步FIFO內(nèi)部采用格雷碼計(jì)數(shù)器進(jìn)行編址,,操作簡(jiǎn)單,提供了現(xiàn)成的半滿,、全滿和空信號(hào)(這些信號(hào)均經(jīng)過(guò)了跨時(shí)鐘域處理,,可以直接在讀時(shí)鐘域和寫時(shí)鐘域使用)。當(dāng)采用雙口RAM時(shí),,需要自行處理地址信號(hào)的跨時(shí)鐘域,,此處需要注意的是,要將多比特的地址信息在各自時(shí)鐘域中轉(zhuǎn)化為單比特,,然后再使用單比特同步器來(lái)解決。
3.3 異步復(fù)位過(guò)程的亞穩(wěn)態(tài)緩解措施
異步復(fù)位由于其實(shí)時(shí)性好,、設(shè)計(jì)簡(jiǎn)單以及與FPGA底層庫(kù)單元(帶異步復(fù)位的觸發(fā)器)結(jié)合性好等特點(diǎn),,受到廣大設(shè)計(jì)師的青睞,但是在使用過(guò)程中往往忽略了其中的亞穩(wěn)態(tài)問(wèn)題,。類似于觸發(fā)器對(duì)輸入信號(hào)建立時(shí)間和保持時(shí)間的要求,,異步復(fù)位信號(hào)在釋放時(shí)有恢復(fù)時(shí)間(Recovery time)和移除時(shí)間(Removal time)的要求,如圖6所示,。
圖中,,trec為恢復(fù)時(shí)間,指復(fù)位信號(hào)釋放時(shí)刻與緊隨其后的有效時(shí)鐘沿間的最小時(shí)間,;trem為移除時(shí)間,,指時(shí)鐘有效沿時(shí)刻與之后的復(fù)位信號(hào)釋放之間的最小時(shí)間。這就要求異步復(fù)位釋放時(shí)刻與時(shí)鐘的有效沿盡量遠(yuǎn),,即異步復(fù)位應(yīng)該和時(shí)鐘沒(méi)有任何關(guān)系,。其實(shí)不然,對(duì)于觸發(fā)器,,異步復(fù)位信號(hào)對(duì)內(nèi)部保持電路和直接輸出電路都有影響,。當(dāng)復(fù)位信號(hào)有效時(shí),輸出清零,;當(dāng)復(fù)位信號(hào)釋放后,,輸出由保持電路決定,如果復(fù)位信號(hào)釋放時(shí)刻離時(shí)鐘沿太近,,則輸出會(huì)在清零和數(shù)據(jù)保持之間出現(xiàn)亞穩(wěn)態(tài),。
實(shí)際電路中,可以采用異步復(fù)位同步釋放的方式來(lái)緩解復(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] 沈立,,朱來(lái)文,陳宏偉,,等譯.高速數(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.