, ,
(西北工業(yè)大學(xué) 精確制導(dǎo)與控制研究所,西安 710072)
立方星(CubeSat)的概念最早由加州理工大學(xué)San Luis Obispo教授和斯坦福大學(xué)Bob Twiggs教授共同提出并制定了立方星的相關(guān)標(biāo)準(zhǔn)[1]。該標(biāo)準(zhǔn)以一個邊長為10 cm的正方體作為一個標(biāo)準(zhǔn)單元,稱之為“1U”立方星。在此基礎(chǔ)上,立方星以該標(biāo)準(zhǔn)單元進(jìn)行擴(kuò)展,可增大衛(wèi)星的體積和功能。其理念是通過標(biāo)準(zhǔn)化設(shè)計(jì),減少衛(wèi)星的研發(fā)制造成本。
但立方星屬于微納衛(wèi)星的范疇,相比于大衛(wèi)星,其體積、功耗與成本均存在限制。如何在有限的體積、功耗與成本下,提高立方星星載處理系統(tǒng)的可靠性是國內(nèi)外學(xué)者近期研究的熱點(diǎn)[2-3]。與此同時,大容量可重構(gòu)FPGA (Field Programmable Gate Array) 的出現(xiàn),使得可重構(gòu)計(jì)算機(jī)成為了可能。可重構(gòu)星載計(jì)算機(jī)能夠在立方星部分部件出現(xiàn)故障時,自主地改變自身的功能,使立方星能夠按原定性能指標(biāo)或比原性能指標(biāo)略低 (但可接受) 的情況下安全地完成任務(wù)。這樣就避免了固定硬件結(jié)構(gòu)的立方星系統(tǒng)一旦發(fā)生硬件損傷,將導(dǎo)致任務(wù)失敗的結(jié)局,從而提高了立方星的可靠性。
文獻(xiàn)[4]介紹了2007年德國斯圖加特大學(xué)小衛(wèi)星計(jì)劃的第一顆微小衛(wèi)星——Flying Laptop,該衛(wèi)星采用了基于FPGA的可重構(gòu)計(jì)算技術(shù)來設(shè)計(jì)星載計(jì)算機(jī)。為了解決系統(tǒng)容錯以及抗輻射問題,系統(tǒng)設(shè)計(jì)了4個相同且相互獨(dú)立的節(jié)點(diǎn)。但考慮到功耗與體積等因素,該體系很難應(yīng)用于立方星上。文獻(xiàn)[5]給出了用于立方星上的低成本高可靠性星載計(jì)算機(jī)的方案,文獻(xiàn)使用ATmega128作為星務(wù)處理器,而使用Spartan-6的FPGA作為載荷處理器。但該文僅僅只對使用FPGA的方案進(jìn)行了討論,并未對FPGA如何進(jìn)行具體的在軌重構(gòu)進(jìn)行研究。文獻(xiàn)[6]采用Xilinx的FPGA開發(fā)板利用模糊理論進(jìn)行姿態(tài)控制算法研究,并進(jìn)行了硬件在回路仿真,但該設(shè)計(jì)并未進(jìn)行在軌試驗(yàn)。本文將綜合考慮立方星的質(zhì)量、功耗與體積等限制因素,使得立方星具有一定的重構(gòu)能力,從而提高立方星星載處理系統(tǒng)的可靠性,并最終通過實(shí)際在軌測試,驗(yàn)證了設(shè)計(jì)的正確性和可行性。
本文首先針對立方星存在的質(zhì)量、體積與功耗等限制因素,在充分吸收了國內(nèi)外微小衛(wèi)星星載計(jì)算的設(shè)計(jì)研制經(jīng)驗(yàn)基礎(chǔ)上,給出了基于FPGA的立方星可重構(gòu)星載處理系統(tǒng)的基本架構(gòu)。在此基礎(chǔ)上,針對可重構(gòu)星載處理系統(tǒng)中的一些關(guān)鍵技術(shù)進(jìn)行了詳細(xì)的設(shè)計(jì)。最后針對各關(guān)鍵技術(shù)逐一進(jìn)行了測試與驗(yàn)證,并給出了實(shí)際在軌測試的結(jié)果。
為了使得立方星星載處理系統(tǒng)具有可重構(gòu)性,同時滿足立方星的設(shè)計(jì)標(biāo)準(zhǔn),本文基于FPGA進(jìn)行了立方星可重構(gòu)星載處理系統(tǒng)的設(shè)計(jì)。該設(shè)計(jì)充分吸收了國內(nèi)外立方星星載計(jì)算機(jī)的設(shè)計(jì)研制經(jīng)驗(yàn)[7-9],并對星載計(jì)算機(jī)的可重構(gòu)策略、在線重構(gòu)、系統(tǒng)同步等功能進(jìn)行設(shè)計(jì)。這樣使得整個星載處理系統(tǒng)在具有在線重構(gòu)功能的同時、也具有體積小、集成度高以及低功耗等特點(diǎn),能夠滿足一般立方星的應(yīng)用需要。
所設(shè)計(jì)的星載處理系統(tǒng)的硬件結(jié)構(gòu)圖如圖1所示。由圖中可以看出,該硬件結(jié)構(gòu)由一片基于SRAM架構(gòu)的FPGA與一片基于Flash架構(gòu)的FPGA組成。其中,基于SRAM架構(gòu)的FPGA中集成了兩個軟核處理器CPU1與CPU2,基于Flash架構(gòu)的FPGA負(fù)責(zé)系統(tǒng)的表決控制功能。兩個軟核處理器分別擁有獨(dú)立的F-RAM,但共享同一個Flash存儲器。CPU1與CPU2同時從表決控制電路獲取輸入數(shù)據(jù),經(jīng)過運(yùn)算后回送至表決控制電路。最終,由表決控制電路對結(jié)果進(jìn)行同步和表決,并對外部輸出的結(jié)果。下面對該系統(tǒng)中核心部件的硬件設(shè)計(jì)進(jìn)行詳述。
圖1 星載處理平臺總體結(jié)構(gòu)
其核心處理模塊采用Altera公司基于SRAM架構(gòu)的Cyclone V系統(tǒng)。與前幾代產(chǎn)品相比,該系列FPGA總功耗降低了40%,并具有高效的邏輯集成功能。正常工作情況下,在一塊FPGA中設(shè)計(jì)雙核處理系統(tǒng),并為每一個處理器分別單獨(dú)配置SD卡與F-RAM用于任務(wù)數(shù)據(jù)存儲與數(shù)據(jù)內(nèi)存,而兩個處理器共用同一塊Flash以減小功耗。
另外,采用基于Flash架構(gòu)的ProASIC3芯片作為核心的表決控制系統(tǒng)。該芯片對于空間復(fù)雜環(huán)境下高能粒子的影響具有很好的免疫能力。在系統(tǒng)上電時無需額外配置芯片,增加了系統(tǒng)的安全性和穩(wěn)定性,是真正的單芯片解決方案。上電即運(yùn)行的特點(diǎn),使得器件可以迅速執(zhí)行重要的系統(tǒng)初始化任務(wù)。
ProASIC3作為與外界的接口,主要功能包括從外界總線獲取數(shù)據(jù)、對FPGA的計(jì)算結(jié)果進(jìn)行表決、將最終結(jié)果輸出至外部數(shù)據(jù)總線、根據(jù)FPGA的工作情況對其進(jìn)行重構(gòu)、控制電源模塊進(jìn)行重新上電等。在Altera的FPGA中設(shè)計(jì)雙核處理器,在正常工作時,雙核CPU1與CPU2均處于工作狀態(tài),并各自產(chǎn)生對應(yīng)的心跳信號。
電源模塊實(shí)現(xiàn)電壓轉(zhuǎn)換、過流保護(hù)以及輸出使能等功能。為了降低功耗并防止FPGA配置芯片中的配置代碼不被高能粒子打翻,ProASIC3通過使能引腳來控制Cyclone V系統(tǒng)的配置過程。當(dāng)Cyclone V的配置過程結(jié)束后,ProASIC3拉低使能引腳,停止對配置芯片供電。當(dāng)需要重新配置Cyclone V時,使能電源芯片,使其正常為配置芯片供電。
存儲單元由鐵電存儲器F-RAM、SD卡以及Flash存儲器組成。Flash存儲器主要存儲運(yùn)行于FPGA上的軟件程序。F-RAM存儲器用于存儲程序運(yùn)行過程中的程序和數(shù)據(jù)。SD卡用于存儲立方星飛行過程中的任務(wù)數(shù)據(jù)。其中,每一個處理器分別單獨(dú)使用各自的SD卡與F-RAM,而兩個處理器共用同一塊Flash以減小功耗。
用于立方星的可重構(gòu)星載處理系統(tǒng),受到體積、功耗的限制,既不能過于復(fù)雜,又必須保證一定的可靠性。因此,可重構(gòu)星載處理系統(tǒng)選擇雙模冗余的方案。對于雙模冗余的硬件結(jié)構(gòu),經(jīng)常采用的容錯控制策略有熱備份、冷備份、溫備份以及互備援這幾種形式,文獻(xiàn)[10]對這幾種備份形式的優(yōu)缺點(diǎn)進(jìn)行了分析。下面對該系統(tǒng)中所采用的關(guān)鍵技術(shù)進(jìn)行詳細(xì)設(shè)計(jì)。
為了減輕ProASIC3在表決切換等功能上的負(fù)擔(dān),選取溫備份的容錯控制策略,ProASIC3僅進(jìn)行數(shù)據(jù)輸入與輸出管理。在Cyclone V FPGA中設(shè)計(jì)的雙核主機(jī)CPU1與從機(jī)CPU2,具有相同的功能。若CPU1作為主機(jī)執(zhí)行全部的星載處理程序,則從機(jī)CPU2同樣也對輸入的數(shù)據(jù)進(jìn)行運(yùn)算,但不輸出。由于主機(jī)與從機(jī)具有同樣的數(shù)據(jù)輸入來源,則在正常情況下,兩者的計(jì)算結(jié)果應(yīng)該是相同的。若主機(jī)出現(xiàn)故障,則ProASIC3按照圖 2所示的流程進(jìn)行重構(gòu)。
圖2 星載處理平臺可重構(gòu)策略流程圖
當(dāng)ProASIC3處理器判斷主機(jī)出現(xiàn)故障時,由于從機(jī)也在執(zhí)行相同的任務(wù),因此主機(jī)可以不與從機(jī)進(jìn)行任何形式的通信,只需要ProASIC3選擇輸出從機(jī)的計(jì)算結(jié)果即可。這種方式減少了主機(jī)與從機(jī)額外的通信開銷,保障了主機(jī)在出現(xiàn)故障時,能夠在一個控制周期內(nèi)實(shí)現(xiàn)故障機(jī)的切換。如果此后從機(jī)又出現(xiàn)故障,則ProASIC3控制Cyclone V FPGA進(jìn)行在線重構(gòu)。如果在線重構(gòu)后系統(tǒng)仍不能正常運(yùn)行,則ProASIC3控制電源模塊進(jìn)行斷電重啟,以避免單粒子閂鎖所導(dǎo)致電路電流過大的問題。如果斷電重啟仍無法使系統(tǒng)正常運(yùn)行,在多次出現(xiàn)此故障后,ProASIC3將控制電源模塊斷電,等待地面的控制指令。對于該流程中所涉及到的在線重構(gòu)、數(shù)據(jù)同步等技術(shù)的具體實(shí)現(xiàn)方式闡述如下。
在線重構(gòu)技術(shù)主要解決由單粒子翻轉(zhuǎn)等輻射效應(yīng)引起的瞬態(tài)故障,當(dāng)Cyclone V FPGA處理系統(tǒng)出現(xiàn)故障時,ProASIC3發(fā)送重構(gòu)指令,開始在線重構(gòu)過程。
在線重構(gòu)是對FPGA所有內(nèi)置的邏輯單元LE(Logic Element)進(jìn)行重配置的過程,F(xiàn)PGA的通用配置電路如圖3所示,重構(gòu)過程可以通過拉低配置引腳nCONFIG實(shí)現(xiàn)。
圖3 在線重構(gòu)配置電路
在需要進(jìn)行在線重構(gòu)時,ProASIC3必須使得nCONFIG管腳處于低電平至少500 ns以上。nCONFIG拉低時,F(xiàn)PGA器件被復(fù)位,同時也拉低nSTATUS和CONF_DONE引腳,此時FPGA所有的I/O管腳均處于三態(tài)狀態(tài)。當(dāng)nCONFIG返回到邏輯高電平并且由FPGA器件釋放nSTATUS時,重構(gòu)開始運(yùn)行。當(dāng)nCONFIG返回到邏輯高電平并且由FPGA器件釋放nSTATUS時,重構(gòu)開始運(yùn)行。如果在重構(gòu)過程中出現(xiàn)錯誤,F(xiàn)PGA將使nSTATUS信號置為低電平,表明數(shù)據(jù)幀錯誤。同時CONF_DONE信號也會保持低電平。通過ProASIC3監(jiān)控nSTATUS錯誤時的低電平,當(dāng)三次重構(gòu)后依然報錯,表明重構(gòu)無法修復(fù)此故障,則需要斷電重啟。
雖然通過重構(gòu)策略提高了系統(tǒng)的可靠性,但是系統(tǒng)將面臨如何實(shí)現(xiàn)各個模塊之間協(xié)調(diào)工作的問題。在多機(jī)重構(gòu)系統(tǒng)中,同步是整個系統(tǒng)的核心。數(shù)據(jù)的匹配或者表決都必須基于同步信號,否則匹配或表決就沒有意義。
本系統(tǒng)采用任務(wù)級同步的方法,任務(wù)級同步技術(shù)使各處理器執(zhí)行相同的計(jì)算,計(jì)算完成時進(jìn)行同步比較。本系統(tǒng)的同步主要由以ProASIC3為主芯片的處理系統(tǒng)作為管理器來進(jìn)行。每一周期內(nèi)的一次輸入和輸出過程可以定義為一個任務(wù)。在每次控制周期內(nèi),隨著系統(tǒng)的運(yùn)行,ProASIC3按照如圖 4所示的流程圖進(jìn)行數(shù)據(jù)的同步。
圖4 任務(wù)級同步的實(shí)現(xiàn)方法
在每一周期開始時,ProASIC3啟動定時器,接收各敏感器數(shù)據(jù)并發(fā)送給Cyclone V FPGA用于計(jì)算,隨后ProASIC3循環(huán)等待Cyclone V FPGA中的雙核處理器返回計(jì)算結(jié)果。如果在定時器定時結(jié)束之前,Cyclone V FPGA中的兩個處理器均能正常返回結(jié)果,則等待定時器計(jì)時結(jié)束后進(jìn)入下一個控制周期。如果出現(xiàn)有處理器未返回計(jì)算結(jié)果的情況,則按照圖 2所示的策略進(jìn)行相應(yīng)的操作,并對系統(tǒng)狀態(tài)進(jìn)行記錄。
最終集成的星載處理系統(tǒng)實(shí)物如圖5所示。圖中,中間的芯片即為基于SRAM架構(gòu)的Cyclone V FPGA,下部的芯片為基于Flash架構(gòu)的ProASIC3 FPGA,左上部分的芯片為雙核處理器共享的Flash存儲器?;谠撔禽d處理系統(tǒng)硬件平臺,針對各關(guān)鍵技術(shù)進(jìn)行了實(shí)驗(yàn)測試與驗(yàn)證分析。
圖5 星載處理系統(tǒng)實(shí)物圖
為了單純對在線重構(gòu)技術(shù)進(jìn)行驗(yàn)證,設(shè)計(jì)了ProASIC3周期性地對Cyclone V FPGA進(jìn)行重構(gòu)的測試用例。在Cyclone V FPGA內(nèi)部設(shè)計(jì)了時鐘鎖相環(huán)PLL,執(zhí)行對輸入時鐘進(jìn)行分頻,并將結(jié)果輸出至FPGA的外部接口上。通過示波器采集到的ProASIC3周期性地對Cyclone V FPGA進(jìn)行重構(gòu)的過程如圖6所示。
圖6 在線重構(gòu)技術(shù)測試結(jié)果
圖中有四組曲線A、B、C、D,其中A曲線為nCONFIG重構(gòu)控制信號;B曲線為Cyclone V FPGA中PLL的輸出信號;C曲線為配置芯片向Cyclone V FPGA傳輸重構(gòu)數(shù)據(jù)的DATA信號;D曲線是表示重構(gòu)完成的CONFIG_DONE信號。從圖中可以看出ProASIC3周期性地對Cyclone V FPGA進(jìn)行重構(gòu)。nCONFIG信號平時為高電平,一旦被ProASIC3設(shè)置為低電平,首先Cyclone V FPGA中正常的PLL任務(wù)停止輸出,同時CONFIG_DONE變低,表示開始進(jìn)行在線重構(gòu)。這里為了便于展示,低電平持續(xù)了約100 ms,而實(shí)際使用時低電平只需要大于500 ns即可。當(dāng)nCONFIG信號又回到高電平后,配置芯片通過DATA引腳向Cyclone V FPGA傳輸重構(gòu)數(shù)據(jù),當(dāng)配置數(shù)據(jù)傳輸完成后,Cyclone V FPGA的PLL繼續(xù)正常輸出時鐘信號,完成了一次在線重構(gòu)。經(jīng)過約100 ms的時間后,nCONFIG信號再次被ProASIC3置低,進(jìn)行下一次的在線重構(gòu)。經(jīng)過測試,所設(shè)計(jì)的星載處理系統(tǒng)能夠正確地進(jìn)行在線重構(gòu)。
本平臺采用任務(wù)級的同步方式,ProASIC在每一個控制周期給Cyclone V FPGA提供同步脈沖,用于其中運(yùn)算模塊的同步運(yùn)算。圖7顯示了ProASIC每隔固定周期給雙核發(fā)出的脈沖信號。
圖7 同步脈沖信號
在同步脈沖的協(xié)調(diào)下,Cyclone V FPGA通過串口返回的計(jì)算結(jié)果也基本上是同步的,如圖8所示。
圖8 同步輸出的結(jié)果
圖中,上下兩條曲線分別為CPU1與CPU2各自串口的輸出曲線。從圖中可以看出,兩者的計(jì)算結(jié)果輸出相位差小于50 μs。考慮到衛(wèi)星上的控制周期在毫秒量級,因此這樣的相位差是完全可以被ProASIC所接受的。這說明所設(shè)計(jì)的同步機(jī)制是可行有效的。
本文所設(shè)計(jì)的星載處理系統(tǒng)已經(jīng)在世界首顆12 U立方星“翱翔之星”上得到了應(yīng)用。該衛(wèi)星于2016年6月25日發(fā)射,運(yùn)行于距地面約300 km的軌道高度。在軌運(yùn)行期間,該星載處理系統(tǒng)運(yùn)行穩(wěn)定。圖9顯示了“翱翔之星”星載處理系統(tǒng)FPGA的工作情況。
圖9 “翱翔之星”星載處理系統(tǒng)工作情況
由圖中可以看出,F(xiàn)PGA的狀態(tài)始終為0,表明FPGA在可測控弧段上均為正常,這說明在低軌的空間輻射對于FPGA的干擾影響較小。圖10顯示了星載處理系統(tǒng)的溫度變化情況。
圖10 “翱翔之星”星載處理系統(tǒng)溫度變化情況
由圖10可以看出,星載處理系統(tǒng)的溫度均處于-10~25 ℃之間,溫度比較適中。在整個衛(wèi)星的生命周期內(nèi),星載處理系統(tǒng)運(yùn)行穩(wěn)定良好,證明了本設(shè)計(jì)方案的正確性和可行性。
本文在對國內(nèi)外微納衛(wèi)星星載計(jì)算機(jī)設(shè)計(jì)特點(diǎn)進(jìn)行分析的基礎(chǔ)上,提出了一種基于FPGA的立方星可重構(gòu)星載處理系統(tǒng)。該系統(tǒng)采用基于SRAM型的FPGA作為核心處理模塊,利用較少功耗獲得較高的運(yùn)算速度;同時采用基于Flash型的FPGA作為外部表決接口模塊,對基于SRAM型的FPGA進(jìn)行表決和控制。當(dāng)基于SRAM型FPGA出現(xiàn)問題時,基于Flash型的FPGA能夠?qū)η罢哌M(jìn)行重構(gòu)修復(fù),從而提高了整個系統(tǒng)的可靠性。最終在硬件上的測試與在軌實(shí)測數(shù)據(jù)表明,本文所設(shè)計(jì)的立方星可重構(gòu)星載處理系統(tǒng)是可靠和有效的,這對于今后設(shè)計(jì)適合于立方星使用的可重構(gòu)處理系統(tǒng)提供了一些有益的參考。