
基于网口实现纯 FPGA 架构的多通道数据采集就是这么容易不需要 CPU不需要 SoC不需要 Linux——一块 FPGA 一根网线搞定 8 通道高速数据采集你是不是也遇到过这些问题做数据采集的朋友大概都有过类似的经历想采 8 路 ADC 数据但 FPGA 的 IO 不够用得分好几片芯片级联数据要回传上位机USB 距离太短、WiFi 不稳定、串口太慢想加个 DDR 缓存但 DDR 控制器调不通时序约束搞到头秃好不容易数据采到了上位机软件又得从头写……每一个单独拿出来都是坑。把它们组合在一起那就是一部血泪史。今天介绍一个方案让你一次性绕开所有这些坑。方案概览整个系统只有两个东西┌──────────────┐ ┌──────────────┐ │ FPGA 采集器 │ ──网线──▶ │ 上位机 PC │ │ (纯硬件逻辑) │ 千兆 │ (波形显示) │ │ │ 以太网 │ │ └──────────────┘ └──────────────┘设备端一块安路 PH1 FPGA 8 通道 ADC DDR3 RJ45 网口上位机Qt 桌面软件实时显示波形、导出数据通信协议标准 UDP/IP任何支持以太网的设备都能对接核心卖点全链路纯 FPGA 硬件逻辑没有 CPU、没有操作系统、没有协议栈软件。为什么说就是这么容易1. 以太网——最被低估的采集接口提到数据采集通信接口很多人的第一反应是 USB、SPI、LVDS。但你可能忽略了以太网的优势优势具体表现组网便利交换机即插即用想接几台接几台传输距离单段 100 米加光纤转换器轻松上公里天生电气隔离网线是铜线非共地采集端和 PC 端天然隔离成本低RJ45 连接器 PHY 芯片BOM 不到 10 块钱带宽够用千兆网 125MB/s8 通道 × 100kSPS × 16bit ≈ 16MB/s绰绰有余对于分布式采集场景以太网就是最优解。只是很多人觉得以太网协议栈好难所以不敢碰。2. 协议栈不用你写这是本方案最大的价值——以太网桥接 IP 已经封装好了。你不需要理解 TCP 三次握手不需要写 UDP 校验和不需要处理 ARP 表。你只需要知道把数据往 AXI 总线上一放IP 核自动帮你打包成以太网帧发出去就这么简单。就像你用 UART 不需要关心物理层编码一样现在你用以太网也不需要关心协议栈。3. 参考设计全开源整个 FPGA 端工程已经开源在 Gitee 上仓库地址https://gitee.com/mstar_ypc/mstar-collect-fpga你拿到的不是一个概念验证而是一套经过实际硬件验证的完整系统tand_udp/ ├── hdl/ │ ├── mstar_udp_top.v ← 顶层一眼看懂系统架构 │ ├── ad_driver/ ← ADC 驱动CM22688通道16位 │ ├── collect/ ← 采集控制 触发 DMA │ ├── axi_dma/ ← AXI DMA 读写引擎 │ ├── axi_io/ ← AXI Lite 寄存器接口 │ ├── udpip/ ← 以太网桥接 IP加密网表 │ ├── sync/ ← 跨时钟域同步 │ └── constraint/ ← 引脚约束 时序约束 ├── al_ip/ ← DDR控制器、AXI矩阵、FIFO、PLL └── README.md打开工程 → 综合 → 下板 → 就能跑。不需要从零搭积木。4. 上位机也给你准备好了配套的上位机软件同样开源仓库地址https://gitee.com/mstar_ypc/mstar-oscilloscope功能包括多设备同时连接4 种采集模式瞬时 / 单次触发 / 连续触发 / 连续采集8 通道波形实时显示触发参数配置电平 / 边沿 / 预触发CSV 数据导出文件回放上位机是 Qt C 写的源码全部开放。你可以直接改也可以参考它自己写一套。系统架构拆解让我们看看数据是怎么从 ADC 一路跑到 PC 屏幕上的CM2268 ADC (8ch × 16bit) │ ▼ ad_driver (采样时钟分频、芯片配置) │ ▼ collect (触发判断、数据缓存) │ ├── 触发模式电平 / 上升沿 / 下降沿 / 不触发 ├── 触发前缓存保留触发前的数据 └── 外部触发支持多板同步 │ ▼ DMA Engine (AXI4 Full, 128-bit 突发写入) │ ▼ DDR3 SDRAM (最大 64M 样本深度) │ ▼ 以太网桥接 IP (从 DDR 读取 → 封装 UDP 包) │ ▼ RGMII PHY → RJ45 → 网线 → 交换机 → PC │ ▼ 上位机 (UDP 接收 → 解包 → 波形显示 / CSV 保存)全链路纯硬件没有一行软件参与数据传输。这就是纯 FPGA 架构的魅力——确定性延迟在微秒级别不会像 Linux 系统那样突然卡一下。适合谁如果你是 FPGA 工程师想给手里的采集板加个网口输出但不知道从哪下手这套开源工程就是你的起点。ADC 驱动、DMA、DDR 控制器、以太网接口全都有你只需要根据自己的 ADC 型号改改驱动参数。如果你是系统集成商需要一个可靠的数据采集前端但不想花几十万买进口设备这套方案的 BOM 成本非常可控而且 FPGA 端可以灵活定制——加几路 PWM 输出、加个温度采集、加个本地存储都在一块芯片里搞定。如果你是高校/研究所带学生做实验需要多通道同步采集但预算有限开源方案 低成本国产 FPGA一套设备几百块就能做出来。上位机也是开源的学生可以学习 Qt 开发和 FPGA 架构设计。如果你是嵌入式开发者一直想学 FPGA 但觉得门槛高从这套看得懂、跑得通的工程入手看看 Verilog 是怎么控制 ADC、怎么操作 DDR、怎么跟以太网 PHY 交互的。代码注释完整模块划分清晰。快速上手硬件准备安路 PH1 FPGA 开发板或同等国产 FPGACM2268 或兼容 ADC 芯片DDR3 SDRAMRGMII PHY RJ45 网口50MHz 有源晶振软件准备Tang Dynasty IDE ≥ 6.2安路官方开发工具Qt 6.7编译上位机Visual Studio 2022编译上位机三步走# 1. 克隆 FPGA 工程gitclone https://gitee.com/mstar_ypc/mstar-collect-fpga.git# 用 Tang Dynasty 打开 tand_udp.al综合下板# 2. 克隆上位机工程gitclone https://gitee.com/mstar_ypc/mstar-oscilloscope.git# 用 Qt Creator 打开 CMakeLists.txt编译运行# 3. 网线一连开始采集# 上位机自动扫描网络设备点击连接即可一些实际数据指标值ADC 通道数8ADC 分辨率16-bit采样率范围数十 kSPS ~ 数百 kSPS可配置网络带宽千兆以太网125 MB/s实际数据率~16 MB/s8ch × 250kSPS × 16bitDDR 缓存深度最大 64M 样本触发延迟 1μs纯硬件传输延迟 100μs端到端FPGA 资源占用~60% LUT, ~40% FF (PH1P35)常见问题Q以太网桥接 IP 是开源的吗A以加密网表形式提供功能接口完全开放可以正常例化和使用但不开放内部源码。这是为了保护核心协议栈实现。Q能换其他型号的 ADC 吗A可以。ad_driver模块是独立的你只需要按照目标 ADC 的时序要求改写驱动。接口信号数据、时钟、控制在顶层都有清晰的定义。Q能换其他型号的 FPGA 吗A可以但需要重新适配 DDR 控制器和引脚约束。如果你用的是安路其他型号如 PH1P25、PH1P50适配工作量较小。Q支持多少台设备同时工作A理论上无限制。上位机支持多设备同时连接每台设备独立 IP 地址独立面板显示。Q可以做定制开发吗A可以。我们提供从 FPGA 到上位机的全栈定制服务欢迎联系咨询。总结数据采集这件事过去总是被搞得很复杂——需要 CPU 跑协议栈、需要 Linux 管文件系统、需要各种接口转换芯片。但如果你用纯 FPGA 架构 以太网事情就变得很简单ADC 数据直接进 FPGAFPGA 内部完成触发、缓存、打包以太网桥接 IP 自动处理协议栈网线一插数据就到 PC 了没有软件没有驱动没有配置服务器。上电就能工作断电能保数据DDR 里坏了能换板子接口标准化。这就是纯 FPGA 架构做数据采集的优势——简单、可靠、快速、便宜。现在这一切都开源了。拿去用吧。项目地址FPGA 端https://gitee.com/mstar_ypc/mstar-collect-fpga上位机https://gitee.com/mstar_ypc/mstar-oscilloscope作者是一名 FPGA 工程师这是他用 AI 辅助开发上位机的真实经历。如果你对AI 如何改变 FPGA 工程师的工作方式感兴趣可以看看另一篇博客《MstarOscilloscope第一次用 AI 工具编写的波形显示软件》。