武健+楊媛媛+劉陳
摘要:針對(duì)FPGA動(dòng)態(tài)重配置速率低,PROM容量受限等問題,設(shè)計(jì)了一種基于CPLD的FPGA動(dòng)態(tài)重配置方法。詳細(xì)介紹了該方法的硬件架構(gòu),CPLD程序設(shè)計(jì)和FPGA程序維護(hù)方法,實(shí)驗(yàn)證明該方法穩(wěn)定可靠,簡(jiǎn)單易行,具有較為廣闊的應(yīng)用前景。
關(guān)鍵詞:FPGA;動(dòng)態(tài)重配置;CPLD
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)10-0056-03
隨著FC網(wǎng)絡(luò)在機(jī)載通信領(lǐng)域的廣泛應(yīng)用,作為接口設(shè)備的FC節(jié)點(diǎn)機(jī)需要滿足多種主機(jī)接口和功能要求,一種支持多主機(jī)接口、動(dòng)態(tài)可配置的FC通用節(jié)點(diǎn)機(jī)應(yīng)運(yùn)而生。該通用節(jié)點(diǎn)機(jī)可根據(jù)任務(wù)需求,選擇和設(shè)置主機(jī)接口及設(shè)備加載程序來完成參數(shù)迥異的通信任務(wù),其應(yīng)用也大幅減少備品備件等后勤維護(hù)壓力。
可編程邏輯器件功能和軟件的動(dòng)態(tài)重配置是FC通用節(jié)點(diǎn)機(jī)遇到的最大瓶頸。已有的重配置方法是在同一個(gè)邏輯代碼中實(shí)現(xiàn)多種主機(jī)接口的通信程序,但存在如占用大量的FPGA邏輯資源,邏輯文件大,系統(tǒng)啟動(dòng)慢等多種問題[1-2]。文章通過設(shè)計(jì)一種基于CPLD的FPGA動(dòng)態(tài)重配置方法,實(shí)現(xiàn)了多種FPGA程序的快速靈活加載。
1 典型的動(dòng)態(tài)重配置技術(shù)分析
1.1 利用FPGA自身實(shí)現(xiàn)重配置功能
以Xilinx公司的Virtex-5系列芯片為例,該芯片增加了專用的內(nèi)部加載邏輯(IPROG)用于實(shí)現(xiàn)多頁(yè)FPGA程序的加載功能[1],IPROG指令具有與PROGRAM_B類似的功能,不同的是IPROG不會(huì)復(fù)位FPGA內(nèi)部重配置專用邏輯。用戶可以通過FPGA內(nèi)部配置訪問端口(ICAP)或者使用比特流的方式發(fā)送IPROG指令,F(xiàn)PGA根據(jù)以上指令,自動(dòng)從熱啟動(dòng)地址寄存器(WBSTAR)處進(jìn)行數(shù)據(jù)加載,實(shí)現(xiàn)FPGA重配置功能。圖1所示的是該方法的配置原理框圖。這個(gè)方法加載速度快,硬件電路簡(jiǎn)單,但FPGA配置文件的大小非常依賴于PROM的容量。對(duì)于實(shí)現(xiàn)接口協(xié)議轉(zhuǎn)換等功能的機(jī)載通信設(shè)備來說,F(xiàn)PGA程序規(guī)模往往會(huì)大于16MB,而目前Xilinx公司主流大容量PROM型號(hào)為XCF128X,容量?jī)H為32MB,無法滿足多個(gè)配置文件的加載。因此,利用FPGA自身實(shí)現(xiàn)重配置功能的方法不適用于機(jī)載通信設(shè)備。
1.2 利用通用大容量FLASH和CPLD實(shí)現(xiàn)重配置功能
該方法是將FPGA配置文件固化在通用FLASH中,CPU根據(jù)不同的應(yīng)用場(chǎng)景選擇相應(yīng)的FPGA程序,完成配置過程的控制。CPLD完成FPGA的專用配置接口時(shí)序,將配置數(shù)據(jù)加載到FPGA中。配置原理框圖如圖2所示[2]。這種方法使用通用FLASH,可以存儲(chǔ)多達(dá)十幾個(gè)版本的FPGA程序,解決了PROM容量受限的問題,但加載速度慢,大型的FPGA程序加載時(shí)間甚至?xí)_(dá)到秒級(jí)。對(duì)于設(shè)備啟動(dòng)要求幾百毫秒的機(jī)載通信系統(tǒng)來說,該方法也不適用。
2 新型動(dòng)態(tài)加載配置方法
以上兩種重配置技術(shù)都無法解決機(jī)載系統(tǒng)中大規(guī)模FPGA程序的快速重配置問題。主要局限在存儲(chǔ)容量受限和配置時(shí)間較長(zhǎng)。針對(duì)這兩點(diǎn),文章設(shè)計(jì)了一種新型動(dòng)態(tài)重配置方法。該方法通過CPLD芯片使FPGA與多個(gè)PROM連接,通過處理單元對(duì)CPLD的控制,選擇存放不同邏輯文件的PROM,即可以完成不同功能的FPGA程序選擇。PROM到FPGA的加載方式使用Slave SelectMap模式[1][3],滿足了系統(tǒng)對(duì)加載時(shí)間的要求,不同PROM間的切換解決了對(duì)加載容量的要求。具體實(shí)現(xiàn)方法如下。
2.1 硬件平臺(tái)
硬件平臺(tái)框圖如圖3所示。主要是針對(duì)Xilinx公司的Virtex-5系列FPGA進(jìn)行配置,其中CPLD選用CoolRunner-II系列的XC2C384,三片PROM均選用Xilinx的XCF128XF。CPLD芯片主要用于對(duì)加載初始階段處理單元發(fā)起的操作進(jìn)行響應(yīng),實(shí)現(xiàn)PROM選擇,并控制FPGA重新發(fā)起加載流程。
在硬件電路設(shè)計(jì)中應(yīng)注意以下幾點(diǎn),可在實(shí)現(xiàn)功能的同時(shí),簡(jiǎn)化PCB走線,并滿足時(shí)間指標(biāo)要求:
1)將FPGA程序加載的數(shù)據(jù)線、地址線、讀寫等控制信號(hào)全部引入CPLD,由CPLD連接各個(gè)PROM,簡(jiǎn)化PCB走線,防止由于信號(hào)反射引入的信號(hào)完整性問題。
2)FPGA和PROM時(shí)鐘統(tǒng)一由外部時(shí)鐘源提供,嚴(yán)格按照數(shù)據(jù)手冊(cè)進(jìn)行布局布線,確保高速加載可靠性;
3)PROM選擇電路中,PROM控制信號(hào)的端接必須在從FPGA進(jìn)入CPLD前完成處理,確保上電工作狀態(tài)的穩(wěn)定和可控。
2.2 FPGA程序動(dòng)態(tài)配置設(shè)計(jì)與實(shí)現(xiàn)
在文章描述的方法中,CPLD通過和處理單元相連的加載控制接口完成控制和選擇,加載控制接口共3位,其中兩位加載選擇離散量組合對(duì)應(yīng)最多四個(gè)不同的邏輯版本狀態(tài),一位加載控制離散量用于指示邏輯重加載,由處理單元控制,時(shí)序如圖4所示。加載控制信號(hào)與加載選擇信號(hào)由處理單元發(fā)出,加載控制信號(hào)低電平有效,加載選擇信號(hào)要求在加載控制信號(hào)有效期間保持穩(wěn)定。加載完成信號(hào)是FPGA程序加載完成后,F(xiàn)PGA釋放DONE信號(hào),由外部上拉電阻置高電平。
控制流程如下:
1)CPLD中設(shè)計(jì)默認(rèn)狀態(tài)選擇PROM1,CPLD上電后固定加載PROM1中的FPGA程序;
2)處理單元啟動(dòng)后,根據(jù)系統(tǒng)要求,設(shè)置加載選擇信號(hào),以選擇需要加載的FPGA程序,之后處理單元設(shè)置加載控制信號(hào)為低,啟動(dòng)重加載;
3)CPLD周期性判斷加載控制信號(hào)和加載選擇信號(hào),當(dāng)加載控制信號(hào)出現(xiàn)下降沿時(shí),CPLD讀取加載選擇信號(hào),對(duì)FPGA的PROGRAM_B和PROM的/RP管腳輸出低電平,持續(xù)時(shí)間不少于50ns,同時(shí)CPLD內(nèi)部將FPGA與所選PROM的數(shù)據(jù)線、地址線連通;
4)FPGA完成程序加載后,將DONE信號(hào)置為高,主機(jī)檢測(cè)到該信號(hào)后,發(fā)起FPGA復(fù)位操作,復(fù)位結(jié)束后,將加載控制信號(hào)置高,以便再次對(duì)FPGA程序重新配置。
實(shí)際應(yīng)用中,系統(tǒng)在復(fù)位或上電后可根據(jù)設(shè)計(jì)選擇默認(rèn)邏輯完成加載,也可由處理單元完成對(duì)FPGA加載邏輯狀態(tài)的選擇,實(shí)現(xiàn)可編程邏輯的動(dòng)態(tài)選擇加載。通過該方式,可以使用單一硬件兼容三種系統(tǒng)應(yīng)用,而無需設(shè)計(jì)三種模塊,在技術(shù)狀態(tài)的管理上,也可以做到明確、清晰,和當(dāng)前的系統(tǒng)應(yīng)用具有良好的延續(xù)性。
2.3 FPGA程序維護(hù)和升級(jí)
在系統(tǒng)實(shí)際使用中,如果需要對(duì)FPGA程序進(jìn)行維護(hù)操作,可以使用以下兩種方式完成:
1)在有處理單元的平臺(tái)上,通過處理單元完成對(duì)PROM的選擇,之后使用JTAG接口完成FPGA程序升級(jí)維護(hù)操作,進(jìn)行燒寫、擦除、讀取、校驗(yàn)等操作;
2)在沒有處理單元的平臺(tái)上,加載控制接口可以使用外部離散量控制板,通過跳線方式,選擇對(duì)應(yīng)的PROM,之后使用JTAG接口完成FPGA程序升級(jí)維護(hù)操作。
以上兩種方式,雖然相比典型的FPGA程序升級(jí)操作維護(hù)步驟略有增加,但是考慮到模塊技術(shù)狀態(tài)穩(wěn)定后,升級(jí)維護(hù)操作并不頻繁,且增加的操作步驟簡(jiǎn)單易行,技術(shù)狀態(tài)穩(wěn)定后,并不會(huì)對(duì)模塊的可維護(hù)性產(chǎn)生大的影響,相比模塊種類增加所帶來的設(shè)計(jì)、控制等一系列成本,該方式的優(yōu)勢(shì)更為明顯。
3 實(shí)驗(yàn)與驗(yàn)證
對(duì)文章提出的方法進(jìn)行功能和性能驗(yàn)證,根據(jù)圖3搭建了系統(tǒng)驗(yàn)證平臺(tái)。對(duì)Xilinx公司生產(chǎn)的Virtex-5系列芯片進(jìn)行動(dòng)態(tài)配置,選用的配置時(shí)鐘CCLK為40MHz,選擇PROM1為默認(rèn)PROM,待處理單元啟動(dòng)后,通過加載控制接口選擇PROM2進(jìn)行重配置,重配置可以在200ms內(nèi)完成。表示文章所提出的方法可以實(shí)現(xiàn)FPGA程序的重配置。
4 結(jié)束語
經(jīng)過工程應(yīng)用驗(yàn)證,使用該方法的硬件平臺(tái)工作穩(wěn)定可靠、簡(jiǎn)單易行使用靈活。該方法對(duì)于使用可編程邏輯實(shí)現(xiàn)主要功能,且FPGA外部電路一致的模塊有著較好的借鑒作用,可以在具備該條件的模塊設(shè)計(jì)中進(jìn)行推廣,既可以滿足用戶的需求,也能夠有效減少模塊種類,具有較為廣闊的應(yīng)用前景。
參考文獻(xiàn):
[1] Xilinx, Virtex-5 FPGA Configuration User Guide[R]. USA: Xilinx, 2009.
[2] 陳靜,曹芳菊. FPGA動(dòng)態(tài)高速加載設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與網(wǎng)絡(luò),2011(5).
[3] 李吉鋒,楊剛,王戈,等. 星載環(huán)境FPGA軟件在軌重加載的一種方法[J], 現(xiàn)代電子技術(shù),2012(5).