一种基于网络的FPGA远程调试加载方法
摘要
关键词
FPGA;远程调试;远程加载;网络
正文
一、引言
近年来,FPGA(现场可编程逻辑门阵列)技术发展迅速,凭借着高度的灵活性,越来越受欢迎,在军事、航空航天、通信、工业、人工智能等领域均得到广泛应用,已俨然成为数字系统的核心。FPGA的基本结构包括可编程输入输出单元,可配置逻辑块,数字时钟管理模块,嵌入式块RAM,布线资源,内嵌专用硬核,底层内嵌功能单元;FPGA最大特点是可编程,通过HDL(硬件描述语言)重新“编程”,实现FPGA性能优化或功能改变。
在以FPGA为核心的简单的系统中,对其中的FPGA的调试、加载都是通过传统的USB-JTAG(Universal Serial Bus – Joint Test Action Group)来完成的[1],这在产品初始阶段非常适用,然而在实际工程应用中特别是军用电子设备,各种产品组装成一个庞杂的系统时,使用FPGA的数量非常多,如需对系统的多个FPGA进行调试、加载、更新时,常规的调试、加载方式就显得极其不方便,在架构和效能方面都有很大的限制,形成在FPGA 调试和加载中效率的瓶颈节点。
二、传统加载模式及缺点
目前采用的传统架构FPGA调试方式包括平台板卡、FPGA USB Cable、调试 PC 机(运行ISE、VIVADO等调试软件)几个部分组成,FPGA 器件与USB Cable之间采用排线以插针的方式连接,USB Cable与调试PC 机之间以USB线连接;针对这种调试架构和方式,存在以下几个缺点:
a) 由于传统USB下载线缆通过PC端USB接口供电,根据USB特性,在线长超过1.5米后电平和时种信号衰减严重,造成连接不稳定等问题。
b) FPGA固件程序固化速率慢。
c) 单次只能调试一个目标FPGA:目前方式下的USB下载线缆采用一对一的方式,如不经过复杂的电路设计很难做到同时调试多个目标 FPGA。
d) 受调试环境限制较大,整机装配后再调试困难。
e) 无法实现远程调试加载电路。
三、优化后远程调试加载系统设计
3.1硬件设计
在单模块中加入一片专用加载芯片(MCU),可以实现通过以太网的方式对 FPGA 、DSP等器件的远程加载功能,同时具备远程在线调试的功能。
该方案下的加载方式,只需要按固定的参考电路把专用加载处理芯片(MCU)加入到单板或整机设计中,就可以以网络方式实现对 FPGA 器件的调试和更新功能, MCU微控制器通过模拟JTAG接口的时序对FPGA进行配置,针对多片FPGA进行远程调试加载的系统框图如图 1.
系统硬件电路主要由MCU微控制器、FPGA电路、JTAG链路模块、SPI电路组成。MCU选择海威华芯公司的HHD1705001芯片,一端通过网络与PC终端连接,另一端通过JTAG接口传输JTAG配置时序,多片FPGA的JTAG采用菊花链的方式串联在一起,实现多片同时远程调试加载。
远程调试加载时,PC端使用XILINX公司的CHIPSCOPE、IMPACT、VIVADO工具将包含配置的指令通过网络发送给MCU,MCU根据XVC协议接收指令并模拟产生JTAG时序,FPGA芯片接收该时序并完成调试加载。
HHD1705001芯片是内嵌 ARM Cortex™ M3 核的32位高性能通用微控制器[2]。 它采用 ARM 高性能双总线架构。其中内核最高工作频率可达72MHz,内置支持 32 位单周期硬件 乘法运算。先进的ARM Thrum指令集技术, 使HHD1705001指令更加精简,易于程序的设计和调试。
3.2软件设计
3.2.1 XVC协议
XVC协议是XILINX公司推出额一款基于TCP/IP的虚拟线缆[3],它可以起到类似与JTAG线缆的作用,允许使用者通过网络直接访问FPGA的JTAG接口,并且可对FPGA进行高效率的远程调试和加载。Xilinx 针对此协议提出一套基本的参考协议,使用户充分发挥自身应用特点,通过其灵活的扩展性和可靠的安全连接,通过编程可用于不同平台。
3.2.2 MCU软件
本方案使用基于JTAG的配置方式,HHD1705001作为实现XVC的控制器,由HHD1705001的通用I/O管脚模拟JTAG接口的TCK、TMS、TDI、TDO。远程加载时,FPGA中需要加载一段程序用于引导自身程序的固化。通过事件触发切换将 SPI Flash引脚连接到 MCU的SPI接口,实现SPI Flash与MCU的网络下载链路,当 MCU 完成对SPI Flash 的写操作后自动触发FPGA 的加载 Flash 链路,实现Flash 的正常启动电路,同时给 FPGA 器件触发复位信号实现启动。经过对 XVC 协议的充分分析和优化,并优化HHD1705001 底层机制,采用软硬件结构的方式,优化相应的指令,使 HHD1705001芯片及优化后的XVC协议形成稳固的整体系统。
四、远程调试加载
利用VIVADO调试工具,打开Open Hardware Manager选择Open target,在“local host”右健选择 “Add Xilinx Virtual Cable” 输入目标IP,“192.168.2.198”为MCU的IP,需根据实际IP更改;“2542”为端口号,无需更改。如图 2所示,可直接进行调试加载。
五、结论
综上所述,本方案基于XILINX的XVC协议,利用PC端与MCU通过以太网通信,成功实现了对FPGA的远程调试和加载。本方案只需一片专用加载处理芯片,无需其它额外的附加电路,此远程调试加载方案优势如下:
a) 调试和更新距离不受限制,因采用以太网接口,用户可以在很远距离内实现以IP的方式对目标 FPGA 的调试和加载。
b) MCS和BIN文件固化速度快,因整个加载链路是通过网络数据传输,静态加载芯片以经过硬件优化的 SPI 接口高速将 MCS /BIN文件写入到 Flash 中,速率可达到 4MB/s,对照下载 XC7K325T(XILINX公司的FPGA型号)芯片 BIN文件只需要 3分钟左右。
c) 整体远程调试加载方法采用以太网的方式,从客户端来看,每个FPGA器件是以IP的形式连接,可以遵循以太网协议实现组网,通过路由器或交换机形成网络结构,对矩阵式设备的不移动、不拆卸调试。
在其它系统中应用时,可直接将此方法移植,方便可靠。随着电子设备的发展推进,通过网络进行FPGA的远程调试加载将变得更加普遍。
参考文献:
[1] 边界扫描测试技术发展综述,中国知网,2017
[2] HHD1705001网络传输专用处理电路产品手册,海威华芯,2018
[3]Xilinx Virtual Cable Running on Zynq-7000 Using the Tools, Xilinx,2015
...