博宸精芯开源ADC数据采集显示上位机项目总体
发布时间: 2026-08-24 11:00
|
作者: yang
|
状态: published
|
更新时间: 2026-08-24 15:10
# net\_adc - ADC 模块以太网调试工具
## 概述
**net\_adc** 是一款基于 C# WPF (.NET 8.0) 开发的 ADC/DAC 调试工具,通过 TCP 以太网与 FPGA 端 lwIP 工程通信,实现 ADC 数据采集、波形显示、频谱分析及 DAC 参数配置。
---

项目源代码下载地址:
通过网盘分享的文件:ADC采集项目上位机V1.0
链接: https://pan.baidu.com/s/16kpRw0I3RKWXO7i2DHelyA 提取码: 9rjt
--来自百度网盘超级会员v7的分享
对应出货开发平台产品链接及介绍:
https://bochenjingxin.com/enterprise/products/6eaa1bf4-ef54-41d5-920b-8f4a92d5e50b
软件功能设计:
https://bochenjingxin.com/enterprise/docs/article/80cbe397-f1ff-439e-b7c1-68571d4c4bfc
软件通信协议:
https://bochenjingxin.com/enterprise/docs/article/be6bfb6d-74e9-469d-b3c8-90a900373344
## 功能特性
### 1. 网络通信
* **TCP 客户端模式**:与 FPGA 开发板建立 TCP 连接
* **默认配置**:IP `192.168.1.10`,端口 `7`
* **连接状态实时显示**:状态栏展示连接状态和收发统计
### 2. ADC 数据采集
* **触发采样**:向 FPGA 发送触发命令,启动 ADC 采样
* **数据上传**:从 FPGA DDR3 内存分批读取采样数据
* **采样点数**:1024 / 2048 / 4096 / 8192 / 16384 / 32768 / 65536 / 131072 可选
* **进度显示**:实时显示数据接收进度
* **重传机制**:单包超时 100ms,最多重试 3 次
### 3. 波形显示
* **双通道显示**:ADC1(黄色)、ADC2(紫色)同时显示,可独立开关
* **X 轴缩放**:2 倍步进,最大缩放倍数 = 采样点数 / 1024
* **Y 轴缩放**:2 倍步进,1 \~ 16 倍
* **拖动浏览**:鼠标拖动波形水平滚动
* **示波器风格**:黑色背景、白色点线网格
* **坐标标注**:左侧 ADC 数值,右侧电压值,顶部时间,底部采样点索引
### 4. 频谱分析
* **FFT 计算**:1024 点 Cooley-Tukey FFT,Hanning 窗
* **采样率**:250 MHz,频率分辨率 250 kHz/bin
* **显示范围**:0 \~ 125 MHz,dB 刻度 (-100 \~ +20 dB)
* **峰值检测**:自动检测峰值频点
* **SNR 计算**:信噪比分析(排除峰值 ±5 个频点)
* **直流分量**:ADC 原始值与电压换算
* **峰峰值**:原始峰峰值与电压峰峰值
### 5. DAC 参数配置
* **波形类型**:正弦波、方波、三角波、脉冲、白噪声
* **波形预览**:实时预览选中波形
* **幅度控制**:环形旋钮调节(0 \~ 1.2V,分辨率 0.01V)
* **频率设置**:0 \~ 25 MHz,自动单位转换(Hz / KHz / MHz)
* **输出使能**:DAC1 / DAC2 独立开关
### 6. 数据管理
* **数据缓存**:64 MB 环形缓冲区
* **数据导出**:导出 ADC1 通道波形数据为文本文件
* **统计信息**:发送/接收次数与字节数统计
---
## 通信协议
### 命令帧(PC → FPGA)
| 命令 | 格式 | 长度 | 说明 |
| ---------- | -------------------------------------- | ------ | -------------------------------- |
| 触发 ADC | `0x01 0x01 0x55 0xAA` | 4B | 触发 FPGA 端 ADC 采样,无响应 |
| 读取数据 | `0x01 0x05 0x55 0xAA [Addr(4B)]` | 8B | 从指定 DDR3 地址读取 1024 字节 |
地址编码:大端序,每次递增 1024 (0x400)。
### 响应帧(FPGA → PC)
1032 字节数据帧:
| 偏移 | 长度 | 内容 | 说明 |
| -------- | ------- | --------------------------- | ------------------------ |
| 0-3 | 4B | `0x02 0x05 0x55 0xAA` | 帧头 |
| 4-7 | 4B | 起始地址 | 大端序 |
| 8-1031 | 1024B | ADC 数据 | 256 个采样点 × 4 字节 |
### ADC 数据格式
每个采样点 4 字节,小端序:
| 位域 | 通道 | 说明 |
| --------- | ------ | ------------------ |
| [31:16] | ADC1 | 高 16 位,原始值 |
| [15:0] | ADC2 | 低 16 位,原始值 |
原始 16 位值右移 2 位得到 14 位有效数据(范围 ±8192),电压换算:`ADC值 × 2.15V / 8192`。
---
## 使用说明
### 环境要求
* **操作系统**:Windows 10/11 (x64)
* **运行时**:无需安装(自包含发布)
* **硬件**:FPGA 开发板(运行配套 lwIP TCP 服务端程序)
* **网络**:PC 与 FPGA 在同一网段
### 快速开始
1. **启动 FPGA 程序**
* 下载 lwIP 工程到 FPGA 开发板
* 确认网络连接正常(默认 IP:192.168.1.10,端口 7)
2. **运行 net\_adc**
* 双击 `net_adc.exe` 启动
* 确认目标地址和端口设置正确
3. **建立连接**
* 点击【连接】按钮
* 状态栏显示"已连接"表示成功
4. **触发并采集**
* 设置采样点数(默认 1024)
* 点击【触发 ADC 采样】
* 点击【数据采集】开始读取数据
* 等待进度条完成,波形自动显示
### 波形操作
* **X+ / X-**:水平缩放(2 倍步进)
* **Y+ / Y-**:垂直缩放(2 倍步进,1\~16 倍)
* **复位**:恢复原始比例并重置偏移
* **拖动**:鼠标拖动波形水平滚动
* **自动刷新**:勾选后 50ms 周期刷新
---
## 项目结构
**Plain Text**
```
net_adc/
├── MainWindow.xaml # 主窗口布局 (WPF XAML)
├── MainWindow.xaml.cs # 业务逻辑 (网络通信/采集/FFT/绘制/DAC)
├── App.xaml # 应用程序入口
├── App.xaml.cs # 应用程序配置
├── Properties/
│ └── app.manifest # 应用程序清单
├── net_adc.csproj # 项目配置
└── README.md # 本文档
```
## 构建与发布
**Bash**
```bash
# 清理
dotnet clean -c Release
# 编译
dotnet build -c Release
# 发布自包含单文件
dotnet publish -c Release -o bin/publish
```
发布配置:
* `SelfContained=true`:自包含,内嵌 .NET 运行时
* `RuntimeIdentifier=win-x64`:目标平台 Windows x64
* `PublishSingleFile=true`:单可执行文件
* `PublishReadyToRun=true`:预编译提升启动速度
---
## 故障排除
| 问题 | 排查方向 |
| ------------ | ---------------------------------------------------------------- |
| 连接失败 | 检查 IP/端口、确认 FPGA 程序运行、防火墙放行端口 7、确认同网段 |
| 采集失败 | 确认已触发 ADC、检查采样点数、查看运行日志 |
| 波形异常 | 确认数据已接收、点击刷新波形、检查 Y 轴缩放范围 |
| 频谱无显示 | 确认 ADC1/ADC2 通道已开启 |
## 许可证
本项目仅供内部调试使用。
## 其他
1、预留DAC数字信号源界面控件,为后续升级DAC信号源做准备;
2、软件目前仅做原理性和简单少量数据做验证,数据传输较小,速度慢;
3、如需提升ADC数据传输以太网的效率,可以将TCP协议改为UDP。目前较大性能瓶颈就是TCP原因。
4、关于ZYNQ部分软件工程不做开源,涉及到FPGA部分的核心代码和采集存储,需购买Z7ADDALite的产品提供,并且需签订合约对公采购部分客户提供。
5、后续不定期更新。上位机软件完全使用AI助手编写,使用TRAE-WORK进行开发。
加载中...
正在加载内容...
评论
正在加载评论...