当前位置:   article > 正文

【DDS】FPGA使用AD9914的PROFILE模式输出正弦波

【DDS】FPGA使用AD9914的PROFILE模式输出正弦波

一、AD9914介绍

官方文档:https://www.analog.com/cn/products/ad9914.html
1、概述

    AD9914是一款带12位DAC的直接数字频率合成器(DDS)。该器件采用先进的DDS技术,连同高速、高性能数模转换器,构成数字可编程的完整高频合成器,能够产生高达1.4 GHz的频率捷变模拟输出正弦波。AD9914具有快速跳频和精密调谐分辨率(64位采用可编程模数模式)。这款器件还实现了快速相位与幅度跳跃功能。频率调谐和控制字通过串行或并行I/O端口载入AD9914。它还支持在用户定义线性扫描模式下工作,可产生频率、相位或幅度的线性扫描波形。AD9914包含一个高速32位并行数据输入端口,可支持极性调制方案的高数据率以及相位、频率和幅度调谐字的快速编程。
2、工作模式
AD9914支持五种工作模式。

  • 单频模式
  • Profile调制
  • 数字斜坡调制(线性扫描)
  • 并口数据端口调制模式
  • 可编程调制模式

    实际操作时可以同时启用多种模式。因此,这为配置复杂调制方案带来了巨大的灵活性。为避免多数据源驱动同一DDS信号控制参数,AD9914确定了内部优先级协议。
    本文使用Profile模式,通过SIP接口配置AD9914内部寄存器,使AD9914输出指定频率、幅度、相位的正弦波。

若要使能SPI操作,需要将引脚28
(F0)置位为逻辑高电平、引脚29至引脚31(F1至F3)置位为逻辑低电平。

二、I/O端口

源码请私聊(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ
在这里插入图片描述

I/O端口

信号名称输入/输出描述
iClkIn工作主时钟,频率在100M及以下(SPI时钟为主时钟的四分之一)
iRst_nIn复位低有效
iFrequency[31:0]In输入频率(计算公式如下)
iAmplitude[31:0]In低16位为相位,[27:16]位为幅度,高4位为开路
iTriggerIn触发配置AD914寄存器(高电平触发,高电平时间需大于一个iClk时钟周期)
oSpi_clkOutSPI时钟(SPI时钟为iClk的四分之一)
oSpi_cs_nOutSPI片选
oSpi_mosiOutSPI输出
iSpi_misoInSPI输入
oAd9914_rstOutAD9914复位管脚,高有效
oAd9914_updateOutAD9914数据更新管脚,高有效

(1)输入频率的计算公式为: i F r e q u e n c y = r o u n d ( 2 32 输出频率 参考频率 ) iFrequency ={round(2^{32}{\frac{输出频率} { 参考频率}})} iFrequency=round(232参考频率输出频率)
其中round(x)为四舍五入函数,参考频率由硬件控制。

(2)相位iAmplitude[15:0]计算公式为: i A m p l i t u d e [ 15 : 0 ] = 2 Π ( 相位偏移 2 14 ) iAmplitude[15:0] = 2 Π(\frac{相位偏移} { 2^{14}}) iAmplitude[15:0]=(214相位偏移)其中相位偏移值的单位是弧度。
(3)幅度iAmplitude[27:16]计算公式为: A m p l i t u d e S c a l e = 幅度值 2 12 Amplitude Scale =\frac{幅度值} { 2^{12}} AmplitudeScale=212幅度值其中幅度值以满量程分数表示。

三、时序和仿真

该IP核的工作流程如下所示:
在这里插入图片描述
(1)AD9914上电后等待20ms电源稳定,然后拉高oAd9914_rst复位AD9914。

在这里插入图片描述

(2)复位完成后需校准DAC,校准方法为先拉高CFR4寄存器的[24]位,等待校准完成后拉低CFR4[24]位。
校准时间计算公式为: t = 531840 参考频率 t=\frac{531840} { 参考频率} t=参考频率531840
在这里插入图片描述
(3)校准完成后等待触发,然后开始配置AD9914。先配置CFR1寄存器,CFR1_DATA = 32’h00010008。配置内容为:打开正弦使能输出CFR1[24],打开外部省电控制CFR1[3]。

在这里插入图片描述

(4)配置CFR2寄存器,CFR2_DATA = 32’h00808000。配置内容为:打开Profile模式使能CFR1[24](使用Profile调制模式),打开延时匹配使能CFR1[16]。

在这里插入图片描述

(5)配置频率调谐字0寄存器,数据为iFrequency[31:0]。

在这里插入图片描述

(6)配置相位、幅度寄存器,数据为iAmplitude[31:0]。

在这里插入图片描述
(7)配置完成后重新校准DAC,方法和上述一致。

在这里插入图片描述
(8)校准完成后等待下一次触发更新频率、幅度、相位。

在这里插入图片描述

注:Profile寄存器地址的选择是通过PS[2:0]引脚。
AD9914手册说DAC CAL使能位必须手动设置,并且每次上电以及每次REF CLK或内部系统时钟改变以后需清零。但实际上发现按手册上设置,输出的频率偶尔会有谐波,经过验证在每次配置完Profile寄存器之后再校准一次DAC,谐波消失。

源码请私聊(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ ,此外承接各类DDS、高低速AD/DA、高速接口的驱动编写需求。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/621889
推荐阅读
相关标签
  

闽ICP备14008679号