張俊杰,孫哲煜,周浩,林海兵,顧得友
上海航天電子技術(shù)研究所,上海,201109
空間輻射環(huán)境中存在各種高能射線粒子,如質(zhì)子、α粒子、電子、重離子等[1],這些高能粒子照射到CMOS器件上會產(chǎn)生單粒子效應(yīng)。目前,Xilinx公司的SRAM型FPGA已廣泛應(yīng)用于各類宇航任務(wù)。當(dāng)宇宙射線中的重離子元素在SRAM單元附近沉積足夠的電荷后,SRAM數(shù)據(jù)位會出現(xiàn)單比特錯誤,發(fā)生單粒子翻轉(zhuǎn)[2]。而且,由于SRAM型FPGA的邏輯配置存儲在SRAM配置區(qū)中,若其中存在誤碼,則會導(dǎo)致整個電路的布局和功能受到影響。存儲配置區(qū)在SRAM型FPGA中占據(jù)了90%以上的數(shù)據(jù)位,因此很難提前預(yù)防或檢測。
SRAM型FPGA對單粒子效應(yīng)較為敏感,其翻轉(zhuǎn)閾值小于3MeV,在軌容易產(chǎn)生單粒子翻轉(zhuǎn),因此整星及星上單機(jī)在設(shè)計時應(yīng)充分考慮在軌使用的可靠性問題,并根據(jù)應(yīng)用采取相應(yīng)的加固設(shè)計措施[3]。本文給出了一種低成本的抗輻照解決方案,采用定時刷新及三模冗余的方法糾正產(chǎn)生的誤碼,并通過RTL代碼仿真以及測試平臺進(jìn)行了驗證,提高了單機(jī)設(shè)計的可靠性。
FPGA作為的一種半定制集成電路,包含了大量可靈活配置的硬件資源,既克服了專用ASIC電路無法重新配置的缺點(diǎn),又突破了可編程器件門電路的資源限制,適用于快速搭建各類高速數(shù)字電路。按照所采用的工藝類型劃分,F(xiàn)PGA芯片的類型主要有SRAM型、反熔絲型和Flash型三大類。
如圖1所示,SRAM型的 FPGA主要由可配置邏輯模塊(CLB)、輸入輸出模塊(IOB)以及內(nèi)部連線等資源組成。每個CLB模塊又由多個查找表、輸入輸出模塊以及多路復(fù)用器等構(gòu)成,可實現(xiàn)布爾邏輯功能,各CLB模塊之間可通過內(nèi)部連接線資源自由連接。輸入輸出模塊(IOB)為FPGA芯片與外部器件的接口模塊,能夠?qū)崿F(xiàn)對輸入輸出信號的驅(qū)動和匹配要求。FPGA矩陣還包括Block RAM模塊、分布式RAM和DCM時鐘管理模塊等。
圖1 SRAM 型FPGA 結(jié)構(gòu)
SRAM型FPGA是通過讀取片內(nèi)存儲配置區(qū)中的程序來配置電路結(jié)構(gòu)的。通過模式配置,用戶可以采取不同的編程模式。配置區(qū)RAM單元對單粒子事件較為敏感,因此會影響其控制的邏輯資源以及布局布線。根據(jù)FPGA的組成結(jié)構(gòu),單粒子翻轉(zhuǎn)影響的模塊一般可分為Block RAM、可配置邏輯模塊(CLB)、時鐘管理單元、內(nèi)部連線和IOB模塊,具體的翻轉(zhuǎn)截面主要由對各類資源的消耗情況決定[4]。
目前針對SRAM型FPGA的單粒子翻轉(zhuǎn)問題,主要有回讀重載以及定時刷新兩種防護(hù)措施[5]?;刈x重載即對SRAM型FPGA中的配置數(shù)據(jù)進(jìn)行回讀,并與外置存儲器中的數(shù)據(jù)進(jìn)行比對,當(dāng)其累計錯誤量超過一定門限值則對SRAM型FPGA進(jìn)行重載。在重載恢復(fù)期間單機(jī)功能將暫時停止,因此該方式將影響部分功能。定時刷新通過周期性地對FPGA配置空間進(jìn)行逐幀重寫來糾正配置中的錯誤,該技術(shù)可在不中止系統(tǒng)功能的情況下糾正存儲配置區(qū)中的單粒子錯誤。綜上所述,本文將采用三模冗余以及定時刷新的方式來降低單粒子翻轉(zhuǎn)錯誤。
SRAM型FPGA的刷新方式主要有兩種:一種是通過反熔絲FPGA進(jìn)行回讀刷新控制;另一種是通過專用的ASIC芯片進(jìn)行回讀刷新控制,但其支持的外圍存儲器件較為有限[6]?;谕ㄓ眯栽O(shè)計及靈活性考慮,本文采用方式一進(jìn)行抗SEU設(shè)計,該方案可以兼容多種XILINX VIRTEX系列FPGA,可通過跳線進(jìn)行FPGA選型配置。本文所提出的抗SEU方案主要由Nor FLASH、刷新芯片(AX500)和XC5VFX130T構(gòu)成,其結(jié)構(gòu)如圖2所示。其中XC5VFX130T芯片主要實現(xiàn)高速數(shù)字信號處理,AX500反熔絲芯片主要完成對V5 FPGA的配置、監(jiān)控及刷新功能,Nor Flash用于存放配置程序。
圖2 系統(tǒng)硬件結(jié)構(gòu)
由圖1可知,系統(tǒng)工作時,反熔絲FPGA首先會讀取三片Nor FLASH中存儲的配置文件,采用表決通過的數(shù)據(jù)作為正確配置信息對XILINX V5系列FPGA進(jìn)行加載,然后通過SelectMap接口實現(xiàn)對Virtex5 FPGA的定時刷新。
對XILINX V5系列FPGA的刷新控制主要由AX500反熔絲FPGA完成,本文設(shè)計的FPGA刷新模塊的工作流程如圖6所示,主要分為以下3部分。
圖6 系統(tǒng)工作流程
(1)FPGA初始化。Xilinx FPGA上電穩(wěn)定期間,設(shè)計將PROG_B信號拉低3ms對被加載的FPGA配置進(jìn)行初始化復(fù)位,在復(fù)位過程中INIT_B信號將保持低電平。等待TPOR時間后若INIT_B拉高則表示FPGA配置區(qū)內(nèi)存已清除,可以執(zhí)行下一步流程;若INIT_B一直為低,則不斷檢測該信號,直至拉高為止。
(2)配置FPGA。初始化結(jié)束后,開始配置FPGA,設(shè)置FPGA管腳M2~M0為110,F(xiàn)PGA將在INIT_B拉高期間設(shè)置pin腳,設(shè)置加載模式為SelectMap方式。隨后反熔絲FPGA將按指定時序從Nor Flash中讀取配置數(shù)據(jù)進(jìn)行表決,將表決通過的配置數(shù)據(jù)沿CCLK送至SelectMap接口數(shù)據(jù)線上。然后模塊將持續(xù)監(jiān)測DONE信號查看是否加載成功,若超過預(yù)設(shè)的配置時間仍未拉高,則產(chǎn)生PROG_B低電平脈沖對Xilinx FPGA進(jìn)行重載,重載8次仍不成功則回到初始化狀態(tài)對FPGA進(jìn)行復(fù)位。反熔絲FPGA與Nor Flash接口信號主要由Address[22:0]、CE#、OE#、WE#、Data[15:0]、RY/BY#等信號構(gòu)成,接口時序圖如圖3所示[7]。
圖3 NorFlash 讀時序圖
(3)定時刷新。當(dāng)監(jiān)測到DONE信號拉高后,則說明Xilinx FPGA加載成功。隨后按10MHz的工作頻率執(zhí)行定時刷新操作并對寫讀FAR寄存器進(jìn)行SEFI檢測,檢測到單粒子翻轉(zhuǎn)則進(jìn)行FPGA重載。根據(jù)用戶手冊,XC5VFX130 FPGA的配置數(shù)據(jù)共有1065221字(25981幀*41字/幀)。如圖4所示,刷新FPGA與待加載FPGA接口信號主要由PROG_B、INIT_B、DATA[0:7]、CCLK、DONE、RDWR_B、CS_B等信號構(gòu)成。
圖4 FPGA 刷新時序圖
圖5 FPGA 刷新流程圖
本文提出了一種基于反熔絲FPGA的單粒子防護(hù)方案,為了測試該方案是否滿足設(shè)計要求,本節(jié)使用Modelsim對設(shè)計的RTL電路進(jìn)行了仿真,并進(jìn)行了應(yīng)用驗證[8]。
圖7所示為刷新控制模塊的仿真驗證波形,從圖中可以看出,控制模塊將讀取的配置數(shù)據(jù)通過SelectMap接口對FPGA進(jìn)行定時刷新,刷新時序符合FPGA芯片手冊的要求[9]。隨后通過模擬故障注入的方式對單粒子翻轉(zhuǎn)進(jìn)行了模擬,禁止刷新功能,并且經(jīng)JTAG調(diào)試接口對XILINX FPGA加載錯誤的bit文件;注入錯誤的配置文件后單機(jī)遙測存在異常,打開刷新功能后單機(jī)功能恢復(fù)正常。上述驗證方案表明本文設(shè)計的系統(tǒng)功能能夠及時糾正單粒子錯誤。
圖7 定時刷新時序圖
本文以航天任務(wù)為背景,分析了XILINX Virtex系列FPGA芯片的機(jī)理,并根據(jù)實際需求提出了一種三模冗余及定時刷新相結(jié)合的抗SEU方案[10]。經(jīng)過仿真及驗證結(jié)果表明,本文所提出的抗SEU方案可有效解決SRAM型FPGA芯片在空間環(huán)境下的翻轉(zhuǎn)問題,提高了FPGA在宇航領(lǐng)域應(yīng)用的可靠性。