FPGA多重加載技術(shù)的設(shè)計(jì)模塊及其在硬件平臺上的多模式啟動(dòng)測試并分析
摘 要: Xilinx 7系列FPGA是Xilinx公司最新推出的一個(gè)芯片系列,Kintex7是該系列芯片中的一種,擁有大量的可編程資源。即便如此,在一些多模式的大型復(fù)雜的系統(tǒng)設(shè)計(jì)中,芯片的資源還是遠(yuǎn)遠(yuǎn)不能滿足設(shè)計(jì)需求。FPGA的多重加載可以解決可編程資源不足的難題。FPGA多重加載是將設(shè)計(jì)的多個(gè)模式的比特文件存儲(chǔ)到Flash,用戶可以根據(jù)需要選擇加載不同模式的比特文件。FPGA的多重加載解決了可編程資源不足的問題,提高了FPGA可編程資源的利用率。
隨著通信技術(shù)的快速發(fā)展,多模式通信體制在現(xiàn)代通信中廣泛存在,如時(shí)分多址、空分多址、空分多址、頻分多址等。而調(diào)制、解調(diào)技術(shù)又分為FM、FSK、BPSK、QPSK等多種調(diào)制及解調(diào)技術(shù)。在一個(gè)通信系統(tǒng)中往往采用多種通信模式,這對硬件設(shè)備資源提出了比較高的要求,特別是對可編程芯片資源的要求。另外,多模式系統(tǒng)設(shè)計(jì)的復(fù)雜性也大大提高,同時(shí)對系統(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ì)需求,有時(shí)可能需要多個(gè)芯片。然而FPGA價(jià)格相對較高,這大大提高了設(shè)計(jì)成本,而且不易于產(chǎn)品升級和維護(hù)。
FPGA多重加載技術(shù)[1-2]實(shí)際是對可編程資源的復(fù)用,用戶可以根據(jù)需求選擇加載不同的比特文件,從而實(shí)現(xiàn)多模式功能。FPGA多重加載技術(shù)可以解決可編程資源不足的問題,提高了可編程資源的利用率,同時(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ì)的加載模式的個(gè)數(shù)和FPGA芯片的種類有關(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)的,用于對整個(gè)數(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會(huì)根據(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)生一個(gè)脈沖的效果類似,但是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個(gè)動(dòng)作:發(fā)送同步字節(jié)(AA995566);向Kintex7的WBSTAR寄存器寫入下一個(gè)加載地址(表1地址為00000000);發(fā)送IPORG命令(0000000F)。表1是通過ICAPE2向重配置模塊發(fā)送IPROG命令的比特流,MulTIboot[5]控制器用一個(gè)狀態(tài)機(jī)向ICAPE2發(fā)送表1中的IPROG命令序列。一般情況下,重配置控制器等待外部的激勵(lì)信號,當(dāng)激勵(lì)信號到達(dá)后,控制器向ICAPE2發(fā)送表1命令序列,在發(fā)送命令序列之前,控制器先把WRITE端口置為低電平,在下一個(gè)時(shí)鐘的上升沿把CE端口置為低電平,接下來發(fā)送表1指令序列。
FPGA內(nèi)的重配置邏輯接收到IPROG命令后,F(xiàn)PGA執(zhí)行復(fù)位操作,但不對重配置邏輯進(jìn)行復(fù)位,并且將INIT_B和DONE引腳拉低。FPGA清除了所有的配置存儲(chǔ)后,INIT_B端口被拉高。最后,WBSTAR寄存器的值被用來重新配置FPGA。
IPROG命令序列通過狀態(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命令序列生成的過程中需要將配置數(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所示。