安健 何敏 朱丹
摘? 要:隨著FPGA在雷達(dá)、通信領(lǐng)域等信號處理的廣泛應(yīng)用,F(xiàn)PGA資源成為限制信號處理算法工程應(yīng)用的瓶頸。如何實(shí)現(xiàn)FPGA資源利用的最大化,成為工程上急需解決的問題。文章采用一種網(wǎng)絡(luò)控制命令觸發(fā)FPGA完成多重配置的方法,實(shí)現(xiàn)不同功能程序的切換。通過在信號處理板上的工程驗(yàn)證,該方法具有可操作性、靈活有效,解決了實(shí)現(xiàn)不同程序需要重復(fù)燒寫程序的煩瑣步驟,節(jié)省了人力物力。同時(shí)可用較少的邏輯資源完成需要更多邏輯資源才能實(shí)現(xiàn)的算法功能,提高了FPGA的資源利用率,降低了硬件設(shè)計(jì)的復(fù)雜性,在工程應(yīng)用上具有很大的參考意義。
關(guān)鍵詞:WIZ811MJ;多重配置;現(xiàn)場可編程門陣列;內(nèi)部配置訪問端口
中圖分類號:TP301;TN791? 文獻(xiàn)標(biāo)識碼:A? 文章編號:2096-4706(2023)19-0059-05
Design and Implementation of FPGA Dynamic Reconfiguration and Multiboot
Based on Network Control
AN Jian, HE Min, ZHU Dan
(Sichuan Jiuzhou Electric Group Co., Ltd., Mianyang? 621000, China)
Abstract: Nowadays FPGA is used widely in signal processing of radar and communication domain, but FPGA resource has become the bottleneck in engineering application of signal processing algorithm. How to maximize the use of FPGA resource has become a problem which is needed to be resolved urgently. A method is applied to trigger FPGA to reconfigure and multiboot, and to switch different functional program in the paper. Through the engineering verification on the signal processing board, the method is easy to operate, flexible and effective. It solves the tedious steps of burning programs repeatedly to implement different programs, and reduces manpower and material resource. At the same time, the algorithm which needs more resource can be implemented to use less resource by this method. The method can improve availability of FPGA resource and reduce complexity of hardware design, and it also has great reference significance in engineering application.
Keywords: WIZ812MJ; reconfiguration and multiboot; FPGA; ICAP
0? 引? 言
在雷達(dá)、通信領(lǐng)域,信號處理技術(shù)日新月異,各種信號處理算法在FPGA中工程實(shí)現(xiàn),對FPGA中的邏輯資源需求提出了更高的要求[1]。當(dāng)集成不同的軟件功能時(shí),將會(huì)面臨邏輯設(shè)計(jì)復(fù)雜和邏輯資源不足的問題。如果把幾個(gè)不同軟件功能程序集成到同一FPGA上,隨著FPGA邏輯設(shè)計(jì)規(guī)模的增加,程序的復(fù)雜性有所增加,同時(shí)無法保證幾個(gè)軟件功能程序的數(shù)據(jù)通路及所使用的邏輯資源不會(huì)產(chǎn)生沖突。如果能,將會(huì)額外增加復(fù)雜的控制邏輯,影響整個(gè)程序的運(yùn)行效率,同時(shí)增加了程序開發(fā)難度和工作量。而信號處理設(shè)備經(jīng)設(shè)計(jì)定型完成,具有固定的硬件架構(gòu)、固定數(shù)量的FPGA資源,無法新增硬件來實(shí)現(xiàn)新增的軟件功能。應(yīng)用軟件無線電的思想,針對信號處理新增的功能,要做到軟件可重構(gòu),實(shí)現(xiàn)不同功能程序軟件的切換[2]。通過FPGA動(dòng)態(tài)多重配置,根據(jù)任務(wù)需求,分時(shí)將不同軟件功能的程序加載到FPGA,完成各自的任務(wù)。這個(gè)設(shè)計(jì)方式帶來了靈活的系統(tǒng)控制,同時(shí)也精簡了邏輯電路設(shè)計(jì)。同時(shí)還帶來了另一好處,可以使邏輯資源不夠的FPGA去實(shí)現(xiàn)需要更多資源才能實(shí)現(xiàn)的功能,提高了FPGA的資源利用率,實(shí)實(shí)在在降低了設(shè)計(jì)成本[3]。本文從基于網(wǎng)絡(luò)實(shí)現(xiàn)FPGA動(dòng)態(tài)多重配置展開工程上的探索,將從網(wǎng)絡(luò)電路設(shè)計(jì)及實(shí)現(xiàn)、FPGA多重配置設(shè)計(jì)及實(shí)現(xiàn)、如何通過網(wǎng)絡(luò)觸發(fā)FPGA動(dòng)態(tài)多重配置展開論述,對實(shí)現(xiàn)復(fù)雜電路設(shè)計(jì)具有一定參考意義。
1? 基于WIZ811MJ的網(wǎng)絡(luò)設(shè)計(jì)及實(shí)現(xiàn)
1.1? WIZ811MJ概述
WIZ811MJ為直插式網(wǎng)絡(luò)集成芯片,內(nèi)部集成了含TCP/IP芯片和PHY的W5100,帶變壓器RJ45的其他膠合邏輯MAG-JACK。WIZ811MJ可以作為一個(gè)獨(dú)立的集成芯片使用,不需要考慮W5100、變壓器、RJ45等電路與接口設(shè)計(jì)[4]。在需要快速開發(fā)網(wǎng)絡(luò)應(yīng)用的場合,WIZ811MJ芯片可以充當(dāng)性價(jià)比高的選擇方案。WIZ811MJ主要技術(shù)特點(diǎn)總結(jié)如下:
1)支持10/100 BASE TX、支持半/全雙工、支持自動(dòng)協(xié)商和自動(dòng)交叉檢測。
2)工作電壓為3.3 V,可以承受5 V I/O信號。
3)支持網(wǎng)絡(luò)狀態(tài)指示器LED-全雙工,TX,RX,連接等。
4)支持的內(nèi)置硬件互聯(lián)網(wǎng)絡(luò)協(xié)議包含TCP、IP Ver.4、UDP,ICMP、ARP,PPPoE,IGMP等。
5)同時(shí)支持4個(gè)獨(dú)立連接。
6)支持8位數(shù)據(jù)總線和SPI接口,支持直接/間接模式總線訪問、支持接口API供應(yīng)用程序開發(fā)。
WIZ811MJ外形圖如圖1所示。
1.2? WIZ811MJ電路設(shè)計(jì)
WIZ811MJ共有40個(gè)引腳,包含兩列2.54 mm間距2×10排針接口,如圖1中的J1和J2所示。WIZ811MJ原理圖設(shè)計(jì)如圖2所示,除去電源和地等其他控制信號都與FPGA管腳連接。可以通過FPGA配置WIZ811MJ,實(shí)現(xiàn)網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)。
1.3? WIZ811MJ網(wǎng)絡(luò)設(shè)計(jì)及實(shí)現(xiàn)
WIZ811MJ內(nèi)含W5100芯片,利用FPGA程序通過SPI接口配置W5100芯片通信套接字的模式寄存器,可以實(shí)現(xiàn)TCP、UDP、IP-RAW和MAC-RAW等網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)通信[5]。本論文通過SPI接口,按圖3編寫FPGA狀態(tài)機(jī)程序控制W5100、實(shí)現(xiàn)UDP網(wǎng)絡(luò)協(xié)議[6]。實(shí)現(xiàn)UDP網(wǎng)絡(luò)協(xié)議的狀態(tài)機(jī)程序處理流程如圖3所示。
2? FPGA多重配置設(shè)計(jì)及實(shí)現(xiàn)
2.1? FPGA多重配置硬件設(shè)計(jì)
多重配置的硬件主要包括FPGA芯片和貯存配置文件的FLASH芯片。其中,F(xiàn)PGA選用Xilinx公司的XC5VSX50T-1ff665。Flash芯片選用XIlinx公司的BPIX16 Flash XCF128X,該芯片貯存空間為128 MB,數(shù)據(jù)位寬16 bit。實(shí)現(xiàn)多重配置需要將FPGA和外部配置儲(chǔ)存器連接為從BPI FLASH加載配置文件的模式。配置電路硬件原理圖如圖4所示。在FPGA配置模式中,M2,M1,M0為0,1,0[7]。
2.2? FPGA多重配置實(shí)現(xiàn)
FPGA在不掉電重啟的情況下,根據(jù)外部觸發(fā),具有多重配置的能力。FPGA可以根據(jù)不同時(shí)刻的任務(wù)需求,從FLASH中貯存的多版本功能程序中選擇加載對應(yīng)版本的程序,實(shí)現(xiàn)系統(tǒng)功能的切換。FPGA實(shí)現(xiàn)多重配置是利用ICAP(Internal Configuration Access Port)端口配置一序列IPROG(Internal Program)命令來實(shí)現(xiàn)的。在Xilinx系列的FPGA中,ICAP是指內(nèi)部配置訪問端口,為Xilinx內(nèi)部原語。IPROG命令配置后的效果是拉低FPGA的INIT_B和DONE信號,觸發(fā)FPGA開啟初始化流程,如同在FPGA硬件引腳PROGRAM_B產(chǎn)生一個(gè)復(fù)位脈沖。完成復(fù)位操作后,加載貯存在熱啟地址寄存器(Warm Boot Start Address, WB-STAR)中的程序[8,9]。
目前為止,ICAP共有三個(gè)版本,UltraScale系列器件ICAP版本為ICAPE3原語,7序列FPGA ICAP版本為ICAPE2,7系列FPGA之前的對應(yīng)的版本為ICAP。
本文采用Xilinx V5芯片,ICAP在程序中的例化如下[10]:
ICAP_VIRTEX5 #(
.ICAP_WIDTH("X32"
)
) ICAP_VIRTEX5_inst (
.BUSY(BUSY),
.O(O),
.CE(CE),
.CLK(CLK),
.I(I),
.WRITE(WRITE)
);
端口功能描述如表1所示。
本文采用FPGA程序狀態(tài)機(jī)控制ICAP原語的方式,按照一定順序的IPROG命令連續(xù)對ICAP原語進(jìn)行配置,完成FPGA程序多重配置的實(shí)現(xiàn)。
IPROG序列命令具體的配置數(shù)據(jù)及含義如表2所示。
ICAP狀態(tài)機(jī)流程如圖5所示,以及Send IPROG具體步驟如圖6所示。
3? ?基于網(wǎng)絡(luò)的FPGA多重配置實(shí)現(xiàn)
3.1? ?網(wǎng)絡(luò)控制命令設(shè)計(jì)
考慮設(shè)計(jì)的信號處理板具有網(wǎng)絡(luò)功能以及板載FPGA具有多重配置功能,通過網(wǎng)絡(luò)控制命令,有機(jī)地結(jié)合二者的功能。通過上位機(jī)下發(fā)網(wǎng)絡(luò)控制命令,解析事先設(shè)計(jì)好的控制命令,觸發(fā)FPGA程序中的狀態(tài)機(jī),動(dòng)態(tài)使能FPGA多重配置功能,完成不同功能版本程序的切換。
在工程項(xiàng)目中事先設(shè)計(jì)好的控制命令,按16進(jìn)制表示,如表3所示。
通過解析表3報(bào)文中類別號的值為2F以及版本號字段,觸發(fā)FPGA狀態(tài)機(jī)完成相應(yīng)程序多重配置。
通過往上位機(jī)周期上報(bào)設(shè)計(jì)好的版本號自檢信息驗(yàn)證功能版本程序是否正確切換,周期上報(bào)命令如表4所示。
通過查看版本號的值是否和設(shè)計(jì)一致,驗(yàn)證程序多重配置的正確性。
3.2? 板級驗(yàn)證
本文設(shè)計(jì)兩個(gè)功能程序,鑒于FLASH型號為BPI X16,地址空間為0x00000000~0x007FFFFF,其一功能程序?yàn)槟J(rèn)啟動(dòng)程序,首地址固定為0x00000000,版本號記為01;其二功能程序首地址設(shè)計(jì)為0x00400000,版本號為02。整個(gè)動(dòng)態(tài)多重配置功能是FPGA上電默認(rèn)自動(dòng)從外部BPI FLASH加載版本號為01的默認(rèn)功能程序;當(dāng)任務(wù)切換時(shí),通過上位機(jī)下發(fā)一條表X網(wǎng)絡(luò)控制命令觸發(fā)FPGA開始重新配置,切換為版本號為02的功能程序。再次下發(fā)程序版本號01的切換命令,程序切換成功后,加載版本號為01的默認(rèn)功能程序。
按照上述步驟,得到的結(jié)果圖如圖7所示。從圖7中周期上報(bào)的程序版本號可知,處理板上電時(shí),啟動(dòng)的是版本號為01的默認(rèn)程序。通過表3的控制指令,F(xiàn)PGA啟動(dòng)版本號02的功能程序,再通過表3的控制指令,F(xiàn)PGA重新回退到默認(rèn)啟動(dòng)程序。其中,信號處理板中的IP地址為10.1.1.104,端口號為5000,上位機(jī)的IP地址為10.1.1.100,端口號為5004。板級驗(yàn)證的結(jié)果符合預(yù)期結(jié)果,程序跳轉(zhuǎn)功能正常,F(xiàn)PGA動(dòng)態(tài)多重配置正確。
4? 結(jié)? 論
本文提出了一種基于WIZ811MJ的FPGA動(dòng)態(tài)多重配置的設(shè)計(jì)及實(shí)現(xiàn)方法,選擇了一款可以簡單和快速設(shè)計(jì)網(wǎng)絡(luò)功能的芯片WIZ811MJ,配合FPGA的驅(qū)動(dòng)程序,方便快捷的實(shí)現(xiàn)網(wǎng)絡(luò)功能。通過上位機(jī)發(fā)送網(wǎng)絡(luò)控制命令,觸發(fā)FPGA狀態(tài)機(jī)控制ICAP讀寫,動(dòng)態(tài)地實(shí)現(xiàn)FPGA程序的多重加載。該方案省去了PHY芯片、網(wǎng)絡(luò)變壓器,RJ45,W5100等硬件設(shè)計(jì),大大縮短了項(xiàng)目開發(fā)周期,降低了難度。通過網(wǎng)絡(luò)控制FPGA程序多重加載,具有很強(qiáng)的操作性和靈活性,避免了重復(fù)燒寫程序的尷尬處境,具有很高的工程應(yīng)用價(jià)值,對實(shí)現(xiàn)復(fù)雜電路設(shè)計(jì)具有參考意義。
參考文獻(xiàn):
[1] 何賓,張艷輝.Xilinx FPGA 數(shù)字信號處理系統(tǒng)設(shè)計(jì)指南:從HDL、Simulink和HLS的實(shí)現(xiàn) [M].北京:電子工業(yè)出版社,2019.
[2] 孟憲元.FPGA現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)教程:基于Xilinx可編程邏輯器件與Vivado平臺(tái) [M].北京:清華大學(xué)出版社,2019.
[3] 白云鵬,陳應(yīng)兵,李凱,等.FPGA動(dòng)態(tài)配置技術(shù)在復(fù)雜電磁環(huán)境模擬系統(tǒng)中的應(yīng)用 [J].電子質(zhì)量,2021(4):108-111.
[4] WIZnet Inc.WIZ811MJ Datasheet Ver.1.1 [EB/OL].[2023-01-08].http://docs.wiznet.io/Product/ioModule/wiz811mj#datasheet.
[5] WIZnet Inc.W5100 DataSheet Version 1.2.8 [EB/OL].[2023-01-23].http://docs.wiznet.io/img/products/w5100/W5100_DS_V128E.pdf.
[6] 武振寧,吳凡.基于W5100的嵌入式網(wǎng)絡(luò)通信系統(tǒng) [J].電子元器件應(yīng)用,2012,14(8):34-35+65.
[7] Xilinx Inc.7 Series FPGAs Configuration User Guide V1.16 UG470 [EB/OL].[2023-01-01].https://docs.xilinx.com/r/en-US/ug470_7Series_Config.
[8] 曹慧,程宏斌,汪洋,等.FPGA多重配置在LED顯示控制系統(tǒng)中的應(yīng)用 [J].液晶與顯示,2020,35(5):456-463.
[9] Xilinx Inc.MultiBoot with 7 Series FPGAs and SPI V1.1 XAPP1247 [EB/OL].[2023-02-04].https://docs.xilinx.com/v/u/en-US/xapp1247-multiboot-spi.
[10] Xilinx Inc.Virtex-5 Libraries Guide for HDL Designs V 14.5 UG621 [EB/OL].[2023-01-20].https://www.amd.com/zh-cn/search/site-search.html#q=ug621.
作者簡介:安健(1987—),男,漢族,四川德陽人,工程師,碩士研究生,研究方向:雷達(dá)信號與信息處理。
收稿日期:2023-02-14