文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)07-0024-03
中文引用格式:陳嵐,李紀(jì)云,朱人杰.基于Kintex7和SPI Flash實(shí)現(xiàn)FPGA的多重加載[J].電子技術(shù)應(yīng)用,2014,40(07):24-26.
隨著通信技術(shù)的快速發(fā)展,,多模式通信體制在現(xiàn)代通信中廣泛存在,如時(shí)分多址,、空分多址,、空分多址、頻分多址等,。而調(diào)制,、解調(diào)技術(shù)又分為FM、FSK,、BPSK,、QPSK等多種調(diào)制及解調(diào)技術(shù)。在一個(gè)通信系統(tǒng)中往往采用多種通信模式,,這對(duì)硬件設(shè)備資源提出了比較高的要求,,特別是對(duì)可編程芯片資源的要求。另外,,多模式系統(tǒng)設(shè)計(jì)的復(fù)雜性也大大提高,,同時(shí)對(duì)系統(tǒng)的維護(hù)和升級(jí)提出了挑戰(zhàn)。
近些年FPGA技術(shù)得到了飛速的發(fā)展,,其作為可編程資源廣泛應(yīng)用在大型復(fù)雜通信系統(tǒng)設(shè)計(jì)中,。盡管FPGA在資源集成度方面近些年取得了可觀的成果,但是在多模式的大型系統(tǒng)設(shè)計(jì)中,,單片F(xiàn)PGA資源遠(yuǎn)遠(yuǎn)不能夠滿足設(shè)計(jì)需求,,有時(shí)可能需要多個(gè)芯片。然而FPGA價(jià)格相對(duì)較高,,這大大提高了設(shè)計(jì)成本,,而且不易于產(chǎn)品升級(jí)和維護(hù)。
FPGA多重加載技術(shù)[1-2]實(shí)際是對(duì)可編程資源的復(fù)用,,用戶可以根據(jù)需求選擇加載不同的比特文件,,從而實(shí)現(xiàn)多模式功能,。FPGA多重加載技術(shù)可以解決可編程資源不足的問(wèn)題,提高了可編程資源的利用率,,同時(shí)降低了系統(tǒng)設(shè)計(jì)的復(fù)雜性,,增加了系統(tǒng)設(shè)計(jì)的靈活性,減小了多模式系統(tǒng)的耦合性,,便于系統(tǒng)升級(jí)和維護(hù),。
1 硬件設(shè)計(jì)
Kintex7和SPI Flash物理連接的硬件設(shè)計(jì)如圖1所示。SPI Flash的容量選擇與設(shè)計(jì)的加載模式的個(gè)數(shù)和FPGA芯片的種類(lèi)有關(guān),,本設(shè)計(jì)實(shí)現(xiàn)4種模式切換,,SPI Flash內(nèi)存儲(chǔ)4個(gè)比特文件,SPI Flash的容量是512 Mbit,。
2 控制部分的設(shè)計(jì)
控制部分的設(shè)計(jì)是基于PowerPC[3]處理器實(shí)現(xiàn)的,,用于對(duì)整個(gè)數(shù)據(jù)采集系統(tǒng)的控制,這里只對(duì)FPGA模式加載控制做簡(jiǎn)單說(shuō)明,。FPGA的加載模式控制信息由上位機(jī)發(fā)送,,上位機(jī)的1 G(TCP協(xié)議)網(wǎng)絡(luò)將加載模式控制信息發(fā)送到數(shù)據(jù)采集系統(tǒng)的1 G網(wǎng)絡(luò);數(shù)據(jù)采集系統(tǒng)控制部分解析TCP數(shù)據(jù)包,提取有效信息,,判斷加載模式,,將加載信息通過(guò)EPC(外設(shè)控制器)寫(xiě)到FPGA的寄存器中,Kintex7會(huì)根據(jù)寄存器中的值選擇加載模式,。外設(shè)控制器(EPC)是FPGA與PowerPC之間通信的橋梁,,在重加載控制過(guò)程中主要負(fù)責(zé)傳遞加載模式信息到FPGA寄存器內(nèi),另外還需要將加載成功后的模式信息進(jìn)行回讀,,并且通過(guò)1 G網(wǎng)絡(luò)送到上位機(jī)界面,,判斷是否重加載成功。嵌入式控制部分的設(shè)計(jì)如圖2所示,。
3 重加載模塊的設(shè)計(jì)
IRPOG命令序列是實(shí)現(xiàn)FPGA重加載的重要環(huán)節(jié),。IPROG命令的效果與在PROGRAM_B引腳產(chǎn)生一個(gè)脈沖的效果類(lèi)似,但是IPROG命令不對(duì)重配置[4]邏輯進(jìn)行復(fù)位,。Kintex7內(nèi)部ICAPE2模塊能夠執(zhí)行IPROG命令,,IPROG命令觸發(fā)FPGA從SPI Flash中重新加載比特文件,加載地址是Kintex7中WBSTAR寄存器指定的地址,。IPROG命令發(fā)送后,F(xiàn)PGA完成3個(gè)動(dòng)作:發(fā)送同步字節(jié)(AA995566),;向Kintex7的WBSTAR寄存器寫(xiě)入下一個(gè)加載地址(表1地址為00000000),;發(fā)送IPORG命令(0000000F)。表1是通過(guò)ICAPE2向重配置模塊發(fā)送IPROG命令的比特流,,Multiboot[5]控制器用一個(gè)狀態(tài)機(jī)向ICAPE2發(fā)送表1中的IPROG命令序列,。一般情況下,,重配置控制器等待外部的激勵(lì)信號(hào),當(dāng)激勵(lì)信號(hào)到達(dá)后,,控制器向ICAPE2發(fā)送表1命令序列,,在發(fā)送命令序列之前,控制器先把WRITE端口置為低電平,,在下一個(gè)時(shí)鐘的上升沿把CE端口置為低電平,,接下來(lái)發(fā)送表1指令序列。
FPGA內(nèi)的重配置邏輯接收到IPROG命令后,,F(xiàn)PGA執(zhí)行復(fù)位操作,,但不對(duì)重配置邏輯進(jìn)行復(fù)位,并且將INIT_B和DONE引腳拉低,。FPGA清除了所有的配置存儲(chǔ)后,,INIT_B端口被拉高。最后,,WBSTAR寄存器的值被用來(lái)重新配置FPGA,。
IPROG命令序列通過(guò)狀態(tài)機(jī)實(shí)現(xiàn),狀態(tài)機(jī)中最少有8個(gè)狀態(tài)才能生成整個(gè)IPROG命令序列,,否則,,IPROG命令序列不能夠生成,F(xiàn)PGA不能重新配置,。另外,,IPROG命令的發(fā)送由ICAPE2模塊執(zhí)行,ICAPE2模塊的輸出時(shí)序和SelectMAP的輸出時(shí)序是一致的,,SelectMAP的輸出數(shù)據(jù)格式是位轉(zhuǎn)換格式,,所以IPROG命令序列生成的過(guò)程中需要將配置數(shù)據(jù)進(jìn)行位轉(zhuǎn)換。這里位轉(zhuǎn)換是指字節(jié)內(nèi)位轉(zhuǎn)換,,即最高有效位變?yōu)樽畹陀行?,以此為?guī)則進(jìn)行字節(jié)內(nèi)的位互換。位轉(zhuǎn)換結(jié)果如表2所示,。
4 生成PROM文件
本設(shè)計(jì)的可編程文件是.mcs文件,,生成.mcs文件有兩種方法:(1)用戶ISE中用命令行的格式生成,在用命令行的方式生成時(shí)需要把其他模式的頂層比特文件拷貝到當(dāng)前工作路徑,,用promgen+參數(shù)的方式生成.mcs文件,;(2)使用軟件Impact中的PROM File Formatter生成.mcs文件,PROM File Formatter為用戶提供了可視化的.mcs文件生成環(huán)境,。本設(shè)計(jì)的.mcs文件是由4個(gè)比特文件組合而成,,每個(gè)比特文件代表一種不同的設(shè)計(jì)模式,其在Flash中存放的首地址和Kintex7中重配置寄存器地址保持一致。
本設(shè)計(jì)選用S25FL512S Flash,,可以存放4個(gè)配置Kintex7的比特文件,。這4個(gè)比特文件的首地址與狀態(tài)機(jī)生成的首地址不同,狀態(tài)機(jī)生成的加載首地址必須進(jìn)行位轉(zhuǎn)換,。4個(gè)比特文件存放的首地址分別為表2中左側(cè)的4個(gè)地址,,位轉(zhuǎn)換后的加載首地址如表3右側(cè)所示,這是由ICAPE2的輸出時(shí)序決定的,,ICAPE2的輸出時(shí)序和SelectMAP的讀寫(xiě)時(shí)序一致,。另外,ICAPE2的輸入時(shí)鐘范圍是1~100 MHz,,若超出該范圍則不能夠正確執(zhí)行相關(guān)寄存器的配置,。
5 測(cè)試結(jié)果及分析
本設(shè)計(jì)使用Chipscope軟件對(duì)信號(hào)進(jìn)行捕捉,圖3是FPGA重新加載時(shí)對(duì)ICAPE2模塊的輸入信號(hào)的捕捉結(jié)果,??梢杂^察到,狀態(tài)機(jī)成功生成了IPROM命令,,并將其發(fā)送給ICAPE2模塊,。
本設(shè)計(jì)在硬件平臺(tái)上進(jìn)行了多模式啟動(dòng)的測(cè)試,測(cè)試過(guò)程及結(jié)果:用戶通過(guò)上位機(jī)的控制界面向終端發(fā)送模式切換命令,,上位機(jī)與終端用1 G(TCP協(xié)議)網(wǎng)絡(luò)通信,,以PowerPC為處理器搭建的嵌入式控制系統(tǒng)負(fù)責(zé)接收模式切換指令,終端接收到命令后通過(guò)EPC(圖1)接口寫(xiě)入Kintex7寄存器,,Kintex7的控制邏輯會(huì)根據(jù)指令觸發(fā)相應(yīng)的重加載模式,,最后通過(guò)終端設(shè)備上的LED燈觀測(cè)到FPGA正確加載。
FPGA是否正確重加載的依據(jù)是:FPGA配置文件的功能都是點(diǎn)亮同一個(gè)LED燈,,區(qū)別在于它們點(diǎn)亮LED的頻率不同,,通過(guò)觀察LED燈的閃爍頻率可以確定FPGA是否正確加載了相應(yīng)模式。
本實(shí)驗(yàn)在重加載前后,,LED燈的顯示頻率分別為1 Hz和2 Hz,,說(shuō)明FPGA重加載成功。對(duì)另外兩種模式也進(jìn)行了重加載測(cè)試,,LED閃爍頻率分別是4 Hz和8 Hz,。本實(shí)驗(yàn)最后觀測(cè)到LED燈閃爍情況滿足預(yù)期結(jié)果。綜上所述,,F(xiàn)PGA可以在不掉電的情況下正確重加載,,并且任何兩種模式可以相互切換,提高了芯片可編程資源的利用率,。
參考文獻(xiàn)
[1] 李鵬,,蘭巨龍.用CPLD和Flash實(shí)現(xiàn)FPGA配置[J].電子技術(shù)應(yīng)用,2006,32(6):101-102.
[2] 劉釗,,杜琪峰,許知博.基于Xilinx-Spartan6 FPGA的MultiBoot設(shè)計(jì)的實(shí)現(xiàn)[J].電子科技,,2012,,25(3):28-31.
[3] 李煒.基于MicroBlaze的FPGA重配置系統(tǒng)設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2007,,7(23):6190-6192.
[4] 張江偉.基于Virtex-5和FLASH實(shí)現(xiàn)FPGA的多重配置[J].計(jì)算機(jī)與網(wǎng)絡(luò),,2012(Z1):3-4.
[5] HUSSEIN J,PATEL R.Multiboot with Virtex-5 FPGAs and platform Flash XL[EB/OL].(2008-11-06)[2014-04-07].http://www.xilinx.com/support/documentation/application_notes/xapp1100.pdf.