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