文獻(xiàn)標(biāo)識碼: A
文章編號: 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)代通信中廣泛存在,,如時分多址,、空分多址、空分多址,、頻分多址等,。而調(diào)制、解調(diào)技術(shù)又分為FM,、FSK,、BPSK、QPSK等多種調(diào)制及解調(diào)技術(shù),。在一個通信系統(tǒng)中往往采用多種通信模式,,這對硬件設(shè)備資源提出了比較高的要求,特別是對可編程芯片資源的要求,。另外,,多模式系統(tǒng)設(shè)計(jì)的復(fù)雜性也大大提高,同時對系統(tǒng)的維護(hù)和升級提出了挑戰(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ì)需求,有時可能需要多個芯片,。然而FPGA價格相對較高,,這大大提高了設(shè)計(jì)成本,而且不易于產(chǎn)品升級和維護(hù),。
FPGA多重加載技術(shù)[1-2]實(shí)際是對可編程資源的復(fù)用,,用戶可以根據(jù)需求選擇加載不同的比特文件,從而實(shí)現(xiàn)多模式功能,。FPGA多重加載技術(shù)可以解決可編程資源不足的問題,,提高了可編程資源的利用率,同時降低了系統(tǒng)設(shè)計(jì)的復(fù)雜性,,增加了系統(tǒng)設(shè)計(jì)的靈活性,,減小了多模式系統(tǒng)的耦合性,便于系統(tǒng)升級和維護(hù),。
1 硬件設(shè)計(jì)
Kintex7和SPI Flash物理連接的硬件設(shè)計(jì)如圖1所示,。SPI Flash的容量選擇與設(shè)計(jì)的加載模式的個數(shù)和FPGA芯片的種類有關(guān),,本設(shè)計(jì)實(shí)現(xiàn)4種模式切換,SPI Flash內(nèi)存儲4個比特文件,,SPI Flash的容量是512 Mbit,。
2 控制部分的設(shè)計(jì)
控制部分的設(shè)計(jì)是基于PowerPC[3]處理器實(shí)現(xiàn)的,用于對整個數(shù)據(jù)采集系統(tǒng)的控制,,這里只對FPGA模式加載控制做簡單說明,。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ù)包,提取有效信息,,判斷加載模式,將加載信息通過EPC(外設(shè)控制器)寫到FPGA的寄存器中,,Kintex7會根據(jù)寄存器中的值選擇加載模式,。外設(shè)控制器(EPC)是FPGA與PowerPC之間通信的橋梁,在重加載控制過程中主要負(fù)責(zé)傳遞加載模式信息到FPGA寄存器內(nèi),,另外還需要將加載成功后的模式信息進(jìn)行回讀,,并且通過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)生一個脈沖的效果類似,,但是IPROG命令不對重配置[4]邏輯進(jìn)行復(fù)位,。Kintex7內(nèi)部ICAPE2模塊能夠執(zhí)行IPROG命令,IPROG命令觸發(fā)FPGA從SPI Flash中重新加載比特文件,,加載地址是Kintex7中WBSTAR寄存器指定的地址,。IPROG命令發(fā)送后,F(xiàn)PGA完成3個動作:發(fā)送同步字節(jié)(AA995566),;向Kintex7的WBSTAR寄存器寫入下一個加載地址(表1地址為00000000),;發(fā)送IPORG命令(0000000F)。表1是通過ICAPE2向重配置模塊發(fā)送IPROG命令的比特流,,Multiboot[5]控制器用一個狀態(tài)機(jī)向ICAPE2發(fā)送表1中的IPROG命令序列,。一般情況下,重配置控制器等待外部的激勵信號,,當(dāng)激勵信號到達(dá)后,,控制器向ICAPE2發(fā)送表1命令序列,在發(fā)送命令序列之前,,控制器先把WRITE端口置為低電平,,在下一個時鐘的上升沿把CE端口置為低電平,接下來發(fā)送表1指令序列,。
FPGA內(nèi)的重配置邏輯接收到IPROG命令后,,F(xiàn)PGA執(zhí)行復(fù)位操作,,但不對重配置邏輯進(jìn)行復(fù)位,并且將INIT_B和DONE引腳拉低,。FPGA清除了所有的配置存儲后,,INIT_B端口被拉高。最后,,WBSTAR寄存器的值被用來重新配置FPGA。
IPROG命令序列通過狀態(tài)機(jī)實(shí)現(xiàn),,狀態(tài)機(jī)中最少有8個狀態(tài)才能生成整個IPROG命令序列,,否則,IPROG命令序列不能夠生成,,F(xiàn)PGA不能重新配置,。另外,IPROG命令的發(fā)送由ICAPE2模塊執(zhí)行,,ICAPE2模塊的輸出時序和SelectMAP的輸出時序是一致的,,SelectMAP的輸出數(shù)據(jù)格式是位轉(zhuǎn)換格式,所以IPROG命令序列生成的過程中需要將配置數(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中用命令行的格式生成,,在用命令行的方式生成時需要把其他模式的頂層比特文件拷貝到當(dāng)前工作路徑,,用promgen+參數(shù)的方式生成.mcs文件;(2)使用軟件Impact中的PROM File Formatter生成.mcs文件,,PROM File Formatter為用戶提供了可視化的.mcs文件生成環(huán)境,。本設(shè)計(jì)的.mcs文件是由4個比特文件組合而成,每個比特文件代表一種不同的設(shè)計(jì)模式,,其在Flash中存放的首地址和Kintex7中重配置寄存器地址保持一致,。
本設(shè)計(jì)選用S25FL512S Flash,可以存放4個配置Kintex7的比特文件,。這4個比特文件的首地址與狀態(tài)機(jī)生成的首地址不同,,狀態(tài)機(jī)生成的加載首地址必須進(jìn)行位轉(zhuǎn)換。4個比特文件存放的首地址分別為表2中左側(cè)的4個地址,,位轉(zhuǎn)換后的加載首地址如表3右側(cè)所示,,這是由ICAPE2的輸出時序決定的,ICAPE2的輸出時序和SelectMAP的讀寫時序一致,。另外,,ICAPE2的輸入時鐘范圍是1~100 MHz,,若超出該范圍則不能夠正確執(zhí)行相關(guān)寄存器的配置。
5 測試結(jié)果及分析
本設(shè)計(jì)使用Chipscope軟件對信號進(jìn)行捕捉,,圖3是FPGA重新加載時對ICAPE2模塊的輸入信號的捕捉結(jié)果,。可以觀察到,,狀態(tài)機(jī)成功生成了IPROM命令,,并將其發(fā)送給ICAPE2模塊。
本設(shè)計(jì)在硬件平臺上進(jìn)行了多模式啟動的測試,,測試過程及結(jié)果:用戶通過上位機(jī)的控制界面向終端發(fā)送模式切換命令,,上位機(jī)與終端用1 G(TCP協(xié)議)網(wǎng)絡(luò)通信,以PowerPC為處理器搭建的嵌入式控制系統(tǒng)負(fù)責(zé)接收模式切換指令,,終端接收到命令后通過EPC(圖1)接口寫入Kintex7寄存器,,Kintex7的控制邏輯會根據(jù)指令觸發(fā)相應(yīng)的重加載模式,最后通過終端設(shè)備上的LED燈觀測到FPGA正確加載,。
FPGA是否正確重加載的依據(jù)是:FPGA配置文件的功能都是點(diǎn)亮同一個LED燈,,區(qū)別在于它們點(diǎn)亮LED的頻率不同,通過觀察LED燈的閃爍頻率可以確定FPGA是否正確加載了相應(yīng)模式,。
本實(shí)驗(yàn)在重加載前后,,LED燈的顯示頻率分別為1 Hz和2 Hz,說明FPGA重加載成功,。對另外兩種模式也進(jìn)行了重加載測試,,LED閃爍頻率分別是4 Hz和8 Hz。本實(shí)驗(yàn)最后觀測到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.