xilinx DDS IP总结

概述

Xilinx DDS主要用于产生正弦信号,在无线通信上下变频中使用的比较多,下面将阅读DDS IP手册的理解及实际工程(SIN/COS LUT模式)使用过程作如下总结。

DDS内部组成

DDS内部主要由相位产生器(Phase Generator)和查找表(SIN/COS LUT)这两部分组成,这两部分可以独立使用,也可以合并使用,因此在实际使用中可以配置成三种模式:Phase Generator、SIN/COS LUT、Phase Generator+SIN/COS LUT。DDS的内部组成如下图所示。在这里插入图片描述

DDS关键参数计算

1、正弦信号频率
DDS产生的信号频率fout的计算公式如下,其中fclk为系统工作参考时钟频率,也可以该信号的采样频率fs,deta为相位增量对应的bit值,分母表示用多少位bit对应的2pi。例如信号采用率120Msps,每次相位增量对应的值为12(注意这里是十进制的12),相位用10bit表示,则产生的信号频率fout=(120×10^6*12) / (2^10)=1.406250 MHz。也可以这样理解这个公式:正弦波一个周期内采用的点数为fs/fout,等于2pi映射对应的数字除以相位增量对应的数字。
在这里插入图片描述(公式1)

2、相位增量数值
根据上面正弦信号频率公式,可以推导出相位增量数值为:
在这里插入图片描述(公式2)
当用于产生C路通道信号时,相位增量数值为:
在这里插入图片描述(公式3)
3、频率分辨率
这里的频率分辨率可以暂且理解所能表示的最小频率,还是公式1所示,当相位增量deta为1,即为最小时,所能表示的最小频率即为频率分辨率。
在这里插入图片描述(公式4)
4、Rasterized(栅格化)模式
注意在选择Rasterized(栅格化)模式时,分母需要替换,信号频率、相位增量、分辨率公式均有变化,例如信号频率变为:
在这里插入图片描述(公式5)
Rasterized(栅格化)模式配置界面参见下图
在这里插入图片描述

实际工程说明

在实际工程中我们选择了SIN/COS LUT模式,因此相位增量通过AXI接口由主控写道FPGA寄存器phase,使能信号需要自行产生,输入相位增量为16位,输出的正弦信号SIN和COS各16位,代码参见如下:

//DDS
reg phase_en1;
reg [1:0] cnt1;
reg [11:0] phase1;
always @ (posedge data_clk or negedge start)
if(!start)
  begin
    cnt1<=2'd0;
    phase1<=12'd0;phase_en1<=1'b0;
  end
else
  begin
    cnt1<=cnt1+1'b1;
    if(cnt1==2'd0)
      begin phase_en<=1'b1;phase1<=phase1+phase;end
    else phase_en<=1'b0;
  end
wire [31:0] m_tdata;
dds1 dds1 (
.aclk                 (data_clk  ),// input wire aclk
.s_axis_phase_tvalid  (phase_en  ),// input wire s_axis_phase_tvalid
.s_axis_phase_tdata   (phase1     ),// input wire [15 : 0] s_axis_phase_tdata
.m_axis_data_tvalid   (dds_en    ),// output wire m_axis_data_tvalid
.m_axis_data_tdata    (m_tdata   ) // output wire [31 : 0] m_axis_data_tdata
);

配置界面如下,注意配置界面中相位及信号位宽与实际例化的不一致。
在这里插入图片描述
注意配置界面中无输出有效信号,与实际例化的也不一致。在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_39789553/article/details/114581330
dds