🏆 今日精选(来自 GitHub)
- 项目名称
:ArbWave30(30MHz 任意波形发生器) - 项目类型
:信号源 / 任意波形发生器(AWG)—— 延伸类目 - 项目链接
:https://github.com/EERNINUO/ArbWave30 - 项目图片
:
ArbWave30 系统架构框图:
数字控制板(STM32F411 + USB-FS + EEPROM)经 SPI 管理 FPGA(GW2AR,内嵌 SDRAM),FPGA 以 16 位并口驱动 AD9747 双通道高速 DAC,再经两路模拟前端到 SMA 输出;时钟链由外部时钟输入/输出接口与 CDCI6214 组成,150MHz 送 DAC;电源输入经初级变换(±17V/±7V/+3.3V 母线)与次级稳压分配到各功能区。双板分工、电源轨分层标注清晰,是一张可以直接当「仪器整机架构课」用的框图。
30MHz 正弦波输出实测(鼎阳 SDS824X HD,2.00GSa/s):
示波器读数:30.00040MHz、峰峰值 5.105V。这是作者贴在 README 里的实物验证截图——一台个人 DIY 的 FPGA+高速 DAC 信号源,把 30MHz 正弦波稳定地打了出来。注意当前实测幅度 5.1Vpp 还没到标称的 10Vpp(20~30MHz 档),与项目「模拟前端进一步调优中」的自述状态一致。
- 硬件平台
:高云 GW2AR-18 FPGA(LQFP144,18k LUT4,内嵌 64Mbit PSRAM,48 位 DDS 相位累加器) + ADI AD9747(双通道 16-bit / 250MSPS DAC,本项目跑 150MSPS) + TI CDCI6214 低抖动时钟发生器(相位抖动 386fs,器件规格) + TI OPA695 超宽带电流反馈运放差分转单端 + STM32F411CEU6(Cortex-M4 @100MHz,USB-FS CDC) - 开源状态
:已提供完整原理图(KiCad 源:模拟板 6 个层次图页 + 控制板 2 个图页,CERN-OHL-S-2.0) | 固件完全开源(FPGA Verilog + STM32 FreeRTOS + SCPI 协议栈,GPL-3.0) | 文档 CC BY-SA 4.0(含 5 篇架构决策记录 ADR) - 核心亮点
: -
正弦波最高 30MHz(已实测)、方波 5MHz(设计指标);48 位相位累加器频率分辨率 1μHz;幅度分辨率 2mV、偏移 ±10V;高阻输出 20Vpp(DC~10MHz)/14Vpp(10~20MHz)/10Vpp(20~30MHz),50Ω 输出阻抗,SCPI-1999 全程控。 -
器件选型全部「DIY 可制造」:FPGA 用 LQFP144 可手工焊(拒绝 BGA),DAC 选 AD9747 而不是 AD9767 的理由(时钟引脚不与数据总线交叉、内置 10 位辅助 DAC 省掉外部偏置 DAC)写成了一篇 3000 字 ADR,这是教科书级的选型示范。 -
国产器件链路完整:高云 FPGA + 兆易 GD25Q32 配置 Flash + ST MCU,高云云源(Gowin EDA)免费工具链,总谐波失真实测 THD -49.7dBc / SFDR -50.08dBc @10MHz 满幅。 -
文档完整度罕见:ADR×5(FPGA 选型/DAC 选型/滤波器拓扑/差分转单端/去本地 UI)、设计笔记(35MHz 5 阶与 60MHz 5/7 阶椭圆滤波器 LTspice 仿真对比)、调试笔记(散热片装配翻车与修正、等长走线实拍)、SCPI 参考手册、PyVISA 自动化测试脚本一应俱全。 - 推荐理由
:一台把「FPGA DDS + 16 位高速 DAC + 椭圆滤波器 + 电流反馈运放」串成完整信号链的 30MHz 任意波形发生器,原理图 KiCad 源全开、连每个关键器件「为什么选它不选它」都写了决策记录——对正在学高速数模混合设计或备赛信号源类赛题的人来说,这个仓库比大多数成品仪器手册更有教学价值。同属信号源类目,08-20 期 TinyAWG 是低频口袋 DDS,本期则把规格抬到 30MHz 台式级并走通国产 FPGA 路线,属于该子方向的一次跨代样本。项目还在 MVP 阶段(Gerber 和完整 BOM 待发布),但正弦链路已实测打通,属于「值得现在就 star、跟它一起长大」的项目。
📋 项目简介
ArbWave30 是开发者 EERNINUO 的个人开源项目:一台 30MHz 双通道(V1.0 先开放单通道)任意波形发生器,2026 年 4 月立项,最新一次提交就在本期发稿前一天(2026-09-05),是目前 GitHub 上少见的「国产 FPGA + ADI 高速 DAC」路线的开源信号源。整机采用模拟板 + 控制板两块 4 层板架构:控制板上 STM32F411 通过 USB CDC 接收 SCPI-1999 命令,经 SPI 从机接口写入 FPGA 寄存器;模拟板上 GW2AR-18 里的 48 位 DDS 相位累加器生成波形表读出地址,16 位并行数据以 150MSPS 送入 AD9747,差分电流输出先过 7 阶椭圆 LC 重构滤波器(160nH/180nH 0805 高 Q 电感 + 精密电容),再由 OPA695 电流反馈运放完成差分转单端与增益设定,经 49.9Ω 到 50Ω SMA 面板口输出;直流偏置由 NE5532 与 DAC 辅助通路共同完成。
时钟是这类仪器的命根子:板载 10MHz 振荡器(README 标称 TCXO ±1ppm,也可切换外部参考输入)进 CDCI6214 四路低抖动时钟发生器,再以 150MHz 差分时钟送 DAC,AC 耦合 + 400mV 共模偏置 + 100Ω 差分端接完全按 ADI 数据手册参考设计落地。电源链从 24V DC 输入开始,TPS54360 + TPS62933 开关变换先产出 ±17V/±7V/+3.3V 母线,再由 L7805/L7905 线性稳压与 TPS7A4701/TPS7A91 两级低噪声 LDO 细分出 ±5VA 等模拟轨道,数字/模拟地与磁珠隔离在原理图里都看得到。
仓库目前公开了全部 KiCad 原理图源(模拟板 Clock/DAC/FPGA/FPGA_Config/Power/Power_Filter 六页 + 控制板 MCU/POWER 两页)与模拟板 BOM(73 行、281 只元件),FPGA Verilog、STM32 FreeRTOS 固件与 SCPI 协议栈(移植 libscpi)也在仓库里。项目采用多许可证策略:固件 GPL-3.0、硬件 CERN-OHL-S-2.0、文档 CC BY-SA 4.0,边界划得非常清楚。需要提醒的是它仍在 MVP 阶段:方波/三角波/噪声 DDS、差分转单端优化、THD/SFDR 完整标定、Gerber 与控制板 BOM 都在待办清单上,现在复刻需要自己踩一遍调试坑——好在作者把坑都拍照片记下来了。
🔧 设备参数
- 波形与频率
:正弦最高 30MHz(已实测);方波最高 5MHz(设计指标,方波/三角/噪声 DDS 尚在开发中);V2.0 计划双通道 + AM 调制 + 扫频,V3.0 计划 Linux+LVGL 本地 GUI 与 ≥16kpts 任意波 - 幅度
:高阻负载 20Vpp(DC~10MHz)/ 14Vpp(10~20MHz)/ 10Vpp(20~30MHz);分辨率 2mV(典型);直流偏移 ±10V - 时钟系统
:板载 10MHz 振荡器或外部 10MHz 参考输入(README 标称 TCXO ±1ppm);CDCI6214 输出 150MHz 差分 DAC 时钟,相位抖动 386fs(器件规格) - 信号链
:48 位 DDS 相位累加器 → 16 位并口 @150MSPS → AD9747 双 16-bit DAC → 7 阶椭圆重构滤波器 → OPA695 差分转单端 → 50Ω SMA - 失真(实测)
:THD = -49.7dBc @10MHz 满幅;SFDR = -50.08dBc @10MHz(含谐波定义) - 接口与控制
:USB 2.0 FS(CDC 虚拟串口),SCPI-1999 命令集( *IDN?/SOUR:FREQ/SOUR:STAT等),PyVISA 可直接当仪器驱动;SMA 触发 I/O 与外部时钟输入(V1.0 后续版本启用) - 供电
:24V DC 输入,整机功耗 <24W - 结构
:模拟板 + 控制板双 4 层板;FPGA LQFP144 手工可焊
🎯 项目背景
作者在 ADR-001 里把选型约束写得非常直白:个人 DIY、要能热风枪或烙铁手焊(直接排除一切 BGA)、逻辑资源 10k~15k LUT、成本目标 70 元以内。备选名单从高云 GW2A-18、GW2AR-18、GW2A-55 到 Xilinx Artix-7 和 ZYNQ-7000 摆了一排,最后胜出的关键不是性能而是「内嵌 64Mbit PSRAM」——省掉外挂 SDRAM 的布线和信号完整性风险,还给未来 V3.0 的 1Mpts 任意波留足存储。AD9767 换 AD9747 的 ADR-003 同样精彩:AD9767 的时钟引脚被两组 14 位数据总线夹在中间,四层板上等长布线必然绕行或换层;AD9747 把差分时钟放在芯片侧面、数据集中在另两侧,还白送两个 10 位辅助 DAC 顶掉外挂偏置 DAC(省约 30 元),代价是要啃 DCO 接口 400ps/1200ps 的建立保持约束。
这种「把每个决策都摆到桌面上打分」的写法,是很多开源硬件项目容易缺失的一环。重构滤波器的设计笔记里,作者把 35MHz 5 阶、60MHz 5 阶、60MHz 7 阶椭圆滤波器的电路、频率响应和时间响应全部仿真对比后选定 7 阶方案;调试笔记里则留着 TO-220 散热片顶到相邻电容的装配翻车现场照和修正后的等长走线显微照。对电赛信号源类赛题(DDS、扫频仪、简易 AWG)而言,这份「架构 + 选型 + 踩坑」三件套几乎就是一份现成的参考设计说明书。项目也坦诚标注了文档由 DeepSeek/Copilot 辅助起草、作者逐一审查,这种声明方式本身就值得同行学习。
📊 核心参数
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
💰 BOM 清单与成本估算
|
|
|
|
|
|
|
|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 模拟板小计 |
|
|
|
约 ¥260~465 |
|
|
|
|
|
|
|
|
| 整机合计 |
|
|
|
约 ¥305~540 |
|
价格来源:项目自带
hardware/analog_board/analog_board.csvBOM(73 行、281 只元件,无价格列)+ 嘉立创 SMT / 立创商城 / LCSC 公开报价补查 + 项目 ADR 文档自述采购价;采集日期 2026-09-06。批量、渠道与含税口径不同会有 ±30% 波动,仅作预算参考。合计仅含元器件,不含 4 层 PCB 打样(模拟板+控制板两块)、外壳、运费与税费;标注「估算」的条目为同类器件区间,未逐颗询价;GD25Q32JVSS 未查到公开报价,按规范留空。注意 FPGA 一项渠道价差极大(国产渠道 ¥45~55 vs Mouser ¥435+),实际预算取决于采购渠道。
📐 完整原理图(按功能区块)
以下原理图均由仓库 KiCad 源(hardware/ 目录,CERN-OHL-S-2.0)经 kicad-cli 导出 SVG 后渲染,未做任何裁剪拼接,每页对应一个层次图页。链路顺序:时钟 → FPGA → DAC/输出 → 电源 → 主控。
模拟板顶层系统框图(analog_board.kicad_sch):
顶层只画「积木」:FPGA_Ctrl 方块通过 16 位并口 P10[0..15]、Data_Clock 与 DAC_SPI 连接 DAC 子图,Clock 子图送出差分时钟,右侧 49.9R 网络到 J5/J6/J7 三只 SMA;J2(2×08)从控制板引入 FPGA_Ctrl 总线,J4(JST-VH 8P)引入 ±17V/±7V/+3.3V 电源轨。六张子图页的层次关系一图看全。
时钟链(Clock.kicad_sch):
ASE-10MHz 振荡器(Y1)与外部参考在 CDCI6214(U8)双输入端二选一,PLL 倍频后输出多路可编程时钟,其中差分对送 DAC 作 150MHz 采样时钟。I²C 可配置、片内 EEPROM 掉电记忆,是整机相位噪声指标的第一道关卡。
FPGA 主电路(FPGA.kicad_sch):
高云 GW2AR-18(LQFP144):P10[0..15] 16 位并口直驱 DAC,P20[0..15] 为第二通道预留,SPI 从机接口接控制板 MCU;GW2AR 内嵌的 64Mbit PSRAM 免掉了外挂波形存储器,B SRAM 资源足够放多组波形表。
FPGA 配置电路(FPGA_Config.kicad_sch):
配置电路用兆易 GD25Q32JVSS SPI Flash 做 FPGA 固件存储,JTAG 调试口与上电配置模式选择一应俱全,上电即从 Flash 加载比特流。
DAC 与差分输出级(DAC.kicad_sch):
本页信息量最大:U3 为 AD9747BCPZ(16 位双 DAC),差分时钟经 AC 耦合 + 1k/287Ω 分压 400mV 共模 + 100Ω 端接进入 CLK±;两通道各自的 7 阶椭圆 LC 梯形网络(L 160n/180n + C 2.0p~1000p)重构波形,OPA695(U4/U5)做差分转单端与增益设定,NE5532(U6)与 MMBT3906 处理直流偏置与输出控制,±5VA 局部轨道 + 600Ω 磁珠隔离一目了然。
模拟板电源(Power.kicad_sch):
TPS62933(U11)3A 同步降压打头阵,L7805/L7905(U12/U13)与 AMS1117 分出各数字轨道,为后级低噪声 LDO 预留裕量。
电源滤波分配(Power_Filter.kicad_sch):
TPS7A4701(U14)与 TPS7A91(U15)两级低噪声 LDO 产出模拟轨道,每路电源到负载端都有一级 π 型滤波 + 磁珠,模拟/数字域的电源隔离做得很规矩。
控制板 MCU(MCU.kicad_sch):
STM32F411CEU6 最小系统:USB-FS 走 CDC 虚拟串口收 SCPI 命令,SPI 主机接口写 FPGA 寄存器,另留调试串口与 EEPROM。主控选型刻意压低规格——仪器的大脑在 FPGA,MCU 只做命令解析与状态管理。
控制板电源(POWER.kicad_sch):
控制板电源页与模拟板电源页同构:TPS54360(U,60V 输入降压)+ TPS62933 两级开关变换,产出 ±17V/±7V/+3.3V 母线并经磁珠(FB_ 前缀网络标号)向两板分配,给 MCU、EEPROM 与接口电路分轨供电;模拟板侧再由线性稳压与低噪声 LDO 二次细分,避免数字回流污染模拟地。

