王蘇靈,謝永春,江 衛(wèi)
(中國電子科技集團公司第三十研究所,四川 成都 610041)
隨著空間技術(shù)的發(fā)展,世界各國對太空領域的爭奪愈演愈烈,國防已經(jīng)向太空延伸,空間應用、空間攻防能力必將成為未來空間威懾力的重要籌碼。我國各種衛(wèi)星深空探測器飛行器的不斷發(fā)射成功,標志著我國成為空間領域的大國??臻g應用環(huán)境的特殊性,對空間信息處理平臺的可靠性設計尤其是抗輻射設計提出了更高要求。
目前,空間信息處理平臺廣泛采用的集成電路主要包括現(xiàn)場可編程邏輯門陣列(Field Programmable Gate Array,F(xiàn)PGA)和數(shù)字信號處理器(Digital Signal Processor,DSP)。該類集成電路大量采用片上SRAM,對單粒子翻轉(zhuǎn)非常敏感,容易發(fā)生軟錯誤,嚴重影響器件的正常功能。目前,針對FPGA程序設計常用的抗單粒子翻轉(zhuǎn)設計主要是三模冗余設計(Triple Modular Redundance,TMR),即對某些功能模塊或整個程序進行3倍冗余設計,對輸出信息通過表決器進行判決。Actel公司根據(jù)該原理設計了反熔絲FPGA,成為抗單粒子翻轉(zhuǎn)的高可靠芯片。該芯片所有觸發(fā)器資源硬件都采用三模冗余設計,且所有片內(nèi)RAM資源都自帶糾錯編碼功能。
本文介紹單粒子效應[1](Single Event Effect,SEE)機理,提出了一種抗單粒子翻轉(zhuǎn)的設計方法,以期對后續(xù)空間信息處理平臺抗單粒子設計提供參考依據(jù)。
單粒子效應是指宇宙空間中單個高能粒子入射半導體器件或集成電路中時誘發(fā)的一種現(xiàn)象。高能粒子入射到半導體器件或集成電路芯片中時產(chǎn)生高密度的電子空穴對,這些電子空穴對能夠被器件敏感的反偏PN結(jié)收集,從而使電路邏輯狀態(tài)翻轉(zhuǎn)或者誘發(fā)寄生結(jié)構(gòu)導通造成器件本身永久性損傷的一種電離輻射效應。單粒子效應包括單粒子翻轉(zhuǎn)(Single Event Upset,SEU)和單粒子閉鎖(Single Event Latchup,SEL)。
(1)單粒子翻轉(zhuǎn)。在一些電磁、輻射環(huán)境比較惡劣的情況下,大規(guī)模集成電路(IC)常常會受到干擾。例如,宇宙中單個高能粒子射入半導體器件靈敏區(qū),使器件邏輯狀態(tài)翻轉(zhuǎn),即原來存儲的“0”變?yōu)椤?”,或者“1”變?yōu)椤?”,從而導致系統(tǒng)功能紊亂,嚴重時會發(fā)生災難性事故。
(2)單粒子閉鎖。高能帶電粒子穿過CMOS電路的PN/PN結(jié)構(gòu)時,電離作用會使CMOS電路中的可控硅結(jié)構(gòu)被觸發(fā)導通,由此在電源與地之間形成低電阻大電流通路的現(xiàn)象。長時間的鎖定電流會燒毀器件,造成器件永久失效。當出現(xiàn)閉鎖現(xiàn)象時,器件不會自動退出此狀態(tài),除非采取斷電措施,然后重新啟動才可恢復。
SOI工藝的器件不存在PN/PN結(jié)構(gòu)的電流再生放大結(jié)構(gòu),對SEL有天然的抵抗能力。隨著SOI工藝的CMOS器件不斷被采用,SEL將不再是超大規(guī)模集成電路在空間應用的主要威脅。本文主要研究抗SEU的軟硬件平臺設計。
硬件平臺采用傳統(tǒng)的DSP+FPGA架構(gòu)[2],鑒于開發(fā)成本和器件容量考慮,業(yè)務處理單元采用SRAM(Static Random Access Memory) 型 FPGA,增加反熔絲FPGA作為檢測和邏輯譯碼單元,如圖1所 示。 其 中,ROM和MLU(Monitor&Logic Element Unit)單元采用一次性燒寫的反熔絲器件,是信息處理平臺中抗單粒子翻轉(zhuǎn)的高可靠芯片。DSP和FPGA協(xié)同完成空間信息處理平臺的主要功能,反熔絲FPGA完成對業(yè)務處理FPGA的回讀、刷新、重載以及邏輯譯碼和對DSP的看門狗檢測。業(yè)務處理單元中的DSP程序和FPGA配置文件,存儲于一次性燒寫的ROM中,燒寫完成后程序即固化,不能再進行升級。信息處理平臺的部分有更換需求的關鍵參數(shù)可存放于Flash存儲器中,信息處理平臺上電后進行加載。
圖1 硬件平臺
2.2.1 DSP抗翻轉(zhuǎn)設計
DSP的片上存儲器受單粒子效應影響較大,程序和數(shù)據(jù)存儲區(qū)組成了DSP的片上RAM。DSP受控于作為數(shù)據(jù)存儲的程序指令,本文DSP抗翻轉(zhuǎn)設計主要集中在程序執(zhí)行流程和片上RAM的糾檢錯設計方面。
DSP程序存儲于反熔絲ROM中,一旦固化,不可更改。DSP的BOOT過程是把ROM中的程序數(shù)據(jù)導入內(nèi)部RAM空間進行加載,加載成功后進行正常的業(yè)務處理。在業(yè)務處理流程中,在不影響空間信息處理平臺主要功能前提下,對DSP的RAM和Flash中的數(shù)據(jù)進行周期自檢,并在業(yè)務處理流程中增加軟件看門狗程序。當周期自檢檢測到RAM中程序或數(shù)據(jù)被打翻時,通過糾錯碼或與ROM中數(shù)據(jù)對比的方式予以糾正。如果被打翻數(shù)據(jù)剛好導致自檢程序失效,程序跑飛或紊亂,軟件看門狗程序失效。此時,需通過MLU的看門狗檢測和復位電路,對DSP進行重新加載。對Flash中數(shù)據(jù)進行周期自檢,一旦檢測到有錯,則通過糾錯碼或三模冗余方式進行糾正,詳見2.3節(jié)。
2.2.2 FPGA抗翻轉(zhuǎn)設計
基于SRAM的FPGA對單粒子翻轉(zhuǎn)非常敏感,其中配置存儲器的單粒子翻轉(zhuǎn)在FPGA整個單粒子翻轉(zhuǎn)事件中占90%以上。SRAM型FPGA抗單粒子翻轉(zhuǎn)設計主要采用三模冗余和回讀刷新[3]。
三模冗余設計是指利用3個功能相同的冗余模塊和多數(shù)表決器,輸出時對所有數(shù)據(jù)實行3選2多數(shù)有效的判定,可以有效實現(xiàn)容錯運行,但不會對出錯位進行修正和定位。
回讀刷新是指將SRAM型FPGA的重要配置信息進行回讀和對比,發(fā)現(xiàn)配置信息有錯則進行重配置操作。采用反熔絲FPGA對業(yè)務處理單元FPGA進行回讀和配置。處理平臺上電時,SRAM型FPGA從配置ROM中加載配置數(shù)據(jù)。上電后,反熔絲FPGA周期回讀SRAM型FPGA配置區(qū)的幀數(shù)據(jù),并對單幀或多幀計算CRC校驗,然后與初始存儲的CRC結(jié)果進行比較,如果不一致,則對出錯幀或者整個配置幀進行刷新。
關鍵參數(shù)指空間信息處理平臺的可升級程序代碼、配置參數(shù)等。關鍵參數(shù)可存放于Flash存儲器中。該關鍵參數(shù)可進行更換,信息處理平臺上電后進行加載。
對于存放于Flash存儲器中的關鍵參數(shù),抗翻轉(zhuǎn)設計有兩種方法:一種是先進行糾錯編碼再存儲,一種是進行三模冗余存儲。
2.3.1 編碼抗翻轉(zhuǎn)設計
國際空間數(shù)據(jù)系統(tǒng)咨詢委員會(CCSDS)推薦使用的航天器遙測信道編碼是卷積編碼和R-S編碼。其中,R-S碼對突發(fā)性差錯的糾錯能力很強,本文將以R-S碼為例進行介紹。
CCSDS規(guī)定了兩種糾錯能力的R-S碼供選擇使用:一種是(255,223)R-S碼,可糾16個R-S符號差錯;一種是(255,239)R-S碼,可糾8個R-S符號差錯。該兩種編碼符號長度為8 bit,即1個字節(jié),碼字長度均為255,即含有255個符號,其中(255,223)R-S碼所包含的校驗符號個數(shù)為32,(255,239)R-S碼所包含的校驗符號個數(shù)為16。該兩種編碼長度較長,若關鍵參數(shù)較少,進行編碼時需填充到223或239字節(jié)再進行編碼。這里選用(20,16)R-S碼,該碼型每次對16個字節(jié)進行編碼,編碼后信息長度為20個字節(jié),增加了4字節(jié)冗余,可以糾正2個字節(jié)的錯誤。
為避免存儲器中關鍵參數(shù)單粒子翻轉(zhuǎn)錯誤累積,差錯個數(shù)超出所選碼型可糾最大差錯數(shù),可采用CRC循環(huán)檢錯碼檢測數(shù)據(jù)有效性。在關鍵參數(shù)寫入存儲器前,先進行R-S編碼,將編碼后的數(shù)據(jù)計算CRC校驗碼,并將編碼后數(shù)據(jù)和校驗碼寫入存儲器,過程如圖2所示。
圖2 數(shù)據(jù)寫入存儲器過程
從存儲器中讀取關鍵參數(shù)時,先將讀出的數(shù)據(jù)進行CRC校驗。若校驗正確,則表明該數(shù)據(jù)未發(fā)生單粒子翻轉(zhuǎn)錯誤。因為R-S碼為系統(tǒng)碼,它的有效數(shù)據(jù)部分不予改變的出現(xiàn)在R-S碼字的數(shù)據(jù)域,所以CRC校驗正確后可不做R-S解碼,直接將R-S數(shù)據(jù)域中的數(shù)據(jù)取走。當CRC校驗錯誤時,進行R-S解碼,解碼正確后將數(shù)據(jù)域的數(shù)據(jù)讀走,再進行R-S編碼和計算CRC校驗并重寫存儲器。讀取存儲器數(shù)據(jù)過程如圖3所示。
圖3 數(shù)據(jù)從存儲器讀出過程
2.3.2 三模冗余抗翻轉(zhuǎn)設計
對存放于存儲器中的關鍵參數(shù)三模冗余設計,即存3份相同的數(shù)據(jù),讀出時進行大數(shù)判決。同時,為避免存儲器中關鍵參數(shù)單粒子翻轉(zhuǎn)錯誤累積,可采用CRC循環(huán)檢錯碼檢測數(shù)據(jù)的有效性。
對關鍵參數(shù)進行CRC校驗,將關鍵參數(shù)和校驗值一同寫入存儲器,分別存3份。讀取時,將3份數(shù)據(jù)讀出進行CRC校驗。只要有一份校驗正確,則取走該份數(shù)據(jù),并刷新出錯的存儲區(qū),處理流程如圖4所示。
圖4 讀取關鍵參數(shù)流程
(1)從存儲器中讀出3個數(shù)據(jù)區(qū)的關鍵參數(shù)。
(2)對數(shù)據(jù)1區(qū)進行CRC校驗,若校驗正確,取走數(shù)據(jù)待用。將數(shù)據(jù)2區(qū)和數(shù)據(jù)3區(qū)的數(shù)據(jù)與數(shù)據(jù)1區(qū)數(shù)據(jù)進行比較,若都相同,則結(jié)束流程;若2區(qū)或3區(qū)數(shù)據(jù)與1區(qū)數(shù)據(jù)不同,則用1區(qū)數(shù)據(jù)刷新有誤的區(qū),結(jié)束流程。
(3)數(shù)據(jù)1區(qū)校驗錯誤,對數(shù)據(jù)2區(qū)進行CRC校驗。若數(shù)據(jù)2區(qū)校驗正確,將數(shù)據(jù)3區(qū)的數(shù)據(jù)與數(shù)據(jù)2區(qū)數(shù)據(jù)進行比較,若相同,則用2區(qū)數(shù)據(jù)刷新數(shù)據(jù)1區(qū);若不同,則刷新1區(qū)和3區(qū),結(jié)束流程。
(4)數(shù)據(jù)2區(qū)校驗錯誤,對數(shù)據(jù)3區(qū)進行CRC校驗。若數(shù)據(jù)3區(qū)校驗正確,則用3區(qū)數(shù)據(jù)刷新數(shù)據(jù)1區(qū)和2區(qū),結(jié)束流程。
(5)數(shù)據(jù)3區(qū)校驗錯誤,對3個區(qū)數(shù)據(jù)按位進行大數(shù)判決,對大數(shù)判決得到的數(shù)據(jù)進行CRC校驗。若校驗正確,讀走數(shù)據(jù),并用新數(shù)據(jù)刷新3個區(qū),結(jié)束流程;若校驗錯誤,則糾錯失敗,3個區(qū)數(shù)據(jù)均不可用。
本文提出的空間信息處理平臺設計技術(shù),能對SEU引起的數(shù)據(jù)錯誤翻轉(zhuǎn)進行有效檢測和糾正。該技術(shù)已在某航天產(chǎn)品中得到應用,既可靠有效,又具有較好的移植性和參考價值。
參考文獻:
[1] 陸榮,游月輝.衛(wèi)星擴頻應答機抗單粒子翻轉(zhuǎn)技術(shù)研究[J].航天電子對抗,2016,32(04):52-55.LU Rong,YOU Yue-hui.The Anti-SEU Technology of Satellite-borne Spread-spectrum Transponder[J].Aerospace Electronic Warfare,2016,32(04):52-55.
[2] 江衛(wèi),鄭艷.一種適用于空間飛行器的可重構(gòu)信息處理平臺硬件設計[J].通信技術(shù),2014,47(06):697-701.JIANG Wei,ZHENG Yan.Platform Hardware Design for Spacecraft Reconfigurable Information Processing[J].Communications Technology,2014,47(06):697-701.
[3] 陳賀賢,尹慶軍.一種星載信號處理機FPGA防單粒子翻轉(zhuǎn)加固方法[J].航天電子對抗,2015,31(03):62-64.CHEN He-xian,YIN Qing-jun.An Anti-fuse FPGA Bassed Method for Single Event Space-brone Signal Processor Missiles[J].Aerospace Electronic Warfare,2015,31(03):62-64.