开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
项目说明
本项目是一款基于FPGA的廉价多通道函数发生器
开源协议
未经作者允许,禁止商用。转载或引用需注明原作者与工程链接,有其他需求请发邮件至Defenver@foxmail.com
项目相关功能
本函数发生器实现了以下功能:
- 4通道模拟波形输出,带宽5Mhz,模拟波形刷新率100Mhz,输出精度8bits(MS9708)
- 4通道模拟波形输出频率可调,刷新率步进可达1Khz
- 模拟波形支持负压输出,输出摆幅可达±3V
- 支持输出各种常见波形,频率,幅度可调
- 带有丰富的人机界面,用户可以利用按键快捷的操作函数发生器
性能指标:
- 刷新率1KHz-100Mhz
- 波形输出频率1Hz-10Mhz
- 输出摆幅可达8V@1MHz,4V@10MHz
- 4通道独立同步输出,相位可调
- 4通道可选两路同步时钟源输出
- 支持输出正弦波,方波,三角波,脉冲,直流输出及校准波形
- 内置存储器上电可自动读取上次关机前的波形状态
- 内置温度检测页面可以获取FPGA运行参数
- 成本低至200¥/pcs,用二手料/减配可进一步降低成本
需要注意的是,本函数发生器由于运行功率过高(主要在DA输出部分),不支持USB供电,只支持DC12V供电。
项目属性
本项目为首次公开,为本人原创项目。项目未曾在别的比赛中获奖。
项目进度
部分验证成功
- USB3.0,射频源电路设计出错。由于不对设计指标造成影响,可删除
- 电流检测电路可删除,实际无多大作用
- 温度检测电路可删除,改为使用FPGA片内检测电路
设计原理
下图为硬件的框图,将依次介绍内容
PCB为4层板设计,大小小于10*10,可免费打板,进一步降低成本
电源部分
由于系统的功耗较高,电源此处采用了12V输入的方式,随后使用TPS82130来降压各电源轨。为了考虑到运放的供电,此处选用了TPS65131作为正负电源供电。具体电源树如下。
每一路电源都有严格的时序要求,框图左下角的数字编号代表上电顺序。
需要注意的是,由于未知原因,TPS65131的官方电路是错误的,下为正确的电路图。
FPGA最小系统
本设计选用了XC7A50T-FTG256作为主控芯片,经过实际开发后,可以使用更加廉价的XC7A35T作为主控芯片。
最小系统可以见原理图的第二页,其中包括以下资源:
-
- FPGA核心芯片,启动电路
- BPI存储器
- JTAG电路
至于核心原理本文不再赘述,可以参考Xilinx的相关手册查阅
DAC及前端电路
DAC实际焊接的型号是MS9708,可利用DAC908作为替代品,后者频率可以大大提高,且分辨率较MS9708要高。
前端运放选用了ADA4861作为放大器,该放大器为三通道高速运放,除了不支持轨到轨特性,可以完美实现设计的需求。前端电路如下
注意,图中电阻不是实际值,实际值请参考note指示进行修改
由于DAC为电流输出放大器,因此需要经过一个跨阻放大器将电流信号转为电压信号。随后输入到一个低通滤波器滤除高频噪声。最后一级放大电路实现了单电源到双电源转换,并外接了一个可调电阻实现偏置微调,实际使用中可使用校准功能来对波形的偏置进行微调。
时钟电路
FPGA的时钟源有两种,一种为固定时钟源,为50M的晶振输出的时钟,还有一种是可调时钟,由MS5351输出。输出频率可通过IIC来调节。
USB3,PLL输出电路
设计出错,不再介绍。用户复刻工程时可不贴器件或删除布线。
LCD电路
屏幕接口为兼容中景园接口定义的8pin接口。实际选用的屏幕为
注意选择ST7789 IC,不带CS的屏幕。螺丝孔位不对齐是正常现象。
软件说明
软件开发平台为vivado 2020.2,未对其他软件版本做兼容。
本设计软件主要利用blockdesign的方式开发,使用Microblaze处理器控制其他外设来实现函数发生器的功能。每个模块通过AXI4-Lite总线和处理器交互,具体实现原理可见RTL。
程序开发是在Vitis开发的,使用C语音实现对应功能的编程来实现具体功能。由于未引入任何屏幕UI库,主函数代码稍微有些繁琐,但与外设操控相关的代码十分简单。由于本人教学能力有限,无法具体介绍程序内容,烦请看客自行查看代码内容。
烧写程序仅需要编译Vitis工程,随后在Vivado生成MCS文件,存储器选用W25Q128,随后使用Hardware Manager烧录对应的二进制文件即可。
操作方法
KEY1-KEY5可控制页面,其中KEY3无作用。
KEY1的作用为选择,按下该按钮可选择光标选择项。
KEY2的作用为上一个,按下该按钮可选择上一选项。
KEY3的作用为下一个,按下该按钮可选择下一选项。
KEY4的作用为退出,按下该按钮可退出当前选择项。
KEY4与KEY5之间有个小按键,该按键为复位按键。
实物展示
设计注意事项
板子前端和FPGA在正常运行时极其耗电,请添加散热片,并且要用一个风扇对着吹,否则会存在过热烧毁的可能。
其他
由于RTL代码使用了ADI的源码,根据协议,本工程及派生工程需遵循GPL2.0协议。
评论