站内搜索
发作品签到
专业版

35M带宽200M采样率14位任意波发生器:TinyAWG

工程标签

3.2k
0
0
6

简介

TinyAWG 信号源

简介:TinyAWG 信号源
星火计划2025
复刻成本:220

开源协议

LGPL 3.0

创建时间:2025-10-20 15:24:48更新时间:2025-12-11 13:46:08

描述

[ TinyAWG ]

 

必看前言

开源协议:

LGPL 3.0

 

作者声明:

本项目为作者个人凭兴趣爱好制作并开源分享,并非盈利和商业目的。对于制作遇到的问题或者建议可以向作者反馈,有时间会解答。对于倒卖或抄袭剽窃等行为产生的后果作者概不负责。

项目使用了立创开源的zynq核心板,感谢大佬分享:https://oshwhub.com/z_star/zynq7020-core-board-and-various-rf-modules

 

成本计算:

核心板:60元(这价格是我9月份时制作的成本,使用7010芯片,后面内存大涨价那没办法了)

电源芯片一共15元,板对板连接器9元,AD9744芯片10元,OPA2673IRGVT芯片6元,信号继电器16元,MCX母座8元,屏幕63元,DAC8562SDGSR芯片7元,其他芯片和二极管等10元,阻容以15元来算

加上制作zynq核心板一共220元,其他外壳和螺丝等并不是必需的,不计入。

 

B站视频展示:https://www.bilibili.com/video/BV1a42QBUECC/

制作文档(一定要看,之后更新和修复都写在这文档):https://ai.feishu.cn/docx/BGycd4URIot8Aoxs3vLcBdq2nFc?from=from_copylink

 

项目特点

  • 使用ZYNQ7010作为主控
  • 采样率200MSa/s,波形点数65536(64K)
  • 输出幅度10Vpp可调,偏置±5V可调,相位和频率可任意设置
  • 正弦波输出3db带宽35M,单频可产生至70M以上,输出阻抗50欧
  • 带宽内平坦度良好,33M前维持在2db,15M前维持在1db
  • 内置基本函数和各种高级波形输出,各类波形参数可设置
  • 结合上位机导入波形,手绘波形进行播放
  • 自定义扫频功能
  • 内置信号调制功能

系统框图

 

实物展示

       

设计说明

电源设计

正负电源轨使用两个LMR544006 DCDC芯片产生正负6.5V,输出到各模拟芯片并加上电感电容滤除纹波

电池使用宽电压充电芯片和升压芯片产生12V,路径管理用了简单的MOS管背靠背

 

输出级电路设计

该电路设计实际上参考的是DHO914S的AWG电路

 

PL(FPGA)设计

本系统使用的PL时钟为200M,为了减少面积,没有在FPGA写很多模块,写了一个简单的AXI Lite接口寄存器模块以及一个基于BRAM的流水线结构DDS

PS(ARM)设计

GUI和事件交互的逻辑太繁琐太多了,各种逻辑写了一大坨

├── src/                          # 项目主源代码目录
│   ├── .cache/                   # IDE缓存目录
│   │   └── clangd/               # Clangd语言服务器缓存
│   ├── .clangd                   # Clangd语言服务器配置文件
│   ├── .compile_commands/        # 编译命令存储目录
│   ├── CMakeLists.txt            # CMake主配置文件,定义项目结构和构建规则
│   ├── Hello_worldExample.cmake  # 示例CMake模块,展示项目构建配置
│   ├── UserConfig.cmake          # 用户自定义CMake配置文件
│   ├── app.yaml                  # 应用程序配置文件
│   ├── compile_commands.json     # 编译命令配置文件(同顶层)
│   ├── helloworld.c              # 项目主入口文件
│   ├── lscript.ld                # 链接脚本,定义内存布局和代码段分配
│   ├── platform.c                # 平台抽象层实现,提供硬件无关的API
│   ├── platform.h                # 平台抽象层头文件,定义API接口

│   ├── DAC8562/                  # DAC8562数模转换器驱动目录
│   │   ├── DAC8562.c             # DAC8562驱动实现,包含初始化和输出控制
│   │   └── DAC8562.h             # DAC8562驱动头文件,定义接口和常量

│   ├── MAX17048/                 # MAX17048电池监测芯片驱动目录
│   │   ├── export/               # 驱动导出文件目录
│   │   ├── max17048.c            # MAX17048驱动实现,用于电池状态监测
│   │   └── max17048.h            # MAX17048驱动头文件

│   ├── display/                  # 显示模块目录
│   │   ├── lcd.c                 # LCD显示驱动实现
│   │   └── lcd.h                 # LCD显示驱动头文件

│   ├── gui/                      # 图形用户界面目录
│   │   ├── custom.h              # 自定义GUI组件定义
│   │   ├── events_init.h         # GUI事件初始化头文件
│   │   ├── events_init_mod.c     # 调制模式GUI事件处理
│   │   ├── events_init_normal.c  # 普通模式GUI事件处理
│   │   ├── events_init_scan.c    # 扫描模式GUI事件处理
│   │   ├── events_init_system.c  # 系统设置GUI事件处理
│   │   ├── gui_guider.c          # GUI导览器实现,管理界面切换
│   │   ├── gui_guider.h          # GUI导览器头文件
│   │   ├── lv_font_ZiHunDaHei_18.c # 自定义中文字体(恣魂大黑体18号)
│   │   ├── setup_scr_mod.c       # 调制模式界面设置
│   │   ├── setup_scr_normal.c    # 普通模式界面设置
│   │   ├── setup_scr_scan.c      # 扫描模式界面设置
│   │   ├── setup_scr_system.c    # 系统设置界面设置
│   │   ├── widgets_init.c        # GUI组件初始化实现
│   │   └── widgets_init.h        # GUI组件初始化头文件

│   ├── hardware/                 # 硬件驱动目录
│   │   ├── gpio.c                # GPIO通用输入输出驱动实现
│   │   ├── gpio.h                # GPIO驱动头文件
│   │   ├── i2c.c                 # I2C总线驱动实现
│   │   ├── i2c.h                 # I2C总线驱动头文件
│   │   ├── intc_timer.c          # 中断控制器和定时器驱动实现
│   │   ├── intc_timer.h          # 中断控制器和定时器驱动头文件
│   │   ├── spi.c                 # SPI总线驱动实现
│   │   ├── spi.h                 # SPI总线驱动头文件
│   │   ├── ws2812.c              # WS2812 LED驱动实现
│   │   └── ws2812.h              # WS2812 LED驱动头文件

│   ├── lvgl/                     # LVGL图形库目录
│   │   ├── CMakeLists.txt        # LVGL库CMake配置
│   │   ├── Kconfig               # Kconfig配置文件,用于功能选择
│   │   ├── component.mk          # Makefile组件配置
│   │   ├── lv_conf.h             # LVGL库配置头文件
│   │   ├── lv_port_disp.c        # LVGL显示端口实现
│   │   ├── lv_port_disp.h        # LVGL显示端口头文件
│   │   ├── lv_port_indev.c       # LVGL输入设备端口实现
│   │   ├── lv_port_indev.h       # LVGL输入设备端口头文件
│   │   ├── lvgl.h                # LVGL库主头文件
│   │   ├── lvgl.mk               # LVGL库Makefile
│   │   └── src/                  # LVGL库源代码(未展开)

│   ├── output_ctrl/              # 输出控制模块目录
│   │   ├── output_ctrl.c         # 输出控制逻辑实现
│   │   ├── output_ctrl.h         # 输出控制头文件
│   │   ├── user_dds.c            # 用户DDS(直接数字合成)实现
│   │   └── user_dds.h            # 用户DDS头文件

│   └── touch/                    # 触摸控制模块目录
│       ├── ft6336.c              # FT6336触摸控制器驱动实现
│       ├── ft6336.h              # FT6336触摸控制器驱动头文件
│       ├── touch.c               # 触摸接口实现
│       └── touch.h               # 触摸接口头文件

GUI设计

采用LVGL框架,版本8.3.1。一开始使用GUI_GUIDER软件设计界面的布局,后面就脱离了这个软件,自己新增了各种控件和交互逻辑

外壳设计

分成了上下两部分,电池垫在最下面,上面挖出屏幕的口子,四周开一堆散热孔,整体连接都依赖于螺柱和上下的螺丝。推荐嘉立创3D打印,树脂嘉立创black材料。质感很好

 

测试

测试1MHz方波,占空比50%.示波器测量得到上升时间20.44ns

测试35MHz正弦,峰峰值1V。示波器测量得到峰峰值728mV,故3db带宽为35MHz

测试1MHz正弦。频谱得到单音信号质量

测试1-40MHz正弦信号扫频,频谱最大值保持得到迹线,3db在35MHz,带内较平坦

测试AM调制信号产生

测试扫频

 

参考资料

https://github.com/MatthiasElectronic/AWG_DHO8-900

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
1
上.stp
13
2
下.stp
13

附件

序号文件名称下载次数
暂无数据
克隆工程
添加到专辑
0
0
分享
Logo GIF0
侵权投诉

工程成员

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航