news 2026/5/1 8:34:46

FPGA以太网升级程序:QSPI Flash升级,无需额外电路与内存,支持写入校验功能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FPGA以太网升级程序:QSPI Flash升级,无需额外电路与内存,支持写入校验功能

fpga 以太网升级程序。 升级qspi flash,无需增加外部电路,无需内存,方便实用,具备写入校验功能。 确保正确性,适用xilinx fpga,7系列适合a7和k7 提供fpga,上位机源码,操作方法。

一、概述

以太网升级FPGA程序方案,实现了通过PC机经串口将更新文件传输至FPGA,由FPGA内部Microblaze软核接收数据后写入QSPI Flash的核心功能,同时具备数据回读比较机制,大幅提升了烧写过程的安全性与可靠性。该方案涵盖FPGA底层逻辑设计、Microblaze软核编程、上位机控制程序开发等多个技术模块,形成了一套完整的FPGA程序远程升级解决方案,适用于需要频繁更新FPGA程序且对升级安全性有要求的工业控制、嵌入式系统等应用场景。

二、开发环境说明

本方案的开发工具版本经过严格适配,确保各模块间的兼容性,具体版本如下:

  • FPGA开发工具:VIVADO 2019.2,用于FPGA底层逻辑搭建、IP核配置及top.bit文件生成;
  • 上位机开发工具:Visual Studio 2019,用于编写PC机控制程序,实现文件读取、命令下发及升级流程管控;
  • Microblaze开发工具:Vitis IDE 2019.2,用于Microblaze软核应用程序开发,生成elf文件,实现与QSPI Flash、以太网IP核的交互。

三、核心代码模块功能解析

(一)FPGA代码模块

FPGA代码的核心是搭建基于Microblaze的软核ARM系统,并通过axiquadspi核实现与QSPI Flash的读写控制。axiquadspi核作为FPGA与QSPI Flash之间的通信桥梁,提供了标准的SPI接口时序,支持对QSPI Flash的高速读写操作。通过VIVADO工具进行IP核配置,将axiquadspi核与Microblaze软核通过AXI总线互联,使Microblaze能够通过总线指令控制QSPI Flash的擦除、写入、读取等操作,为后续程序升级奠定硬件基础。

(二)Microblaze代码模块

Microblaze代码是整个升级方案的核心控制单元,主要负责axiquadspi核操作、以太网MAC通讯及与PC机的指令交互,具体功能函数如下:

1. axi_quad_spi IP核操作函数
  • erase_flash()函数:实现QSPI Flash的格式化功能,在写入新程序前清除指定存储区域的数据,避免旧数据干扰;
  • write_flash()函数:接收PC机传输的程序数据,按照QSPI Flash的写入时序,将数据逐字节或按块写入Flash存储单元;
  • read_flash()函数:从QSPI Flash指定地址读取数据,用于数据回读比较及程序验证;
  • readflashid()函数:读取QSPI Flash的设备ID,用于识别Flash芯片型号,确保与预设的芯片配置匹配,同时该函数必须调用1次,以启动axiquadspi IP核;
  • data_compare()函数:将写入Flash的数据与PC机下发的原始数据进行逐字节比对,验证数据写入的准确性,若比对不一致则反馈校验错误信息,提升烧写安全性。
2. 以太网IP核操作函数
  • eer_common()函数:当接收到PC机的错误命令或执行过程中出现异常时,向PC机反馈错误信息,便于上位机定位问题;
  • complete_common()函数:在完成Flash擦除、写入等关键操作后,向PC机发送操作完成指令,告知上位机进入下一流程;
  • true_common()函数:当数据接收正确、指令执行无误时,向PC机发送数据正确确认信号,确保通信链路的可靠性。

(三)PC机代码模块

PC机代码主要实现程序文件的读取、升级流程控制及与Microblaze的指令交互,是升级操作的发起端和控制中心,核心函数如下:

  • hardwareresetcommand()函数:向Microblaze发送复位命令,触发FPGA内部寄存器初始化,为升级操作做准备;
  • erase_command()函数:向Microblaze下发Flash擦除命令,启动Flash格式化流程;
  • readbinto_buffer()函数:读取待升级的bin格式程序文件到PC机内存,并获取文件长度信息,为后续数据传输和长度校验提供依据;
  • write_command()函数:向Microblaze发送Flash写命令,控制程序数据的传输与写入过程;
  • lan_loop()函数:负责以太网通信的循环处理,包括指令发送、响应接收、数据传输等,确保PC机与FPGA之间的通信稳定。

四、PC机与Microblaze通讯协议详解

PC机与Microblaze之间通过约定的串口指令协议进行通信,协议涵盖复位、数据长度确认、Flash擦除、数据写入等全流程指令,确保升级操作的有序执行,具体指令规范如下:

(一)通讯流程

  1. PC机运行updateflashlan_app.exe程序,首先发送复位命令;
  2. Microblaze接收复位命令后初始化内部寄存器,反馈复位完成或错误信号;
  3. PC机读取待升级文件到内存并获取文件长度,发送数据长度命令;
  4. Microblaze接收数据长度后反馈确认信息,若长度异常则反馈错误;
  5. PC机发送Flash擦除命令,Microblaze执行擦除操作并实时反馈进度,擦除完成后发送完成信号;
  6. PC机收到擦除完成信号后,发送Flash写命令,开始传输程序数据;
  7. Microblaze接收数据并写入Flash,反馈写入进度,写入完成后进行数据校验;
  8. 校验完成后,Microblaze向PC机反馈校验结果,整个升级流程结束。

(二)指令格式说明

序号PC机命令PC机命令代码(字节)Microblaze命令Microblaze命令代码(字节)备注
1复位0x55,0xaa,0xaa,0x55,0x55,0xaa,0xaa,0x55,0x55,0xaa,0xaa,0x55--共12字节,用于触发FPGA复位
2--复位完成0xaa1字节,确认复位成功
3--复位错误0x7e1字节,提示复位失败
4数据长度0x55,0xaa,0xaa,0x55,0x01,0x01,Xx,xx,xx--共9字节,后3字节为文件长度数据
5--数据长度反馈0xaa,Xx,xx,xx4字节,0xaa为确认位,后3字节为接收的长度数据
6--数据长度错误0x7e1字节,提示长度接收异常
7擦除0x55,0xaa,0xaa,0x55,0x02,0x02--共6字节,触发Flash擦除
8--擦除反馈进度0xaa1字节,实时反馈擦除进度(多次发送)
9--擦除反馈完成0x551字节,确认擦除完成
10--擦除反馈错误0x7e1字节,提示擦除失败
11写数据0x55,0xaa,0xaa,0x55,0x03,0x03--共6字节,启动数据写入
12写完成0x55,0xaa,0xaa,0x55,0x04,0x04--共6字节,告知数据传输完毕
13--写反馈进度0xaa1字节,实时反馈写入进度(多次发送)
14--校验错误反馈0x7e1字节,提示数据写入与原始数据不一致

五、关键文件生成与烧写流程

(一)download.bit文件生成

download.bit文件是FPGA可直接执行的程序文件,由FPGA生成的top.bit文件与Microblaze生成的updateflashlanfpgaapp.elf文件合成,生成步骤如下:

  1. 打开Vitis IDE软件,在菜单栏中选择“Xilinx”->“Program FPGA”;
  2. 在弹出的配置窗口中,项目选择updateflashlanfpgaapp,连接方式设为Local;
  3. 自动载入Bitstream文件(路径:ide/bitstream/top.bit)和BMM/MMI文件(ide/bitstream/top.mmi);
  4. 在Software Configuration中,手动选择Microblaze0处理器对应的ELF文件(debug/updateflashlanfpgaapp.elf);
  5. 取消“Skip Revision Check”选项,点击“Generate”生成download.bit文件,生成后的文件路径为:\sdk\updateflashlanfpgaapp\_ide\bitstream。

(二)以太网烧写download.bit文件

  1. 准备工作:将生成的download.bit文件拷贝至updateflashlanapp\x64\Release目录下,该目录需包含updateflashlanapp.exe(上位机执行程序)和updateflashlan_app.pdb(调试文件);
  2. 网络配置:确保PC机IP地址设置为172.20.20.2,板卡IP地址为172.20.20.100,且PC机网络速率调整为100M(仅支持100M以太网);
  3. 连接测试:在PC机命令行中执行“ping 172.20.20.100 -t”,确认PC机与板卡网络连通,连通后停止ping命令;
  4. 启动烧写:进入updateflashlanapp\x64\Release目录,执行命令“.\updateflashlanapp.exe”,启动烧写流程;
  5. 烧写过程:程序会自动执行硬件复位、Flash擦除、数据写入、数据校验等操作,过程中会打印各步骤状态(如“hardware_reset completed”“Flash erase completed”等);
  6. 完成重启:烧写完成后,断电重启板卡,新程序即可生效。

(三)板卡第一次烧写方法

新生产的板卡内部未固化任何程序,不支持以太网升级,需通过仿真器烧写初始程序,步骤如下:

  1. 按照“download.bit文件生成”步骤获取合成后的download.bit文件;
  2. 打开Vitis IDE,选择“Xilinx”->“Program Flash”;
  3. 配置项目、连接方式和设备(自动检测),在Image File中选择download.bit文件;
  4. Flash Type选择板卡对应的硬件Flash芯片型号(如mt25ql128-spi-x1x2x4);
  5. 勾选“Verify after flash”(烧写后验证)和“Blank check after erase”(擦除后空白检查),点击“Program”开始烧写;
  6. 烧写过程中板卡不可断电,若意外断电,需重新通过仿真器烧写。

六、Vitis环境搭建及ELF文件生成

(一)环境搭建步骤

  1. 在FPGA工程目录下新建SDK文件夹,将VIVADO生成的top.bit(FPGA逻辑文件)和top.xsa(硬件描述文件)拷贝至该文件夹;
  2. 启动Vitis IDE,工作空间选择SDK文件夹路径;
  3. 点击“Create Platform Project”创建平台工程,导入硬件参数文件(top.xsa);
  4. 平台工程创建完成后,点击“Create Application Project”创建应用工程,选择“Empty Application”(空工程);
  5. 将Microblaze相关C代码(main.c、platform.c、qspi.h等)拷贝至\updateflashlanfpga\sdk\updateflashlanfpga_app\src目录下。

(二)ELF文件生成

在Vitis IDE中,右键点击应用工程updateflashlanfpgaapp,选择“Build Project”,工具会自动编译源码并生成ELF文件,生成的ELF文件位于debug或release目录下,用于后续download.bit文件的合成。

七、注意事项与异常处理

  1. 环境兼容性:所有开发工具必须使用指定版本(VIVADO 2019.2、Visual Studio 2019、Vitis IDE 2019.2),避免版本不兼容导致的编译或烧写失败;
  2. 烧写安全:烧写过程中(尤其是第一次仿真器烧写),板卡严禁断电,否则可能导致Flash芯片损坏或程序固化失败,若断电需重新通过仿真器烧写;
  3. 代码更新:每次修改FPGA代码逻辑后,需重新搭建Vitis环境并生成ELF文件(C代码无需修改),再按照download.bit文件生成步骤重新合成,建议FPGA调试稳定后再进行合成操作,节省开发时间;
  4. 网络要求:仅支持100M以太网,PC机需手动将网络速率调整为100M,否则会导致网络通信失败;
  5. 异常处理:烧写过程中若出现网线脱落、上位机软件关闭等异常,需等待1分钟后再重新执行烧写操作,避免Flash芯片处于异常状态;
  6. 指令调用:readflashid()函数必须调用1次,否则axiquadspi IP核无法启动,导致Flash读写操作失败。

八、参考资料

  1. axiquadspi IP核使用手册:pg153-axi-quad-spi.pdf;
  2. QSPI Flash芯片手册:S25FL256SAGNFI000.pdf;
  3. Vitis IDE开发指南:Xilinx官方Vitis IDE用户手册;
  4. Vivado FPGA开发手册:Xilinx官方Vivado工具使用指南。

通过以上模块的协同工作,该以太网升级FPGA程序方案实现了高效、安全、可靠的远程升级功能,适用于各类需要灵活更新FPGA程序的嵌入式系统场景,降低了现场升级的难度和成本,提升了产品的可维护性。

fpga 以太网升级程序。 升级qspi flash,无需增加外部电路,无需内存,方便实用,具备写入校验功能。 确保正确性,适用xilinx fpga,7系列适合a7和k7 提供fpga,上位机源码,操作方法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:13:20

你认为Mac上有哪些好用独特的软件?

2026 年 1 月,在 Mac 上真正“好用且独特”的软件,大多是那些小众但极致专注、解决苹果官方没做好或没想到的痛点、交互设计惊艳的独立开发者作品。 以下是我根据当前社区(Reddit/macapps、MacRumors、Setapp、各种开发者博客)真…

作者头像 李华
网站建设 2026/4/28 1:05:20

2026年AI Agent学习计划:从框架进阶到企业应用

2026年AI Agent学习计划:从框架进阶到企业应用 2026年,AI Agent(代理)已经从“实验级玩具”演变为企业级生产力核心,据Gartner预测,超过60%的企业AI应用将集成Agent组件,但40%项目因架构、成本…

作者头像 李华
网站建设 2026/4/25 4:29:17

救命神器8个一键生成论文工具,专科生毕业论文救星!

救命神器8个一键生成论文工具,专科生毕业论文救星! 论文写作的救星,AI 工具如何改变你的学习方式 对于专科生来说,撰写毕业论文常常是一场与时间赛跑的战斗。面对繁重的写作任务和对学术规范的不熟悉,许多学生感到无从…

作者头像 李华
网站建设 2026/5/1 7:18:38

全网最全自考必备TOP9 AI论文软件测评

全网最全自考必备TOP9 AI论文软件测评 自考论文写作的“得力助手”:AI工具测评启航 随着自考人数逐年攀升,论文写作成为众多考生面临的重大挑战。从选题构思到文献整理,再到格式规范与查重修改,每一个环节都可能成为阻碍进度的“拦…

作者头像 李华