龐波 郝維寧 張文峰 徐勇 朱劍冰
(1北京航空航天大學,北京100191)(2北京空間飛行器總體設計部,北京100094)
一種SRAM-FPGA在軌重構的工程實現方案
龐波1,2郝維寧2張文峰1徐勇2朱劍冰2
(1北京航空航天大學,北京100191)(2北京空間飛行器總體設計部,北京100094)
針對航天器電子系統在實際工程中要解決的星載資源受限、長壽命、高可靠等特殊問題,文章提出了一種基于靜態隨機存取存儲器型現場可編程門陣列(SRAM-FPGA)在軌重構的方法及工程實施方案,對如何保證數據可靠傳輸與可靠存儲等關鍵問題進行了討論,并且給出了在某衛星工程中的具體設計方案和在軌驗證情況。結果表明,采取的重構設計圓滿完成了目標FPGA的功能升級以及在軌實時刷新,工作穩定正常,可以為其他航天器電子系統設計提供參考。
基于靜態隨機存取存儲器型現場可編程門陣列;在軌重構;高可靠
當前,現場可編程門陣列(Field Programmable Gate Array,FPGA)在航天領域的應用越來越廣泛,其中靜態隨機存取存儲器型FPGA(Static Random Access Memory Based Field Programmable Gate Array,SRAM-FPGA)的可重復編程特性為航天器的硬件電路設計帶來了極大的靈活性。隨著航天器系統功能的不斷復雜,越來越多的航天器對FPGA提出了在軌重構的要求。一方面,隨著應用的不斷深入,通過修改設計升級平臺或載荷功能以滿足新的應用需求;另一方面,對于在軌發現的故障或隱患,通過修改設計,消除原設計中存在的缺陷,提高系統的可靠性。例如,基于FPGA的可重構計算技術已成為航天器星載計算機微小型化解決方案之一[1]。NASA對可重構計算技術的航天應用進行了評估,結果表明:航天應用中基于FPGA的可重構處理系統比傳統低性能微處理器,甚至比抗輻射增強商業微處理器具有更高的性能,可以通過重構實現靈活的系統功能及通信協議等特殊功能[1]。根據FPGA的功能原理,在地面系統中實現FPGA重構并不難做到,但是對于航天器在軌的特殊應用環境,工程設計中需要面對資源受限、長壽命、高可靠等工程要求,需要分析電路、存儲、通信等各類資源的可行性,同時采取可靠性措施,確保在增加設計靈活性的同時要保證系統的可靠性。本文重點對如何高可靠地實現航天器FPGA在軌重構方案和具體的設計措施展開討論,對工程實施中需要解決的關鍵問題提出了建議。
航天器使用的FPGA芯片主要有兩種,反熔絲FPGA和SRAM-FPGA。反熔絲FPGA屬于一次性可編程FPGA,具有非易失性的特點,編程后內部邏輯固定,掉電后無須重新配置,可靠性和抗輻射性能較好,適合在軍事和空間等領域應用。SRAMFPGA內部設有配置存儲器,通過存儲在配置存儲器內的數據來控制開關元件,完成所需的邏輯功能。此類FPGA支持可重復編程,加載不同的配置數據就可以改變所實現的電路功能,設計靈活性和適應性較強。該芯片是一種易失性芯片,配置信息掉電后須重新配置。
由于SRAM-FPGA易失性的特點,因此需要在FPGA外部配置非易失的程序存儲器,如可編程只讀存儲器(PROM),用來存儲配置數據,設備加電后通過加載配置數據實現所需的邏輯功能。SRAM-FPGA基本電路如圖1所示。
FPGA的邏輯配置過程就是將配置數據通過專用的配置接口寫到FPGA內配置的寄存器的過程。這一過程包括一系列的控制命令字、特定格式的配置數據寫入、配置過程數據校驗、芯片管腳電平控制等工作,需要按照FPGA專用接口時序,設計專門的配置電路和程序來實現。按照FPGA配置控制端的不同劃分了主動/被動配置模式,主動配置模式是指配置時鐘由FPGA提供,由FPGA自身引導配置過程;被動配置模式是指配置時鐘由外部提供,由外部器件將配置文件導入FPGA中;按照配置數據的寬度區分了串行/并行配置模式(并行配置模式一般稱為Select MAP Mode)。以目前常用VirtexII系列FPGA為例,芯片的配置模式分為主串(Master Serial)、從串(Slave Serial)、主并(Master Select Map)、從并(Slave Select Map)、邊界掃描配置(Boundary Scan)[2]。
主串模式下的FPGA從存儲器(如PROM)主動得到串行數據進行配置,而從串配置模式使得FPGA可以由其它處理器控制或通過菊花鏈的方式進行配置。圖2為PROM及兩個主串/從串FPGA組成的菊花鏈示意圖。在圖2中,主串FPGA的配置內容和從串FPGA的配置內容被合并為一個文件存儲在PROM中,主串FPGA先被配置,從串FPGA再被配置。
主并、從并模式使用Select MAP接口實現了數據從存儲器中并行讀取、加快了配置速度。如圖3所示,使用從并配置模式,利用專用控制電路或微處理器來控制重構時序對FPGA進行配置,除了程序加載,還可以用于程序重構或在線實時刷新,可用來糾正FPGA的單粒子翻轉(Single Event Upset,SEU)故障,這在目前的航天器電子系統設計中比較常用。
由第2節可知,SRAM-FPGA的邏輯功能依賴于存儲的配置數據,因此,更改星上存儲的配置數據即可更改FPGA的功能。以往從可靠性出發,配置存儲器一般使用PROM,FPGA的功能無法改變。如果在設備內設計一個“可寫”的存儲器作為FPGA的配置存儲器,通過在軌更換配置存儲器內的程序數據,然后重新加載FPGA,則可以實現硬件邏輯功能的在軌重構。
星載設備內部設計專門的重構控制電路,利用專用集成電路(ASIC)或微處理器對目標FPGA及其程序存儲器進行管理和配置。通過遙控注入數據,將新的FPGA配置程序傳送到航天器上。然后由軟件或專用芯片進行操作控制,完成程序數據的解析、校驗、存儲、加載和刷新等一系列的工作。FPGA程序可重構存儲器選擇需要根據任務實際情況分析,一方面要考慮被重構設備的工作模式,另一方面也要考慮系統的開銷。
對于需要頻繁開關機操作的設備,需要使用非易失性可編程存儲器,如Flash芯片、EEPROM芯片,這些芯片均支持在線操作進行數據擦除和寫入,可以在軌進行程序改寫,掉電后數據不丟失,可以長期存儲配置程序,避免頻繁通過遙控上注。
對于某些微小衛星等資源緊張的應用環境,設備的工作時間不長,一般在設備不需要斷電的情況下,可以使用SRAM等易失性存儲器,通過處理器對FPGA完成加載。如果工作過程中需要對FPGA進行刷新,數據要一直保存;如果不需要刷新,數據即可刪除。此方案的優點是設計比較簡單,軟件實現難度小,缺點是產品掉電后需要重新上注。
在地面系統中,通過直接更換程序存儲芯片或者對可擦除的存儲器進行離線/在線編程,都可以很容易地實現系統內FPGA重構。但是在航天器系統中,FPGA程序重構需要面臨一些特殊的限制條件。例如:發射后設備不可拆卸、要選用高可靠的存儲器芯片抵抗空間輻照、數據由地面送到航天器上的通信信道資源受限等等。此外,高可靠性是航天器系統特點之一,保證配置數據及配置過程的正確性和可靠性是工程設計需要重點關注的。根據FPGA在軌重構的原理,實現高可靠的在軌重構在實際工程設計中,需要考慮以下幾方面。
4.1 配置數據的可靠傳輸
配置數據由地面通過無線信道傳送到航天器上用于FPGA重構,通信過程中各環節產生的誤碼都會導致配置數據無效。對于星地通信環節,航天器遙控信道具備良好差錯控制措施,不需要增加額外的措施。將配置數據進行格式化后,經過遙控通信協議包裝,發送到星上,再由航天器遙控接收設備解析后給出正確的配置數據,其可靠性可以滿足重構的需要。對于星內通信環節,由于不同FPGA在星載系統中所處的位置不同,因此傳輸經過的路徑也不盡相同,所設計的通信差錯控制措施也不同,需要根據具體的設計選擇合理的設計手段。
配置數據的數據量一般比較大,而航天器遙控傳輸速率相對較低,傳輸時間會比較長。例如,按照上行遙控碼速率4000 bit/s計算,采用脈沖編碼調制(PCM)遙控體制[3],去除勤務數據,有效數據率約為3800 bit/s,因此完成1片300萬門FPGA配置數據上傳時間大約為2900 s(11M/3800),還不包括遙控指令的確認和保護間隔時間。可見對于測控系統,執行一次重構的工程開銷非常大,參見表1[2,4]。
針對此問題,系統設計中對配置數據采取了分段格式化的方法,按照遙控體制及數據封裝要求,在格式化的分段數據內提供接收確認和錯誤重傳的通信協議,在發送過程中逐段完成數據檢驗,最終在航天器內完成整體配置文件組裝及存儲。對發生傳輸誤碼的數據塊可以單獨重傳替換,提高數據上注效率。對于較大的程序,支持多弧段分時注入,可適用于低軌道航天器。

表1 航天器常用FPGA的配置數據規模及傳輸時間統計Table 1 Gate and bitstream size of common-used FPGA in spacecraft
4.2 配置數據的可靠存儲
配置數據存儲在星上,用于對FPGA的配置、掉電復位后重加載、防SEU刷新等操作,其正確性至關重要。對于長壽命航天器,長期存儲的數據一般需要采取抗輻射設計及可靠性設計措施來保證數據的可用性。一方面,存儲器芯片的可靠性、抗輻射性能一定要滿足要求,一般選擇使用非易失的存儲器如EEPROM、Flash;另一方面,需要針對空間環境中發生的單粒子翻轉效應,對存儲器發生數據錯誤進行容錯設計,常用方法有兩種:錯誤檢測與糾正(Error Detection And Correction,EDAC)和三模冗余(Trip Module Redundancy,TMR)[5]。
(1)EDAC是采用擴展的漢明校驗碼來完成自動糾正一位錯檢測任意兩位錯的功能。在配置控制電路中增加EDAC電路,可以在讀寫配置數據時,通過檢測編碼的合法性來發現錯誤直至糾正錯誤。常用的漢明碼算法應該滿足不等式:2r≥k+r+1(k為數據碼位數,r為校驗碼位數)。如果要完成糾一檢二的功能,需要再增加一位校驗碼,滿足以下關系式:2r-1≥k+r[6]。
(2)TMR設計是利用三片配置存儲器存儲同一份配置數據,在進行配置時,控制器從三片配置存儲器中同時讀出配置數據,并進行三取二表決,將表決后的數據加載到FPGA中作為配置數據??紤]到三片中同時有兩片以上發生同一位翻轉的概率很小,因此三冗余的方法能夠顯著降低單粒子翻轉的影響。
兩種方法都是利用存儲空間的冗余解決數據的正確性。TMR設計需要實際配置數據規模3倍的存儲空間,而采用EDAC所需要增加的存儲器容量相對較少。根據漢明碼的特性,數據字長的大小對編碼后增加的容量影響較大。例如:對于4位的字長,增加的存儲空間為75%;對于8位的字長,增加的存儲空間為50%;對于16位的字長,增加的存儲空間為31%;對于32位的字長,增加的存儲空間為19%;對于43位的字長,增加的存儲空間為11%??梢愿鶕嶋H使用中數據操作位寬選擇具體的EDAC策略。此外,還可采取在運行過程中對糾錯后的數據進行回寫,消除SEU效應累計造成雙比特以上的不可糾正的錯誤,進一步提高存儲可靠性。
上述增加可靠性的設計措施,會帶來存儲資源增加和設計復雜度提高,增加系統開銷,需要根據實際的工程情況評估方案的合理性。
4.3 配置數據的壓縮
隨著星載電路功能越來越復雜,更多高端FPGA芯片應用在航天器設備內部。FPGA規模不斷增大,隨之而來的問題就是配置數據量的增加。如此,不但會導致配置存儲器容量的增加,高可靠存儲器的增多無疑會增加系統的硬件成本;而且程序上注時間過長,對于較低的星地測控信道帶寬和有限的可見測控弧段來說,會給地面測控帶來較大的負擔[7]。因此有必要對配置數據進行壓縮,減少傳輸和存儲的數據量,提高重構的效率,減少系統開銷。
數據壓縮可以分為無損壓縮和有損壓縮。FPGA配置數據具有特定的格式,數據內容決定了FPGA的邏輯功能,不能出現數據錯誤,必須采用無損壓縮。目前可采用的主流壓縮算法有算術編碼、Huffman編碼和基于字典的LZ系列壓縮算法[8]。系統設計時可以根據壓縮效果和實現的復雜程度進行合理的選擇。選擇時主要靠慮3個因素:編碼的壓縮效率,解壓縮的速度,實現復雜度。
算術編碼和Huffman編碼屬于統計壓縮方法,依賴于數據的統計模型。針對不同的配置數據須重新構造統計信息或者分別保留多個配置數據的統計信息,降低了系統的性能。基于字典的壓縮方法解碼簡單(不對稱壓縮),滿足了FPGA配置解壓縮的要求。
文獻[9]給出了幾種不同壓縮算法對FPGA配置數據的效果,其中針對目前常用的300萬門FPGA,其壓縮效果見表2。
其他系列FPGA的壓縮效果基本類似。根據文獻[9]列舉的幾種壓縮算法的試驗結果,采用字典壓縮算法對FPGA配置數據的壓縮比約在3~20的量級,且資源占用比越低,壓縮效果越明顯。對于比較合理的系統設計,FPGA資源占比在60%~80%之間,采用壓縮后,存儲資源和通信時間可減少至1/2,能有效地降低系統設計成本和在軌重構的操作開銷。

表2 不同資源占用率下字典壓縮算法的壓縮比對照Table 2 Compression performance comparison at various utilization ration
基于字典式的LZ系列算法解壓縮過程簡單,易于用硬件實現,算法的實現不依賴特定FPGA結構。解壓縮字典在解碼過程中動態建立,不需要預先存儲,解壓縮可以與FPGA配置、重構和刷新的過程結合完成,在配置控制電路內一并實現,不需要增加系統硬件開銷。
目前,航天器電子系統中的處理設備,很多都采用“CPU+FPGA”的架構。圖4給出了一種常見的應用場景,需要重構的目標FPGA位于星上綜合電子分系統某單機內部,設備工作統一由CPU模塊控制,并與外部通信。待重構功能模塊與CPU模塊通過底板數據總線通信。為了實現在軌重構,采用反熔絲FPGA(重構控制FPGA,也可以由CPU實現)實現對目標FPGA重構控制。圖4中有兩片待重構FPGA,其程序存儲器芯片可共用1片較大的Flash存儲器芯片。不同的目標FPGA程序分區存儲,由用重構控制FPGA來統一管理。圖4中單箭頭表示涉及的數據或信號為單向傳輸,雙向箭頭表示涉及的數據或信號為雙向傳輸?!爸貥嬁刂菩酒蓖瓿赡繕薋PGA在軌重構的核心處理工作,包括:
(1)提供與CPU模塊的數據總線接口,作為CPU的外部輸入/輸出(I/O),接收軟件產生的控制命令、待重構程序數據,向軟件上報相關工作狀態。
(2)提供對重構程序存儲器的讀寫接口,完成對存儲器讀寫控制。將接收到的程序數據實時存入程序存儲器;按照規定格式讀出配置數據,并對其正確性進行檢查,為目標FPGA提供可用的配置數據。
(3)對目標FPGA進行配置控制和編程,支持對目標FPGA的全部邏輯重構和在線實時刷新功能(消除SEU故障)。
(4)監視目標FPGA的工作狀態,生成相關的狀態遙測量。
航天器在軌飛行過程中,實施在軌重構過程如下:
(1)根據任務要求重新設計FPGA,并在地面測試系統上完成測試驗證。
(2)將修改后的FPGA程序加工成符合航天器遙控上注的格式化數據。
(3)將目標FPGA工作狀態設置為重構程序寫入模式,準備接收新程序;此過程僅對配置存儲器進行數據更新,此時目標FPGA工作可不中斷。
(4)由地面將經過驗證的FPGA程序通過遙控注入到星上;星上接收后,通過星上處理器完成解析、校驗,存到設備內的重構程序存儲器內。
(5)停止目標FPGA的工作,啟動配置模式,將需要重構的邏輯加載至目標FPGA;檢查重構后的健康狀態,并通知地面。
(6)重新啟動設備,檢查軟硬件運行狀態并通知地面;將設備轉入FPGA刷新模式,啟動在線實時刷新,消除FPGA在軌SEU故障,確保穩定工作。
以上方案在某航天器綜合電子系統內核心單機上完成了工程設計和在軌驗證。系統利用ACTEL公司的反熔絲型FPGA設計實現了專用控制芯片,集成了數據接收、存儲、校驗、配置和刷新等一系列功能。工程實踐表明,在航天器運行過程中,采用本方案圓滿地完成了目標FPGA的功能升級以及在軌實時刷新,設備工作穩定正常。此外,重構措施在航天器地面研制階段,提供了方便的FPGA程序更換手段,設備交付后,可以通過測控通道上注新版本程序進行測試,避免頻繁拆裝設備,顯著提高了研制效率。
綜上所述,本文介紹了航天器FPGA在軌重構的基本原理和方案,并針對航天器的特殊應用環境和可靠性需求,重點討論了在工程實施過程中需要解決的幾個關鍵問題:通過信道編碼和校驗可以保證可靠的數據通信;針對在軌空間單粒子翻轉效應對存儲器進行容錯設計;利用配置接口實現FPGA的實時刷新,配合三模冗余(TMR)設計可以有效地解決FPGA的SEU故障。從而充分發揮SRAMFPGA可重復編程的特點,為航天器提供可靠的在軌重構功能。在實際工程中可根據任務需求和系統開銷約束,選擇具體的實施方案。
References)
[1]趙丹,徐國棟,劉源.可重構技術的航天應用與星載計算機設計[J].哈爾濱工程大學學報,2009,30(5):486-490 Zhao Dan,Xu Guodong,Liu Yuan.Aerospace application of reconfigurable computing technique[J].Journal of Harbin Engineering University,2009,30(5):486-490(in Chinese)
[2]Xilinx Incorporation.Virtex-II platform FPGA user guide[Z].San Jose:Xilinx Incorporation,2002
[3]國防科學工業技術委員會.GJB1198.1A-2004航天器測控和數據管理 第1部分 PCM遙控[S].北京:國防科學工業技術委員會,2004 Commission of Science,Technology and Industry for National Defense.GJB 1198.1A_2004 Telemetry tracking command and data handling for spacecraft part 1:PCM telecommand[S].Beijing:Commission of Science,Technology and Industry for National Defense,2004(in Chinese)
[4]Xilinx Incorporation.Virtex-4 FPGA user guide[Z].San Jose:Xilinx Incorporation,2010
[5]陳楠,魏廷存,魏曉敏,等.抗單粒子翻轉效應的SRAM研究與設計[J].固體電子學研究與進展,2013,33(5):491 Chen Nan,Wei Tingcun,Wei Xiaomin,et al.Research and design of SEU-hardened SRAM chip[J].Research&Progress of SSE,2013,33(5):491(in Chinese)
[6]黃琳,陳第虎,梁寶玉,等.2S698M SoC 芯片中EDAC模塊的設計與實現[J].中國集成電路,2008,9:50-54 Huang Lin,Chen Dihu,Liang Baoyu,et al.Design and realization of error detection and correction circuit in S698 M SoC processor[J].China Integrated Circuit,2008,9:50-54(in Chinese)
[7]陳觀興,白云飛.基于高級在軌系統的可重構復接器的設計[J].微計算機信息,2010,26(4):40-42 Chen Guanxing,Bai Yunfei.Implementation of reconfigurable multiplexer using advance orbit system[J].Microcomputer Information,2010,26(4):40-42(in Chinese)
[8]古海云,李麗,許居衍,等.一種Virtex系列FPGA配置數據無損壓縮算法[J].計算機研究與發展,2006,43(5):940-945 Gu Haiyun,Li Li,Xu Juyan,et al.Lossless configuration bitstream compression for virtex FPGAs[J].Journal of Computer Research and Development,2006,43(5):940-945(in Chinese)
[9]徐勇,李珂.馮國平,等.一種FPGA在軌重構配置數據壓縮算法[J].航天器工程,2015,24(6):75-78 Xu Yong,Li Ke,Feng Guoping,et al.Configuration data compression algorithm for FPGA on-orbit reconfiguration[J].Spacecraft Engineering,2015,24(6):75-78(in Chinese)
Scheme of SRAM-FPGA On-orbit Reconfiguration
PANG Bo1,2HAO Weining2ZHANG Wenfeng1XU Yong2ZHU Jianbing2
(1 Beihang University,Beijing 100191,China)(2 Beijing Institute of Spacecraft System Engineering,Beijing 100094,China)
For spacecraft electronic system to be solved in the practical engineering of onboard limited resource,long life and high reliability and other special requirements,this paper bring forward a method of SRAM-FPGA on-orbit reconfiguration,and key problems on how to ensure the reliable data transmission and storage project are discussed in detail,and gives the implementation scheme of the method in a certain mission engineering design and on-orbit verification.The results show that the orbit reconfiguration design successful complete the target FPGA’s upgrade and refreshment,which can provide a reference for other spacecraft electronic system design.
SRAM-FPGA;on-orbit reconfiguration;high reliabilit y
V44
A
10.3969/j.issn.1673-8748.2017.05.009
2016-08-11;
2017-09-14
國家重大科技專項工程
龐波,男,博士研究生,高級工程師,研究方向為航天器綜合電子系統。Email:spartan_email@sina.com。
(編輯:李多)