嚴健生,楊柳青
(中國科學院微小衛星創新研究院,上海 201203)
宇宙高能粒子(太陽宇宙線或銀河宇宙線)射入半導體器件SRAM 單元靈敏區時可使器件邏輯狀態翻轉,導致系統功能紊亂。這種單粒子翻轉(SEU)造成的邏輯錯誤不是永久性的,一般不會造成器件的物理性損傷。SEU已經成為衛星電子設備的常見錯誤。
目前大多數FPGA 基于SRAM 結構。SRAM 型FPGA的用戶組合和時序邏輯都是用可配置的存儲單元(即SRAM 單元)實施。根據SRAM 的結構特點和SEU 產生的機理,SRAM 是FPGA 中最容易產生翻轉的部分。隨著集成電路工藝向低電壓、高集成度方向發展,相應的空間SEU 閾值越來越低,因此FPGA 發生故障的概率越來越高,最終導致計算結果錯誤、程序執行任務系列錯誤、數據域改變、程序指令錯誤導致系統跑飛異常復位、甚至導致衛星相關系統永久失效、燒毀。因此針對SRAM 型FPGA 很有必要進行高可靠性設計。
針對SRAM 型FPGA 的特點,本文分別從硬件設計角度和軟件設計方面對SRAM 型FPGA 設計提出可靠性設計。
衡量器件抗SEU 能力是用該器件的翻轉閾值和翻轉截面來描述的。由該器件的翻轉截面對線性能力傳遞(LET)值的曲線可以推算出衛星軌道的SEU 翻轉率,用次/天·位表示。整機設計時選用SEU 率低的器件非常重要,如果SEU 率非常高,其它的措施都將不起作用。
整體屏蔽辦法就是在衛星電子設備外面包覆一層具有一定厚度的屏蔽材料,通常采用的材料有鋁、鉛、鉭和某些酯類化合物等,此法可以有效地緩解衛星電子設備所承受的空間輻射壓力,減少空間輻射環境對電子設備造成影響。
在制作FPGA 芯片時采取抗輻照工藝及其它硬件加固手段,增強芯片本身對空間輻照環境的耐受力。
錯誤檢測和糾正電路(Error Detection and Correctio n,EDAC)可以糾正SRAM 型FPGA 數據中的一位錯誤和檢測出兩位錯誤能力。其原理是:處理器向FPGA 內部RAM 存儲區域寫入數據時,根據寫入的數據生成一個變形漢明碼校驗字例如(7,4)漢明碼,把該校驗字存入RAM 存儲區中。當下次處理器讀取該區域數據時,同時把數據和相應的校驗字同時送入EDAC 電路中進行糾錯,若EDAC 電路發現檢測數據中有一比特數據出現錯誤時便生成單錯標志SEF,并輸出糾正后的數據和校驗字。若同時出現兩比特以上數據錯誤時,EDAC 電路不能糾正數據錯誤,只產生雙錯標志DEF。在某些情況下在軟件設計中必須要考慮SEU 造成兩位或多位翻轉。
版圖交錯法就是一種有效降低單粒子多位翻轉影響的方法[1]。其方法是將同一邏輯碼字中的各比特位放置到存儲器的不同物理位置上,當單粒子多位翻轉時,實際上翻轉的比特位在邏輯上是分離的,因而可以被糾錯。
使用多個SRAM 型FPGA 同時運行相同的程序,并將某一時刻運算的結果同時輸出給抗輻照加固器件中進行仲裁,以達到糾錯目的,該方法可靠度較高,因為需要多個FPGA 同時運算和表決因此會帶來較大的功耗和硬件開銷。
對FPGA 進行重新配置可以清除累積錯誤。在估計的SEU 發生間隔時間內重新配置FPGA ,潛在的SEU影響可以被抑制。翻轉的配置信息在重配置時可以將翻轉的配置位糾正。
在重新配置期間,FPGA 不處于工作狀態,并且器件管腳也會處于一種不受控狀態,所以需要在系統層面充分考慮FPGA 重新配置期間地保護與重新配置后地恢復處理,設置合適地時機啟動重新配置操作。實際應用中在低輻照的空間環境或者對于可以短時工作的衛星設備或載荷設備可以運用此方法,如按需工作的CCD 成像儀等[2]。
配置刷新就是在不中斷當前功能和邏輯的基礎上重新寫入配置數據。一般情況下配置刷新需要FPGA 外部設計相應的控制電路,如ASIC、反熔絲FPGA 或微處理。而Xilinx 公司的Virtex-5 系列以上FPGA 集成了配置存儲區內部回讀糾錯技術,不需要板級額外增加控制電路,簡化了系統設計。配置刷新有回讀刷新和定時刷新兩種方式[3]。
(1)回讀刷新
第一種方法是回讀對比配置區數據幀,與初始的配置數據進行對比,如果對比數據不一致,則對該幀進行刷新,刷新以幀為最小單位。該方法需要使用固化(.msk)和回讀文件(.rbb),這兩個文件大小都與FPGA 配置的原始文件大小差不多,因此本方法對系統存儲區要求較大。
一般電路中會使用一片高等級的具有抗單粒子免疫的FPGA 例如Actel FPGA(反熔絲工藝,對SEU 免疫)作為具有檢測和監督功能的芯片,通過反熔絲FPGA 不斷的回讀SRAM 型FPGA 內部的配置文件并進行校驗,一旦發現校驗出錯,就自主控制拉低PROM 配置引腳,重新加載FPGA 配置文件,通過更新配置文件來確保FPGA一直處于配置正確狀態。由于配置文件包含的是FPGA所有資源的配置信息,其中包含設計中未使用的一些模塊。而這些模塊的資源配置信息如果遇到單粒子效應其并不會影響FPGA 的正常功能使用,然而這些冗余的配置信息往往占整體信息比例較高會嚴重降低校驗的效率,因此增加一片PROM 芯片存放屏蔽位文件,該文件專門對設計中未被使用資源的配置信息進行標注。通過對該文件的分析,可以僅對設計中使用資源的配置信息做校驗。
第二種方法是回讀對比配置區數據幀CRC 校驗結果,與存儲的初始CRC 校驗結果進行比對,如果結果不一致,則對出錯幀進行刷新。本方法只需存儲CRC 校驗結果,對系統存儲區的需求很小。
回讀FPGA 配置文件有兩種模式,一種SelectMAP模式,另一種為邊界掃描(JointTestActionGroup,JTAG)模式。SelectMAP 模式采用并行模式讀取數據,讀配置文件的速度較快,但采用該模式FPGA 的某些通用引腳必須作為SelectMAP 模式的數據讀取專用引腳,FPGA 引腳被占用得比較多。而JTAG 模式采用串行模式讀取數據,雖然讀配置文件的時間比較長(采用1MHz 的時鐘,回讀配置文件的時間為2s 左右),但FPGA 被占用的引腳僅為4 個。
Xilinx 7 系列FPGA 發布的SEM IP 具備糾正SEU軟錯誤的能力[4],其替換模式基于數據重載的修復方式,支持任意多個比特錯誤。SEM IP 能實現FPGA 內部配置區文件與外部FLASH 內存儲的EBC 文件的比對,并對配置區進行刷新。
(2)定時刷新
定時刷新指的是在特定程序的控制之下,或者以一定的時間周期例如衛星星歷表的時間信息在指定的時間來對FPGA 的配置文件進行重加載操作,FPGA 重新加載程序可以有效避免因為SEU 效應而對單機或系統而產生影響,定時刷新過程在設計的時間點上應不影響用戶正常功能的使用。該方法的優點是在不增加硬件開銷成本的基礎上只需要通過軟件編程即可實現,具有較高的靈活性和經濟性。例如在現有的商業衛星測控系統中,為了避免衛星在入境時存在SEU 效應,一般的在衛星入境之前五分鐘,衛星計算機系統會發出刷新指令對測控系統中的FPGA 做一次全面的刷新操作,保證衛星在進入測控通信弧段之前測控系統無SEU 影響。
回讀刷新一般采用反熔絲FPGA 作為控制器對刷新過程進行控制,其軟硬件設計較為復雜。相較而言,定時刷新器件自動識別和匹配目標FPGA 芯片,只需提供時鐘和刷新使能信號,即可自動實現對目標FPGA 的刷新操作,大幅降低系統設計的難度和復雜度,縮短開發周期。而回讀刷新只在發現翻轉錯誤時進行刷新,故障恢復更加高效和有針對性。
對關鍵數據或信號進行三模冗余(TMR)設計能有效防止SEU。TMR 是利用3 個相同單元構成并聯形式,通過表決單元輸出最終的數據或信號。在一個單元發生SEU 的情況下,通過表決,保證了關鍵數據或信號的正確性和安全可靠。TMR 在提高可靠性的同時,也會需要開銷額外的資源和速度降低系統的性能,而表決器本身也不是完全可靠的,并不具備抗空間輻照的能力。如果一個長加電系統長時間暴露于空間輻照環境中,由于SEU 的累積效應,兩個表決單元發生SEU 的可能是存在的,在這種情況下三模冗余失效。
在傳統三模冗余技術的基礎上引入反饋路徑可以解決因為SEU 錯誤累積而導致的三模冗余失效問題,利用當前的正確判決結果對前一級的冗余寄存器進行更新,從而及時糾正前級可能引入的SEU 錯誤,避免錯誤的累積。對于那些不斷更新數據的寄存器,即便發生SEU 錯誤,在下一個時鐘周期內就會被新的數據覆蓋,因此這種寄存器冗余采用傳統三模冗余即可;對于那些長時間駐留的數據寄存器建議采用反饋糾錯的三模冗余[5]。
為了更有效的提高FPGA 抗空間輻射的更有效方法,國際上主流的做法是采用回讀刷新結合三模冗余方法,此方法可以增強SRAM 型FPGA 的抗SEU 能力。
回讀刷新和定時刷新需要對FPGA 進行全面的配置,然而一些設備需要長時間穩定工作,整體的刷新會影響到他的性能,針對這些系統往往采用動態局部重構。動態局部重構是指對于被規定為可重構區域內的硬件邏輯資源可進行實時的動態重構操作,而其它部分的電路邏輯功能不會受到影響。動態局部重構要求FPGA 具有動態局部可重構能力。只需將FPGA 中的部分邏輯或模塊的配置信息進行動態重新配置,不需要重新加載整個FPGA 的配置文件,非重構部分的工作狀態完全不受影響。FPGA 動態局部重構技術首先由Xinlinx 公司提出和實現,目前Xilinx 公司很多系列的FPGA 芯片支持動態局部可重構技術。動態局部重構技術可以有不同的設計流程[6]。
針對局部動態重構技術的特性,可以充分利用局部動態重構技術在保證工作狀態的功能不受影響的情況下局部重構被單粒子影響的區域,實現系統功能修復。
放在RAM 中的程序和數據易受SEU 的影響,可以把程序和重要數據固化在PROM 中,PROM 一般不受SEU 影響。
ECC(Error Correcting Code)糾錯編碼技術是解決SRAM FPGA 中存儲區域發生SEU 錯誤的有效方法。根據香農理論通過增加信息的冗余位,可以有效提高數據的抗錯誤能力,提高信道的可靠性。因此在FPGA 數據的存儲區域中通過采用糾錯編碼技術可以有效提高信息的傳輸正確性,這是解決在輻照環境下數據出現SEU 錯誤的有效方法。
糾錯編碼的基本思想如圖1 所示:在原有信息位的后面增加冗余位來構造一完整的信息編碼字。其中k 比特位信息位,n-k 比特位冗余位一起組成n 比特編碼字長。根據采用不同的糾錯編碼算法可以得到不同糾錯性能和復雜度的編碼字通常情況采用較多的糾錯編碼類型有:BCH 碼,RS 編碼,LDPC 編碼等。
圖1 糾錯編碼基本結構
在具體電路設計中一般根據設計的預期和復雜度選用合理的編碼方法。如圖2 所示是一個典型的FPGA 內部數據編碼存儲和讀取方法。其中編碼數據進入FPGA內部存儲區域SRAM 存儲區時先進行編碼,然后存在相映的存儲區中,在讀取時對存取的數據進行解碼,如在輻照條件下,存儲區中的數據發生錯誤,解碼模塊在輸出時能正確恢復出原始數據,糾正因為SEU 導致的數據位錯誤。
對于設計中的關鍵狀態機進行編碼加固,在原有自然碼、格雷碼、獨熱碼基礎上可以通過增加編碼冗余的方法,實現狀態機加固從而能夠達到檢測錯誤甚至糾錯的能力,從而避免了因為SEU 造成狀態機跑飛或死鎖等問題。
綜合研究了SRAM 型FPGA 的硬件和軟件可靠性設計方法,根據衛星電子設備的具體情況,選擇或結合使用以上設計方法可以有效抗空間SEU。
圖2 ECC 糾錯一般結構