星載環(huán)境FPGA軟件在軌重加載的一種方法
摘要:FPGA在空間系統(tǒng)中已經(jīng)廣泛應(yīng)用,為了滿足系統(tǒng)可靠性和可擴(kuò)展性的要求,實(shí)現(xiàn)FPGA軟件的在軌重加載迫在眉睫。根據(jù)FPGA的加載配置原理,以Xilinx公司的Virtex-Ⅱ系列FPGA為實(shí)例,介紹了FPGA在軌重加載的硬件電路設(shè)計(jì)以及軟件設(shè)計(jì)。經(jīng)過實(shí)驗(yàn)室測(cè)試驗(yàn)證,該設(shè)計(jì)方法合理可行,滿足星載環(huán)境下FPGA軟件在軌編程及重加載的設(shè)計(jì)需求。
關(guān)鍵詞:FPGA;在軌重加載;在軌編程;星載環(huán)境
0 引言
FPGA已經(jīng)廣泛應(yīng)用于星載信號(hào)處理系統(tǒng)中,然而其在空間環(huán)境中的可靠性設(shè)計(jì)是一個(gè)難題。一方面,F(xiàn)PGA軟件可能受到外部空間環(huán)境影響而產(chǎn)生各種問題,特別是單粒子效應(yīng)造成的FPGA程序出錯(cuò),其導(dǎo)致的后果是嚴(yán)重的甚至是災(zāi)難性的;另一方面,當(dāng)FPGA軟件本身存在設(shè)計(jì)缺陷或者由于衛(wèi)星系統(tǒng)改變應(yīng)用需求時(shí),若能實(shí)現(xiàn)星載環(huán)境下FPGA軟件的遠(yuǎn)程更新升級(jí),其軟件系統(tǒng)的生命周期便可以得到延長,同時(shí)產(chǎn)生的經(jīng)濟(jì)效益也是不可估量的。
為此,本文介紹一種星載環(huán)境下FPGA軟件在軌重加載的方法,通過星上系統(tǒng)的1553B接口接收FPGA配置數(shù)據(jù)文件,在DSP和CPLD的控制下,靈活地實(shí)現(xiàn)FPGA程序的在軌編程及重加載。
1 FPGA加載原理
基于SRAM工藝的FPGA由于在掉電后配置數(shù)據(jù)丟失,因此需要在上電后對(duì)其進(jìn)行加載,而配置數(shù)據(jù)被保存在外部的非易失存儲(chǔ)器中。
Xilinx公司的Virtex-Ⅱ系列FPGA通過芯片配置管腳MODE PIN(M0,M1,M2),可以實(shí)現(xiàn)5種配置模式,詳見表1。
上述5種模式中,JTAG邊界掃描模式具有最高的優(yōu)先級(jí),其加載方式是通過專用JTAG口對(duì)FPGA進(jìn)行訪問。SelectMAP模式實(shí)際上就是并行模式,其加載時(shí)的數(shù)據(jù)訪問位寬為8 b,加載過程與串行模式相同。主模式和從模式的區(qū)別在于時(shí)鐘是由FPGA自身提供,亦或是外部提供,當(dāng)FPGA主動(dòng)輸出時(shí)鐘時(shí)即為主模式,反之即為從模式。
FPGA的配置過程如圖1所示,主要由3個(gè)階段8個(gè)步驟組成。FPGA在Slave SelectMAP模式下配置過程中使用的信號(hào)包括:PROG_B,INIT_ B,CCLK,CS_B,RDWR_B,DATA[0:7],BUSY,DONE,其時(shí)序關(guān)系如圖2所示。
根據(jù)圖1和圖2,Slave SelelctMAP模式下,F(xiàn)PGA加載過程描述如下:
第1階段:啟動(dòng)和初始化,分為3個(gè)步驟:
FPGA上電正常后,通過PROG_B引腳低脈沖進(jìn)行FPGA異步復(fù)位,使得FPGA內(nèi)部邏輯清零;PROG_B拉高后,停止外部復(fù)位,INIT_B引腳會(huì)在自動(dòng)產(chǎn)生一個(gè)由低到高的跳變,指示FPGA內(nèi)部初始化完成,可以進(jìn)行數(shù)據(jù)下載;FPGA檢測(cè)其專用的配置模式管腳M0~M2的電平,從而確定加載模式。
第2階段:比特流加載,分為4個(gè)步驟。INIT_B信號(hào)變高后,不需要額外的等待時(shí)間,Virtex器件就可以立即開始數(shù)據(jù)的配置。比特流數(shù)據(jù)在外部CCLK信號(hào)上升沿按字節(jié)方式置入。其中的Synchronization(同步)、Device ID Check(檢測(cè)器件ID號(hào)和配置數(shù)據(jù)中的ID號(hào)是否匹配)、Load Configuration Data(下載數(shù)據(jù)流)和CRCCheck(CRC校驗(yàn))對(duì)用戶是完全透明的,同步字、配置數(shù)據(jù)中ID號(hào)和CRC校驗(yàn)和都是在生成配置數(shù)據(jù)文件時(shí)和配置數(shù)據(jù)一起打包,嵌入在配置數(shù)據(jù)文件當(dāng)中。
第3階段:Startup啟動(dòng)。在成功校驗(yàn)CRC碼位后,F(xiàn)PGA進(jìn)入Startup狀態(tài)。它是由8相狀態(tài)機(jī)實(shí)現(xiàn)的,中間包括等待DCM鎖相、DCI匹配等幾個(gè)狀態(tài),最后FPGA釋放外部DONE引腳,對(duì)外輸出高阻態(tài),由外部上拉高,指示FPGA加載成功。
2 硬件電路設(shè)計(jì)
本系統(tǒng)硬件組成原理框圖見圖3,主控DSP芯片選用TI公司SMQ320LC31,通過1553B接口實(shí)現(xiàn)與星上控制計(jì)算機(jī)的通信,F(xiàn)PGA選用XILINX公司VIRTEX-Ⅱ系列芯片XC2V3000,其配置芯片選用XCF32P,DSP通過CPLD實(shí)現(xiàn)對(duì)FPGA加載模式的控制。
圖3所示的電路框圖可以分為以下功能模塊:配置數(shù)據(jù)接口單元、配置信號(hào)發(fā)生單元、時(shí)序狀態(tài)轉(zhuǎn)換、自舉配置單元、FPGA功能單元,其邏輯關(guān)系如圖4所示。
各功能單元的功能和性能描述如下:
(1)配置數(shù)據(jù)接口單元:該單元通過1553B接口從星上控制計(jì)算機(jī)接收FPGA配置數(shù)據(jù)。
(2)配置信號(hào)發(fā)生單元:該單元產(chǎn)生配置FPGA所需的配置數(shù)據(jù)和時(shí)序。
(3)狀態(tài)時(shí)序轉(zhuǎn)換單元:該單元一方面實(shí)現(xiàn)FPGA配置方式的狀態(tài)切換:自舉配置;另一方面將配置信號(hào)發(fā)生單元產(chǎn)生的信號(hào)轉(zhuǎn)換成FPGA配置接口所需的信號(hào)。
(4)自舉配置單元:即PROM,保存預(yù)先裝好的FPGA配置數(shù)據(jù)。
(5)FPGA功能單元:即FPGA,接收來自于PROM的配置數(shù)據(jù)或者來自于DSP(經(jīng)過CPLD轉(zhuǎn)換)的配置數(shù)據(jù)。
該系統(tǒng)在實(shí)際工作過程中,通過DSP和CPLD的靈活控制,可以實(shí)現(xiàn)多種配置模式的切換:
(1)上電過程直接通過PROM對(duì)FPGA進(jìn)行配置加載;
(2)上電過程直接通過DSP片外FLASH對(duì)FPGA進(jìn)行配置加載;
(3)DSP實(shí)時(shí)接收星上控制計(jì)算機(jī)傳送的配置數(shù)據(jù),實(shí)現(xiàn)對(duì)FPGA的配置加載;
(4)DSP實(shí)時(shí)接收星上控制計(jì)算機(jī)傳送的配置數(shù)據(jù),將其燒寫至PROM;
(5)DSP實(shí)時(shí)接收星上控制計(jì)算機(jī)傳送的配置數(shù)據(jù),將其燒寫至FLASH。
3 軟件設(shè)計(jì)
3.1 DSP軟件設(shè)計(jì)實(shí)現(xiàn)
系統(tǒng)上電之后,DSP上電后,首先進(jìn)行狀態(tài)檢測(cè),判斷上電時(shí)是PROM串行加載還是FLASH并行加載。然后,星上控制計(jì)算機(jī)通過1553B接口向DSP傳送FPGA配置數(shù)據(jù),并發(fā)送配置模式控制命令,DSP根據(jù)接收的命令選擇配置方式,按照配置時(shí)序向CPLD的相應(yīng)寄存器寫配置數(shù)據(jù)以及配置控制信號(hào)。
DSP軟件功能框圖如圖5所示,軟件主要完成兩個(gè)功能:功能一為完成1553B接口數(shù)據(jù)的傳輸,并存儲(chǔ)到SRAM中,然后根據(jù)1553B接口的控制命令決定進(jìn)行配置的方式或者轉(zhuǎn)存到FLASH中;功能二為模塊根據(jù)命令和FPGA配置時(shí)序產(chǎn)生配置信號(hào),并輸出給CPLD配置寄存器。
整個(gè)DSP軟件程序包含以下幾個(gè)主要函數(shù):1553B接口數(shù)據(jù)傳輸和處理函數(shù)、FLASH擦除與裝訂函數(shù)、SelectMap配置函數(shù)和中斷處理函數(shù)。軟件從main函數(shù)入口開始運(yùn)行,進(jìn)行相應(yīng)的初始化設(shè)置和配置,并開啟中斷,然后進(jìn)入無限循環(huán)狀態(tài),等待外部中斷的到來并進(jìn)行相應(yīng)的中斷服務(wù)處理。詳細(xì)軟件流程圖如圖6所示。
3.2 CPLD軟件設(shè)計(jì)實(shí)現(xiàn)
系統(tǒng)上電之后,DSP可以根據(jù)實(shí)際工作需要給出FPGA的兩種加載方式:PROM串行加載、SelectMAP并行加載,兩種方式均通過CPLD進(jìn)行。
當(dāng)進(jìn)行PROM從串模式加載時(shí),配置比特流從PROM中讀取,具體加載實(shí)現(xiàn)流程如圖7所示。
當(dāng)CPLD接到DSP發(fā)送的進(jìn)行SelectMAP并行加載命令時(shí),CPLD根據(jù)DSP端口的映射進(jìn)行SelectMAP并行加載,SelectMAP加載具體實(shí)現(xiàn)流程如圖8所示。
在SelectMAP并行加載過程中,CPLD負(fù)責(zé)在DSP和FPGA之間建立一個(gè)同步接口,將DSP傳送的配置數(shù)據(jù)包進(jìn)行相應(yīng)的處理,生成滿足Select MAP加載時(shí)序的時(shí)鐘、數(shù)據(jù)及控制信號(hào),傳輸至FPGA,實(shí)現(xiàn)對(duì)FPGA的SelectMAP加載。
CPLD軟件采用了一個(gè)狀態(tài)機(jī),實(shí)現(xiàn)接收DSP命令進(jìn)行PROM從串加載或者進(jìn)行SelectMAP并行加載,狀態(tài)機(jī)的流程如圖9所示。
3.3 加載文件格式
對(duì)FPGA進(jìn)行加載的文件格式為*.bin文件,通過bitgen產(chǎn)生,*.bin文件只包含F(xiàn)PGA配置數(shù)據(jù),不包含任何文件信息。
4 測(cè)試驗(yàn)證
建立測(cè)試環(huán)境,利用測(cè)試計(jì)算機(jī)(含1553B板卡及控制軟件)模擬星上控制計(jì)算機(jī),對(duì)該FPGA重加載電
路進(jìn)行測(cè)試,獲得如下測(cè)試結(jié)果:
(1)在DSP軟件中置PROM加載狀態(tài),上電后,F(xiàn)PGA從PROM加載,F(xiàn)PGA運(yùn)行狀態(tài)正常;
(2)在DSP軟件中置SelectMAP加載狀態(tài),上電后,DSP從FLASH中讀取配置數(shù)據(jù),通過CPLD對(duì)FPGA進(jìn)行加載,F(xiàn)PGA運(yùn)行狀態(tài)正常;
(3)在DSP軟件中置SelectMAP加載狀態(tài),上電后,測(cè)試計(jì)算機(jī)通過1553B將新的配置數(shù)據(jù)傳輸至DSP,DSP通過CPLD對(duì)FPGA進(jìn)行加載,F(xiàn)PGA運(yùn)行狀態(tài)正常。
(4)上電后,測(cè)試計(jì)算機(jī)通過1553B將新的配置數(shù)據(jù)傳輸至DSP,DSP將配置數(shù)據(jù)燒寫至FLASH或者PROM,并置加載狀態(tài),上電后能實(shí)現(xiàn)新配置數(shù)據(jù)的加載。
通過以上測(cè)試表明,該電路具備FPGA星載環(huán)境下的在軌重加載功能。
5 結(jié)論
本文介紹了星載環(huán)境下通過1553B接口實(shí)現(xiàn)FPGA在軌重加載的方法,并完成了相應(yīng)的硬件電路設(shè)計(jì)實(shí)現(xiàn),通過實(shí)驗(yàn)室測(cè)試驗(yàn)證,證明本文所描述的星載環(huán)境FPGA在軌重加載方法設(shè)計(jì)思想合理可行,不僅能滿足星載環(huán)境下FPGA軟件的更新升級(jí),還能實(shí)現(xiàn)FPGA軟件功能模塊的自身故障修復(fù),并且能靈活地實(shí)現(xiàn)衛(wèi)星應(yīng)用功能的領(lǐng)域擴(kuò)展,最大限度提高衛(wèi)星系統(tǒng)的利用率。





