基于网口实现纯 FPGA 架构的多通道数据采集就是这么容易
基于网口实现纯 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/s,8 通道 × 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 驱动(CM2268,8通道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 开发板(或同等国产 FPGA)
- CM2268 或兼容 ADC 芯片
- DDR3 SDRAM
- RGMII PHY + RJ45 网口
- 50MHz 有源晶振
软件准备
- Tang Dynasty IDE ≥ 6.2(安路官方开发工具)
- Qt 6.7+(编译上位机)
- Visual Studio 2022(编译上位机)
三步走
# 1. 克隆 FPGA 工程
git clone https://gitee.com/mstar_ypc/mstar-collect-fpga.git
# 用 Tang Dynasty 打开 tand_udp.al,综合下板
# 2. 克隆上位机工程
git clone https://gitee.com/mstar_ypc/mstar-oscilloscope.git
# 用 Qt Creator 打开 CMakeLists.txt,编译运行
# 3. 网线一连,开始采集
# 上位机自动扫描网络设备,点击连接即可
一些实际数据
| 指标 | 值 |
|---|---|
| ADC 通道数 | 8 |
| ADC 分辨率 | 16-bit |
| 采样率范围 | 数十 kSPS ~ 数百 kSPS(可配置) |
| 网络带宽 | 千兆以太网(125 MB/s) |
| 实际数据率 | ~16 MB/s(8ch × 250kSPS × 16bit) |
| DDR 缓存深度 | 最大 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 数据直接进 FPGA
- FPGA 内部完成触发、缓存、打包
- 以太网桥接 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 工具编写的波形显示软件》。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)