简要介绍作品:
本项目设计了一个非常小型、便携且低成本的任意波形发生器,体积仅为80x44x5mm,比一张信用卡略小,可以轻松揣兜里,支持锂电池供电掏出来即可使用。性能方面DAC波形输出采样率可达到100MSPS,可输出25MHz以下的正弦波和5MHz以下的任意波形,且波形幅度和偏移可调节。
一、作品详情;
本设计使用了MCU+CPLD+SRAM+DAC的构架来实现高速的DDS的结构,使用MCU进行波形运算和波形查找表的生成,使用CPLD配合高速SRAM实现查找表的高速输出,CPLD在接收MCU送来的数据后将数据按着FIFO的方式写入到SRAM,然后再以一定的速率将查找表数据循环输出给DAC,来实现高速且任意波形的输出。
技术参数:
波形采样率:100MSPS
输出通道数:1
最大频率:25MHz
基础波形:正弦波,方波,三角波,锯齿波,SINC脉冲
扩展波形:可自定义
查找表长度:512KB
模拟前端3dB带宽:25MHz
输出波形峰值:小于5MHz:40mVpp~5Vpp
小于25MHz:40mVpp~2Vpp
输出波形可偏移范围:-3.3V~+3.3V
输出阻抗:50ohm
输出关断漏电流:1uA
输出关断最大峰值耐压:300V
供电:5V-USB_Mirco输入或内置锂电池
本设计所用到编程软件和EDA工具:
LCEDA
matlab
Filter Solutions
Keil MDK
quartus
Multisim
ModelSim
JFlash
Visual Studio
二、描述作品所面临的挑战及所解决的问题;
目前电子实验室常见的波形发生器(信号源)都为台式,其具有体积大,重量大,功耗高,难于搬动便携使用。而且其价格对于学生、创客和电子爱好者等群体来说难于承受。作为实验室的四大件之一(示波器、信号源、稳压电源、万用表),缺了信号源,对于很多电路的调试都无法给予激励,成了电路调试的瞎子,导致很多实验无法完成。
因此本项目就为了解决这个问题而来,目的是设计一款,性价比好,性能不差却成本低,便携(可以移动供电),使用环境不仅仅局限于实验室的任意波形发生器。虽然相比于商业的成品信号源,在功能和性能上有些差距,但是在现有成本可接受的程度上,已经达到了不错的性能,对于音频级设备调试可以说是游刃有余,对于MHz级别的低速电路也可以胜任。
本设计针对的痛点:
国外不少开源的波形发生器方案,使用MCU直接对接DAC,这样的波形发生器至多有几百KSPS的DAC采样率,只能产生数十KHz的波形,有时候连音频级的应用调试都有些吃力;而本设计相对于MCU直推的方案,突破了MCU的低带宽问题,将波形输出采样率提高2-3个数量级,达到100MSPS,大大提高了波形输出速度;
相对于使用一片集成DDS(比如AD9851,AD9833),这些集成DDS一般只能输出单纯的正弦波和方波,对于复杂波形需求的场合,实在无能为力,但是本设计可以实现任意波形的输出,甚至是用户编程波形的输出;
相比于使用专业FPGA来实现的设计,一片FPGA的价格往往少说上百多则上千,而本设计选择了折中的CPLD方案,成本才几元,虽然在一些高速复杂任务中性能会有所受限,但是却带来了体积的缩小,功耗的降低,以及最重要的成本的降低,可以把bom成本做到两位数,降低了学生、创客等群体拥有波形发生器的门槛。
三、描述作品硬件、软件部分涉及到的关键点;
硬件设计部分,分为四部分:低速人机交互部分、高速数字部分、高性能模拟前端部分和供电部分。
软件设计部分,分为两部分:STM32的程序编写和CPLD的程序编写(使用硬件描述语言Verilog)
硬件部分
1、对于低速人机交互部分,主要由MCU和外围的屏幕按键等人机交互部件组成。
其中屏幕与MCU的连接和CPLD与MCU的连接,都是使用8位并口。
两个三向按键口,支持大拨轮按钮也支持旋转编码器,设计分别连接到定时器2和定时器3的编码器接口。
这部分有一个要点是,因为单片机的IO不够使用,所以使用了AD按键,这个设计可以使用一个IO读取10个按键,电路图如下。
AD按键的设计 各个点按下的电压 可以支持10数个按键
![ADKEY.JPG](//image.lceda.cn/pullimage/iuAcnLrz6JVZB6dYlzwAnKFlqd8yQh4PmiLKtGQb.jpeg)
在程序中实现每1ms读取一次ADC,然后进行消抖和按键服务,可以区别出短按和长按,但是不支持多键同时按下。
2、对于高速数字部分,主要有三个器件组成:CPLD芯片-EPM240,高速SRAM芯片-IS61LV25616AL,和时钟发生芯片-ICS511。
首先是时钟发生,只有高精度、低Jitter的高速时钟的支持,才能保证波形发生的精确;使用的晶振是嘉立创贴片提供的25MHz晶振,厂家是YXC,精度10ppm。使用的PLL芯片为ICS511,该芯片可以提供2-8倍的可编程倍频输出,最高可达200MHz,其抖动性能优秀,绝对时钟周期抖动为+-70ps,单周期时钟抖动为20ps,在本设计中为数字高速系统提供了100MHz的稳定时钟。
其次是高速SRAM芯片,作为查找表的高速缓存,选用了ISSI公司的IS61LV25616AL-10,这是一颗高速异步静态RAM,比起SDRAM而言操作要简单不少,不需要刷新操作,节约了CPLD的内部本来就紧凑的逻辑资源。这颗SRAM的访问接口为256Kx16位,接口访问速度达到10ns,也就是说可以达到200msps的访问带宽,足以支持本设计的DAC数据吞吐量需求,查找表长度512K,也满足了绝大部分波形生成应用的需求。
CPLD芯片为DDS的核心驱动,从获得的时钟逐周期从SRAM中读取查找表数据并输出到DAC,提供稳定精确等间隔的数据更新速率。
DAC芯片选用了ADI公司的AD9708 这是一个8位100Msps的高速DAC,为了方便系列间兼容 芯片封装支持14bit数据 在电路设计中 将14位数据通道都全部链接 作为兼容设计 以后可以升级更高精度的DAC。
3、高性能模拟前端部分 可以说是本项目的灵魂,没有好的模拟前端,就不可能输出干净的波形。
本设计中的模拟前端主要是有四部分功能:DAC输出滤波、信号增益控制、信号偏移控制和输出驱动与保护
根据DAC的原理,DAC输出需要接一个重构滤波器,来消除高阶谐波。因为DAC输出是电流型输出,所以这里设计了一个九阶无源巴特沃兹滤波器来实现重构滤波器。
使用专业滤波器设计软件 设计得到滤波器如下图(因为需要取一定精度的电感电容才能购买到 于是做了近似 所以曲线有所偏移)
![9th btwz1.JPG](//image.lceda.cn/pullimage/iBlwM9w9V30CF656DPCwXS7EhGXenlYdlic9wAGA.jpeg)
仿真结果
![仿真结果.JPG](//image.lceda.cn/pullimage/whjLM2iIdLS1CSISiLFxoMBp12jzvD0LOQ52t9ov.jpeg)
3dB衰减频点
![3dB衰减频点.jpg](//image.lceda.cn/pullimage/75wDOgYLlcYLS1XMtHDaqqozWVro0CN218Hmgdre.jpeg)
阻带频点
![阻带频点.jpg](//image.lceda.cn/pullimage/bkUpqLZnVPViV1bnfBWTqaSQh5gDPBZ1F0HCdqyT.jpeg)
最终电路设计 使用差分电流结构
![LFP.JPG](//image.lceda.cn/pullimage/5YUrzwamxppl7JHPBCmJslSDCl3QHFJpludoVjkR.jpeg)
对应实物设计
![9th btwz3.JPG](//image.lceda.cn/pullimage/cwSA2m6W64FNIvA98VrR08lr6lV1jHvYk9v1bkvu.jpeg)
信号增益控制部分使用了ADI公司的AD603芯片
这是一颗压控可变增益运放,本设计中选用其-11dB至+31dB的增益范围,此时该芯片拥有90MHz的带宽 足够满足设计需求。使用stm32自带的DAC输出后转换为+-1V可以实现信号峰峰值从40mV到5V的数字可控。
信号偏移控制 使用了ADI公司的AD8042高速运放的其中一路
AD8042是一颗轨到轨的高速双运放,有160MHz的3dB带宽和200V/us的摆率,能满足高速信号输出的需求。
实现偏移控制和输出驱动与保护的电路如下图
![OUT.JPG](//image.lceda.cn/pullimage/9TIYLxMLrL2QDN7U5ysoJmnWK3VW0vrsNVjbBqGe.jpeg)
最终的驱动输出驱动进行了一次方向,可以选择设计放大与否,AD8042可以提高高达50mA的输出电流,足够推动常见的负载。
输出开关使用AQY210光耦控制,且有双二极管过载保护。
用于增益控制和偏移控制的电压量都是来自stm32内部自带的DAC,其输出为0-3.3V,而增益控制需要+-1V,偏移控制需要+-3.3V,因此需要一个运放来完成转换。但是这里涉及一个问题,系统供电为+-3.3V,需要耐压7V以上的输入输出轨道轨的运放非常少,确实5.5V耐压的运放,用cmos工艺制成,很容易实现输入输出轨到轨,但是cmos工艺不能耐压太高,高压的运放多为三极管工艺,大部分只能到地轨,能到电源轨的少之又少,找了好久终于找到了安森美的mc33202这款运放,耐压可以到12V,解决了问题。
控制电压映射电路如下
![33202.JPG](//image.lceda.cn/pullimage/t9eQEodJrHvNPHUop12OErM5Fbxe7NZ5tIt95vn4.jpeg)
供电部分 有两种选择 可以选择模拟域+-3.3V 这样可以功耗较低 适合电池使用 模拟域+-3.3V由LDO+负压电荷泵构成
可以选择模拟域+-5V 这样可以功耗会翻翻 适合高性能应用 由宽的输出电压范围 模拟域+-5V由BOOST DCDC构成
通过选焊实现不同功能
对于地的处理 小心谨慎的设计了模拟地和数字地,并在最靠近DAC的地方设计了单点连接模拟数字地
并对关键滤波放大环路设置了完整的地平面且充分接地
![GND.JPG](//image.lceda.cn/pullimage/ohn2ptBUqMu8zryRcwbJ4zozKTohsNrwIkGHFQay.jpeg)
软件部分
单片机的程序编写使用模块化编写,每个波形一个独立模块,这样可以非常方便的增加删减波形,调整波形顺序。也可以很方便的为每个波形定制不同的参数 操作和功能等等,相当的灵活。
因为大赛要求PCB板子上必须有logo,需要图片视频特写logo,而本PCB因为位置特别紧凑,所以大赛logo只能放在了TF卡座封装的下方,所以在参赛期间没有焊接tf卡座。后期对于各种扩展波形,自定义波形之类的波形,都将可以通过TF卡储存并导入使用或者USB直接下发,这是后期的升级目标。
SIN值的查找表使用MATLAB生成
MATLAB代码如下:
![MATLAB代码.JPG](//image.lceda.cn/pullimage/9mjNYfKNKRZ7cY59mmCa2epHPmdqOmIwdhkLws4X.jpeg)
代码文件见附件
SINC函数发查找表也使用MATLAB生成
MATLAB代码如下:
![SINC MATLB.JPG](//image.lceda.cn/pullimage/ieEE86RLDNqj6yuIDnfGieJRn2QcwhRLqPRqpJzd.jpeg)
代码文件见附件
CPLD程序涉及 使用Verilog硬件描述语言编写,使用ALtera公司的官方EDA开发,QuartusII 13.0.1
下图为顶层部分代码截图
![CPLD.JPG](//image.lceda.cn/pullimage/OrbdfXxXl7SVjbAoaeK0NwRbjIBgwJkbVOC55RPF.jpeg)
鉴于大部分朋友没有可编程器件的开发经验,此处简单介绍怎么综合和烧录
首先准备下载QuartusII,购买USB Blaster。创建工程 选择器件 添加文件等过程掠过 网上可以找到 教程
点击紫圈编辑引脚关联
点击红圈箭头开始综合布线
点击蓝圈下载
![QuartusII.jpg](//image.lceda.cn/pullimage/VM7fAazVVqaoWqWwsHYmJHU35ArmpiZbubJMtVWK.jpeg)
引脚定义
![PIN1.jpg](//image.lceda.cn/pullimage/w2h65sh5WWGmPHkANLupuO6EEUh6Xqw8V5H5us7u.jpeg)
![PIN2.jpg](//image.lceda.cn/pullimage/k6KmEbjLjc0Q8Z3jutaCzZeGTmhdKHqUwirEOuQ5.jpeg)
下载流程
插好USB Blaster 使用JTAG口连接目标板
Blaster的JATG引脚定义
![JTAG引脚定义.JPG](//image.lceda.cn/pullimage/NQbalKbmu2AojkysV7FZfzCh3WDp5zRsTBRM5XJY.jpeg)
点开下载界面
红圈选择要下载文件 篮圈勾选下载选型后点开始 等待下载完成
![Doenload.jpg](//image.lceda.cn/pullimage/VYsAX7hwUSaO1YLoEbKxOrJ7kETWjMQuulxqknVU.jpeg)
要下载的文件.pof文件 文件见附件
![DL File.jpg](//image.lceda.cn/pullimage/cvPoyVKtZk3Unfk0xQNv7Jfkprh35fxTa8BohgsO.jpeg)
关于上位机
正在开发 开发环境 Visual Studio 用的是C#语言
上位机代码/工程截图
![code.JPG](//image.lceda.cn/pullimage/ng9FU2HTlaqorGMO6LGICnDZFd8UK9HRD9UdrtbU.jpeg)
目前就搞了个开头半成品 只是有个架子 还没最终定型,好多显示的参数也还没有敲定
上个半成品图仅供参考,里面的数据不是最终效果,因为大赛马上要截稿了,搞不完了只能后面慢慢搞
![半成品.JPG](//image.lceda.cn/pullimage/C1lriLCBGeML0gi2PD72VX619X28RS4YPZUkzm6c.jpeg)
四、作品图片上传;
PCB打样回来的样子
感谢立创提供的SMT打样服务,省了很多焊接的事情
![4.JPG](//image.lceda.cn/pullimage/XQtBlsVFmFASvuM8gWDwtnEoiAXrCblB6JMnggqh.jpeg)
空板背面
![5.JPG](//image.lceda.cn/pullimage/hDgfqGXIriV2MYkeKLaQmiFN6ZxltXAg9mT0mUZe.jpeg)
焊接好正面
![I3yctE8EESy7bbZrtGbq84J3MBR6YrWeY0rfo2SS.jpeg](//image.lceda.cn/pullimage/mmziz0xZ1xsRPq7Po9zUevFzivnGxSD2PkBq6M6z.jpeg)
焊好背面
![6.JPG](//image.lceda.cn/pullimage/uaVuyRW2XlCU3uMZOYsjuGQ8SKbWcDGBwgeXMJIT.jpeg)
装屏幕焊好
![2.JPG](//image.lceda.cn/pullimage/AFFA4UJG4gnpmqmNgzXI4ccrbfZlAGxIjXdmHk7L.jpeg)
握在手里的大小
![7.JPG](//image.lceda.cn/pullimage/d2q9BmQnnfNrvGYBszJMleMyRFPns4PYlBt5ULtv.jpeg)
对比北京交通卡(信用卡)大小
![3.JPG](//image.lceda.cn/pullimage/vLW7TUiIyGmBdyrQsg3rzpDBdAv6Xbo1tUjj8z8x.jpeg)
输出性能示意图
最高输出25MHz的正弦波
![25MHZ.JPG](//image.lceda.cn/pullimage/IYEjqg1HszZ6HXbLU7iBYhtK6MxkkKaCMHufnby4.jpeg)
200K的正弦波
![15.JPG](//image.lceda.cn/pullimage/lkpU2wtRVxms4mGYbOHM5u8CwyzGzaEOdhBnVQyr.jpeg)
锯齿波输出
![11.JPG](//image.lceda.cn/pullimage/pNtoanKvjUjUvDYKZp7pR7A108Ktyj5r3xVm2AmK.jpeg)
SINC输出
![9.JPG](//image.lceda.cn/pullimage/dC3ruqDUvIVFccqBPO3aWaEkDuqv5rg2XX1ERrOZ.jpeg)
方波输出
![10.JPG](//image.lceda.cn/pullimage/39Y9pUtVB7Fbw6siJG0RltZrlBxzrDjpajjO7YH1.jpeg)
三角波输出
![12.JPG](//image.lceda.cn/pullimage/HPGFZ06BOt7t00cxDFsvBINDH8BbJxaUC9FvRqBG.jpeg)
阶梯波输出
![13.JPG](//image.lceda.cn/pullimage/UgYAUnAVYY1DSvYgXO2zAHNUqW3QEYlWtunieqGe.jpeg)
最小幅度输出
![14.JPG](//image.lceda.cn/pullimage/ZNdlhICbPdeTll2P5puqwPSCG8pxySwjvr0QbO5v.jpeg)
五、作品材料清单;
![image.png](//image.lceda.cn/pullimage/TpPAVzwqB7qDUQKZbqfCmmGSIzJsYGnxngsJHnDh.png)
BOM表见立创EDA 见附件
六、开源文档;
PCB文件见立创EDA
开源程序和可执行文件见附件
七、演示视频:见附件
ID |
Name |
Designator |
Footprint |
Quantity |
1 |
12MHz |
X1 |
OSC-SMD_4P-L3.2-W2.5-BL |
1 |
2 |
20pF |
C5,C6 |
0402 |
2 |
3 |
10K |
R11,R16,R23,R56,R57 |
0402 |
5 |
4 |
100nF |
C7,C2,C3,C4,C17,C47,C48,C45,C46,C49,C60,C61,C62,C64,C65,C66,C56,C54,C57,C58 |
0603 |
20 |
5 |
W25Q128JVSIQTR |
U1 |
SOIC-8_208MIL |
1 |
6 |
AT24C02C-STUM-T |
U2 |
SOT-23-5 |
1 |
7 |
TF-15×15 |
CARD1 |
SD-MICRO-A |
1 |
8 |
K1-1502SA-02 |
SW5,SW6 |
K1-1502SA-02 |
2 |
9 |
micro USBFemale |
USB1 |
MICRO-USB-1 |
1 |
10 |
10K |
RN2,RN1 |
0402_X4 |
2 |
11 |
22 |
R13,R14 |
0402 |
2 |
12 |
1.5K |
R17 |
0402 |
1 |
13 |
TP4054 |
U4 |
SOT-23-5_5PIN_L3.05-W3.00-PITCH0.95-BL |
1 |
14 |
XC6206P332MR |
U5,U6 |
SOT-23(SOT-23-3) |
2 |
15 |
1uF |
C8,C9,C10,C11,C12,C13,C14,C20,C21,C24,C25,C26,C27,C28,C29,C30 |
0402 |
16 |
16 |
4.7K |
R18,R12,R44 |
0402 |
3 |
17 |
0805G (Green) |
LED1 |
LED-0805 |
1 |
18 |
10uF |
C15,C16,C18,C19,C53,C52,C50,C51,C59,C63 |
0603 |
10 |
19 |
0 |
R15,R21,R28,R30,R26,R35 |
0603 |
6 |
20 |
100K |
R19,R20,R31,R27,R54 |
0603 |
5 |
21 |
1N4148WS T4 |
D1 |
SOD-323 |
1 |
22 |
100Ω |
L1 |
0805 |
1 |
23 |
FH26W-39S-0.3SHW(60) |
FPC1 |
FH26-39S-0.3SHW外框 |
1 |
24 |
22 |
R22 |
0603 |
1 |
25 |
SS8050 |
Q1 |
SOT-23(SOT-23-3) |
1 |
26 |
22K |
R1 |
0603 |
1 |
27 |
220K |
R2 |
0603 |
1 |
28 |
3K |
R10 |
0603 |
1 |
29 |
6.2K |
R9 |
0603 |
1 |
30 |
9.1K |
R8 |
0603 |
1 |
31 |
15K |
R7 |
0603 |
1 |
32 |
24K |
R6 |
0603 |
1 |
33 |
33K |
R5 |
0603 |
1 |
34 |
51K |
R4 |
0603 |
1 |
35 |
100pF |
C1 |
0603 |
1 |
36 |
K2-1107ST-A4SW-06 |
SW1,SW3,SW2,SW7,SW8 |
K2-1107ST-A4SW-06 |
5 |
37 |
Header2.54mm 1*8P |
P1 |
HDR-TH_8PIN-V-MALE-PITCH2.54 |
1 |
38 |
BAT |
P3 |
HDR-TH_2P-P2.54-V-M |
1 |
39 |
K3-1296S-E1_C128955 |
SW4 |
SW-SMD_3PIN_K3-1296S-E1 |
1 |
40 |
FP6291LR-G1 |
U16 |
SOT-23-6 |
1 |
41 |
10uF_NC |
C31,C33,C34,C67,C69,C71 |
0603 |
6 |
42 |
100nF_NC |
C32,C68,C70 |
0603 |
3 |
43 |
3.3uH |
L11 |
IND_3L_SNR5040K_SERIES |
1 |
44 |
B5819W_NC |
D3,D4,D5 |
SOD-123 |
3 |
45 |
100Ω_NC |
L12 |
0805 |
1 |
46 |
75K |
R58 |
0402 |
1 |
47 |
STM32F103RCT6 |
U3 |
LQFP-64_10X10X05P |
1 |
48 |
IS61LV25616AL-10TLI |
U8 |
TSOP(II)-44 |
1 |
49 |
25MHz |
X2 |
OSC-YSX-3225_4P |
1 |
50 |
12pF |
C22,C23 |
0402 |
2 |
51 |
NC |
R29,R25,R24,R34 |
0603 |
4 |
52 |
2.54mm 1*5P Header |
P2 |
HDR-5X1/2.54 |
1 |
53 |
ICS511M |
U9 |
SOIC-8_150MIL |
1 |
54 |
EPM240T100C5N |
U7 |
TQFP-100_14X14X05P |
1 |
55 |
SMA_EDGE |
J1 |
SMA-EDGE |
1 |
56 |
AD9708ARUZ |
U11 |
TSSOP-28 |
1 |
57 |
6.8K |
R45 |
0603 |
1 |
58 |
100 |
R32,R36,R33,R37 |
0603 |
4 |
59 |
SGM3204YN6G/TR |
U14 |
SOT-23-6 |
1 |
60 |
4.7uF |
C55 |
0603 |
1 |
61 |
AD603ARZ |
U10 |
SOIC-8 |
1 |
62 |
600Ω |
L10 |
0805 |
1 |
63 |
1K |
R43,R38,R51 |
0603 |
3 |
64 |
10K |
R52,R47,R48,R53,R49,R50,R40,R39 |
0603 |
8 |
65 |
20K |
R55 |
0603 |
1 |
66 |
49.9 |
R41 |
0805 |
1 |
67 |
BAV99,215 |
D2 |
SOT-23 |
1 |
68 |
5.1K |
R42 |
0603 |
1 |
69 |
15pF |
C35,C40,C39,C44 |
0603 |
4 |
70 |
56pF |
C36,C41,C38,C43 |
0603 |
4 |
71 |
82pF |
C37,C42 |
0603 |
2 |
72 |
470nH |
L6,L9,L2,L5 |
0603 |
4 |
73 |
820nH |
L7,L8,L3,L4 |
0603 |
4 |
74 |
AQY210S |
U13 |
SOP-4(4.4X4.1) |
1 |
75 |
470 |
R46 |
0603 |
1 |
76 |
AD8042AR |
U12 |
SOIC-8_150MIL |
1 |
77 |
MC33202DR2G |
U15 |
SOIC-8_150MIL |
1 |
展开
57
151
收藏到专辑