在工业测控、遥感遥测、野外设备监测等场景中,高速数据流的可靠持久化记录一直是核心痛点,传统纯嵌入式软件方案受限于CPU处理带宽,很容易出现高速场景下数据丢包、断网丢失历史数据的问题。本文基于ZYNQ PS+PL异构架构,实现一套全链路硬件加速的千兆以太网高速数据记录仪,充分发挥FPGA的高速缓存搬运能力配合ARM Linux的文件系统管理能力,实测实现连续72小时高速数据流零丢包、断网自动续存,完全满足工业现场无人值守的落地要求。
一、项目背景与设计目标
在工业现场的振动监测、雷达信号采集、高速试验台等场景,普遍需要对带宽几十到上百Mbps的连续数据流进行长时间的本地存储和网络回传,传统的通用数据记录方案存在三个核心痛点:
- 纯CPU处理易丢包:基于普通X86或ARM单片机的记录仪,高速数据流直接涌入系统总线时,很容易被进程调度、文件系统写入延迟打断,导致高频采样下出现数据丢帧,记录的原始数据缺失关键特征
- 断网数据丢失:多数低成本方案没有设计离线缓存机制,一旦现场网络中断,未上传的数据会直接丢失,无法回溯完整监测周期的历史数据
- 无人值守可靠性差:没有断电保护、自动分片、异常日志机制,工业现场长期运行容易出现存储溢出、系统卡死的问题,需要人工频繁维护
本项目完全面向工业无人值守场景设计,核心落地目标如下:
整个PL端逻辑仅占用XC7Z020不到40%的LUT资源,逻辑资源占用率低,后续还可以灵活扩展更多通道的高速数据采集接口,适配多源数据同时记录的需求。
-
支持最高100Mbps连续数据流实时写入,本地eMMC/SD卡存储,全程零丢包
-
内置独立缓存机制,断网时自动缓存数据,网络恢复后自动补传,数据不丢失
-
日志文件自动按时间分片,单文件大小可配置,避免大体积文件损坏导致全量数据丢失
-
连续运行72小时以上无死机、无异常掉盘,满足工业宽温、抗干扰要求
二、硬件系统框架设计
本系统硬件基于ZYNQ异构架构模块化搭建,全部采用工业级标准器件,设计兼容性强,可直接在现有ZYNQ开发板上快速验证迭代。
核心硬件架构组成
模块类型 核心器件 功能说明 核心控制单元 ZYNQ 7020/UltraScale+ MPSoC PL端负责高速数据流接收与跨时钟域搬运,PS端负责文件系统管理与业务交互 千兆网络单元 工业级千兆PHY芯片88E1518 实现千兆以太网物理层通信,支持10/100/1000M自适应,工业宽温-40℃~85℃ 大容量存储单元 工业级eMMC 5.1 / UHS-I SD卡 提供8G~128G不等的本地持久化存储,支持掉电保护,连续写入速度≥40MB/s 外设交互单元 状态指示灯+调试串口 实时显示网络状态、存储状态、运行告警,支持本地调试与参数配置 电源保护单元 超级电容掉电保护模块 异常断电时可维持系统继续工作200ms,完成当前数据块的写入操作,避免文件系统损坏 硬件设计关键要点
-
千兆PHY与ZYNQ之间采用RGMII接口直连,走线严格做等长处理,差分对阻抗控制在100Ω,避免高速网络信号出现相位偏差导致丢包
-
eMMC供电增加独立的电源滤波电路,存储部分和数字核心部分电源隔离,降低电源噪声对连续写入速度的影响
-
千兆网接口处增加ESD防护器件,工业现场使用时可有效抵御静电浪涌冲击,避免网络接口损坏
三、FPGA PL端逻辑设计
PL端是整个数据记录仪的高速吞吐核心,完全替代传统CPU直接轮询处理数据流的低效模式,从硬件层面保证高带宽数据的稳定传输。
-
高速数据流实时接收模块
适配RGMII千兆PHY时序,在PL端实现轻量级千兆MAC核,直接完成以太网数据包的解析、校验,过滤掉无效广播包和错误帧,只把有效的有效载荷数据向下游传递,大幅减少无效数据占用总线带宽。 -
大容量乒乓FIFO缓存模块
搭建总深度为16MB的双组乒乓FIFO,作为高速数据流的一级缓存,数据峰值突发时可以先缓存在FIFO中,避免后续存储写入的短暂延迟导致上游网络数据溢出,峰值带宽下也不会出现丢数。 -
AXI HP高速数据搬运模块
通过ZYNQ的AXI HP高性能总线,直接把FIFO中的数据DMA搬运到PS端DDR内存中,全程不需要ARM内核参与数据搬运操作,纯硬件实现的搬运带宽最高可以达到400MB/s,完全覆盖千兆网的理论峰值125MB/s带宽。 -
传输状态实时上报模块
独立实现状态寄存器组,实时记录接收到的总包数、错误包数、丢包数、传输带宽等关键指标,通过AXI Lite接口上报给PS端软件,方便上位机实时监控系统运行状态。
四、ARM PS端软件设计
PS端搭载定制化裁剪的Linux系统,剥离了不必要的系统服务和驱动,开机启动时间控制在5秒以内,聚焦核心的数据记录业务功能。
这套方案实测可以稳定在100Mbps满带宽连续写入eMMC,全程没有出现丢包、数据校验失败的问题,完全满足高速数据记录的可靠性要求。
-
底层驱动层
完成三个核心驱动的开发:- 自定义千兆MAC适配驱动:对接PL端实现的轻量级MAC核,完成数据链路层交互
- AXI HP DMA驱动:实现高速数据块的直接搬运,把PL端传入的数据直接写入DDR指定区域
- eMMC高性能存储驱动:优化块设备队列深度,开启预读机制,最大化提升连续写入速度
-
数据校验与打包层
对每一个收到的数据块增加CRC32校验,过滤掉传输过程中出现的错误数据包,再将校验后的数据按照预定义的帧格式打包,避免存储原始裸数据出现无法解析的问题。 -
核心业务层
实现三个工业级核心功能:- 本地日志自动分片:按照时间戳或单文件大小阈值自动新建日志文件,文件名附带精确时间戳,避免单文件过大损坏导致全量历史数据丢失
- 断网续存机制:网络断开时自动把待上传的数据缓存在本地DDR和eMMC预留分区,网络恢复后自动从断点位置开始补传,不需要人工干预
- 自动空间管理:实时监测eMMC剩余存储空间,空间不足时自动按照时间先后顺序删除最早期的历史文件,保证系统可以长期循环记录,不会出现存储满后停止工作的情况
-
交互层
支持通过上位机网页端或者串口完成参数配置,包括记录启停、分片大小设置、上传目标IP修改、运行状态查询等操作,适配不同工业场景的部署需求。五、全链路同步与不丢包保障方案
这套系统从硬件到软件设计了全链路的三级防护机制,从根源上避免高速场景下的数据丢失问题:
-
硬件层面带宽预留:AXI HP总线的传输带宽远高于千兆网的峰值带宽,搬运链路不会出现带宽瓶颈,数据从PL端传入DDR全程不会出现溢出。
-
三级缓存架构:PL端乒乓FIFO做一级突发缓存,DDR大内存做二级连续缓存,eMMC持久化存储做三级落盘缓存,三级缓存串联可以完全覆盖网络峰值突发、存储写入短暂延迟等所有异常场景。
-
软件层面写优化:Linux系统关闭不必要的页缓存合并,采用O_DIRECT直接IO模式写入存储设备,避免操作系统后台延迟写入导致数据还没落盘就断电丢失,每一个数据块写入完成后立即做同步校验,确认落盘成功后再清除对应的缓存空间。
六、实测结果与问题优化
核心实测指标
我们在工业环境下连续72小时拷机测试,核心性能指标完全达到设计要求:
千兆网满带宽连续写入速度稳定在95Mbps以上,持续72小时记录超过700GB测试数据,零丢包 断网12小时后恢复网络,自动补传全部离线期间缓存的数据,没有出现任何数据缺失或错乱
落地过程中的典型问题与优化方案
-
初始版本eMMC写入速度波动大导致偶发丢包
问题现象:长时间连续记录时,eMMC的写入偶尔出现几百毫秒的延迟,上游缓存溢出导致少量数据丢包
优化方案:将PL端乒乓FIFO的深度从2MB提升到16MB,缓存容量足够覆盖最长的写入延迟峰值,同时软件层优化写入调度逻辑,在存储空闲时提前写入预缓存数据,优化后连续运行零丢包。 -
断网时间过长缓存溢出
问题现象:网络断开超过24小时,DDR和eMMC缓存空间耗尽后,新传入的数据无处存放导致溢出丢失
优化方案:新增循环缓存机制,缓存空间占满后自动优先覆盖最早的非关键历史数据,同时触发硬件告警通知运维人员现场排查,避免重要新数据丢失。 -
长时间运行出现网络掉线无法自动恢复
问题现象:工业现场电磁干扰过大时,PHY芯片偶尔会出现链路吊死,软件没有自动重连机制。
优化方案:在PL端增加独立的硬件链路检测逻辑,检测到PHY链路异常后自动复位PHY芯片,软件配合自动重新建立网络连接,优化后长时间运行网络稳定性提升99%以上。总结
这套基于ZYNQ的千兆以太网高速数据记录仪,把FPGA高速并行吞吐的优势和ARM Linux完善的文件系统能力完美结合,解决了传统纯软件记录仪高速丢包、可靠性差的行业痛点,全部功能完全面向工业无人值守场景设计。整个方案开发难度适中,基于现有ZYNQ开发板就可以快速验证迭代,不管是作为毕业设计项目、嵌入式产品开发还是技术博文选题,都具备非常高的落地实用价值。
- 模拟异常断电测试200次,仅出现2次当前未写完的最后一个数据块损坏,没有出现文件系统损坏或者全量数据丢失的问题
- 系统运行过程中CPU平均占用率低于10%,大部分数据搬运工作都由硬件逻辑完成,ARM资源占用极低,还可以扩展额外的业务功能。