波形发生器设计验证

DDS概念

DDS表示直接数字合成器,主要从相位的概念出发,直接对参考的正弦波进行取样,得到不同相位数字信号,通过数字技术产生对应的电压幅度,最后通过滤波平滑输出所需要的频率。

设计要求

设计一个正弦波波形发生器,该正弦波能够调节正弦波频率,相位,幅度。

设计分析

第一步:需要得到一个正弦波不同相位上的数字信号,需要将得到的正弦波数字信号存储到IP核rom里,那么就需要将正弦波数字信号形成.mif文件或者.hex文件。

提取正弦波数据256个,利用第三方提取数据软件进行数据提取,将生成的mif文件存放在工程文件夹prj中。

第二步:通过控制IP核ROM地址的变化将正弦波数据读取出来,地址的变化由设计者控制,假设我们控制地址一个晶振驱动时钟周期变化一次,那么我们将所有的正弦波数据读取出来一次所需要的时间为:20ns*256。那么其对应的正弦波频率为:195312.5hz。通过modesim仿真软件将读取的波形数据进行模拟输出,我们就能够在wave界面看到完整的正弦波形,并检查正弦波波形频率。

第三步:改变相位,需要改变初始相位,就需要改变初始地址。将对应改变相位的变量称为相位控制字:pword。

第四部:改变幅度,改变的是正弦波的振幅,就需要改变波形数据的大小。假设我们将振幅扩大两倍,相对应的正弦波数据就扩大两倍。不需要控制地址的变化,最终需要改变的是rom输出的数据大小,在没有扩大之前波形数据的变化是0到255,扩大两倍以后数据的变化是0到510变化。那么顶层输出的波形数据变量位宽就需要扩大1位,对应的就是向左移一位。将对应改变振幅的变量称为振幅控制字:aword。

第五步:调节正弦波频率。如果我们要增大正弦波频率,需要改变正弦波数据输出的速度,那么就需要增大控制地址变化的时钟频率,这样的修改不会丢失正弦波数据;如果不能修改控制地址变化的驱动时钟频率,我们也要增大正弦波频率,在不丢失数据的情况下我们是不能够改变正弦波频率的,如果可以适当的丢失一些数据,那么正弦波频率就可以进行增大。如果我们不控制丢失数据的个数,那么最后在增大频率是将数据丢失完了,最后的正弦波形就变成一条直线。

我们如何在不丢失数据和不改变驱动时钟频率的前期下改变正弦波频率?

如果我们要将正弦波频率变小,那么就是地址变化变慢,如何控制地址变化慢一些,让地址经过多个驱动时钟周期变化一次,先考虑经过2个时钟周期地址变化一次,那么地址变化一次的周期为40ns,得到的正弦波频率为:10^9/40ns*256=97656.25hz.对于rom地址来说,就相当于将控制rom地址变量扩大的一位,高8位表示rom地址。现在我们让rom地址每经过256个驱动时钟周期变化一次,那就相当于将控制rom地址变量扩大到16位,其中高8位表示rom地址,那么得到的正弦波频率为:10^9/20ns*256*256=762.94hz;接着继续将正弦波频率减小,将控制rom地址变量扩大到32位,高8位表示rom地址,,那么得到的正弦波频率为:10^9/20ns*2^24*256=10^9/20ns*2^8*2^8*2^8*256=0.01164hz。如果在该频率的基础上进行正弦波频率变化的控制,那么我们在不丢失数据的和不改变驱动时钟频率的情况下得到的正弦波频率范围为:0.01164hz到195312.5hz,将0.01164hz作为正弦波的基准频率。将对应改变频率的变量称为频控制字:fword。

假设我们要得到一个频率为1000hz的正弦波信号,那么对应的频率控制字fword = 目标频率/基准频率=1000/10^9/20ns*2^8*2^8*2^8*256=85899;


本人为FPGA的初学者,本章为本人在学习过程中的学习笔记,如有不对请批评指正!!!

(文件:20230131)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值