劉濤 賀強(qiáng)民 黃偉
(北京空間機(jī)電研究所,北京 100076)
SpaceWire總線技術(shù)是歐空局推出的一種面向航天應(yīng)用的高速差分串行總線技術(shù)??梢越鉀Q星上分系統(tǒng)間、設(shè)備間通訊數(shù)據(jù)總線帶寬不足的問(wèn)題,并且提供一種通用接口從而簡(jiǎn)化和規(guī)范不同設(shè)備之間的互連。該總線技術(shù)已成功地應(yīng)用于歐空局的Mars Express和Smart-1等多個(gè)空間任務(wù),協(xié)議的實(shí)現(xiàn)主要使用專(zhuān)用芯片。使用FPGA實(shí)現(xiàn)SpaceWire節(jié)點(diǎn)具有設(shè)計(jì)靈活、傳輸協(xié)議可根據(jù)項(xiàng)目特點(diǎn)進(jìn)行裁剪、設(shè)計(jì)成本低、系統(tǒng)集成度高等優(yōu)勢(shì)[1-2]。
FPGA功能加固技術(shù)包括三模冗余(Triple Modular Redundancy,TMR)技術(shù)、定時(shí)刷新配置技術(shù)、動(dòng)態(tài)重配置技術(shù)等,可以降低空間高能粒子輻射導(dǎo)致的單粒子效應(yīng)(Single-event Effects,SEE)對(duì)FPGA邏輯功能的影響。TMR技術(shù)相對(duì)于其它FPGA功能加固技術(shù),具有技術(shù)相對(duì)成熟和通用性強(qiáng)的優(yōu)勢(shì)。目前該技術(shù)已經(jīng)成功應(yīng)用于空間任務(wù)中,典型的技術(shù)就是Xilinx公司的XTMR技術(shù)[3]。
本文結(jié)合SpaceWire高速串行總線在傳輸機(jī)制上的高容錯(cuò)性和三模冗余設(shè)計(jì)在FPGA功能實(shí)現(xiàn)上的高容錯(cuò)性,在SpaceWire節(jié)點(diǎn)代碼設(shè)計(jì)中對(duì)關(guān)鍵功能模塊進(jìn)行了軟件輔助三模冗余設(shè)計(jì)和手動(dòng)三模冗余設(shè)計(jì),并在Xilinx公司FPGA上實(shí)現(xiàn)了TMR加固的SpaceWire節(jié)點(diǎn)與SpaceWire標(biāo)準(zhǔn)設(shè)備之間的高速數(shù)據(jù)傳輸。
SpaceWire節(jié)點(diǎn)設(shè)計(jì)應(yīng)嚴(yán)格按照SpaceWire協(xié)議功能框架進(jìn)行[4],如圖1所示。
圖1 SpaceWire協(xié)議節(jié)點(diǎn)的功能模塊圖Fig.1 SpaceWire link interface block diagram
在SpaceWire節(jié)點(diǎn)的FPGA設(shè)計(jì)中,根據(jù)協(xié)議特點(diǎn)對(duì)軟件功能模塊和時(shí)序域進(jìn)行劃分[1,5]。如圖2所示,圖中不同功能模塊工作在不同的時(shí)鐘域(用顏色區(qū)分不同時(shí)鐘域),其中數(shù)字濾波編碼模塊(TxDSCode模塊)需要單獨(dú)做三模冗余設(shè)計(jì)。
圖2 SpaceWire節(jié)點(diǎn)設(shè)計(jì)的功能模塊劃分和時(shí)鐘域劃分Fig.2 SpaceWire link interface function and timing
傳統(tǒng)TMR設(shè)計(jì)方法將用戶邏輯(組合邏輯加上寄存器)進(jìn)行了復(fù)制處理,3個(gè)相同的模塊接收3個(gè)相同的輸入,產(chǎn)生的結(jié)果送至多數(shù)表決器,表決器的輸出取決于3個(gè)輸入。若有一個(gè)模塊故障,則另兩個(gè)正常模塊的輸出可將故障模塊的輸出屏蔽,表決器輸出仍然正確,如圖3所示。
圖3 傳統(tǒng)TMR電路的邏輯功能受到SEE影響Fig.3 Traditional TMR circuit logic function affected by SEE
圖4 傳統(tǒng)TMR電路的時(shí)鐘受到SET影響Fig.4 Traditional TMR circuit clock affected by SET
雖然傳統(tǒng)TMR設(shè)計(jì)方法可以在一定程度上減小電路受SEE影響而出錯(cuò)的概率,但仍存在如下不足:
1)若時(shí)鐘線受到單粒子瞬態(tài)SET影響,可能導(dǎo)致輸出錯(cuò)誤,如圖4所示;
2)若組合邏輯受SEU影響,由于電路沒(méi)有提供寄存器錯(cuò)誤恢復(fù)機(jī)制,會(huì)導(dǎo)致錯(cuò)誤積累;
3)若多數(shù)表決器受SEU影響,將導(dǎo)致輸出錯(cuò)誤。
XTMR是Xilinx公司的TMR設(shè)計(jì)軟件,相比傳統(tǒng)的TMR設(shè)計(jì),XTMR方法從設(shè)計(jì)思路上進(jìn)一步增加了FPGA功能的可靠性[6],XTMR電路結(jié)構(gòu)如圖5所示,其改進(jìn)主要體現(xiàn)在3個(gè)方面:
1)三模時(shí)鐘信號(hào)和輸入信號(hào)。即使某一路時(shí)鐘信號(hào)受到SET影響,仍能保證輸出結(jié)果正確。
2)三模反饋邏輯和多數(shù)表決器。這樣即使某一個(gè)表決器受SEU影響出錯(cuò),仍能保證結(jié)果正確,并且多數(shù)選擇器后添加了反饋回路,可以及時(shí)糾正由組合邏輯帶來(lái)的寄存器錯(cuò)誤。
3)三模輸出信號(hào)并且增加少數(shù)表決器。輸出端口添加了少數(shù)選擇器,該選擇器能夠在本路輸出與其它兩路不同時(shí),將本路輸出三態(tài)門(mén)設(shè)置為高阻,這樣就不影響正確結(jié)果輸出。
圖5 Xilinx TMR設(shè)計(jì)電路結(jié)構(gòu)Fig.5 Circuit structure of the Xilinx TMR design
在實(shí)際的FPGA設(shè)計(jì)中,不是所有的功能模塊都適合做TMR。本文結(jié)合SpaceWire節(jié)點(diǎn)的特點(diǎn)對(duì)TMR適用性進(jìn)行了如下分析。
1)模塊功能失效時(shí)對(duì)系統(tǒng)功能影響大的優(yōu)先做TMR。FPGA軟件根據(jù)數(shù)據(jù)流的方向進(jìn)行軟件系統(tǒng)可靠性分析,不同功能模塊的失效,對(duì)整個(gè)系統(tǒng)功能的影響不同。TMR設(shè)計(jì)應(yīng)首先針對(duì)對(duì)系統(tǒng)功能影響大的模塊。
2)是否適合做TMR。產(chǎn)生的時(shí)鐘信號(hào)或還原的時(shí)鐘信號(hào)不適合做TMR。時(shí)鐘是整個(gè)時(shí)序邏輯的基礎(chǔ),時(shí)鐘的產(chǎn)生或者時(shí)鐘的還原本身會(huì)存在相位差[7],對(duì)FPGA的時(shí)序會(huì)造成較大的影響,不符合時(shí)序邏輯設(shè)計(jì)的原則。
3)TMR設(shè)計(jì)成本分析。TMR設(shè)計(jì)時(shí),相應(yīng)的模塊資源會(huì)增加3倍以上,由于使用FPGA資源的增加,布局布線會(huì)更加困難,導(dǎo)致時(shí)序性能下降;另外,TMR需要的判斷表決電路中存在大量組合電路,有可能會(huì)變成FPGA時(shí)序的關(guān)鍵路徑,此時(shí)很難提高FPGA的時(shí)序性能。前期代碼設(shè)計(jì)在提高時(shí)序性能上的努力也很難體現(xiàn)。
在SpaceWire節(jié)點(diǎn)設(shè)計(jì)時(shí),發(fā)送端DS編碼功能模塊失效時(shí),會(huì)產(chǎn)生發(fā)送編碼錯(cuò)誤。850ns鏈路斷開(kāi)檢測(cè)功能模塊失效時(shí),會(huì)產(chǎn)生超時(shí)斷開(kāi)錯(cuò)誤。這兩個(gè)模塊如果發(fā)生單粒子翻轉(zhuǎn)事件,會(huì)導(dǎo)致鏈路斷開(kāi)復(fù)位,這需要經(jīng)過(guò)約26μs的時(shí)間才能重新建立連接,導(dǎo)致等效的傳輸效率下降。綜上所述,需對(duì)DS編碼模塊和鏈路斷開(kāi)功能檢測(cè)模塊進(jìn)行三模冗余設(shè)計(jì)。
在SpaceWire節(jié)點(diǎn)設(shè)計(jì)時(shí),對(duì)發(fā)送端DS編碼模塊進(jìn)行輔助三模冗余設(shè)計(jì)。
本文采用XTMR軟件的XTMRTool設(shè)計(jì)工具,分3步對(duì)M_TxDSCode模塊進(jìn)行TMR設(shè)計(jì)。
第一步:先將需要做三模的代碼進(jìn)行綜合,生成網(wǎng)表文件SPW_RS232.ngc。
第二步:將網(wǎng)表文件SPW_RS232.ngc導(dǎo)入TMRTool進(jìn)行TMR操作,TMR讀取網(wǎng)表文件。首先,設(shè)置ISE軟件中的層次化結(jié)構(gòu),并設(shè)置XTMR軟件,鎖定IO端口,設(shè)置需要進(jìn)行三模冗余的模塊。然后,當(dāng)XTMR軟件運(yùn)行完成并產(chǎn)生新的網(wǎng)表文件,手動(dòng)修改新的網(wǎng)表文件,刪除新增加的IO端口,否則會(huì)與IO管腳約束文件產(chǎn)生沖突,編譯時(shí)出現(xiàn)錯(cuò)誤。
第三步:建立第二個(gè)ISE工程,編譯XTMR產(chǎn)生的文件,增加三模冗余設(shè)計(jì)后,在Xilinx ISE Floop plannar下查看SpaceWire功能模塊架構(gòu),打開(kāi)M_TxDSCode模塊,若該模塊中相應(yīng)的寄存器變成TR0,TR1,TR2,則表明已經(jīng)成功做了三模冗余設(shè)計(jì)。
目前FPGA功能設(shè)計(jì)中,TMR大多用在抗單粒子翻轉(zhuǎn)的設(shè)計(jì)中,廣義上講,TMR設(shè)計(jì)的思想是降低目標(biāo)部件發(fā)生錯(cuò)誤對(duì)系統(tǒng)功能造成的影響,所以三模冗余設(shè)計(jì)也可以應(yīng)用在降低亞穩(wěn)態(tài)導(dǎo)致系統(tǒng)功能錯(cuò)誤的設(shè)計(jì)中。
在多時(shí)鐘域設(shè)計(jì)中,亞穩(wěn)態(tài)是常見(jiàn)的問(wèn)題,一般使用雙采樣降低亞穩(wěn)態(tài)產(chǎn)生的概率,但是仍然有一定概率會(huì)產(chǎn)生亞穩(wěn)態(tài)。當(dāng)產(chǎn)生亞穩(wěn)態(tài)時(shí),最差情況下,需要經(jīng)過(guò)幾個(gè)甚至更多個(gè)時(shí)鐘周期,寄存器輸出才能穩(wěn)定在“0”或者“1”。 本文嘗試使用TMR設(shè)計(jì)來(lái)降低亞穩(wěn)態(tài)的產(chǎn)生對(duì)系統(tǒng)邏輯功能造成的影響。
SpaceWire協(xié)議有鏈路斷開(kāi)檢測(cè)功能,當(dāng)850ns內(nèi)Din和Sin信號(hào)都沒(méi)有變化時(shí)(即沒(méi)有發(fā)生高低電平的變化),會(huì)產(chǎn)生內(nèi)部報(bào)錯(cuò)。輸入信號(hào)與本地時(shí)鐘為異步信號(hào),存在產(chǎn)生亞穩(wěn)態(tài)的可能。常規(guī)的設(shè)計(jì)方法是使用本地時(shí)鐘同步兩次輸入信號(hào),然后進(jìn)行邊沿檢測(cè),邊沿檢測(cè)原理為判斷相隔幾個(gè)時(shí)鐘周期的采樣信號(hào)是否相等。當(dāng)檢測(cè)到邊沿信號(hào)時(shí),清空復(fù)位計(jì)數(shù)器,如果在一定時(shí)間內(nèi)沒(méi)有檢測(cè)到邊沿信號(hào),計(jì)數(shù)器則會(huì)達(dá)到預(yù)設(shè)值,產(chǎn)生鏈路斷開(kāi)連接錯(cuò)誤信號(hào)。電路原理如圖6左側(cè)所示。
圖6 常規(guī)設(shè)計(jì)與三模冗余設(shè)計(jì)Fig.6 Conventional design and triple modular redundancy design
實(shí)際使用ChipScope采樣數(shù)據(jù)時(shí),發(fā)現(xiàn)Din或者Sin信號(hào)電平發(fā)生變化,但是計(jì)數(shù)器并沒(méi)有清零仍然繼續(xù)計(jì)數(shù)的現(xiàn)象,如圖7所示。筆者認(rèn)為是本地時(shí)鐘同步輸入信號(hào)時(shí)產(chǎn)生了亞穩(wěn)態(tài),導(dǎo)致邊沿檢測(cè)電路失效,沒(méi)有對(duì)計(jì)數(shù)器復(fù)位,使計(jì)數(shù)器達(dá)到預(yù)設(shè)值而產(chǎn)生錯(cuò)誤報(bào)警信號(hào)。
圖7 Din和Sin信號(hào)電平發(fā)送變化,邊沿檢測(cè)失效Fig.7 Din and Sin signal level sent changes in the edge detection failure
本文對(duì)雙采樣電路和邊沿檢測(cè)電路進(jìn)行三模冗余設(shè)計(jì)[5],只要有一個(gè)檢測(cè)到邊沿的生效,即可以驅(qū)動(dòng)計(jì)數(shù)器清零復(fù)位,如圖6右側(cè)所示,這種設(shè)計(jì)方案降低了亞穩(wěn)態(tài)導(dǎo)致邊沿檢測(cè)失效的可能性。亞穩(wěn)態(tài)的產(chǎn)生是以概率來(lái)衡量的,即使經(jīng)過(guò)本地時(shí)鐘同步的信號(hào),仍然存在產(chǎn)生亞穩(wěn)態(tài)的風(fēng)險(xiǎn),只是概率會(huì)減小很多。對(duì)邊沿檢測(cè)模塊進(jìn)行TMR設(shè)計(jì),可以進(jìn)一步降低亞穩(wěn)態(tài)的產(chǎn)生對(duì)系統(tǒng)功能造成的影響。
本文對(duì)TMR加固后的SpaceWire節(jié)點(diǎn)進(jìn)行了測(cè)試,測(cè)試系統(tǒng)由FPGA電路板和DunDee大學(xué)的SpaceWire標(biāo)準(zhǔn)設(shè)備組成。
SpaceWire節(jié)點(diǎn)在使用TMR設(shè)計(jì)前后所占用FPGA資源的變化如表1所示??梢钥吹皆谶M(jìn)行TMR設(shè)計(jì)前后,F(xiàn)PGA資源變化很大,尤其是LUT的資源,幾乎增加了一倍,這是由于TMR設(shè)計(jì)時(shí),在發(fā)送端DS編碼模塊時(shí)使用了3個(gè)多數(shù)表決器和3個(gè)少數(shù)表決器,導(dǎo)致組合邏輯資源增加。相應(yīng)的FPGA布局布線難度增加及關(guān)鍵信號(hào)路徑延遲的增加,導(dǎo)致FPGA時(shí)序性能有所降低。因?yàn)槭褂秒p沿采樣(ODDR)發(fā)送[8],所以理論上發(fā)送端速率仍然高達(dá)450Mbit/s,但是受器件IO端口最高頻率的限制以及PCB布線EMI的影響,實(shí)際測(cè)試時(shí),F(xiàn)PGA運(yùn)行在100MHz,對(duì)應(yīng)200Mbit/s的傳輸速率。測(cè)試中使用ChipScope截圖與圖7相似,未另行截圖。
表1 TMR操作前后FPGA資源使用Tab.1 FPGA resource usage between used TMR and unused TMR
本文同時(shí)使用SpaceWire總線和TMR加固設(shè)計(jì),結(jié)合SpaceWire總線在傳輸機(jī)制上的高容錯(cuò)性和三模冗余設(shè)計(jì)在FPGA功能實(shí)現(xiàn)上的高可靠性,對(duì)SpaceWire節(jié)點(diǎn)設(shè)計(jì)中的關(guān)鍵功能模塊進(jìn)行XTMR軟件輔助三模冗余設(shè)計(jì)和手動(dòng)三模冗余設(shè)計(jì)。目前,國(guó)內(nèi)尚無(wú)公開(kāi)文獻(xiàn)報(bào)道TMR加固的SpaceWire節(jié)點(diǎn)與SpaceWire標(biāo)準(zhǔn)設(shè)備之間的數(shù)據(jù)傳輸。本文使用TMR設(shè)計(jì),在降低亞穩(wěn)態(tài)導(dǎo)致系統(tǒng)功能錯(cuò)誤方面做了有益的嘗試。
(References)
[1]劉濤,黃偉,潘衛(wèi)軍.SpaceWire軟核的設(shè)計(jì)與驗(yàn)證[J].航天返回與遙感,2011,32(1):51-58.
LIU Tao,HUANG Wei,PAN Weijun.Design and Verification of SpaceWire IP Core[J].Spacecraft Recovery&Remote Sensing,2011,32(1): 51-58.(in Chinese)
[2]Ponomarev S A.SpaceWire In Prospective Space Systems and International Collaboration[C].SpaceWire-2010 Proceedings of the 3rd International SpaceWire Conference,Petersburg,2010.
[3]Xilinx.Triple Module Redundancy Design Techniques for Virtex FPGAs[EB/OL].//www.Xilinx.com.
[4]European Cooperation for Space Standardization,ECSS-E-50-ST-12C SpaceWire-links,Nodes,Routers and Networks[S].Issue2,European Cooperation for Space Standardization,2008.
[5]Masaharu Nomachi.Race Condition Free SpaceWire Decoder For FPGA[C].SpaceWire-2010 Proceedings of the 3rd International SpaceWire Conference,Petersburg,2010.
[6]Xilinx.TMRToolUser Guide,Version9.2i[EB/OL].//www.Xilinx.com.
[7]Actel.Implementation of the SpaceWire Clock Recovery Logic in Actel RTAX-S Devices[EB/OL].//www.actel.com
[8]Xilinx.Virtex-5 User Guide[EB/OL].//www.Xilinx.com.