張俊杰,孫哲煜,周浩,林海兵,顧得友
上海航天電子技術(shù)研究所,上海,201109
空間輻射環(huán)境中存在各種高能射線粒子,如質(zhì)子、α粒子、電子、重離子等[1],這些高能粒子照射到CMOS器件上會(huì)產(chǎn)生單粒子效應(yīng)。目前,Xilinx公司的SRAM型FPGA已廣泛應(yīng)用于各類宇航任務(wù)。當(dāng)宇宙射線中的重離子元素在SRAM單元附近沉積足夠的電荷后,SRAM數(shù)據(jù)位會(huì)出現(xiàn)單比特錯(cuò)誤,發(fā)生單粒子翻轉(zhuǎn)[2]。而且,由于SRAM型FPGA的邏輯配置存儲(chǔ)在SRAM配置區(qū)中,若其中存在誤碼,則會(huì)導(dǎo)致整個(gè)電路的布局和功能受到影響。存儲(chǔ)配置區(qū)在SRAM型FPGA中占據(jù)了90%以上的數(shù)據(jù)位,因此很難提前預(yù)防或檢測(cè)。
SRAM型FPGA對(duì)單粒子效應(yīng)較為敏感,其翻轉(zhuǎn)閾值小于3MeV,在軌容易產(chǎn)生單粒子翻轉(zhuǎn),因此整星及星上單機(jī)在設(shè)計(jì)時(shí)應(yīng)充分考慮在軌使用的可靠性問(wèn)題,并根據(jù)應(yīng)用采取相應(yīng)的加固設(shè)計(jì)措施[3]。本文給出了一種低成本的抗輻照解決方案,采用定時(shí)刷新及三模冗余的方法糾正產(chǎn)生的誤碼,并通過(guò)RTL代碼仿真以及測(cè)試平臺(tái)進(jìn)行了驗(yàn)證,提高了單機(jī)設(shè)計(jì)的可靠性。
FPGA作為的一種半定制集成電路,包含了大量可靈活配置的硬件資源,既克服了專用ASIC電路無(wú)法重新配置的缺點(diǎn),又突破了可編程器件門電路的資源限制,適用于快速搭建各類高速數(shù)字電路。按照所采用的工藝類型劃分,F(xiàn)PGA芯片的類型主要有SRAM型、反熔絲型和Flash型三大類。
如圖1所示,SRAM型的 FPGA主要由可配置邏輯模塊(CLB)、輸入輸出模塊(IOB)以及內(nèi)部連線等資源組成。每個(gè)CLB模塊又由多個(gè)查找表、輸入輸出模塊以及多路復(fù)用器等構(gòu)成,可實(shí)現(xiàn)布爾邏輯功能,各CLB模塊之間可通過(guò)內(nèi)部連接線資源自由連接。輸入輸出模塊(IOB)為FPGA芯片與外部器件的接口模塊,能夠?qū)崿F(xiàn)對(duì)輸入輸出信號(hào)的驅(qū)動(dòng)和匹配要求。FPGA矩陣還包括Block RAM模塊、分布式RAM和DCM時(shí)鐘管理模塊等。

圖1 SRAM 型FPGA 結(jié)構(gòu)
SRAM型FPGA是通過(guò)讀取片內(nèi)存儲(chǔ)配置區(qū)中的程序來(lái)配置電路結(jié)構(gòu)的。通過(guò)模式配置,用戶可以采取不同的編程模式。配置區(qū)RAM單元對(duì)單粒子事件較為敏感,因此會(huì)影響其控制的邏輯資源以及布局布線。根據(jù)FPGA的組成結(jié)構(gòu),單粒子翻轉(zhuǎn)影響的模塊一般可分為Block RAM、可配置邏輯模塊(CLB)、時(shí)鐘管理單元、內(nèi)部連線和IOB模塊,具體的翻轉(zhuǎn)截面主要由對(duì)各類資源的消耗情況決定[4]。
目前針對(duì)SRAM型FPGA的單粒子翻轉(zhuǎn)問(wèn)題,主要有回讀重載以及定時(shí)刷新兩種防護(hù)措施[5]。回讀重載即對(duì)SRAM型FPGA中的配置數(shù)據(jù)進(jìn)行回讀,并與外置存儲(chǔ)器中的數(shù)據(jù)進(jìn)行比對(duì),當(dāng)其累計(jì)錯(cuò)誤量超過(guò)一定門限值則對(duì)SRAM型FPGA進(jìn)行重載。在重載恢復(fù)期間單機(jī)功能將暫時(shí)停止,因此該方式將影響部分功能。定時(shí)刷新通過(guò)周期性地對(duì)FPGA配置空間進(jìn)行逐幀重寫來(lái)糾正配置中的錯(cuò)誤,該技術(shù)可在不中止系統(tǒng)功能的情況下糾正存儲(chǔ)配置區(qū)中的單粒子錯(cuò)誤。綜上所述,本文將采用三模冗余以及定時(shí)刷新的方式來(lái)降低單粒子翻轉(zhuǎn)錯(cuò)誤。
SRAM型FPGA的刷新方式主要有兩種:一種是通過(guò)反熔絲FPGA進(jìn)行回讀刷新控制;另一種是通過(guò)專用的ASIC芯片進(jìn)行回讀刷新控制,但其支持的外圍存儲(chǔ)器件較為有限[6]。基于通用性設(shè)計(jì)及靈活性考慮,本文采用方式一進(jìn)行抗SEU設(shè)計(jì),該方案可以兼容多種XILINX VIRTEX系列FPGA,可通過(guò)跳線進(jìn)行FPGA選型配置。本文所提出的抗SEU方案主要由Nor FLASH、刷新芯片(AX500)和XC5VFX130T構(gòu)成,其結(jié)構(gòu)如圖2所示。其中XC5VFX130T芯片主要實(shí)現(xiàn)高速數(shù)字信號(hào)處理,AX500反熔絲芯片主要完成對(duì)V5 FPGA的配置、監(jiān)控及刷新功能,Nor Flash用于存放配置程序。

圖2 系統(tǒng)硬件結(jié)構(gòu)
由圖1可知,系統(tǒng)工作時(shí),反熔絲FPGA首先會(huì)讀取三片Nor FLASH中存儲(chǔ)的配置文件,采用表決通過(guò)的數(shù)據(jù)作為正確配置信息對(duì)XILINX V5系列FPGA進(jìn)行加載,然后通過(guò)SelectMap接口實(shí)現(xiàn)對(duì)Virtex5 FPGA的定時(shí)刷新。
對(duì)XILINX V5系列FPGA的刷新控制主要由AX500反熔絲FPGA完成,本文設(shè)計(jì)的FPGA刷新模塊的工作流程如圖6所示,主要分為以下3部分。

圖6 系統(tǒng)工作流程
(1)FPGA初始化。Xilinx FPGA上電穩(wěn)定期間,設(shè)計(jì)將PROG_B信號(hào)拉低3ms對(duì)被加載的FPGA配置進(jìn)行初始化復(fù)位,在復(fù)位過(guò)程中INIT_B信號(hào)將保持低電平。等待TPOR時(shí)間后若INIT_B拉高則表示FPGA配置區(qū)內(nèi)存已清除,可以執(zhí)行下一步流程;若INIT_B一直為低,則不斷檢測(cè)該信號(hào),直至拉高為止。
(2)配置FPGA。初始化結(jié)束后,開始配置FPGA,設(shè)置FPGA管腳M2~M0為110,F(xiàn)PGA將在INIT_B拉高期間設(shè)置pin腳,設(shè)置加載模式為SelectMap方式。隨后反熔絲FPGA將按指定時(shí)序從Nor Flash中讀取配置數(shù)據(jù)進(jìn)行表決,將表決通過(guò)的配置數(shù)據(jù)沿CCLK送至SelectMap接口數(shù)據(jù)線上。然后模塊將持續(xù)監(jiān)測(cè)DONE信號(hào)查看是否加載成功,若超過(guò)預(yù)設(shè)的配置時(shí)間仍未拉高,則產(chǎn)生PROG_B低電平脈沖對(duì)Xilinx FPGA進(jìn)行重載,重載8次仍不成功則回到初始化狀態(tài)對(duì)FPGA進(jìn)行復(fù)位。反熔絲FPGA與Nor Flash接口信號(hào)主要由Address[22:0]、CE#、OE#、WE#、Data[15:0]、RY/BY#等信號(hào)構(gòu)成,接口時(shí)序圖如圖3所示[7]。

圖3 NorFlash 讀時(shí)序圖
(3)定時(shí)刷新。當(dāng)監(jiān)測(cè)到DONE信號(hào)拉高后,則說(shuō)明Xilinx FPGA加載成功。隨后按10MHz的工作頻率執(zhí)行定時(shí)刷新操作并對(duì)寫讀FAR寄存器進(jìn)行SEFI檢測(cè),檢測(cè)到單粒子翻轉(zhuǎn)則進(jìn)行FPGA重載。根據(jù)用戶手冊(cè),XC5VFX130 FPGA的配置數(shù)據(jù)共有1065221字(25981幀*41字/幀)。如圖4所示,刷新FPGA與待加載FPGA接口信號(hào)主要由PROG_B、INIT_B、DATA[0:7]、CCLK、DONE、RDWR_B、CS_B等信號(hào)構(gòu)成。

圖4 FPGA 刷新時(shí)序圖

圖5 FPGA 刷新流程圖
本文提出了一種基于反熔絲FPGA的單粒子防護(hù)方案,為了測(cè)試該方案是否滿足設(shè)計(jì)要求,本節(jié)使用Modelsim對(duì)設(shè)計(jì)的RTL電路進(jìn)行了仿真,并進(jìn)行了應(yīng)用驗(yàn)證[8]。
圖7所示為刷新控制模塊的仿真驗(yàn)證波形,從圖中可以看出,控制模塊將讀取的配置數(shù)據(jù)通過(guò)SelectMap接口對(duì)FPGA進(jìn)行定時(shí)刷新,刷新時(shí)序符合FPGA芯片手冊(cè)的要求[9]。隨后通過(guò)模擬故障注入的方式對(duì)單粒子翻轉(zhuǎn)進(jìn)行了模擬,禁止刷新功能,并且經(jīng)JTAG調(diào)試接口對(duì)XILINX FPGA加載錯(cuò)誤的bit文件;注入錯(cuò)誤的配置文件后單機(jī)遙測(cè)存在異常,打開刷新功能后單機(jī)功能恢復(fù)正常。上述驗(yàn)證方案表明本文設(shè)計(jì)的系統(tǒng)功能能夠及時(shí)糾正單粒子錯(cuò)誤。

圖7 定時(shí)刷新時(shí)序圖
本文以航天任務(wù)為背景,分析了XILINX Virtex系列FPGA芯片的機(jī)理,并根據(jù)實(shí)際需求提出了一種三模冗余及定時(shí)刷新相結(jié)合的抗SEU方案[10]。經(jīng)過(guò)仿真及驗(yàn)證結(jié)果表明,本文所提出的抗SEU方案可有效解決SRAM型FPGA芯片在空間環(huán)境下的翻轉(zhuǎn)問(wèn)題,提高了FPGA在宇航領(lǐng)域應(yīng)用的可靠性。