安健 何敏 朱丹
摘 要:随着FPGA在雷达、通信领域等信号处理的广泛应用,FPGA资源成为限制信号处理算法工程应用的瓶颈。如何实现FPGA资源利用的最大化,成为工程上急需解决的问题。文章采用一种网络控制命令触发FPGA完成多重配置的方法,实现不同功能程序的切换。通过在信号处理板上的工程验证,该方法具有可操作性、灵活有效,解决了实现不同程序需要重复烧写程序的烦琐步骤,节省了人力物力。同时可用较少的逻辑资源完成需要更多逻辑资源才能实现的算法功能,提高了FPGA的资源利用率,降低了硬件设计的复杂性,在工程應用上具有很大的参考意义。
关键词:WIZ811MJ;多重配置;现场可编程门阵列;内部配置访问端口
中图分类号:TP301;TN791 文献标识码: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 引 言
在雷达、通信领域,信号处理技术日新月异,各种信号处理算法在FPGA中工程实现,对FPGA中的逻辑资源需求提出了更高的要求[1]。当集成不同的软件功能时,将会面临逻辑设计复杂和逻辑资源不足的问题。如果把几个不同软件功能程序集成到同一FPGA上,随着FPGA逻辑设计规模的增加,程序的复杂性有所增加,同时无法保证几个软件功能程序的数据通路及所使用的逻辑资源不会产生冲突。如果能,将会额外增加复杂的控制逻辑,影响整个程序的运行效率,同时增加了程序开发难度和工作量。而信号处理设备经设计定型完成,具有固定的硬件架构、固定数量的FPGA资源,无法新增硬件来实现新增的软件功能。应用软件无线电的思想,针对信号处理新增的功能,要做到软件可重构,实现不同功能程序软件的切换[2]。通过FPGA动态多重配置,根据任务需求,分时将不同软件功能的程序加载到FPGA,完成各自的任务。这个设计方式带来了灵活的系统控制,同时也精简了逻辑电路设计。同时还带来了另一好处,可以使逻辑资源不够的FPGA去实现需要更多资源才能实现的功能,提高了FPGA的资源利用率,实实在在降低了设计成本[3]。本文从基于网络实现FPGA动态多重配置展开工程上的探索,将从网络电路设计及实现、FPGA多重配置设计及实现、如何通过网络触发FPGA动态多重配置展开论述,对实现复杂电路设计具有一定参考意义。
1 基于WIZ811MJ的网络设计及实现
1.1 WIZ811MJ概述
WIZ811MJ为直插式网络集成芯片,内部集成了含TCP/IP芯片和PHY的W5100,带变压器RJ45的其他胶合逻辑MAG-JACK。WIZ811MJ可以作为一个独立的集成芯片使用,不需要考虑W5100、变压器、RJ45等电路与接口设计[4]。在需要快速开发网络应用的场合,WIZ811MJ芯片可以充当性价比高的选择方案。WIZ811MJ主要技术特点总结如下:
1)支持10/100 BASE TX、支持半/全双工、支持自动协商和自动交叉检测。
2)工作电压为3.3 V,可以承受5 V I/O信号。
3)支持网络状态指示器LED-全双工,TX,RX,连接等。
4)支持的内置硬件互联网络协议包含TCP、IP Ver.4、UDP,ICMP、ARP,PPPoE,IGMP等。
5)同时支持4个独立连接。
6)支持8位数据总线和SPI接口,支持直接/间接模式总线访问、支持接口API供应用程序开发。
WIZ811MJ外形图如图1所示。
1.2 WIZ811MJ电路设计
WIZ811MJ共有40个引脚,包含两列2.54 mm间距2×10排针接口,如图1中的J1和J2所示。WIZ811MJ原理图设计如图2所示,除去电源和地等其他控制信号都与FPGA管脚连接。可以通过FPGA配置WIZ811MJ,实现网络协议的实现。
1.3 WIZ811MJ网络设计及实现
WIZ811MJ内含W5100芯片,利用FPGA程序通过SPI接口配置W5100芯片通信套接字的模式寄存器,可以实现TCP、UDP、IP-RAW和MAC-RAW等网络协议的数据通信[5]。本论文通过SPI接口,按图3编写FPGA状态机程序控制W5100、实现UDP网络协议[6]。实现UDP网络协议的状态机程序处理流程如图3所示。
2 FPGA多重配置设计及实现
2.1 FPGA多重配置硬件设计
多重配置的硬件主要包括FPGA芯片和贮存配置文件的FLASH芯片。其中,FPGA選用Xilinx公司的XC5VSX50T-1ff665。Flash芯片选用XIlinx公司的BPIX16 Flash XCF128X,该芯片贮存空间为128 MB,数据位宽16 bit。实现多重配置需要将FPGA和外部配置储存器连接为从BPI FLASH加载配置文件的模式。配置电路硬件原理图如图4所示。在FPGA配置模式中,M2,M1,M0为0,1,0[7]。
2.2 FPGA多重配置实现
FPGA在不掉电重启的情况下,根据外部触发,具有多重配置的能力。FPGA可以根据不同时刻的任务需求,从FLASH中贮存的多版本功能程序中选择加载对应版本的程序,实现系统功能的切换。FPGA实现多重配置是利用ICAP(Internal Configuration Access Port)端口配置一序列IPROG(Internal Program)命令来实现的。在Xilinx系列的FPGA中,ICAP是指内部配置访问端口,为Xilinx内部原语。IPROG命令配置后的效果是拉低FPGA的INIT_B和DONE信号,触发FPGA开启初始化流程,如同在FPGA硬件引脚PROGRAM_B产生一个复位脉冲。完成复位操作后,加载贮存在热启地址寄存器(Warm Boot Start Address, WB-STAR)中的程序[8,9]。
目前为止,ICAP共有三个版本,UltraScale系列器件ICAP版本为ICAPE3原语,7序列FPGA ICAP版本为ICAPE2,7系列FPGA之前的对应的版本为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程序状态机控制ICAP原语的方式,按照一定顺序的IPROG命令连续对ICAP原语进行配置,完成FPGA程序多重配置的实现。
IPROG序列命令具体的配置数据及含义如表2所示。
ICAP状态机流程如图5所示,以及Send IPROG具体步骤如图6所示。
3 基于网络的FPGA多重配置实现
3.1 网络控制命令设计
考虑设计的信号处理板具有网络功能以及板载FPGA具有多重配置功能,通过网络控制命令,有机地结合二者的功能。通过上位机下发网络控制命令,解析事先设计好的控制命令,触发FPGA程序中的状态机,动态使能FPGA多重配置功能,完成不同功能版本程序的切换。
在工程项目中事先设计好的控制命令,按16进制表示,如表3所示。
通过解析表3报文中类别号的值为2F以及版本号字段,触发FPGA状态机完成相应程序多重配置。
通过往上位机周期上报设计好的版本号自检信息验证功能版本程序是否正确切换,周期上报命令如表4所示。
通过查看版本号的值是否和设计一致,验证程序多重配置的正确性。
3.2 板级验证
本文设计两个功能程序,鉴于FLASH型号为BPI X16,地址空间为0x00000000~0x007FFFFF,其一功能程序为默认启动程序,首地址固定为0x00000000,版本号记为01;其二功能程序首地址设计为0x00400000,版本号为02。整个动态多重配置功能是FPGA上电默认自动从外部BPI FLASH加载版本号为01的默认功能程序;当任务切换时,通过上位机下发一条表X网络控制命令触发FPGA开始重新配置,切换为版本号为02的功能程序。再次下发程序版本号01的切换命令,程序切换成功后,加载版本号为01的默认功能程序。
按照上述步骤,得到的结果图如图7所示。从图7中周期上报的程序版本号可知,处理板上电时,启动的是版本号为01的默认程序。通过表3的控制指令,FPGA启动版本号02的功能程序,再通过表3的控制指令,FPGA重新回退到默认启动程序。其中,信号处理板中的IP地址为10.1.1.104,端口号为5000,上位机的IP地址为10.1.1.100,端口号为5004。板级验证的结果符合预期结果,程序跳转功能正常,FPGA动态多重配置正确。
4 结 论
本文提出了一种基于WIZ811MJ的FPGA动态多重配置的设计及实现方法,选择了一款可以简单和快速设计网络功能的芯片WIZ811MJ,配合FPGA的驱动程序,方便快捷的实现网络功能。通过上位机发送网络控制命令,触发FPGA状态机控制ICAP读写,动态地实现FPGA程序的多重加载。该方案省去了PHY芯片、网络变压器,RJ45,W5100等硬件设计,大大缩短了项目开发周期,降低了难度。通过网络控制FPGA程序多重加载,具有很强的操作性和灵活性,避免了重复烧写程序的尴尬处境,具有很高的工程应用价值,对实现复杂电路设计具有参考意义。
参考文献:
[1] 何宾,张艳辉.Xilinx FPGA 数字信号处理系统设计指南:从HDL、Simulink和HLS的实现 [M].北京:电子工业出版社,2019.
[2] 孟宪元.FPGA现代数字系统设计教程:基于Xilinx可编程逻辑器件与Vivado平台 [M].北京:清华大学出版社,2019.
[3] 白云鹏,陈应兵,李凯,等.FPGA动态配置技术在复杂电磁环境模拟系统中的应用 [J].电子质量,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的嵌入式网络通信系统 [J].电子元器件应用,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显示控制系统中的应用 [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—),男,汉族,四川德阳人,工程师,硕士研究生,研究方向:雷达信号与信息处理。
收稿日期:2023-02-14