加入交流群  

扫一扫,添加管理员微信
备注:参考设计,即可被拉入群
和也在搞设计小伙伴们碰一碰

收藏 

评论 

aytwartoofyoroo 发布

DDS任意波形发生器

 
设计简介

0.目录

  1. 项目需求
  2. 实现功能
  3. 项目分析
  4. 程序流程

 

1.项目需求

(1)通过板上的高速DAC(10bits/125Msps)配合FPGA内部DDS的逻辑,生成波形可调(正弦波、三角波方波)、频率可调(DC-)、幅度可调的波形

(2)生成模拟信号的频率范围为DC-20MHz,调节精度为1Hz

(3)生成模拟信号的幅度为最大1Vpp,调节范围为0.1V-1V

(4)在OLED上显示当前波形的形状、波形的频率以及幅度

(5)利用板上旋转编码器和按键能够对波形进行切换、进行参数调节

 

2.实现功能

使用2个按键与1个旋转编码器实现波形参数设置。

功能

K1控制波形转换,按照正弦波-三角波-方波的顺序切换,且通过RGB指示灯显示,分别对应红色、绿色和蓝色。

K2控制幅度,幅度范围从0.1V-1Vpp,默认为0.1Vpp,每次按下后增大0.1Vpp。

旋转编码器控制频率,频率范围最大为20MHz,按下旋转编码器后可以调整频率步进值,每次按下步进值x10。

(1)0.5Vpp 1kHz正弦波

(2)0.5Vpp 1kHz三角波

(3)0.5Vpp 1kHz方波

(4)0.8Vpp 100kHz 正弦波

(5)1.0Vpp 1MHz 正弦波

频率到达10MHz时由于示波器性能有限已无法观测。

 

3.实现思路

主要分为输入模块、输出模块和显示模块。

3.1 输入模块

输入模块内主要为按键防抖与旋转编码器解码ip核,对输入信息进行整合,得当设置的波形、幅度、频率以及频率步进。

3.1.1 按键

通常的按键所用的开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。

根据上面的原理描述,我们可以对按键的输入管脚进行边沿检测,当检测到输入信号变化后计数清零并开始计数,计数到20ms时进行采样,然后再对每次采样的值进行下降沿检测,检测的结果作为按键消抖的脉冲输出,然后每次检测到下降沿时让状态输出进行翻转并输出。

3.1.2 旋转编码器

旋转编码器给出两相方波,它们的相位差90°,通常称为A通道和B通道。其中一个通道给出与转速相关的信息,与此同时,通过两个通道信号进行顺序对比,得到旋转方向的信息。

3.2 输出模块

输出模块分为DAC驱动和ROM(存储波形数据)。

3.2.1 DAC

DAC使用基于3Peaks的3PD5651制作的高速DAC模块,驱动简单,仅需10位数据位与时钟信号。

波形数据使用Guagle_wave软件生成mif格式文件,如下图所示。需要注意保存时不能使用另存为,不然会保存空文件,直接使用文件-保存即可。

Guagle_wave

3.2.2 ROM

通过ROM的ip核可以完成ROM初始化,为节约空间将波形设置为256位,如有需要可以自行修改。

利用相位累加器实现对波形频率的调整,更详细的DDS教程可以查看dds_verilog [电子森林] (eetree.cn)。

3.2.3 PLL

但由于板载晶振频率较低仅为12M,使用PLL进行倍频,可以得到200MHz时钟作为DAC的时钟信号。

3.3 显示模块

显示模块使用0.96寸单色OLED,非常常见,使用FPGA驱动较为繁琐,使用状态机来进行初始化寄存器的写入以及屏幕刷新。

OLED为6线,从左到右依次为GND、VCC、SCL、SDA、RES、DC,使用3.3V供电。使用时可以参考中景园电子的教程,按照其单片机驱动时的代码,对OLED模块编写寄存器,初始化时的寄存器命令不同版本数量不等,使用查找表实现存储器,可以优化成调用官方RAM或ROM IP存储。为节省空间去除了中文字库等,仅保留5*8点阵字库数据,亦可删除掉大写字母或小写字母部分以进一步节省空间。

OLED分为4行,分别显示波形、幅值、频率以及频率步进。

0.96单色oled

更详细教程参见如何用FPGA驱动OLED屏? (qq.com)。

 

4.程序流程

RTL图如下所示。

RTL

输入模块为WaveControl中,输出模块为DAC,显示模块为OLED12864。

上方FreqStep的部分对频率步进的led灯进行设置。

 

5.资源占用

资源占用报告如下图所示:

参考设计图片
×

!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。

 
相关器件
器件 类型 描述 数据手册
MAX1044ESA+T 开关电源芯片 点击下载
群聊设计,与管理员及时沟通

欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。

 
查找数据手册?

EEWorld Datasheet 技术支持

论坛推荐 更多
更新时间2024-11-09 01:30:14

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

EEWORLD参考设计中心

站点相关: TI培训 德州仪器(TI)官方视频课程培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved