于志成 劉克 李亮
摘要 衛(wèi)星作為重要的航天器之一,在很多領(lǐng)域中都發(fā)揮了很大的作用,具有代表性的就是信息傳遞、軍事偵察等領(lǐng)域。局部刷新技術(shù)是SRAM型FPGA一種新興的可重配置技術(shù),它的出現(xiàn)適應(yīng)了現(xiàn)代衛(wèi)星的發(fā)展需求,在本文中,通過重配置手段,實現(xiàn)了對基礎(chǔ)的嵌入式系統(tǒng)的設(shè)計,此系統(tǒng)是以FPGA為前提所構(gòu)成的,同時,對于微處理器MicroBlaze、AXI總線以及ICAP控制器的使用,進行了一定的分析,最后,通過硬件平臺的安裝,確保了可重配置系統(tǒng)的順利運行,并實施了對軟件的開發(fā)等工作,具體為定時器、IGAP、GPIO以及串口接收和發(fā)送模塊,在設(shè)計內(nèi)所選擇的設(shè)計措施,主要為基于EAPR的部分重配置的設(shè)計方法。結(jié)果表明局部刷新技術(shù)是一種對抗宇宙空間單粒子效應(yīng)的有效方法,能極大提高航天器的運行穩(wěn)定性。
【關(guān)鍵詞】動態(tài)局部自重構(gòu) 片上可編程系統(tǒng)內(nèi)部配置接口
在科學(xué)技術(shù)不斷發(fā)展的今天,數(shù)字電路系統(tǒng)的設(shè)計也隨之進步,規(guī)模不斷擴大,并且也能夠更加穩(wěn)定、可靠的運行,而宇宙空間中的復(fù)雜環(huán)境也對航天器的可靠新提出了更高的要求,如何提高電子系統(tǒng)的抗單粒子性能一直是航天工作人員努力的方向。
1 系統(tǒng)運行穩(wěn)定性簡介
就系統(tǒng)運行的穩(wěn)定性來看,其主要為系統(tǒng)于一定環(huán)境重,能夠于一定時間中依照已有要求實現(xiàn)相應(yīng)功能的概率。提高系統(tǒng)運行穩(wěn)定性的方法總的來說有兩種:一種是故障預(yù)防,另一種是故障容錯。故障預(yù)防是指采取措施防止故障的產(chǎn)生,如使用防輻射指數(shù)較高的芯片和元器件,但就現(xiàn)實來看,無法實現(xiàn)一致故障,所以,必須最大程度的取降低出現(xiàn)故障的概率。就故障容錯來看,其主要為通過冗余的元件或模塊,來進行對己出現(xiàn)故障的屏蔽,進而確保系統(tǒng)的運行,如數(shù)傳接口、時鐘信號或同步信號的主備份設(shè)計,目的就在于一旦主份設(shè)計發(fā)生故障并失效,可以馬上啟動備用設(shè)計,不至于設(shè)備完全失效。
可以說,若某系統(tǒng)于產(chǎn)生部分運行性故障的情況下,可以通過系統(tǒng)中內(nèi)駐的能力,確保系統(tǒng)能夠?qū)崿F(xiàn)對命令的執(zhí)行,發(fā)揮它的程序與輸出功能,那么就可以把這一系統(tǒng)看為故障容錯系統(tǒng)。
基于SRAM技術(shù)的FPGA,利用對芯片重新布局布線和網(wǎng)表數(shù)據(jù)的重載,來完成對芯片邏輯功能的相應(yīng)操作,也就是使其現(xiàn)場重構(gòu)。近年來,隨著FPGA工藝和技術(shù)的不斷進步,器件結(jié)構(gòu)改進和緩存邏輯的概念被提出,使得FPGA的局部重構(gòu)手段能夠進一步的創(chuàng)新發(fā)展,確保了航天電子系統(tǒng)的穩(wěn)定性得以提升,
2 FPGA局部刷新的理論依據(jù)
就SRAM型FPGA來看,其中存在各種資源,具體有配置邏輯塊(CLB)、輸入輸出塊(IOB)、block RAM、時鐘資源和編程布線等資源。通過CLB,能夠有效確保用戶所需邏輯功能單元的產(chǎn)生,而通過IOB,則可以帶來封裝引腳和內(nèi)部信號引線的接口。利用可編程互聯(lián)網(wǎng)資源,能夠以布線通道連接可配置原件的輸入和輸出到相應(yīng)的網(wǎng)絡(luò),而FPGA完成的邏輯功能,以及其互聯(lián)方式,都和存儲于內(nèi)部靜態(tài)存儲單元的數(shù)值有著很大關(guān)聯(lián),利用配置比特率,確保了此邏輯功能的發(fā)揮,在配置比特率中,存在著配置命令以及數(shù)據(jù)。
就SRAM型FPGA來看,其配置存儲器的主要構(gòu)成,通常為配置列(ConfigurationColumns)來實現(xiàn),在排列方式上,該配置列表現(xiàn)為垂直陣列,具體見圖1。在配置存儲器內(nèi),存在著不同的配置列,分別是表現(xiàn)為Center列、兩個IOB列、CLB列存儲、BlockSelectRAM Content列以及Block SelectRAMInterconnect列,它們所存儲的信息也存在著差異,分別存儲著四個全局時鐘的配置信息、位于其間左邊和右邊所有IOB的配置信息、FPGA基本邏輯功能的配置信息、內(nèi)部塊RAM的配置信息以及內(nèi)部塊RAM間互聯(lián)的配置信息。
在配置列內(nèi)所存儲的數(shù)據(jù),就其構(gòu)成來看,通常是由配置幀(Configuration Frames)的措施來實現(xiàn)的。就配置幀來看,具體表現(xiàn)為一位比特寬、垂直排列的配置的那遠,每一個配置列內(nèi),所存在的配置幀數(shù)量都是差異的,在配置存儲器內(nèi),配置幀為其能夠讀寫的最小單位,所以,實現(xiàn)局部刷新的最小單元式配置幀。
在FPGA中,通過分配于配置列的配置地址,來進行對配置列的尋址。就FPGA地址空間來看,它可具體劃分成兩種不同地址,也就是主地址與次地址,在FPGA中,所有的配置列均存在著唯一的主地址空間,在配置列內(nèi),相應(yīng)的,所有配置幀均存在著唯一的子地址空間。
為確??梢詫⑴渲脦禹樌拇鎯M正確的配置空間,就要合理的使用配置寄存器。利用FPGA的配置數(shù)據(jù)線,能夠進行對內(nèi)部配置寄存器的讀寫,以確保均布刷新配置功能的運行。
3 使用ICAP接口配置FPGA
在傳統(tǒng)的可重構(gòu)計算系統(tǒng)內(nèi),通過在可編程編輯器外部的處理器,實現(xiàn)對配置操作的控制,這一過程僅可利用FPGA外部配置接口,利用變成電纜,來完成讀寫和寫入配置數(shù)據(jù)的操作。但就實際來看,這一方式存在著較大的問題,容易被系統(tǒng)外設(shè)性能所影響,而且效率也不高。
因此,為解決此問題,在SRAM型FPGA以后的FPGA,均存在著ICAP,在FPGA內(nèi),確保了通過器內(nèi)嵌處理器的運行,實現(xiàn)了對配置數(shù)據(jù)所實施的操作。在FPGA中,ICAP通常作為硬件原語在其中運行,支持用戶進行對其配置數(shù)據(jù)的操作。就協(xié)議來看,ICAP和SelectMAP有一些共同之處,具體見圖2。
在接口上,ICAP和Slave SelectMAP所存在的差異,具體見表1。其差異體現(xiàn)在前者為內(nèi)部連接可訪問,而后者利用FPGA外部的引腳實現(xiàn)控制。
使用ICAP時,要注意以下幾點:
(1) FPGA配置結(jié)束之后,ICAP、SelectMAP兩者無法同時進入工作狀態(tài)。
在配置文件內(nèi),若PERSIST位被置為1,在通過SelectMAP措施實現(xiàn)配置后,信號DONE為高電平,而ICAP則停止運行;而若PERSIST位被置為O,在通過SelectMAP措施來實現(xiàn)配置后,ICAP將運行。
(2)在一個系統(tǒng)內(nèi),若既配置了JTAG接口,同時又配置了ICAP接口,需要特別注意。
當(dāng)ICAP在執(zhí)行配置或是讀回配置數(shù)據(jù)的情況下,在其中,JTAP CFG IN、CFGOUT、JSTART、JSHUTDOWN的指令,無法進行對FPGA的直接發(fā)送;利用JTAG接口,在實現(xiàn)配置或是回讀配置數(shù)據(jù)后,要實施有關(guān)ICAP的操作時,必須要確保配置邏輯為同步狀態(tài);相應(yīng)的,在通過ICAP接口實現(xiàn)這一操作時,同樣應(yīng)該保持同步。
4 基于MicroBlaze的局部刷新系統(tǒng)設(shè)計
本文中設(shè)計的自重構(gòu)系統(tǒng)是基于SOPC技術(shù)的嵌入式系統(tǒng),利用FPGA的可編程特性,配置各個功能模塊,組成系統(tǒng)硬件平臺,系統(tǒng)上電運行時,能夠通過內(nèi)嵌的軟核或者硬核處理器動態(tài)加載配置數(shù)據(jù),通過ICAP端口對系統(tǒng)功能進行重構(gòu),使得重構(gòu)系統(tǒng)可以完全在FPGA芯片內(nèi)部完成。
4.1 系統(tǒng)總體結(jié)構(gòu)框圖
將動態(tài)部分重構(gòu)與SOPC嵌入式系統(tǒng)結(jié)合起來,就可以設(shè)計并實現(xiàn)基于SOPC的動態(tài)部分自重構(gòu)系統(tǒng),如圖3所示。
在設(shè)計內(nèi),就FPGA在線局部刷新的主控制器的選擇上,采用了MicroBlaze微處理器。就MicroBlaze來看,作為微處理器IP軟核,它能夠?qū)崿F(xiàn)嵌入操作,同時,還能夠與不同外設(shè)IP核共同組建系統(tǒng)級集成電路,此電路中還存在著用戶IP核。因為MicroBlaze處理器可以于FPGA內(nèi)發(fā)揮作用,同時能夠進行對它外設(shè)IP的合理選用,能夠較好的進行對外部電路的控制,所以,在FPGA中,通過MicroBlaze微處理器,來實現(xiàn)其在線局部刷新的控制器,是當(dāng)前人們廣泛認(rèn)可的一種方式。
4.2 系統(tǒng)實現(xiàn)流程
4.2.1 軟件整體流程
系統(tǒng)軟件整體流程圖如圖4所示,MicroBlaze系統(tǒng)運行后,首先要初始化GPIO,接著要初始化中斷控制器,本設(shè)計中有兩個中斷,一個timer計數(shù)器中斷,一個ICAP中斷,接著查找ICAP控制器,如果找到返回O,沒找到返回.1。如果找到IC,AP控制器,下一步就是初始化這個控制器,所有設(shè)備的初始化結(jié)束后,程序進入while循環(huán),等待定時器中斷產(chǎn)生。
4.2.2 定時器中斷流程
產(chǎn)生定時器中斷后,進入定時器中斷函數(shù)。如圖5所示,在函數(shù)中首先重新將與現(xiàn)有功能相同的部分重構(gòu)比特流序列載入到重構(gòu)區(qū)域,然后需要手動清除定時器中斷標(biāo)志位。這一功能用來實現(xiàn)FPGA重構(gòu)區(qū)域的定時自動刷新。
4.2.4 載入部分配置比特流的流程
SRAM系列FPGA的比特流文件與以前的FPGA芯片有很大不同,以前的用戶不需要對FPGA配置流有bit級的了解就可以完成FPGA的配置。但是,如果想對FPGA進行更深層次的控制,比如設(shè)計嵌入式配置或回讀操作,就需要了解FPGA配置比特流的格式。
配置比特文件的文件頭部分如圖6所示,Ox0009表示存儲器使用大端模式,即高位在前;后面交替的OXf0Of表示比特文件頭開始,用來同步;Ox0001和后面的Ox61是字母“a”,也是比特文件頭的固定部分;Ox0026和后面的20個字節(jié)是ncd文件名;從Ox5573到Ox4646為UserID,Ox62為字母"b”,從Ox35到Ox36共14個字節(jié)表示使用FPGA芯片的型號;Ox0063為字母“c”,從Ox32到Ox31共10個字節(jié)為比特文件生成的日期;Ox64為字母“d”;Ox32到Ox33共8個字節(jié)為比特文件生成的準(zhǔn)確時間;Ox65表示字母“e”;最后的多個Oxff和OxAA995566表示配置數(shù)據(jù)開始。
載入部分重構(gòu)比特流文件的流程圖如圖7所示,首先讀取重構(gòu)序列的頭部信息,其中包含了時間、設(shè)計名稱、FPGA芯片型號、頭部數(shù)據(jù)長度和配置數(shù)據(jù)長度等信息,然后根據(jù)提取到的頭部數(shù)據(jù)的長度跳過配置數(shù)據(jù)的頭部,接著根據(jù)配置信息的長度,循環(huán)讀取配置數(shù)據(jù),每次讀取8位。因為MicroBlaze系統(tǒng)總線的寬度為32位,所以要讀取4次并拼湊成32位的并行數(shù)據(jù),再利用ICAP接口將配置數(shù)據(jù)寫入到配置存儲器中。
5 設(shè)計驗證與分析
本節(jié)的主要任務(wù)是對本文中設(shè)計的基于MicroBlaze的局部刷新系統(tǒng)進行測試和分析。測試平臺整體框圖如圖8所示。
上電后,F(xiàn)PGA將部分重構(gòu)序列保存到block RAM中,根據(jù)設(shè)置的定時器中斷,定時自動對FPGA的重構(gòu)區(qū)域進行定時刷新。同時,在控制器的作用下,LED實現(xiàn)每秒閃爍一次,表示每秒鐘刷新重構(gòu)區(qū)域一次。
測試FPGA中的邏輯資源被分為兩部分:靜態(tài)區(qū)域和重構(gòu)區(qū)域;本設(shè)計中,在靜態(tài)區(qū)域中實現(xiàn)了一個占空比為50%,周期為13us的方波;重構(gòu)區(qū)域中局部刷新部分實現(xiàn)的是一個占空比為50%,周期為26us的方波;系統(tǒng)上電后,用示波器觀察靜態(tài)區(qū)域和重構(gòu)區(qū)域發(fā)出的信號。
實驗結(jié)果表明,在FPGA內(nèi)部配置沒發(fā)生單粒子翻轉(zhuǎn)的情況下,每秒鐘的定時局部刷新并不會影響系統(tǒng)運行,如圖9所示;當(dāng)系統(tǒng)發(fā)生單粒子翻轉(zhuǎn),重構(gòu)區(qū)域輸出的方波周期發(fā)生變化后,再用重構(gòu)區(qū)域的配置文件對重構(gòu)區(qū)域刷新,重構(gòu)區(qū)域輸出的方波會恢復(fù)正常。
6 結(jié)束語
在本文中,通過基于MicroBlaze軟核處理器的措施,制定了對SRAM型FPGA實施局部刷新的系統(tǒng)方案。就該方案來看,在選擇了MicroBlaze處理器的FPGA嵌入式系統(tǒng)內(nèi),本方案能夠取得較好的成效。通過實驗驗證的結(jié)果,可以得知,在芯片內(nèi),所完成的MicroBlaze處理器核心頻率運行在50MHz,同時,其局部刷新過程較短,通過約550us的時間即可實現(xiàn),并且,此方案還具有很好的執(zhí)行效率,還能夠確保局部刷新能夠符合其相關(guān)要求。在FPGA內(nèi),因為MicroBlaze軟核處理器可以運行,因此,在選擇了FPGA設(shè)計的數(shù)字系統(tǒng)內(nèi),本方案的實施,能夠不借助其他外部控制芯片,有效降低了PCB電路板面積,在確保系統(tǒng)結(jié)構(gòu)精簡的同時,還保證了其效率,應(yīng)用前景在今后將會更加廣闊。
參考文獻
[1]孫康.可重構(gòu)計算相關(guān)技術(shù)研究[D].浙江:浙江大學(xué),2007: 1-2.
[2]Abbott A L,Athanas P M,Chen L,Elliott R L.Finding lines andbuilding pyramids with SPLASH2 [C].IEEE Workshop on FPGAs for CustomComputing Machines, 1994: 155-163.
[3]覃祥菊,朱明程,張?zhí)?,魏忠義.FPGA動態(tài)可重構(gòu)技術(shù)原理及實現(xiàn)方法分析[J].電子器件,2004,27 (02): 277-282.
[4]羅賽.可重構(gòu)計算系統(tǒng)結(jié)構(gòu)體系研究與實現(xiàn)[D].安徽:中國科學(xué)技術(shù)大學(xué),2006: 34-35.
[5]T.J. Todman,G.A.Cons trantinides,S.J.E. Wilton, et al. Reconfigurationcomputing: architectures and designmethods [J].Computers and Digital Techniques, 2005,152 (02):193-207.
[6]谷鑾,徐貴力,王友仁.FPGA動態(tài)可重構(gòu)理論及其研究進展[J].計算機測量與控制,2007,15 (11):1415-1418.
[7]張潤鑫,武文波,陳瑞明,基于組合特征的航母目標(biāo)識別辦法[J].航天返回與遙感,2018, 32 (12):128-131.