⚠️ 注意:你当前查看的是 develop 开发分支,内容可能不稳定。 推荐使用稳定发布版本:查看 Releases
作者正在参与《0854 不相信眼泪》,本项目暂停更新,承诺 2026.12.25 恢复更新并发布第一个 Release。(你问我为什么不是 20 号就更新?好不容易解放了我不得爽玩几天)
- 波形:正弦、方波、三角波、噪声波、直流
- 正弦波最高 30MHz,方波最高 5MHz
- 电压范围(高阻):20Vpp(DC~10MHz),14Vpp(10~20MHz),10Vpp(20~30MHz)
- 幅值分辨率:2mV(典型),偏移范围 ±10V
- 总谐波失真(THD):< -50dBc @10MHz 满幅(目标值)
- 相位噪声:-100dBc/Hz @10kHz offset(30MHz 载波)(目标值,受限于测试条件,目前无法标定)
- 输出阻抗:50Ω
- 参考时钟:内部 TCXO(±1ppm)或外部 10MHz 输入
- 波形:正弦、方波、三角波、噪声波、直流
- 正弦波最高 30MHz,方波最高 5MHz
- 电压范围(高阻):4Vpp(DC~10MHz),2.8Vpp(10~20MHz),2Vpp(20~30MHz)
- 幅值分辨率:2mV(典型),偏移范围 ±2V
- 总谐波失真(THD):< -50dBc @10MHz 满幅(目标值)
- 相位噪声:-80dBc/Hz @10kHz offset(30MHz 载波)(目标值,受限于测试条件,目前无法标定)
- 输出阻抗:50Ω
- 参考时钟:内部 TCXO(±1ppm)
- USB 2.0(USB CDC 类),支持 SCPI-1999 命令集
- SMA 输出,SMA 触发 I/O,SMA 外部时钟输入
- 电源输入:24V DC,功耗 <24W
- V1.0:单通道 + 基础波形 + 核心 SCPI
- V2.0:双通道 + 调制 + 扫频
- V3.0:Linux GUI + 任意波(16kpts)
当前阶段:MVP 硬件、MCU/FPGA 核心程序验证完成,已能通过 SCPI 控制输出,正在进行模拟前端进一步调优
- PCB 设计与打样(4层板,信号完整性设计)
- 模拟前端调试通过
- DAC 上电参数配置正常(SPI 接口通信稳定)
- 正弦 DDS 核(IP 核实现,48位相位累加器)
- 方波/直流/三角波/噪声波生成
- 幅度控制模块
- 相位控制模块
- SPI Slave 通信接口与寄存器组
- 模拟板驱动库(MCU 端)
- SCPI 协议栈移植
- 7阶椭圆滤波器焊接调试
- 输出性能粗略标定(THD、SFDR)
- 软件幅度校准
- 谐波性能优化
- 滤波器性能优化(重构滤波器,调整群延时,减少快速边沿的过冲/振铃)
- 分板思路调整(电源板、模拟板、控制板)
- 模拟板完整版设计(加入 硬件幅度控制、直流偏置、外部触发、外部时钟输入)
- 输出性能精确标定(需要专业频谱仪,目前无法进行)
- 上位机控制软件
正弦波输出(SDS824X HD 示波器实测):
当前版本方波有约 13.5% 的过冲,为滤波器群延时特性所致,后续将通过优化通道设计解决,详见重构滤波器调试笔记。
10MHz正弦波FFT结果:
经上图数据可计算出1: THD ≈ -60.2 dBc @10MHz, SFDR2 ≈ 63.26 dBc @10MHz
- 当前版本方波有约 13.5% 的过冲,为滤波器群延时特性所致,后续将通过优化滤波器设计解决。
- 当前版本在运行一段时间后,在输出 25 MHz 以上正弦波时,有概率出现固定大小/方向的偏置抖动,怀疑是 FPGA 发热导致时序漂移,后续将通过优化 FPGA 时序约束和增加散热解决。
- 当前分板设计会导致成品过长过细(约 225mm x 90mm),后续将调整分板方案,分为电源板、模拟板、控制板。
ArbWave30/
├── docs/ # 设计文档
│ ├── pic/ # 文档图片
│ ├── adr/ # 决策记录
│ ├── 硬件设计文档/ # 硬件设计文档
│ ├── 设计笔记/ # 设计笔记
│ ├── 用户手册/ # 用户手册
│ └── LICENSE # CC BY-SA 4.0
├── hardware/ # 原理图、PCB源文件
│ ├── analog_board/ # 模拟板 PCB设计
│ ├── control_board/ # 控制板 PCB设计
│ └── LICENSE # CERN-OHL-S-2.0
├── firmware/
│ ├── fpga/ # FPGA 设计源代码(Verilog)
│ │ ├── Application/ # 项目代码
│ │ └── FPGA_Test_Hardware/ # FPGA 硬件测试代码
│ │ ├── FPGA_Clodck_Test/ # 时钟测试代码
│ │ └── FPGA_Hardware_Test/ # FPGA 硬件测试代码
│ ├── mcu/ # MCU 固件源代码(C/C++)
│ │ ├── Application/ # 项目代码
│ │ ├── MCU_Test_Hardware/ # MCU 硬件测试代码
│ │ │ └── min_system_test/ # MCU 最小系统测试代码
│ │ └── SCPI_Test/ # SCPI-parser 移植测试工程
│ └── Clock_Generator_Config/ # 时钟发生器配置
├── simulink/ # LTspice 仿真文件
├── datasheets/ # 组件数据手册,参考设计
├── scripts/ # 自动化测试脚本(PyVISA)
│ ├── test_filter/ # 滤波器测试脚本
│ └── test_diff_to_single # 差分转单端输出测试脚本
├── LICENSE # GPL-3.0
└── README.md
项目处于 最小可行产品(MVP)验证阶段,未来会出现破坏兼容性的变更,正在进行 MVP 版本软硬件联调,待 MVP 验证完成后,将提供:
- 打样 PCB 的 Gerber 文件及 BOM
- FPGA 比特流烧录方法(通过 JTAG 加载)
- 固件编译与升级步骤
当前你可以浏览 docs/ 中的设计文档,了解详细的技术规格和设计思路;
或查看 hardware/ 中的原理图和 PCB 设计文件与 firmware/ 中的代码框架,了解硬件与软件的构成,并提出您的宝贵意见。
import pyvisa
# 1. 指定纯 Python 后端(无需安装 NI-VISA 驱动)
rm = pyvisa.ResourceManager('@py')
# 2. 列出所有资源,找到你的 COM 口(通常是 'ASRL3::INSTR' 类似格式)
# print(rm.list_resources())
# 3. 打开串口资源,并配置终止符
inst = rm.open_resource('ASRL3::INSTR') # 请替换为实际的 ASRL 端口号
inst.baud_rate = 115200 # 串口波特率,对于 USB CDC 类设备并不重要
inst.read_termination = '\n' # 非常重要:库默认是 '\n',但最好显式声明
inst.write_termination = '\n' # 发送时自动追加换行符
# 4. 现在你可以像用 USBTMC 仪器一样使用 query
print(inst.query('*IDN?'))
inst.write('SOUR:FREQ 1000')
inst.write('SOUR:STAT ON')
# 5. 查询
freq = inst.query('SOUR:FREQ?')
print(f"Freq: {freq}")
inst.close()完整命令集参见 docs/SCPI_reference.md。
测试脚本位于 scripts/(持续更新中),使用 PyVISA 与设备通信。你可以运行对应的脚本进行自动化测试,或者根据你的需求,参考这些脚本自行编写测试用例。
设计文档、测试报告和用户手册位于 docs/,持续更新中。
| 阶段 | 功能 | 描述 |
|---|---|---|
| V1.0 | 单通道,基础波形(正弦、方波、三角、噪声、DC) | 支持频率、幅值、偏置、相位连续可调;支持SCPI命令(少量核心指令) |
| V2.0 | 双通道 | 增加第二路输出,支持频率/相位同步,相位差可调 |
| AM调制 | 内/外部调制源,调制深度0~100% | |
| V3.0 | 嵌入式GUI | 基于Linux + LVGL,通过LCD触摸屏直接控制 |
| 任意波 | 支持用户自定义波形表,存储深度≥16kpts |
Copyright © 2026 EERNINUO
本项目采用多许可证策略,不同部分适用不同许可证:
| 组成部分 | 许可证 |
|---|---|
| 固件 (MCU/FPGA 代码) | GNU General Public License v3.0 |
| 硬件设计文件 (原理图、PCB、BOM) | CERN Open Hardware Licence Version 2 - Strongly Reciprocal |
| 文档、图片、README | Creative Commons Attribution-ShareAlike 4.0 International |
这意味着:
- 你可以自由使用、修改、分享固件代码,但任何衍生代码也必须以 GPL-3.0 开源。
- 你可以基于硬件设计文件制作、分发物理设备,但必须同时开源你对设计文件的修改,并保留署名。
- 你可以复制和修改文档,但必须同样以 CC BY-SA 4.0 分享,并注明原作者。
商标声明:ArbWave30 名称及标志未经授权不得用于商业产品。
本项目文档框架由 GitHub Copilot / DeepSeek 辅助生成。 作者已逐一审查并测试,但如有任何问题欢迎提交 Issue。
注意:本项目为个人学习与开源作品,不保证商业级可靠性。使用前请仔细阅读免责声明。
项目主页: https://github.com/EERNINUO/ArbWave30
如果您觉得这个项目有帮助,请给一个 Star ⭐,谢谢!



