作者:Albert Wei,来源:Ingdan FPGA微信公众号
1、概述
在实际应用中有很多FPGA板卡离工程师是有一定的距离,导致升级FPGA的mcs文件需要到现场,这样不方便也浪费时间。为此我们实现了基于通用网络传输方式来做远程升级的方案。此方案框图如下所示,本方案硬件平台基于米联客KU040FA板卡来做实现,当然此方案适用Xilinx的其他型号FPGA芯片。在Vivado工程上面例化了一个MircoBlaze核作为TCP/IP 数据传输的承载,在PC端将升级的bin文件分割成1024大小的块进行传输,此大小可以根据具体需要通过宏进行调整,每个数据块在传输前会进行CRC计算并将值随数据流一并发出来保证每个包传输的正确性,在FPGA端接收到数据块进行CRC校验并比对,如果正确则进行QSPI写入来完成升级。
2、FPGA内部功能模块
FPGA内部主要使用的IP模块包括MicroBlaze,axi_qspi和axi_ethernet等:
A、 MicroBlaze:主要实现LWIP、QSPI控制器等工作;
图1:新建一个的MircoBlaze的Platform
图2:基于platform新建一个lwipserver的application
注:需要在BoardSupport Package→Modify BSP Settings中增加lwip package的支持。
B、Axi_ethernet:主要实现FPGA板卡跟PC直接通信;
C、Axi_Qspi:主要实现对QSPI flash读写操作。
图3:移植xapp1280中的Qsqi驱动部分到此application project中
注:注释掉原来main函数,并抽象出主要接口函数到xspi_dev.h中。
3、嵌入式软件设计
嵌入式部分工程完成了QSPI flash的初始化及基于LWIP使用TCP/IP作为server端的监听,Server端的默认IP和Port为192.168.1.10:5001,工程还完成了多个数据包的拼接及CRC的校验等功能。
下图为C代码运行流程图:
4、上位机软件设计
上位机软件使用QT设计,主要功能有网络连接测试测试板卡是否在线,及升级包进行分割和CRC计算后进行传输。
此工程包含如下几个设计部分,经过测试可以正常工作。
此方案我们是可以提供一整套参考设计。如果需要请联系我们。
simonyang@comtech.com.cn
charlesxu@comtech.com.cn