夏 俊,張嘉偉,孫 晨,朱昶文,江亞州
(1.上海衛(wèi)星工程研究所,上海 201109;2.上海航天電子技術(shù)研究所,上海 201109)
航天器在軌運(yùn)行期間,會(huì)遭遇多種惡劣的空間天然輻射環(huán)境的影響,這些輻射包括宇宙射線、空間高能粒子(高能電子和質(zhì)子)等[1]。由空間高能粒子導(dǎo)致的單粒子翻轉(zhuǎn)(SEU,single-event upsets)對(duì)航天器在軌穩(wěn)定、可靠的運(yùn)行造成嚴(yán)重的威脅,發(fā)生嚴(yán)重錯(cuò)誤時(shí)甚至?xí)?dǎo)致航天器軟件執(zhí)行錯(cuò)誤引起姿態(tài)失控等重大故障,因此,單粒子翻轉(zhuǎn)問題一直以來都是航天領(lǐng)域不可忽視的問題。采用宇航級(jí)等高等級(jí)元器件,可有效降低航天器電子系統(tǒng)受單粒子翻轉(zhuǎn)影響的概率。但一方面,抗單粒子翻轉(zhuǎn)高等級(jí)加固器件的價(jià)格非常昂貴,且品種有限,同時(shí)由于政治和軍事原因還受到國(guó)外禁運(yùn);另一方面,航天器性能要求越來越高,功能要求越來越復(fù)雜,部分高等級(jí)器件受限于邏輯資源等無法適用。因此,越來越多的工業(yè)級(jí)大規(guī)?,F(xiàn)場(chǎng)可編程門陣列(FPGA,field programmable gate array)開始逐步應(yīng)用于航天領(lǐng)域。信號(hào)處理核心工作器件XC7V690T-2FFG1761I為工業(yè)級(jí)靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM,static random-access memory)型FPGA芯片,已逐步開始應(yīng)用于各類航天器中,但由于其抗輻照能力較弱,在軌運(yùn)行期間存在單粒子翻轉(zhuǎn)的風(fēng)險(xiǎn)。為保障航天器在軌安全運(yùn)行,需專門開展針對(duì)XC7V690T的抗單粒子系統(tǒng)架構(gòu)設(shè)計(jì)。
國(guó)內(nèi)外相關(guān)研究機(jī)構(gòu)對(duì)單粒子防護(hù)設(shè)計(jì)方法進(jìn)行了一些研究,文獻(xiàn)[2]和文獻(xiàn)[3]提出常見的刷新方法主要有內(nèi)部刷新和外部刷新。其中內(nèi)部刷新是利用FPGA的內(nèi)部配置訪問接口(ICAP,Internal Configuration Access Port)對(duì)配置數(shù)據(jù)進(jìn)行回讀刷新,內(nèi)部刷新最大的優(yōu)點(diǎn)在于不用配置單獨(dú)的外部刷新芯片,刷新效率更高。另外,外部刷新的主要方法有回讀刷新和定時(shí)刷新。回讀刷新是采用外部刷新芯片對(duì)配置數(shù)據(jù)進(jìn)行回讀與檢測(cè),外部刷新的硬件架構(gòu)較為復(fù)雜且刷新效率略低。定時(shí)刷新是指按照預(yù)先設(shè)計(jì)的時(shí)間長(zhǎng)度對(duì)配置數(shù)據(jù)進(jìn)行刷新,定時(shí)刷新的效率較低。文獻(xiàn)[4]提出了一種基于軟錯(cuò)誤緩解(SEM,Soft Error Mitigation)的抗單粒子翻轉(zhuǎn)方法,該方法刷新效率較高,同時(shí)也降低了SEM核自身發(fā)生單粒子翻轉(zhuǎn)的概率。文獻(xiàn)[5]提出了一種FPGA在軌重構(gòu)的方法及工程實(shí)施方案,通過實(shí)時(shí)刷新結(jié)合三模冗余(TMR,Triple Modular Redundancy)設(shè)計(jì)可以有效降低FPGA發(fā)生單粒子翻轉(zhuǎn)的概率。文獻(xiàn)[6]提出了一種通過在軌自主重構(gòu)的方法,有效減少單粒子翻轉(zhuǎn)的次數(shù)。
綜上,針對(duì)在硬件加固設(shè)計(jì)及軟件加固設(shè)計(jì)基礎(chǔ)上,為了提高工業(yè)級(jí)SRAM型FPGA芯片XC7V690T在軌抗單粒子翻轉(zhuǎn)能力及配置文件注數(shù)修改的靈活性,對(duì)某航天器通信機(jī)基于XC7V690T的抗單粒子系統(tǒng)架構(gòu)(主要包括硬件架構(gòu)、軟件架構(gòu)的設(shè)計(jì)與實(shí)現(xiàn))以及在軌驗(yàn)證情況分別進(jìn)行介紹。
航天器電子系統(tǒng)單粒子翻轉(zhuǎn)防護(hù)設(shè)計(jì)的目標(biāo)主要有以下兩方面:1)要確保在發(fā)生單粒子翻轉(zhuǎn)時(shí)不影響航天器的主要業(yè)務(wù),確保航天器業(yè)務(wù)的連續(xù)性;2)要確保在發(fā)生單粒子翻轉(zhuǎn)時(shí)不影響航天器的安全,確保航天器姿態(tài)、能源、測(cè)控信道等穩(wěn)定可靠。為系統(tǒng)推進(jìn)單粒子翻轉(zhuǎn)防護(hù)工作,主要是要強(qiáng)化系統(tǒng)、單機(jī)、器件等全層級(jí)的單粒子翻轉(zhuǎn)防護(hù)設(shè)計(jì)措施,提升航天器的單粒子翻轉(zhuǎn)防護(hù)設(shè)計(jì)水平,降低單粒子翻轉(zhuǎn)對(duì)航天器在軌運(yùn)行的影響。下面主要對(duì)航天器目前采用的一些單粒子翻轉(zhuǎn)防護(hù)設(shè)計(jì)進(jìn)行系統(tǒng)性的介紹。
1)元器件選用:
采用宇航級(jí)等高等級(jí)元器件,可有效降低航天器電子系統(tǒng)受單粒子翻轉(zhuǎn)影響的概率。
在單粒子翻轉(zhuǎn)方面,沒有經(jīng)過抗SEU加固的器件,通常具有較低的線性能量傳遞(LET,linear energy transfer)閾值和較高的在軌翻轉(zhuǎn)率,而經(jīng)過了SEU加固的器件可具有較高的LET閾值和較低的在軌翻轉(zhuǎn)率[7]。
2)錯(cuò)誤檢測(cè)與糾正:
錯(cuò)誤檢測(cè)與糾正(EDAC,error detection and correction)是抗單粒子翻轉(zhuǎn)的有效技術(shù)之一[8-10],在航天領(lǐng)域已廣泛應(yīng)用于隨機(jī)存取存儲(chǔ)器(RAM,random-access memory)、帶電可擦可編程只讀存儲(chǔ)器(EEPROM,electrically erasable programmable read-only memory)的抗單粒子翻轉(zhuǎn)防護(hù)設(shè)計(jì)。對(duì)于以上常用的RAM、EEPROM等存儲(chǔ)器,同時(shí)在不同區(qū)域發(fā)生多bit翻轉(zhuǎn)的概率非常低,因此可以利用EDAC的方法來對(duì)1 bit翻轉(zhuǎn)錯(cuò)誤進(jìn)行自動(dòng)檢測(cè)與糾正。采用EDAC的方法的主要目的是容忍單粒子翻轉(zhuǎn)的發(fā)生,通過采用錯(cuò)誤檢測(cè)并予以糾錯(cuò)的方式避免單粒子翻轉(zhuǎn)錯(cuò)誤對(duì)系統(tǒng)性能造成更大的影響??捎糜贓DAC方法的糾錯(cuò)碼比較多,常用的糾錯(cuò)碼主要有漢明碼、卷積碼以及R-S(Reed-Solomon)碼等,不同的糾錯(cuò)碼方式各具特點(diǎn),需要針對(duì)實(shí)際應(yīng)用場(chǎng)景選擇適合的編碼方式。
3)冗余設(shè)計(jì):
冗余設(shè)計(jì)也是抗單粒子翻轉(zhuǎn)的有效技術(shù)之一[11],在航天領(lǐng)域已得到廣泛應(yīng)用的冗余設(shè)計(jì)主要是三模冗余設(shè)計(jì),三模冗余設(shè)計(jì)的主要目的是通過將原有的功能模塊擴(kuò)展為3個(gè)一模一樣的模塊,通過一個(gè)三取二表決器對(duì)3個(gè)功能模塊的輸出結(jié)果進(jìn)行表決,以解決即使其中某一模塊因?yàn)閱瘟W臃D(zhuǎn)功能受到影響,也不影響三取二的最終結(jié)果,提高了航天器電子系統(tǒng)的可靠性與安全性。通過對(duì)整個(gè)功能模塊進(jìn)行三模冗余的設(shè)計(jì)對(duì)航天器電子系統(tǒng)抗單粒子翻轉(zhuǎn)性能有很大的提升,但是邏輯資源會(huì)增加3倍,對(duì)資源的開銷會(huì)比較大,因此在FPGA邏輯資源不是很充足的情況下要實(shí)現(xiàn)所有功能模塊全部三模冗余在工程上是很難實(shí)現(xiàn)的。除了功能模塊的三模冗余,其他的三模冗余方式還有關(guān)鍵參數(shù)三模冗余、關(guān)鍵寄存器三模冗余等。對(duì)關(guān)鍵參數(shù)和關(guān)鍵寄存器的三模冗余,主要環(huán)節(jié)是要準(zhǔn)確識(shí)別出哪些關(guān)鍵參數(shù)及關(guān)鍵寄存器在航天器軟件運(yùn)行過程中被單粒子打翻或被非正常篡改時(shí)會(huì)觸發(fā)較為嚴(yán)重的問題,涉及到航天任務(wù)中所使用的各系統(tǒng)軟件的性能、可靠性和安全性等方面。對(duì)于這些影響到航天器正常運(yùn)行的關(guān)鍵參數(shù)與寄存器,往往需要進(jìn)行三模冗余的設(shè)計(jì),而對(duì)關(guān)鍵參數(shù)和關(guān)鍵寄存器進(jìn)行三模冗余設(shè)計(jì)的資源消耗要比模塊級(jí)三模冗余要低得多,工程可實(shí)現(xiàn)性更高。
4)刷新:
刷新(Scrubbing)方法主要有內(nèi)部刷新和外部刷新。其中內(nèi)部刷新是利用FPGA的內(nèi)部配置訪問接口對(duì)配置數(shù)據(jù)進(jìn)行回讀刷新。外部刷新主要的方法有回讀刷新和定時(shí)刷新。回讀刷新是采用外部刷新芯片對(duì)配置數(shù)據(jù)進(jìn)行回讀與檢測(cè),該方法中,SRAM型FPGA的配置文件一般存放在于可編程只讀存儲(chǔ)器(PROM,programmable read-only memory)中,PROM中的配置文件具有一次固化即無法修改的特性,因此其抗單粒子翻轉(zhuǎn)的能力非常高[12],利用獨(dú)立的反熔絲FPGA按一定的頻率對(duì)配置文件進(jìn)行回讀,并與存放于PROM中的配置文件進(jìn)行實(shí)時(shí)比對(duì),如果發(fā)現(xiàn)校驗(yàn)數(shù)據(jù)比對(duì)不成功,則自主進(jìn)行程序的重新加載。該方法也是現(xiàn)階段航天領(lǐng)域抗單粒子翻轉(zhuǎn)比較主流的一種設(shè)計(jì)方法[13-19]。定時(shí)刷新則是按照預(yù)先設(shè)計(jì)的時(shí)間長(zhǎng)度對(duì)配置數(shù)據(jù)進(jìn)行定期刷新。
5)重構(gòu):
重構(gòu)方法主要是指在軌運(yùn)行過程中因程序中的安全性可靠性設(shè)計(jì)欠缺,通過地面遙控上注全新的配置文件,并取代原始版本的過程,通過重構(gòu)的方式,可以靈活的解決在軌的一些不可預(yù)料的問題,提高軟件運(yùn)行的可靠性,有效降低空間單粒子對(duì)航天器電子系統(tǒng)的影響,目前越來越多的航天器開始采用在軌重構(gòu)的方法來進(jìn)行軟件的升級(jí),提升軟件的健壯性[20]。
6)指令復(fù)位或重啟:
目前絕大多數(shù)在軌長(zhǎng)加電航天器電子系統(tǒng)均設(shè)計(jì)有指令復(fù)位或重啟功能,在軌遇到單粒子翻轉(zhuǎn)事件導(dǎo)致電子系統(tǒng)功能異常時(shí),可以通過地面遙控指令進(jìn)行復(fù)位或重啟。針對(duì)重要的長(zhǎng)加電產(chǎn)品,航天器星載計(jì)算機(jī)軟件一般會(huì)設(shè)計(jì)自主異常監(jiān)視功能,若出現(xiàn)異常可通過星載計(jì)算機(jī)自主指令復(fù)位或重啟,用以解決長(zhǎng)加電產(chǎn)品在軌單粒子翻轉(zhuǎn)問題,提升系統(tǒng)自主恢復(fù)的能力。
除了以上目前主流的采用的抗單粒子翻轉(zhuǎn)防護(hù)設(shè)計(jì)方法外,還有以下一些方法可用于單粒子翻轉(zhuǎn)防護(hù)設(shè)計(jì)。
1)模擬器件單粒子翻轉(zhuǎn)防護(hù):
單粒子翻轉(zhuǎn)不僅僅出現(xiàn)在邏輯器件中,對(duì)于具有雙穩(wěn)態(tài)器件的模擬電路,也存在發(fā)生單粒子翻轉(zhuǎn)的可能,如電壓比較器。在電壓比較器的應(yīng)用中,比較器的輸入端電壓差設(shè)計(jì)成盡可能大,可有效地防止電壓比較器產(chǎn)生單粒子翻轉(zhuǎn)。
2)看門狗(WDT,watchdog)復(fù)位:
看門狗復(fù)位也是目前航天器電子系統(tǒng)用于避免因單粒子翻轉(zhuǎn)造成電子產(chǎn)品程序運(yùn)行異常的一種常用方法。當(dāng)電子產(chǎn)品因單粒子翻轉(zhuǎn)導(dǎo)致程序跑飛時(shí),無法按照預(yù)定的時(shí)間周期進(jìn)行喂狗操作,看門狗芯片發(fā)出復(fù)位信號(hào)使得軟件能夠恢復(fù)初始狀態(tài)重新執(zhí)行,避免因單粒子翻轉(zhuǎn)造成的軟件跑飛而影響整個(gè)任務(wù)。
3)利用累加和檢查存儲(chǔ)器內(nèi)容的正確性:
對(duì)固化后的星上程序進(jìn)行累加和計(jì)算,將其作為自測(cè)試的判斷基準(zhǔn),存儲(chǔ)在特定區(qū)域內(nèi)。運(yùn)行過程中定期進(jìn)行累加和計(jì)算,根據(jù)任務(wù)情況決定取全累加和或分段累加和,并與所存儲(chǔ)的基準(zhǔn)值比對(duì),若不等,則由系統(tǒng)進(jìn)行容錯(cuò)切換管理。這種常用的容錯(cuò)手段,也是對(duì)單粒子翻轉(zhuǎn)是否引起程序異常的有效判斷方法。
此外,還可以采用自診斷程序、多重編碼、指令重復(fù)執(zhí)行、分支流程作兩次以上有效性判別、建立健康和安全模式、地面遙控注入等方式提高系統(tǒng)抗單粒子能力。
某航天器通信機(jī)采用側(cè)向?qū)盈B結(jié)構(gòu)形式,共分為4個(gè)模塊,由后至前依次為電源模塊、射頻模塊、刷新模塊及信號(hào)處理模塊。電源模塊接收航天器平臺(tái)提供的一次電源,轉(zhuǎn)換輸出單機(jī)內(nèi)其他模塊正常工作所需要的各路電源。刷新模塊包含了上電程序配置、健康監(jiān)控和在軌重構(gòu)的功能。射頻模塊接收天線經(jīng)雙工器發(fā)送過來的上行信號(hào),通過混頻、濾波、放大等轉(zhuǎn)換成中頻模擬信號(hào),送給信號(hào)處理模塊。射頻模塊還接收信號(hào)處理模塊發(fā)送過來的中頻模擬信號(hào),經(jīng)正交上變頻、放大、濾波后轉(zhuǎn)換成下行射頻信號(hào),經(jīng)雙工器后再通過天線發(fā)射出去。
通信機(jī)信號(hào)處理及刷新模塊設(shè)計(jì)框圖如圖1所示,采用了Xilinx公司的SRAM型FPGA XC7V690T平臺(tái),主要具備以下功能:
圖1 模塊設(shè)計(jì)框圖
1)接收射頻模塊發(fā)送過來的中頻模擬信號(hào),通過模數(shù)轉(zhuǎn)換芯片采集后轉(zhuǎn)換成12 bit位寬的數(shù)字信號(hào),傳送給XC7V690T芯片進(jìn)行信號(hào)處理;
2)將信號(hào)數(shù)據(jù)碼流經(jīng)XC7V690T芯片進(jìn)行處理后,通過數(shù)模轉(zhuǎn)換芯片進(jìn)行轉(zhuǎn)換形成中頻模擬信號(hào),發(fā)送給射頻模塊;
3)針對(duì)XC7V690T芯片的加載、刷新及重構(gòu)功能。
針對(duì)該硬件架構(gòu),主要給出模塊層和器件層的加固設(shè)計(jì)方案,針對(duì)XC7V690T FPGA的加固設(shè)計(jì)主要由三部分組成:電源監(jiān)控電路和控制電路、XC7V690T FPGA內(nèi)部調(diào)用的SEM核和充當(dāng)監(jiān)控和維護(hù)核心的AX500 FPGA。AX500 FPGA除了需要監(jiān)控XC7V690T FPGA配置和SEM工作狀態(tài),還要負(fù)責(zé)監(jiān)測(cè)和控制XC7V690T的供電情況,在識(shí)別故障后通過刷新和重上電等手段進(jìn)行故障恢復(fù)。
該硬件架構(gòu)由XC7V690T芯片、反熔絲FPGA AX500芯片和4片512 Mb容量的FLASH存儲(chǔ)器組成。其中:
1)XC7V690T芯片為需進(jìn)行加固設(shè)計(jì)的FPGA 器件;
2)FLASH 用來存儲(chǔ)XC7V690T芯片的配置文件;
3)AX500芯片的主要功能為讀取FLASH中的配置信息、上電加載和重載XC7V690T芯片、監(jiān)控SEM IP核的狀態(tài)。AX500芯片與XC7V690T芯片接口中的SPI-1為專用配置管腳,用來加載或重載FPGA。
系統(tǒng)軟件架構(gòu)框圖如圖2所示。AX500芯片在上電時(shí)讀取FLASH中的配置信息,通過SPI接口加載目標(biāo)XC7V690T芯片,加載完成后,監(jiān)測(cè)XC7V690T芯片的SEM IP核返回的狀態(tài)信號(hào),若檢測(cè)到配置數(shù)據(jù)錯(cuò)誤、SEM IP核自身發(fā)生錯(cuò)誤或發(fā)生不可糾正的錯(cuò)誤,則視需求讀取FLASH中的配置信息對(duì)目標(biāo)XC7V690T芯片進(jìn)行重載操作。
圖2 軟件架構(gòu)框圖
AX500反熔絲FPGA監(jiān)控XC7V690T的配置狀態(tài),通過監(jiān)控XC7V690T的DONE信號(hào),若一定時(shí)間(外部須有時(shí)間跳線選擇)內(nèi)反熔絲FPGA未收到DONE信號(hào),表示XC7V690T未配置成功。此時(shí),AX500反熔絲FPGA拉低PROG信號(hào)對(duì)XC7V690T重新配置(熱啟動(dòng))。若熱啟動(dòng)次數(shù)超過8次后仍未成功配置XC7V690T,表示無法進(jìn)行板內(nèi)重載,AX500反熔絲FPGA通過遙測(cè)鏈路將模塊故障信息下傳地面。熱啟動(dòng)重載流程圖如圖3所示。
圖3 熱啟動(dòng)流程圖
在熱啟動(dòng)無法成功配置時(shí),需要通過發(fā)送指令進(jìn)行干預(yù)。該情況下,收到地面遙控指令,可以啟動(dòng)斷電操作,通過斷電重載進(jìn)行恢復(fù)。若冷啟動(dòng)8次仍未成功配置XC7V690T,AX500反熔絲FPGA將其斷電,并通過遙測(cè)鏈路將模塊故障信息下傳地面。冷啟動(dòng)加載流程圖如圖4所示。
圖4 冷啟動(dòng)流程圖
XC7V690T與AX500配置監(jiān)控接口具體信號(hào)如表1所示。
表1 XC7V690T與AX500配置監(jiān)控接口
XC7V690T內(nèi)部調(diào)用SEM IP核實(shí)現(xiàn)對(duì)配置RAM資源的自主監(jiān)控和維護(hù)。SEM核利用片內(nèi)的ICAP接口訪問配置RAM資源,并通過自帶的差錯(cuò)控制編碼(ECC,error correcting code)和循環(huán)冗余校驗(yàn)碼(CRC,cyclic redundancy check)校驗(yàn)資源識(shí)別發(fā)生翻轉(zhuǎn)的配置RAM位,并能進(jìn)行自動(dòng)修復(fù)。
該功能可以配置成3種模式。
1)修復(fù)模式:以ECC算法為基礎(chǔ),可以糾正所有的單比特軟錯(cuò)誤;
2)增強(qiáng)修復(fù)模式:以ECC和CRC算法為基礎(chǔ),能修復(fù)任意的單比特和相鄰雙比特的翻轉(zhuǎn)軟錯(cuò)誤;
3)替換模式:能夠修復(fù)任意多個(gè)比特錯(cuò)誤。
SEM通過片內(nèi)ICAP接口訪問配置RAM,而傳統(tǒng)的回讀刷新通過片外SelectMAP接口訪問配置RAM,兩種接口的時(shí)序效率相差不大,但是外部回讀需要通過PCB走線,還要考慮反熔絲FPGA的頻率限制,所以主頻通常遠(yuǎn)低于FPGA內(nèi)部ICAP頻率,因而需要更多時(shí)間,這使得SEM的故障識(shí)別時(shí)間遠(yuǎn)低于外部的回讀刷新。
同時(shí),由于XC7V690T FPGA沒有公開配置幀的結(jié)構(gòu),無法進(jìn)行精確的局部刷新,而全局刷新耗時(shí)長(zhǎng),并且其中絕大多數(shù)的刷新操作沒有實(shí)際意義,加固效率較低。SEM技術(shù)則能夠通過局部刷新的手段,實(shí)現(xiàn)非常高效的故障恢復(fù)。
根據(jù)具體應(yīng)用情況,SEM IP選擇增強(qiáng)修復(fù)模式的糾錯(cuò)策略。XC7V690T與AX500 SEM監(jiān)控接口具體信號(hào)如表2所示。
表2 XC7V690T與AX500 SEM監(jiān)控接口
然而,SEM本身仍然有可能會(huì)因?yàn)閱瘟W臃D(zhuǎn)而發(fā)生故障,雖然發(fā)生這種情況的概率要遠(yuǎn)遠(yuǎn)低于FPGA本身發(fā)生單粒子翻轉(zhuǎn)的概率,但仍然有必要針對(duì)這種情況設(shè)計(jì)故障恢復(fù)預(yù)案。通過反熔絲FPGA直接監(jiān)控SEM的狀態(tài)信息,可以判斷SEM功能是否正常工作,并在發(fā)生故障時(shí)通過重載(熱啟動(dòng))進(jìn)行恢復(fù)。
反熔絲FPGA需要啟動(dòng)重載操作的異常內(nèi)容包括:
1)SEM核未能成功完成初始化;
2)SEM核在工作狀態(tài)時(shí)發(fā)生異常;
3)SEM核監(jiān)測(cè)到不可恢復(fù)并且是必要比特錯(cuò)誤;
4)SEM核監(jiān)測(cè)到連續(xù)三次相同地址的必要錯(cuò)誤。
當(dāng)出現(xiàn)上述情況時(shí),反熔絲FPGA嘗試對(duì)XC7V690T進(jìn)行重載(熱啟動(dòng))恢復(fù),并且將異常計(jì)數(shù)+1。如果累積符合8次都未能恢復(fù)該異常,則反熔絲FPGA停止重載恢復(fù),并通過遙測(cè)鏈路下傳相關(guān)故障信息。
XC7V690T SEM監(jiān)控流程圖如圖5所示。
圖5 XC7V690T SEM監(jiān)控流程圖
采用3片F(xiàn)LASH存儲(chǔ)配置程序,用于配置文件三取二校驗(yàn)功能。為了進(jìn)一步提升可靠性,新增1片F(xiàn)LASH用于在軌重構(gòu)。第4片F(xiàn)LASH用于在軌重構(gòu)(第1~3片F(xiàn)LASH在軌期間不可進(jìn)行寫操作),重構(gòu)數(shù)據(jù)流通信接口為異步RS422接口。
XC7V690T輸出至反熔絲FLASH的訪問接口SPI,用于訪問bit配置文件。而反熔絲FLASH則需要維護(hù)4片SPI型FLASH。當(dāng)XC7V690T需要訪問自己的配置FLASH時(shí),反熔絲FPGA會(huì)通過SPI接口發(fā)來的請(qǐng)求,反熔絲FPGA解析SPI指令和地址,并根據(jù)當(dāng)前的配置模式,選擇對(duì)4片SPI FLASH進(jìn)行操作。
在軌重構(gòu)工作流程設(shè)計(jì)如下:
1)地面發(fā)送遙控指令,請(qǐng)求重構(gòu),并告知重構(gòu)區(qū)域(FLASH內(nèi)存空間內(nèi)的首地址及長(zhǎng)度)。
2)單機(jī)收到指令后對(duì)目標(biāo)FLASH中的對(duì)應(yīng)區(qū)域進(jìn)行擦除操作,擦除完成后發(fā)送遙測(cè)數(shù)據(jù)告知擦除完成,若超過指定時(shí)間后擦除仍未完成,則判定擦除失敗,F(xiàn)LASH中該部分區(qū)域失效。
3)單機(jī)通過異步RS422接口接收重構(gòu)數(shù)據(jù)流,每接收一幀(幀長(zhǎng)與FLASH芯片的頁長(zhǎng)度相符)數(shù)據(jù),寫入FLASH中,并根據(jù)接收到的CRC值對(duì)FLASH中的該幀數(shù)據(jù)進(jìn)行校驗(yàn),如校驗(yàn)通過,則發(fā)送校驗(yàn)通過信號(hào),請(qǐng)求接收下一幀數(shù)據(jù),反之,則反饋校驗(yàn)失敗信號(hào)。數(shù)據(jù)發(fā)送方收到失敗信號(hào)后重新發(fā)送該幀數(shù)據(jù),如連續(xù)收到三次失敗信號(hào),則跳出本次重構(gòu)流程。
4)當(dāng)單機(jī)收到整個(gè)程序的校驗(yàn)指令和校驗(yàn)CRC值時(shí),表示完整數(shù)據(jù)流已傳輸完畢,單機(jī)啟動(dòng)整個(gè)程序的CRC校驗(yàn),校驗(yàn)失敗則表示本次重構(gòu)失敗,反之,則復(fù)位FPGA芯片,通過重構(gòu)后的FLASH芯片重新加載程序,如遙測(cè)參數(shù)正常,方可判定為本次重構(gòu)有效,單機(jī)通過遙測(cè)接口反饋該次重構(gòu)結(jié)果(成功/失敗)。
重構(gòu)流程示意圖如圖6所示。
圖6 重構(gòu)流程示意圖
采用該系統(tǒng)架構(gòu)在某航天器通信機(jī)上完成了在軌驗(yàn)證。在軌期間對(duì)該通信機(jī)進(jìn)行了多次測(cè)試,如圖7所示,在軌測(cè)試期間共進(jìn)行了12次開關(guān)機(jī),通信機(jī)均加載正常,三取二報(bào)錯(cuò)計(jì)數(shù)為零。
圖7 三取二報(bào)錯(cuò)計(jì)數(shù)在軌測(cè)試結(jié)果
在軌測(cè)試期間,XC7V690T內(nèi)部SEM IP核成功進(jìn)行了一次SEM糾錯(cuò),未造成SEM異常(SEM異常計(jì)數(shù)為零),如圖8所示,未影響通信機(jī)的正常功能。
圖8 SEM糾錯(cuò)次數(shù)及異常次數(shù)在軌測(cè)試結(jié)果
在軌驗(yàn)證結(jié)果表明,在航天器運(yùn)行過程中,采用本方案多次圓滿地完成了XC7V690T加載與刷新,單機(jī)在軌工作穩(wěn)定正常。此外,重構(gòu)措施在地面研制階段,進(jìn)行了重構(gòu)驗(yàn)證,提供了方便的程序更換手段。
針對(duì)核心工業(yè)級(jí)SRAM型FPGA芯片XC7V690T抗輻照能力較弱,在軌運(yùn)行期間存在單粒子翻轉(zhuǎn)的風(fēng)險(xiǎn)的問題,提出了一種基于XC7V690T的在軌抗單粒子翻轉(zhuǎn)系統(tǒng)架構(gòu)。在軌驗(yàn)證結(jié)果表明,采用工業(yè)級(jí)SRAM型FPGA芯片XC7V690T的某航天器通信機(jī)在軌測(cè)試過程中成功進(jìn)行了SEM糾錯(cuò),通信機(jī)在軌工作正常,通信鏈路穩(wěn)定,滿足使用要求。表明該系統(tǒng)架構(gòu)可以有效提升XC7V690T抗單粒子翻轉(zhuǎn)能力,可以為其他SRAM型FPGA抗單粒子翻轉(zhuǎn)設(shè)計(jì)提供借鑒與參考。