呂 達 吳 飛 陸 華
(航天恒星科技有限公司,北京 100086)
太空環(huán)境下,賽靈思(XILINX)靜態(tài)隨機存儲器(S RAM)型的現(xiàn)場可編程門陣列(FPGA)容易受到單粒子翻轉(zhuǎn)(SEU)的影響。FPGA片內(nèi)所有S RAM 都可能受到SEU 的影響,包括配置存儲單元、用戶邏輯單元、配置邏輯寄存器。配置存儲單元的內(nèi)容決定著FPGA的功能,配置存儲單元發(fā)生翻轉(zhuǎn)會導(dǎo)致FPGA功能持續(xù)改變,直至下次重新配置完成。用戶邏輯單元包括塊RAM(BRAM)以及可編程邏輯單元(CLB)、可編程IO 單元(IOB)中的觸發(fā)器,這些存儲單元的值在FPGA運行過程中實時刷新,所以SE U 影響不大。配置控制邏輯寄存器發(fā)生翻轉(zhuǎn)屬于單粒子功能中斷(SEFI)的內(nèi)容,會導(dǎo)致FPGA配置功能失效,但配置控制寄存器發(fā)生錯誤概率極低。據(jù)NASA測試數(shù)據(jù)顯示,每70年才可能發(fā)生一次[1]。故配置存儲單元SEU是FPGA抗SEU 設(shè)計中最重要的內(nèi)容。
目前抗SEU 的措施包括通過一定厚度的材料進行輻射屏蔽、冗余設(shè)計、擦洗(Scrubbing)以及系統(tǒng)監(jiān)控與重配置等。
冗余的方法包括采用多個完成相同功能的器件進行備份以及在同一器件中三模冗余容錯技術(shù)(TM R)[2],冗余設(shè)計的假設(shè)前提是:任何兩個存儲單元的同一位不會在同一時間發(fā)生SEU 效應(yīng)[3]。采用多個完成相同功能的器件備份可以提高可靠性,但會造成體積和功耗的增加;三模冗余設(shè)計可以帶來可靠性的提高[4-5],但會使模塊的速度降低、占用資源和功耗增加。
擦洗的方法是指周期性的刷新存儲單元中的內(nèi)容,可以減少受到SEU 而發(fā)生翻轉(zhuǎn)的概率,這種方法的優(yōu)點是無需額外的硬件邏輯資源,實現(xiàn)簡單,其缺點是無法對擦洗數(shù)據(jù)進行校驗,不能判斷是否發(fā)生過SEU,而且只能恢復(fù)暫態(tài)故障[6]。同時,如果擦洗的時間間隔越大,可靠性就會降低[7]。
對配置存儲器進行回讀和重配置是一種有效的抵抗SEU 的方法,在FPGA實時運行過程中,回讀配置存儲器,并對讀出的數(shù)據(jù)進行校驗,如果發(fā)現(xiàn)錯誤則重新配置。目前NASA[8]、日本的智能衛(wèi)星(SmartSat)[9]工作組都進行了基于這種結(jié)構(gòu)的衛(wèi)星信號處理平臺的研究,國內(nèi)國防科技大學(xué)[10]、航天恒星科技有限公司等單位也進行了這方面的研究,并取得了一定的進展。
本文以XILINX Virtex-II FPGAXC2V3000為例,分別通過內(nèi)部訪問接口(ICAP)和外部并行訪問接口(SelectMap),回讀配置數(shù)據(jù)并校驗,實現(xiàn)了S EU 檢測。另外,通過局部動態(tài)重構(gòu)的方法,在地面環(huán)境實現(xiàn)了故障注入。
FPGA抗SEU 設(shè)計框圖如圖1所示,包括如下4個模塊。
圖1 FPGA抗SEU 設(shè)計方案Fig.1 Structure of SEU mitigation
1)目標模塊:指被檢測以及故障注入的實體。它們具備檢測以及故障注入的接口。
2)監(jiān)控模塊:對被檢測目標進行監(jiān)控,對情況進行判斷;在出現(xiàn)故障之后報告故障處理模塊。
3)故障處理模塊:檢測出目標系統(tǒng)故障后,根據(jù)故障類型,進行相應(yīng)的處理。可以是給出報錯信息,也可能對錯誤予以糾正,也可能是既報錯又給予糾正。
4)故障注入模塊:在驗證檢測算法時使用,包括故障注入器和故障集。
故障注入器指對目標系統(tǒng)實施故障注入的實體。它根據(jù)故障注入模型條件,在故障注入時機到來的情況下,對目標系統(tǒng)進行故障注入。
故障集由實際發(fā)生在系統(tǒng)中的故障組成。故障集是通過對故障模型進行分析得到的集合。對于單粒子故障集來說,故障集包括了SEU、SEFI、單粒子鎖定(SEL)等,其中SEU 故障集包括CLB 故障、IOB 故障、全局時鐘(GCLK)故障以及BRAM Interconnect 故障等。
FPGA配置存儲器SEU 檢測可以通過ICAP和SelectMap 接口實現(xiàn)。通過ICAP 接口,FPGA可以在普通星載軟件無線電平臺實現(xiàn)對自身的SEU 檢測。目標模塊由兩片XILINX FPGA實現(xiàn),監(jiān)控模塊位于被監(jiān)控FPGA內(nèi)部,故障注入以及故障處理模塊由被監(jiān)控FPGA和DSP 模塊完成,如圖2所示。通過SelectMap 接口實現(xiàn)SEU 檢測,需要在普通星載軟件無線電平臺基礎(chǔ)上增加監(jiān)控模塊。目標模塊是兩片XILINX FPGA,監(jiān)控模塊由反镕絲FPGA,反镕絲FPGA通過SelectMap 接口回讀SRAM 型FPGA的配置數(shù)據(jù)。故障注入以及故障處理模塊由反镕絲FPGA和DSP 模塊完成,如圖3所示。
圖2 通過ICAP 接口進行FPGASEU檢測的硬件框架Fig.2 Detecting SEU for FPGAby ICAP
圖3 通過SelectMap 接口進行檢測的硬件框架Fig.3 Detecting SEU for FPGAby SelectMap
對FPGA配置存儲單元進行SEU 檢測的辦法是:目標FPGA在工作狀態(tài)下,對其可配置單元中的內(nèi)容進行回讀(active readback),對配置數(shù)據(jù)進行校驗。為了避免破壞BRAM 中的內(nèi)容,只針對其他內(nèi)容進行回讀校驗。
2.1.1 回讀接口選擇
Virtex II FPGA配置訪問接口包括JTAG、SelectMap,以及ICAP 三種,其中ICAP是內(nèi)部訪問接口,監(jiān)控模塊在目標FPGA內(nèi)部完成,通過ICAP接口訪問配置存儲器,可以實現(xiàn)對目標FPGA自身的檢測,電路結(jié)構(gòu)最為簡單,不需要另加監(jiān)控模塊,但監(jiān)控模塊自身也有發(fā)生SEU 的可能,如圖2所示。JTAG 和Selectmap 都是外部訪問接口,外部設(shè)備通過這兩個接口可以實現(xiàn)對目標FPGA進行回讀,但Selectmap是并行接口,回讀速度快,訪問方便,如圖3所示。本設(shè)計分別選擇了ICAP 接口和SelectMap 接口進行回讀檢測。
2.1.2 檢測周期確定
根據(jù)NASA和XILINX 一起對XILINX VirtexII 器件(XC2V1000)進行輻照測試獲得的參數(shù),見表1[11]。以XC2V1000配置存儲器的3Mbit為例,根據(jù)該數(shù)據(jù)可知,平均每天就會發(fā)生1.3bit 的位翻轉(zhuǎn)錯誤,發(fā)生 SEU 的最長時間為 18h,XC2V3000 的配置存儲器大約為9M bit,估算得發(fā)生SE U 的最長時間約為6h。SEU 檢測速率至少是故障概率的10倍,所以最長檢測時間為0.6h。
如果回讀檢測模塊工作時鐘為10M Hz,通過SelectMap 接口,對XC2V3000 配置存儲器進行回讀檢測,完成1次檢測大約需要的時間是110ms,因此最短周期就是110ms。
根據(jù)以上考慮,文章選定1s 對配置存儲器進行1次回讀檢測。
2.1.3 檢測內(nèi)容確定
S EU 檢測的做法通常是對配置存儲器的所有內(nèi)容進行回讀檢測,但并不是所有回讀數(shù)據(jù)都需要校驗,如BRAM 中的內(nèi)容。XILINX 提供了mask文件,表明了不需要校驗的內(nèi)容。但如果校驗的時候使用mask 文件,需要占用存儲空間,XC2V300器件mask 文件大約9.2M bit,對星載電子設(shè)備來說是一個很大的空間。文章將mask 文件嵌入到配置以及回讀中去,回讀數(shù)據(jù)可以直接和原始bit 文件進行校驗或者進行C RC 校驗,節(jié)省了存儲空間。
故障注入是模擬FPGA、SEU,以及單粒子功能中斷等單粒子效應(yīng)的一種有效方法。對FPGA進行S EU 模擬可以采用重離子輻射的方法,NASA的噴氣推進實驗室(JPL)和單粒子效應(yīng)(SEE)協(xié)會對大規(guī)模集成電路的單粒子效應(yīng)進行了很多模擬試驗,利用各種模擬源(粒子加速器提供的各種重離子和質(zhì)子、脈沖激光等)對FPGA進行輻照,使FPGA配置單元發(fā)生隨機錯誤。在算法調(diào)試階段,采用照射的方法會花費高額費用,另外也不利于實施。
利用Virtex II 系列FPGA可局部動態(tài)重構(gòu)的特點。局部動態(tài)重構(gòu)技術(shù)指對于特定的基于SRAM 結(jié)構(gòu)的FPGA,在一定的控制邏輯的驅(qū)動下,對芯片的部分邏輯資源實現(xiàn)在系統(tǒng)的高速的功能變換。局部動態(tài)重構(gòu)是指對重構(gòu)器件或系統(tǒng)的一部分進行重新配置,而在此過程中,其余部分的工作狀態(tài)不受影響。
XILINX Virtex II FPGA最小訪問單元為1幀,因此對FPGA配置存儲器每幀進行動態(tài)重構(gòu)即可完成單粒子模擬。這種研究方法可以在很大程度上仿真地面單粒子模擬試驗,縮短試驗周期,提高試驗的靈活性?;贔PGA配置文件的保密性要求,以及XILINX FPGA結(jié)構(gòu)本身的保密性,XILINX對配置文件中每一幀具體的邏輯資源以及如何組織這部分信息是不公布的。每一幀配置數(shù)據(jù)不但包含對邏輯資源的配置,即某些位不允許故障注入,可以參考mask 文件對允許比較的位進行故障注入。
故障注入模塊由三部分組成:故障模式寄存器、控制寄存器、故障發(fā)生器。故障模式寄存器和控制寄存器可以由處理器通過特權(quán)指令訪問,可以很方便地設(shè)置故障模式,制造所期望的故障模式,并控制故障的注入。故障模式寄存器可以對FPGA的不同部位設(shè)置所期望的故障模式。如欲使CLB部分的第i 幀第j 位發(fā)生翻轉(zhuǎn),只要設(shè)置故障模式寄存器相應(yīng)的數(shù)據(jù)位即可??刂萍拇嫫骺梢钥刂乒收系牟迦?再非調(diào)試模式下可以禁止故障的插入,保證被監(jiān)控FPGA正常運行。在調(diào)試模式下,允許故障的插入,數(shù)據(jù)在經(jīng)過故障注入器后,產(chǎn)生類似于SEU效應(yīng)的錯誤數(shù)據(jù),寫入到配置存儲器,達到故障注入的目的。
S EU 檢測試驗的軟件流程如圖4所示:秒脈沖下降沿到來時,檢測故障注入標志,如果故障注入標志為1,則進行故障注入,即對配置存儲器的一幀進行改寫,否則對配置存儲器進行檢測。
圖4 S EU 檢測試驗軟件流程圖Fig.4 SEU detection algorithm flow chart
3.1.1 通過ICAP 實現(xiàn)SEU 檢測
FPGA對自身配置存儲器進行檢測結(jié)果如下:被監(jiān)控FPGA實現(xiàn)點燈功能,未進行故障注入的時候,回讀數(shù)據(jù)的CRC值保持恒定,如圖5所示,CRC值始終是0xA2E2,檢測結(jié)果compareout 信號也始終為低電平。
對配置存儲器進行故障注入,配置存儲器的Block Interconnect 列的第一幀的第一個字節(jié)進行改寫,將最初的一個字節(jié)0×00 改為了0×07。故障注入后重新檢測,回讀數(shù)據(jù)的CRC值變?yōu)镕00F,檢測結(jié)果信號compareout 也變?yōu)楦唠娖?表明檢測到SEU 翻轉(zhuǎn),如圖6所示。
圖5 未故障注入時候CRC值始終不變Fig.5 CRC data are fixed w hen no SEU happens
圖6 故障注入后CRC 發(fā)生變化Fig.6 CRC data are changed when SEU happens
3.1.2 通過SelectMap 接口實現(xiàn)SEU 檢測
目標FPGA實現(xiàn)點燈功能。故障注入前始終未檢測到SEU。故障注入是通過對GCLK 前兩幀數(shù)據(jù)進行改寫實現(xiàn)的。對配置存儲器前兩幀數(shù)據(jù)第一個字節(jié)分別寫入0×0C,原來都是0×00;其余部分寫入0×00。故障注入后小燈停止閃爍,開啟回讀檢測模塊,檢測到SEU,如圖7所示。
圖7 故障注入后后檢測到單粒子翻轉(zhuǎn)Fig.7 S EU is detected after bug is inserted
圖7中,從上至下第8個信號compare_o表示回讀的配置數(shù)據(jù)與原始數(shù)據(jù)的比較結(jié)果,readnum表示回讀比特計數(shù)。由圖中看出當readnum=666時,compare_o為高電平,表示檢測到了SEU。
3.2.1 通過ICAP 實現(xiàn)SEU 檢測
FPGA中實現(xiàn)的功能是通過ICAP 對自身配置存儲器進行回讀,并對讀出的數(shù)據(jù)進行CRC 校驗,所使用的資源如表2所示。
由表2可見,本文的FPGA抗SEU 設(shè)計占用資源少。本設(shè)計在星載GPS 接收機FPGA模塊中進行了試驗,FPGA設(shè)計在增加抗SEU 的功能的同時,不會造成資源的顯著增加。
表2 FPGA通過ICAP 對自身配置存儲器SEU 檢測資源使用情況Table2 Resource using condition when detecting SEU in FPGAconfiguration memory through ICAP by itself
3.2.2 通過SelectMap 接口SE U 檢測
本設(shè)計中選用Virtex II xc2v1500 代替反镕絲器件,對S RAM 型FPGA進行檢測。監(jiān)控FPGA內(nèi)部實現(xiàn)監(jiān)控模塊、判決等功能,使用資源見表3。可見,通過SelectMap 接口實現(xiàn)SEU 檢測占用資源很少。
表3 通過SelectMap 回讀檢測SEU 資源占用情況Table3 Resource using condition when detecting SEU in FPGAconfiguration memory through Seletcmap
文章分析了S RAM 型FPGASEU 的特點,以及FPGA抗SEU 方法,并通過對配置數(shù)據(jù)進行回讀校驗的方法實現(xiàn)了SEU 檢測。
FPGA通過ICAP可以實現(xiàn)自身SE U 檢測,但由于檢測模塊運行于FPGA內(nèi)部,也可能發(fā)生SEU,可以通過對檢測模塊進行三模冗余設(shè)計提高可靠性,另外可以采用片外反镕絲器件通過Select-Map 接口對FPGA配置存儲器進行回讀,實施SEU 檢測是更加可靠的辦法。
References)
[1]Roosta R.AComparison of radiation-hard and radiation-tolerant FPGAs for space applications[R].NAS A,DEC,2004
[2]Carmichael C.Triple module redundancy design techniques for Virtex series FPGA[EB/OL].(2006-07-06).[2009-07-30]http://www.XILINX.com/hvdoes/apnotes/xapp197.pdf
[3]賀朝會,陳曉華,李國政.高能質(zhì)子單粒子翻轉(zhuǎn)效應(yīng)的模擬計算[J].計算物理,2002,19(4):367-371
[4]Samudrala P K,Ramos J,Katkoori S.Selective triple modular redundancy (STMR)based single-event upset(S EU)tolerant synthesis for FPGAs[J].IEEE Transactions on Nuclear Science,2004,51(5)
[5]Fuller E,Caffrey M ,Salazar A,et al.Radiation testing update,SE U mitigation,and availability analysis of the Virtex FPGAfor space reconfigurable com puting[C]//4thAnnual Conference on Military and Aerospace Programmable Logic Devices(MAPLD).Washington DC:NASAOffice of Logic Design,September 2000
[6]Carmichael C,Fuller E,Blain E A.SEU mitigation techniques for Virtex FPGAs in space applications[C]// Proceeding of the Military and Aerospace Programmable Logic Devices and Technology Conference,1999
[7]Shubhendu S M,Emer J,Fossum T,et al.Cache scrubbing in microprocessors:mythor necessity [C]//PRDC' 04:10thIEEE Pacific Rim International Symposium on Dependable Computing.Tahiti,French Polynesia,2004
[8]Robert F,H odson1,Somervill K,et al.An architecture for reconfigurable computing in space[C]//Military and Aerospace Applications of Programmable Devices and Technologies Conference (MAPLD),Washington DC:NASAOffice of Logic Design,Sepetmber 2005
[9]Nishinaga N,Takeuchi M,Suzuki R.Reconfigurable communication equipment on smartSat-1[C].Military and Aerospace Applications of Programmable Devices and Technologies Conference (MAPLD),Washington DC:NASAOffice of Logic Design,September 2004
[10]邢克飛,楊俊,王躍科,等.XILINX SRAM 型FPGA抗輻射技術(shù)研究[J].宇航學(xué)報,2007,28(1)
[11]Yui C,Swif t G,Carmichael C.Single event upset susceptibility testing of the XILINX Virtex II FPGA[C]//Military and Aerospace Applications of Programmable Devices and Technologies Conference(MAPLD).Washington DC:NAS AOffice of Logic Design,September 2002