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

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

圖2 系統硬件結構
由圖1可知,系統工作時,反熔絲FPGA首先會讀取三片Nor FLASH中存儲的配置文件,采用表決通過的數據作為正確配置信息對XILINX V5系列FPGA進行加載,然后通過SelectMap接口實現對Virtex5 FPGA的定時刷新。
對XILINX V5系列FPGA的刷新控制主要由AX500反熔絲FPGA完成,本文設計的FPGA刷新模塊的工作流程如圖6所示,主要分為以下3部分。

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

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

圖4 FPGA 刷新時序圖

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

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