利用Vivado的DDS Complier IP核和tlv5618实现信号的输出(计算理论上硬件能支持输出最大频率的正弦波)

出现的问题:

当我利用ROM存储正弦波的值实现每当我用DAC输出完上一个值的时候,利用地址加一输出下一个ROM的值,这种情况理论上我的DA(tlv5618)输出频率为1.25M,即:
在这里插入图片描述

同样,当时利用DDS产生的不同频率不同相位的波形,我仿真了不少的信号调制,都发现没有问题,而当我直接把DDS的输出放到我的DA的输入端口,一番调试,发现DA的转换速度远远慢于DDS数据的生成速度,这就导致我DA实际输出的值不是我想输出的。

对DDS的重新理解

经过研究DDS发现,当时钟频率为50Mhz,输入位宽为16位,输出则是12位,因为我的DA是12位的数据输入和4位的功能选择位。
因为DDS的性质,每个时钟周期都会更新他的值,即1/50 ns更新一次数据,按照我的理解,间隔时间为dt,DDS必须输出一个值,如果我们需要50M的信号,DDS只会输出一个相同的值,如果我们需要25M的信号,DDS只能输出2个不同的值,如果我们想要波形好看一点,假设我们一个正弦波周期用50个点来表示,则在这种情况下,DDS能输出最大的正弦波周期为1Mhz。

DDS与DA的速度配合:

在理想情况下,DDS产生更新数据的时间只能比DA转换的时间长,如果相反,则DA输出不正确的DDS数据。所以在理想情况下,我们DDS数据更新的时间为1/1.25 = 0.8 ns,即为1.25Mhz的驱动时钟来驱动DDS使其更新数据。如果需要生成比较好的波形最低得25个点,则我们DA能输出最大的信号频率为50Khz。
但是,实测,在完成DA数据转换的完整时间周期为1.32us,此时间为CS拉低到CS拉高中间的时间,实际上,不可能拉高CS后瞬间拉低,时间还会增加,但此时我们计算理想情况。1/1.32us= 757.5Khz(此时间要设置为DDS的驱动时钟保证DDS数据更新的时间),同样假设完好波形为25个点,则生成正弦波的最高频率为30.3Khz.


实际应用:

实际上,我将DDS更新数据的周期设置为2us,此时DDS的驱动时钟为500Khz,按照25个点的想法,正弦波的最高频率为20Khz
在这里插入图片描述
在这里插入图片描述

实现8FSK调制:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值