劉濤 賀強民 黃偉
(北京空間機電研究所,北京 100076)
SpaceWire總線技術(shù)是歐空局推出的一種面向航天應用的高速差分串行總線技術(shù)??梢越鉀Q星上分系統(tǒng)間、設(shè)備間通訊數(shù)據(jù)總線帶寬不足的問題,并且提供一種通用接口從而簡化和規(guī)范不同設(shè)備之間的互連。該總線技術(shù)已成功地應用于歐空局的Mars Express和Smart-1等多個空間任務,協(xié)議的實現(xiàn)主要使用專用芯片。使用FPGA實現(xiàn)SpaceWire節(jié)點具有設(shè)計靈活、傳輸協(xié)議可根據(jù)項目特點進行裁剪、設(shè)計成本低、系統(tǒng)集成度高等優(yōu)勢[1-2]。
FPGA功能加固技術(shù)包括三模冗余(Triple Modular Redundancy,TMR)技術(shù)、定時刷新配置技術(shù)、動態(tài)重配置技術(shù)等,可以降低空間高能粒子輻射導致的單粒子效應(Single-event Effects,SEE)對FPGA邏輯功能的影響。TMR技術(shù)相對于其它FPGA功能加固技術(shù),具有技術(shù)相對成熟和通用性強的優(yōu)勢。目前該技術(shù)已經(jīng)成功應用于空間任務中,典型的技術(shù)就是Xilinx公司的XTMR技術(shù)[3]。
本文結(jié)合SpaceWire高速串行總線在傳輸機制上的高容錯性和三模冗余設(shè)計在FPGA功能實現(xiàn)上的高容錯性,在SpaceWire節(jié)點代碼設(shè)計中對關(guān)鍵功能模塊進行了軟件輔助三模冗余設(shè)計和手動三模冗余設(shè)計,并在Xilinx公司FPGA上實現(xiàn)了TMR加固的SpaceWire節(jié)點與SpaceWire標準設(shè)備之間的高速數(shù)據(jù)傳輸。
SpaceWire節(jié)點設(shè)計應嚴格按照SpaceWire協(xié)議功能框架進行[4],如圖1所示。

圖1 SpaceWire協(xié)議節(jié)點的功能模塊圖Fig.1 SpaceWire link interface block diagram
在SpaceWire節(jié)點的FPGA設(shè)計中,根據(jù)協(xié)議特點對軟件功能模塊和時序域進行劃分[1,5]。如圖2所示,圖中不同功能模塊工作在不同的時鐘域(用顏色區(qū)分不同時鐘域),其中數(shù)字濾波編碼模塊(TxDSCode模塊)需要單獨做三模冗余設(shè)計。

圖2 SpaceWire節(jié)點設(shè)計的功能模塊劃分和時鐘域劃分Fig.2 SpaceWire link interface function and timing
傳統(tǒng)TMR設(shè)計方法將用戶邏輯(組合邏輯加上寄存器)進行了復制處理,3個相同的模塊接收3個相同的輸入,產(chǎn)生的結(jié)果送至多數(shù)表決器,表決器的輸出取決于3個輸入。若有一個模塊故障,則另兩個正常模塊的輸出可將故障模塊的輸出屏蔽,表決器輸出仍然正確,如圖3所示。

圖3 傳統(tǒng)TMR電路的邏輯功能受到SEE影響Fig.3 Traditional TMR circuit logic function affected by SEE

圖4 傳統(tǒng)TMR電路的時鐘受到SET影響Fig.4 Traditional TMR circuit clock affected by SET
雖然傳統(tǒng)TMR設(shè)計方法可以在一定程度上減小電路受SEE影響而出錯的概率,但仍存在如下不足:
1)若時鐘線受到單粒子瞬態(tài)SET影響,可能導致輸出錯誤,如圖4所示;
2)若組合邏輯受SEU影響,由于電路沒有提供寄存器錯誤恢復機制,會導致錯誤積累;
3)若多數(shù)表決器受SEU影響,將導致輸出錯誤。
XTMR是Xilinx公司的TMR設(shè)計軟件,相比傳統(tǒng)的TMR設(shè)計,XTMR方法從設(shè)計思路上進一步增加了FPGA功能的可靠性[6],XTMR電路結(jié)構(gòu)如圖5所示,其改進主要體現(xiàn)在3個方面:
1)三模時鐘信號和輸入信號。即使某一路時鐘信號受到SET影響,仍能保證輸出結(jié)果正確。
2)三模反饋邏輯和多數(shù)表決器。這樣即使某一個表決器受SEU影響出錯,仍能保證結(jié)果正確,并且多數(shù)選擇器后添加了反饋回路,可以及時糾正由組合邏輯帶來的寄存器錯誤。
3)三模輸出信號并且增加少數(shù)表決器。輸出端口添加了少數(shù)選擇器,該選擇器能夠在本路輸出與其它兩路不同時,將本路輸出三態(tài)門設(shè)置為高阻,這樣就不影響正確結(jié)果輸出。

圖5 Xilinx TMR設(shè)計電路結(jié)構(gòu)Fig.5 Circuit structure of the Xilinx TMR design
在實際的FPGA設(shè)計中,不是所有的功能模塊都適合做TMR。本文結(jié)合SpaceWire節(jié)點的特點對TMR適用性進行了如下分析。
1)模塊功能失效時對系統(tǒng)功能影響大的優(yōu)先做TMR。FPGA軟件根據(jù)數(shù)據(jù)流的方向進行軟件系統(tǒng)可靠性分析,不同功能模塊的失效,對整個系統(tǒng)功能的影響不同。TMR設(shè)計應首先針對對系統(tǒng)功能影響大的模塊。
2)是否適合做TMR。產(chǎn)生的時鐘信號或還原的時鐘信號不適合做TMR。時鐘是整個時序邏輯的基礎(chǔ),時鐘的產(chǎn)生或者時鐘的還原本身會存在相位差[7],對FPGA的時序會造成較大的影響,不符合時序邏輯設(shè)計的原則。
3)TMR設(shè)計成本分析。TMR設(shè)計時,相應的模塊資源會增加3倍以上,由于使用FPGA資源的增加,布局布線會更加困難,導致時序性能下降;另外,TMR需要的判斷表決電路中存在大量組合電路,有可能會變成FPGA時序的關(guān)鍵路徑,此時很難提高FPGA的時序性能。前期代碼設(shè)計在提高時序性能上的努力也很難體現(xiàn)。
在SpaceWire節(jié)點設(shè)計時,發(fā)送端DS編碼功能模塊失效時,會產(chǎn)生發(fā)送編碼錯誤。850ns鏈路斷開檢測功能模塊失效時,會產(chǎn)生超時斷開錯誤。這兩個模塊如果發(fā)生單粒子翻轉(zhuǎn)事件,會導致鏈路斷開復位,這需要經(jīng)過約26μs的時間才能重新建立連接,導致等效的傳輸效率下降。綜上所述,需對DS編碼模塊和鏈路斷開功能檢測模塊進行三模冗余設(shè)計。
在SpaceWire節(jié)點設(shè)計時,對發(fā)送端DS編碼模塊進行輔助三模冗余設(shè)計。
本文采用XTMR軟件的XTMRTool設(shè)計工具,分3步對M_TxDSCode模塊進行TMR設(shè)計。
第一步:先將需要做三模的代碼進行綜合,生成網(wǎng)表文件SPW_RS232.ngc。
第二步:將網(wǎng)表文件SPW_RS232.ngc導入TMRTool進行TMR操作,TMR讀取網(wǎng)表文件。首先,設(shè)置ISE軟件中的層次化結(jié)構(gòu),并設(shè)置XTMR軟件,鎖定IO端口,設(shè)置需要進行三模冗余的模塊。然后,當XTMR軟件運行完成并產(chǎn)生新的網(wǎng)表文件,手動修改新的網(wǎng)表文件,刪除新增加的IO端口,否則會與IO管腳約束文件產(chǎn)生沖突,編譯時出現(xiàn)錯誤。
第三步:建立第二個ISE工程,編譯XTMR產(chǎn)生的文件,增加三模冗余設(shè)計后,在Xilinx ISE Floop plannar下查看SpaceWire功能模塊架構(gòu),打開M_TxDSCode模塊,若該模塊中相應的寄存器變成TR0,TR1,TR2,則表明已經(jīng)成功做了三模冗余設(shè)計。
目前FPGA功能設(shè)計中,TMR大多用在抗單粒子翻轉(zhuǎn)的設(shè)計中,廣義上講,TMR設(shè)計的思想是降低目標部件發(fā)生錯誤對系統(tǒng)功能造成的影響,所以三模冗余設(shè)計也可以應用在降低亞穩(wěn)態(tài)導致系統(tǒng)功能錯誤的設(shè)計中。
在多時鐘域設(shè)計中,亞穩(wěn)態(tài)是常見的問題,一般使用雙采樣降低亞穩(wěn)態(tài)產(chǎn)生的概率,但是仍然有一定概率會產(chǎn)生亞穩(wěn)態(tài)。當產(chǎn)生亞穩(wěn)態(tài)時,最差情況下,需要經(jīng)過幾個甚至更多個時鐘周期,寄存器輸出才能穩(wěn)定在“0”或者“1”。 本文嘗試使用TMR設(shè)計來降低亞穩(wěn)態(tài)的產(chǎn)生對系統(tǒng)邏輯功能造成的影響。
SpaceWire協(xié)議有鏈路斷開檢測功能,當850ns內(nèi)Din和Sin信號都沒有變化時(即沒有發(fā)生高低電平的變化),會產(chǎn)生內(nèi)部報錯。輸入信號與本地時鐘為異步信號,存在產(chǎn)生亞穩(wěn)態(tài)的可能。常規(guī)的設(shè)計方法是使用本地時鐘同步兩次輸入信號,然后進行邊沿檢測,邊沿檢測原理為判斷相隔幾個時鐘周期的采樣信號是否相等。當檢測到邊沿信號時,清空復位計數(shù)器,如果在一定時間內(nèi)沒有檢測到邊沿信號,計數(shù)器則會達到預設(shè)值,產(chǎn)生鏈路斷開連接錯誤信號。電路原理如圖6左側(cè)所示。

圖6 常規(guī)設(shè)計與三模冗余設(shè)計Fig.6 Conventional design and triple modular redundancy design
實際使用ChipScope采樣數(shù)據(jù)時,發(fā)現(xiàn)Din或者Sin信號電平發(fā)生變化,但是計數(shù)器并沒有清零仍然繼續(xù)計數(shù)的現(xiàn)象,如圖7所示。筆者認為是本地時鐘同步輸入信號時產(chǎn)生了亞穩(wěn)態(tài),導致邊沿檢測電路失效,沒有對計數(shù)器復位,使計數(shù)器達到預設(shè)值而產(chǎn)生錯誤報警信號。

圖7 Din和Sin信號電平發(fā)送變化,邊沿檢測失效Fig.7 Din and Sin signal level sent changes in the edge detection failure
本文對雙采樣電路和邊沿檢測電路進行三模冗余設(shè)計[5],只要有一個檢測到邊沿的生效,即可以驅(qū)動計數(shù)器清零復位,如圖6右側(cè)所示,這種設(shè)計方案降低了亞穩(wěn)態(tài)導致邊沿檢測失效的可能性。亞穩(wěn)態(tài)的產(chǎn)生是以概率來衡量的,即使經(jīng)過本地時鐘同步的信號,仍然存在產(chǎn)生亞穩(wěn)態(tài)的風險,只是概率會減小很多。對邊沿檢測模塊進行TMR設(shè)計,可以進一步降低亞穩(wěn)態(tài)的產(chǎn)生對系統(tǒng)功能造成的影響。
本文對TMR加固后的SpaceWire節(jié)點進行了測試,測試系統(tǒng)由FPGA電路板和DunDee大學的SpaceWire標準設(shè)備組成。
SpaceWire節(jié)點在使用TMR設(shè)計前后所占用FPGA資源的變化如表1所示。可以看到在進行TMR設(shè)計前后,F(xiàn)PGA資源變化很大,尤其是LUT的資源,幾乎增加了一倍,這是由于TMR設(shè)計時,在發(fā)送端DS編碼模塊時使用了3個多數(shù)表決器和3個少數(shù)表決器,導致組合邏輯資源增加。相應的FPGA布局布線難度增加及關(guān)鍵信號路徑延遲的增加,導致FPGA時序性能有所降低。因為使用雙沿采樣(ODDR)發(fā)送[8],所以理論上發(fā)送端速率仍然高達450Mbit/s,但是受器件IO端口最高頻率的限制以及PCB布線EMI的影響,實際測試時,F(xiàn)PGA運行在100MHz,對應200Mbit/s的傳輸速率。測試中使用ChipScope截圖與圖7相似,未另行截圖。

表1 TMR操作前后FPGA資源使用Tab.1 FPGA resource usage between used TMR and unused TMR
本文同時使用SpaceWire總線和TMR加固設(shè)計,結(jié)合SpaceWire總線在傳輸機制上的高容錯性和三模冗余設(shè)計在FPGA功能實現(xiàn)上的高可靠性,對SpaceWire節(jié)點設(shè)計中的關(guān)鍵功能模塊進行XTMR軟件輔助三模冗余設(shè)計和手動三模冗余設(shè)計。目前,國內(nèi)尚無公開文獻報道TMR加固的SpaceWire節(jié)點與SpaceWire標準設(shè)備之間的數(shù)據(jù)傳輸。本文使用TMR設(shè)計,在降低亞穩(wěn)態(tài)導致系統(tǒng)功能錯誤方面做了有益的嘗試。
(References)
[1]劉濤,黃偉,潘衛(wèi)軍.SpaceWire軟核的設(shè)計與驗證[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.