于志成 莊樹峰 劉濤 王洋 楊秉新
?
面向航天應用的高可靠性FPGA動態(tài)局部重構(gòu)
于志成1,2莊樹峰3劉濤1王洋1楊秉新1
(1 北京空間機電研究所,北京 100094) (2 先進光學遙感技術(shù)北京市重點實驗室,北京 100094) (3北京自動化控制設備研究所,北京 100074)
在航天應用中,F(xiàn)PGA的單粒子翻轉(zhuǎn)是影響航天器功能和壽命的重要因素,目前,部分航天產(chǎn)品使用定時重加載的方式避免單粒子效應的積累和影響,但是重加載的過程會導致全部FPGA邏輯中斷,極大影響航天器功能的持續(xù)性。因此,文章提出了一種適用于航天的FPGA動態(tài)局部重配置系統(tǒng),在闡述了FPGA動態(tài)局部重配置技術(shù)的原理和航天應用前景后,詳細說明了其設計流程、硬件電路板架構(gòu)和控制軟件框圖。通過板級試驗驗證了系統(tǒng)功能,采用示波器對結(jié)果進行了測試,證明該系統(tǒng)設計的高可靠性。FPGA動態(tài)局部重配置技術(shù),既提高了FPGA的可靠性,又保證了FPGA部分關(guān)鍵功能的持續(xù)性。
單粒子效應 現(xiàn)場可編程門陣列 局部重配置 可靠性 航天遙感
FPGA動態(tài)部分可重構(gòu)技術(shù)可以實現(xiàn)系統(tǒng)運行時FPGA內(nèi)部邏輯資源的時分復用。動態(tài)可重構(gòu)FPGA對全局或者局部的邏輯資源采用動態(tài)重構(gòu),從而產(chǎn)生需要的時序邏輯。對于SRAM型FPGA,通常都是通過對SRAM單元進行用戶化,從而實現(xiàn)用戶邏輯[1]。在綜合時,有兩種情況會導致FPGA的組合邏輯受到干擾,分別是LUT單元的某一位發(fā)生了翻轉(zhuǎn)以及控制布線單元的某一位發(fā)生了翻轉(zhuǎn)。當LUT單元的某一位翻轉(zhuǎn)時,所有的組合邏輯就會發(fā)生改變,在這種情況下,只能重新下載配置bit文件進行糾正。而當控制布線單元的某一位翻轉(zhuǎn)時,就會導致連線的連接或者分離,也只能重新下載配置bit文件進行糾正。因此,針對上述兩種情況,最有效的解決辦法為重配置FPGA[2-4]。然而,在航天應用中,有些遙感器上的FPGA模塊往往不允許被中斷。因此,本文提出了一種面向航天應用的高可靠性FPGA動態(tài)重構(gòu)系統(tǒng),該系統(tǒng)在保證當前執(zhí)行程序不被中斷的前提下,具備對部分待糾正的邏輯單元重新配置的功能,并且配置過程中不會影響其它邏輯單元的工作狀態(tài)?;诰植縿討B(tài)重構(gòu)技術(shù),設計者可以引入時分復用的思想,利用有限的系統(tǒng)資源完成大規(guī)模的時序功能設計。
除此之外,目前的航天遙感器很難在軌進行程序升級,這對其靈活性有極大限制,可在線系統(tǒng)重配置是SRAM型FPGA的應用優(yōu)勢之一[5]。利用動態(tài)部分重構(gòu)技術(shù),可以實現(xiàn)衛(wèi)星在軌接收FPGA配置bit文件,在不影響其它FPGA區(qū)域的情況下,F(xiàn)PGA自動對自己的某個預先定義好的區(qū)域進行重配置,從而克服了航天器在軌程序升級的難題,在軌平臺資源得到了更充分的利用,節(jié)約了航天器的研發(fā)成本[6-8]。伴隨著航天領域的不斷發(fā)展,空間應用環(huán)境愈發(fā)復雜,航天器的設計要求也越來越高,研發(fā)成本不斷上漲,面向航天應用的高可靠性FPGA動態(tài)重構(gòu)技術(shù)將會得到更為廣泛的應用[9]。
由于MicroBlaze在航天系統(tǒng)應用中的種種不足,現(xiàn)急需一種可靠性更高的FPGA局部動態(tài)重配置控制方法,反熔絲FPGA在航天中的成熟應用是一種最佳解決方案[10-12]。考慮到動態(tài)局部重配置是在Xilinx官方提供的一套固有機制下來控制和操作的,目前還無法對寫入重配置數(shù)據(jù)的顆粒度進行修改。因此,本文主要是使用FPGA通過SelectMAP接口,在符合現(xiàn)有Xilinx機制的條件下,通過FPGA軟件實現(xiàn)了對另一塊FPGA的動態(tài)局部重配置。該方案與傳統(tǒng)的基于MicroBlaze、PPC等控制方式相比,可靠性更高,也更適合于航天應用。本文試驗部分也主要是針對該方案的軟硬件設計進行功能性的驗證,以證明其上述功能。
基于反熔絲FPGA控制的FPGA局部動態(tài)重配置系統(tǒng)整體框圖如圖1所示。試驗中使用一片控制FPGA替代反熔絲FPGA,驗證方案的可行性,因此,系統(tǒng)中有兩片F(xiàn)PGA??刂艶PGA用來向測試FPGA寫入配置數(shù)據(jù),在控制FPGA的周圍有3片PROM和3片SRAM,分別存放全局配置數(shù)據(jù)、局部配置數(shù)據(jù)1、局部配置數(shù)據(jù)2,用PC機向控制FPGA發(fā)送指令,來控制測試FPGA的配置過程。
系統(tǒng)上電后,控制FPGA運行,將PROM中的MCS文件讀出,并轉(zhuǎn)換成32位的并行數(shù)據(jù)儲存到SRAM中。存儲結(jié)束后,相應的LED變亮,這時,控制FPGA等待上位機的指令。當接收到0x03時,控制FPGA讀出SRAM1中的全局配置文件,通過SelectMAP接口,寫入到測試FPGA的配置存儲器中,此時測試FPGA開始工作,輸出波形;當控制FPGA接收到0x06指令時,讀取SRAM2中的局部配置數(shù)據(jù),通過SelectMAP接口寫入到測試FPGA的配置存儲器中,這時動態(tài)模塊輸出的波形發(fā)生改變,而靜態(tài)模塊輸出波形不變;當控制FPGA接收到0x0c指令時,讀取SRAM3中的局部配置數(shù)據(jù),通過SelectMAP接口寫入到測試FPGA的配置存儲器中,此時,動態(tài)模塊恢復為全局配置文件時的波形,靜態(tài)模塊依舊不發(fā)生變化。
圖1 系統(tǒng)整體框圖
按照本文所采用的設計思路,如圖2所示。將重構(gòu)FPGA內(nèi)邏輯資源區(qū)分為動態(tài)重構(gòu)區(qū)域和靜態(tài)區(qū)域兩部分,其中,重構(gòu)區(qū)域可以隨時根據(jù)傳入的動態(tài)局部配置數(shù)據(jù)而更新功能;靜態(tài)區(qū)域中的配置邏輯是固定不變的,其功能不受動態(tài)區(qū)域邏輯重構(gòu)的影響。相應的,重構(gòu)FPGA共需要一個全局配置文件和兩個動態(tài)局部配置文件,共3個配置文件。其中,全局配置文件主要用于在系統(tǒng)上電后對整個FPGA進行全局的功能配置,具體為在靜態(tài)區(qū)域中實現(xiàn)了一個周期為1、占空比為50%的方波,同時將重構(gòu)區(qū)域配置為周期為2的方波(同動態(tài)局部配置文件1);兩個動態(tài)局部配置文件主要用于對重構(gòu)FPGA中的動態(tài)重構(gòu)區(qū)域的功能進行配置和升級,分別實現(xiàn)了周期為2和3的占空比為50%的方波。
圖2 配置文件功能示意
在重構(gòu)FPGA配置文件生成方面,主要采用Xilinx公司ISE開發(fā)環(huán)境中的PlanAhead工具,其優(yōu)點是可視化程度較高,具備手動劃分FPGA內(nèi)部邏輯資源,并根據(jù)具體應用需求,對劃分出的FPGA動態(tài)可重構(gòu)區(qū)域中的各種資源進行可重構(gòu)功能設定。具體操作步驟如下所示:
1)用ISE建立一個頂層模塊top.vhd,如圖3所示。頂層模塊中包含三個子模塊:靜態(tài)模塊S_LED、MicroBlaze處理器mb_xps和重構(gòu)模塊DPR_LED。
圖3 頂層模塊框圖
2)設計兩個可重構(gòu)模塊PRM1和PRM2。
3)建立一個PlanAhead工程,并將工程設置為局部重配置工程,將生成的各個網(wǎng)表文件以及全局約束文件添加到工程中。
4)利用PlanAhead集成的Floorplan工具手動規(guī)劃出各個重構(gòu)區(qū)域,然后為每個重構(gòu)區(qū)域添加重構(gòu)模塊。其優(yōu)點是可直觀地看到各個重構(gòu)區(qū)域的資源占用情況,如果占用率達到或超過100%,則需要重新手動規(guī)劃重構(gòu)區(qū)域。
5)運行DRC檢測。
6)實現(xiàn)設計并產(chǎn)生比特流文件。
7)下載到電路板上調(diào)試。
通過上述操作,共生成3個配置文件:1)全局配置文件開頭部分由冗余字、同步字、校驗復位指令、設置配置選擇寄存器、寫入數(shù)據(jù)掩碼、轉(zhuǎn)換時鐘頻率、寫芯片序列號、設置起始地址、進入寫入配置存儲器狀態(tài)、設置配置數(shù)據(jù)長度等指令和數(shù)據(jù)組成。開始傳輸配置數(shù)據(jù)時,將所有配置數(shù)據(jù)寫入到FPGA后,在配置文件的結(jié)尾包含CRC校驗、空指令、最后一幀標識、最后一幀配置數(shù)據(jù)寫入地址、發(fā)送啟動序列以及掩碼、校驗指令,最后的同步指令標識配置結(jié)束。2)與全局配置文件的結(jié)構(gòu)組成相比,動態(tài)局部配置文件省去了轉(zhuǎn)換時鐘頻率、寫芯片序列號、設置起始地址等步驟,在數(shù)據(jù)傳輸時,僅傳輸局部配置數(shù)據(jù),數(shù)據(jù)量相對較小。同時,在配置文件尾部數(shù)據(jù)中也省去了最后一幀地址、啟動碼和掩碼等部分。因此,局部動態(tài)重配置可以僅針對局部區(qū)域進行配置的功能升級而不影響其他區(qū)域功能,所需要的時間要明顯小于全局配置的時間。在后面試驗設計和結(jié)果分析中,將進一步對這部分結(jié)論進行板級試驗驗證。
控制FPGA用于接收串口發(fā)送來的指令,并根據(jù)指令讀取相應SRAM中的配置數(shù)據(jù),并通過SelectMap接口寫入到重構(gòu)FPGA中。圖4為控制FPGA軟件框圖。
圖4 控制FPGA軟件框圖
1)配置數(shù)據(jù)讀取模塊PROMSRAM。由于FPGA是基于SRAM結(jié)構(gòu),每次掉電時,F(xiàn)PGA內(nèi)部程序都會被清空,所以需要PROM在每次上電時對FPGA進行配置。設計中使用了3片PROM,分別存放全局配置文件、局部配置文件1和局部配置文件2,在RS232指令的控制下,讀取不同的配置文件來對測試FPGA進行配置。如果每次都從PROM中讀取的話,由于PROM的讀取速度較慢,會嚴重影響增加測試FPGA的配置時間。為了避免這種情況,設計中使用了3片SRAM,每次上電后,由配置數(shù)據(jù)鍍膜模塊從PROM中讀取配置數(shù)據(jù),并將數(shù)據(jù)轉(zhuǎn)換成32位并行數(shù)據(jù)存儲到SRAM中,這樣,每次對測試FPGA進行配置時,直接從SRAM中讀取配置數(shù)據(jù)發(fā)送給測試FPGA,縮短了配置時間。
2)串行數(shù)據(jù)接收模塊RS232。串行接收模塊接收PC機發(fā)送來的RS232指令,并將接收到的串行指令轉(zhuǎn)為并行八位指令發(fā)送給狀態(tài)機模塊。
3)狀態(tài)機模塊STATEMACHINE。狀態(tài)機模塊是本設計的核心控制模塊,它接收串行數(shù)據(jù)接收模塊輸出的并行8位指令,根據(jù)指令,觸發(fā)相應的配置控制模塊對測試FPGA進行配置;配置結(jié)束后,接收配置控制模塊的配置完成標志位,同時復位狀態(tài)機,等待下一條控制指令。
4)配置控制模塊ConfigCtrl。配置控制模塊接收到狀態(tài)機模塊發(fā)送來的控制標志后,首先向SelectMAP接口模塊發(fā)送01指令,這條指令用于清除FPGA配置寄存器中的數(shù)據(jù);然后開始順序讀取SRAM1中的全局配置數(shù)據(jù),并將配置數(shù)據(jù)發(fā)送給SelectMAP32模塊,由SelectMAP32模塊向測試FPGA中寫入配置數(shù)據(jù);配置結(jié)束后,測試FPGA的Done信號拉高,配置控制模塊檢測到此信號為高后,即產(chǎn)生配置完成信號發(fā)送給狀態(tài)機模塊。
5)局部重構(gòu)控制模塊DPRCtrl。在對測試FPGA進行全局配置結(jié)束后,可隨時根據(jù)需要發(fā)送局部重配置指令,局部重構(gòu)控制模塊接收到狀態(tài)機模塊發(fā)送來的控制信號后,開始順序讀取SRAM中的全局配置數(shù)據(jù),并將配置數(shù)據(jù)發(fā)送給SelectMAP32模塊,由SelectMAP32模塊向測試FPGA中寫入配置數(shù)據(jù)。在配置結(jié)束后,由于測試FPGA的DONE信號不會再變化,因此需要檢測向SelectMAP接口寫入的數(shù)據(jù)。全部數(shù)據(jù)寫入完成后,同時產(chǎn)生配置完成信號發(fā)送給狀態(tài)機模塊。
6)SelectMAP接口模塊。SelectMAP接口模塊接收配置控制模塊或局部重構(gòu)控制模塊的指令或數(shù)據(jù),根據(jù)指令操作測試FPGA的SelectMAP接口,或者向SelectMAP接口寫入數(shù)據(jù)。
在設計試驗中,使用PC電腦通過串口發(fā)送控制指令給控制FPGA,控制FPGA格局接收到的串口指令,相應地對重構(gòu)FPGA進行配置,改變重構(gòu)FPGA中的配置程序。同時,用示波器觀察重構(gòu)FPGA輸出的信號波形,通過波形信號的變化,驗證本文提出的動態(tài)可重構(gòu)系統(tǒng)的功能。
具體操作步驟如下:
1)上電后,用PC機向控制FPGA發(fā)送0x03指令,對重構(gòu)FPGA進行全局配置。配置結(jié)束后,示波器顯示的波形如圖5所示,藍色的波形是重構(gòu)FPGA的靜態(tài)區(qū)域輸出的波形,下面的黃色波形是動態(tài)區(qū)域輸出的波形,可以看出靜態(tài)區(qū)域和動態(tài)區(qū)域均能輸出穩(wěn)定的、不同頻率的方波。
2)在上述輸出穩(wěn)定波形的基礎上,用PC機向控制FPGA發(fā)送0x06指令,接到該指令后,控制FPGA向重構(gòu)FPGA的重構(gòu)區(qū)域中寫入局部配置文件2,經(jīng)過短暫的配置過程后,重構(gòu)FPGA的重構(gòu)區(qū)域?qū)崿F(xiàn)局部配置文件2的相應功能,此時,示波器輸出的波形如圖6(a)所示,從圖中可以看出經(jīng)過約560μs的短暫間隔后,F(xiàn)PGA的重構(gòu)區(qū)域更新為新的功能,而在此過程中,靜態(tài)區(qū)域輸出的信號并沒有中斷。
3)為了測試,將再次用PC機向控制FPGA發(fā)送0x0c指令,接到該指令后,控制FPGA向重構(gòu)FPGA的重構(gòu)區(qū)域中寫入局部配置文件1,經(jīng)過短暫的配置過程后,重構(gòu)FPGA的重構(gòu)區(qū)域?qū)崿F(xiàn)局部配置文件1的相應功能。此時,示波器輸出的波形如圖6(b)所示,可以看出,同樣經(jīng)過約560μs的短暫間隔后,F(xiàn)PGA的重構(gòu)區(qū)域更新為新的功能,輸出新頻率的方波,在此過程中,靜態(tài)區(qū)域輸出的信號并沒有中斷。
圖5 全局配置后的波形
圖6 局部配置后的波形
經(jīng)過上述多組試驗,果證明局部重構(gòu)的時間約為560μs。主要原因是局部配置時,配置數(shù)據(jù)的長度較小,同時配置文件的頭尾也較全局配置文件有所壓縮。另外局部重構(gòu)的時間還是會受到局部配置區(qū)域的尺寸和資源量影響,因此,在實際應用該技術(shù)時,宜根據(jù)具體需實現(xiàn)的功能需求,劃分動態(tài)重構(gòu)區(qū)域,保證在重構(gòu)資源可滿足設計需求的前提下,使重構(gòu)區(qū)域盡量小。
本文使用FPGA的動態(tài)局部重配置技術(shù),在FPGA里劃分一個動態(tài)區(qū)域和靜態(tài)區(qū)域,分別輸出不同頻率的波形,然后用另一塊FPGA通過SelectMAP接口控制配置過程,最后用示波器對設計結(jié)果進行了驗證。結(jié)果表明,在動態(tài)區(qū)域重新配置的過程中,靜態(tài)區(qū)域輸出的方波不受影響,功能不中斷,并且在動態(tài)區(qū)域配置結(jié)束后,也能夠正常輸出新的波形。本文提出的設計方法驗證了使用反熔絲邏輯芯片控制FPGA的動態(tài)局部重配置功能的可行性,在未來的航天器電子學設計中具有較好的應用前景。
[1] 黃偉, 劉濤, 王華, 等. SRAM型FPGA的單粒子效應及TMR設計加固[J]. 航天返回與遙感, 2012, 33(2): 49-53. HUANG Wei, LIU Tao, WANG Hua, et al. Single-event Effects on and TMR Radiation-harden of SRAM-based FPGA[J]. Spacecraft Recovery & Remote Sensing, 2012, 33(2): 49-53. (in Chinese)
[2] 薛建偉, 張杰, 關(guān)永. 基于EAPR流程的動態(tài)局部可重構(gòu)實現(xiàn)[J]. 計算機工程, 2010, 36(23): 252-254. XUE Jianwei, ZHANG Jie, GUAN Yong. Implementation of Dynamic Partial Reconfiguration Based on EARP Flow[J]. Computer Engineering, 2010, 36(23): 252-254. (in Chinese)
[3] TODMAN T J, CONSTANTINIDES G A, WILTON S J E. et al. Reconfigurable Computing: Architectures and Design Methods[J]. IEEE Proceedings-Computers and Digital Techniques, 2005, 152(2): 193-207.
[4] CHAMBERLAIN R D, FRANKLIN M A, TYSON E J, et al. Auto-pipe: Streaming Applications on Architecturally Diverse Systems[J]. Computer, 2010, 43(3): 42-49.
[5] 徐新民, 樂瑩, 尚麗娜. FPGA動態(tài)部分重構(gòu)的研究及位流信息重構(gòu)的實現(xiàn)[J]. 科技通報, 2008, 24(2): 235-240. XU Xinmin, LE Ying, SHANG Lina. The Research on Partially Dynamic Reconfiguration for FPGA and Its Implementation Based on Bitstream[J]. Bulletin of Science and Technology, 2008, 24(2): 235-240. (in Chinese)
[6] DEHON H, MARKOVSHY Y, CASPI E, et al. Stream Computation Organized for Reconfigurable Execution[J]. Reconfigurable Computing, 2008, 30(6): 203-218.
[7] 范斌, 常青. 基于DSP的FPGA動態(tài)重構(gòu)系統(tǒng)研究與設計[J]. 信息與電子工程, 2010, 8(2): 123-127. FAN Bin, CHANG Qing. Dynamically Reconfigurable System of FPGA Based on DSP[J]. Information and Electronic Engineering, 2010, 8(2): 123-127. (in Chinese)
[8] 趙秋桂, 段青亞. FPGA動態(tài)局部可重構(gòu)中基于TBUF總線宏設計[J]. 現(xiàn)代電子技術(shù), 2009, 32(12): 22-24. ZHAO Qiugui, DUAN Qingya. Design of Bus Macro-based TBUF for FPGA Dynamic Reconfiguration[J]. Modern Electronics Technique, 2009, 32(12): 22-24. (in Chinese)
[9] CHOW P, SEO S O, ROSE J, et a1. The Design of an SRAM-based Field-programmable Gate Array-Part I:Architecture[J]. IEEE Transactions on VLSI Systems. 1999, 7(2): 191-197.
[10] WOLF W, JERRAYA A A, MARTIN G. Multiprocessor System-on-chip Technology[J]. IEEE Transactions on Computer-aided Design of Integrated Circuits and Systems, 2008, 27(10): 1701-1713.
[11] 馮曉靜, 李曦, 王超, 等. 支持動態(tài)部分重構(gòu)特性的異構(gòu)多核體系結(jié)構(gòu)[J]. 中國科學技術(shù)大學學報, 2014, 44(4): 310-316. FENG Xiaojing, LI Xi, WANG Chao, et al. A Multiprocessor Architecture Supporting Dynamic Partial Reconfiguration[J]. Journal of University of Science and Technology of China, 2014, 44(4): 310-316. (in Chinese)
[12] WATKINS M A, ALBONESI D H. ReMAP: A Reconfigurable Heterogeneous Multicore Architecture[C]//43rd Annual IEEE/ACM International Symposium on Microarchitecture. Atlanta, USA: IEEE Press, 2010: 497-508.
High Reliability FPGA Dynamic Partial Reconfiguration for Aerospace Application
YU Zhicheng1,2ZHUANG Shufeng3LIU Tao1WANG Yang1YANG Bingxin1
(1 Beijing Institute of Space Mechanics & Electricity, Beijing 100094, China) (2 Key Laboratory for Advanced Optical Remote Sensing Technology of Beijing, Beijing 100094, China) (3 Beijing Institute of Automatic Control Equipment, Beijing 100074, China)
In aerospace applications, the single event flipping of FPGA is an important factor affecting the function and lifetime of the spacecraft. At present, the time reloading method is applied to avoid the accumulation and influence of the single event effect in some of the aerospace products. However, the reloading process will lead to all FPGA logic interruptions, which greatly affects the sustainability of the spacecraft's functions. Therefore, a FPGA dynamic partial reconfiguration system for aerospace applications is proposed in this paper. The principle of FPGA dynamic partial reconfiguration technology and its prospect in space application are expounded firstly. Then the design process, the hardware circuit board architecture and the control software block diagram are described in detail. The function of the system is verified by the plate test, and the result tested by the oscilloscope demonstrates that the design of the system has high reliability. The FPGA dynamic partial reconfiguration technology proposed in this paper not only improves the reliability of the FPGA, but also ensures the sustainability of some key functions of the FPGA.
single event effect; field programmable gate array (FPGA); partial reconfiguration;reliability; space remote sensing
TN47
A
1009-8518(2019)03-0040-07
10.3969/j.issn.1009-8518.2019.03.006
于志成,男,1986年生,2012年獲哈爾濱工業(yè)大學電子與信息工程專業(yè)碩士學位,現(xiàn)在中國空間技術(shù)研究院飛行器設計專業(yè)攻讀博士學位,工程師。研究方向為航天遙感相機視頻電子學。Email:tony_yzc@163.com。
2018-04-08
國家重大科技專項工程
(編輯:王麗霞)