VIVADO中DDS IP核的简介、配置及其仿真

数字信号处理(一):Xilinx Vivado DDS IP核设计实例 https://blog.csdn.net/gslscyx/article/details/104024041
vivado DDS IP核参数设置和仿真
https://blog.csdn.net/weixin_43773312/article/details/103964418
Vivado DDS IP核使用和仿真(一、单通道信号发生器)
https://blog.csdn.net/u013215852/article/details/91042672
Vivado DDS IP核使用和仿真(二、多通道信号发生器)
https://blog.csdn.net/u013215852/article/details/91044141
vivado dds Compiler v6.0 学习笔记
https://blog.csdn.net/Real003/article/details/102596387
以上为参考的几篇文章,学习整理如下:

一、DDS IP核简介

在这里插入图片描述
图中我们看到DDS IP核主要包括5部分组成,其中DDS核心为相位累加器(标记1所示)和LUT查找表(标记2所示)。相位累加器实现查找表地址的产生,LUT查找表用来存储输出波形。标记3部分为抖动产生器和泰勒级数矫正产生模块,主要用来改善SFDR,两者改善的效果、使用的逻辑资源存在差异。标记4部分则为AXI4接口,实现相位累加字配置,多通道配置,相位累加器输出和波形数据输出。标记5部分则在多通道DDS输出时使用。

DDS IP核可以配置为三种模式:相位产生器、SIN/COS LUT或者相位累加器和SIN/COS LUT(即DDS)。
在这里插入图片描述

二、参数解释

在这里插入图片描述
phase width是相位累加器的位宽,Frequency Resolution是频率分辨率,channels是IP核设置的通道数,默认通道数为1时,二者对应关系(对应dds频率分辨率公式):
在这里插入图片描述只不过在VIVADO的DDS IP核使用中,频率分辨率与通道数有关。

在这里插入图片描述

output width是输出波形的数据位宽,一般与DA转换器匹配,SFDR(Spurious Free Dynamic Range(dB))与之有关,具体换算关系见表格4-3。

三、参数配置测试

关于output不同的选择,输出数据的格式如下:
在这里插入图片描述
output width与sfdr设置测试
sfdr = 42时,output width = 7:
在这里插入图片描述
sfdr = 43时,output width = 8:(注意此时图形界面中data位宽为16)
在这里插入图片描述
sfdr = 49时,output width = 9:(注意此时图形界面中data位宽为32)
在这里插入图片描述

四、单通道配置

| 单通道 | 输入100MHz | 幅值位宽16bit | 相位位宽14bit | 输出1MHz |
在这里插入图片描述
在这里插入图片描述
注意此时相位位宽为14bits
在这里插入图片描述

五、多通道配置

| 多通道 | 输入120MHz | 幅值位宽16bit | 相位位宽16bit | 输出1MHz和10MHz |

通道设置为2,我们就需要把Frequency Resolution重新设置:Frequency Resolution = 120000000/2^16 /2= 1831.0546875/2 = 915.52734375
在这里插入图片描述
在这里插入图片描述
注意此处:这个地方需要格外注意,一开始有疑惑,为什么通道变成了2,数据宽度和接口都没有增加,原来是因为这双通道的数据是分时输出的,即交替输出。使用系统自带的testbench时,波形观察窗口会自动弹出两个通道的sin和cos波形,但是实际例化使用时需注意添加类似代码:

assign sin[15:0] = o_data_tvalid ? o_data_tdata[31:16]:16'b0;
assign cos[15:0] = o_data_tvalid ? o_data_tdata[15:0] :16'b0;

reg [15:0] sin_c0;
reg [15:0] sin_c1;
reg [15:0] cos_c0;
reg [15:0] cos_c1;

reg m_axis_data_channel = 1'b0;

always @(posedge aclk)
begin
    m_axis_data_channel <= ~m_axis_data_channel;
    if(m_axis_data_channel == 1'b0)
    begin
        sin_c0 <= sin;
        cos_c0 <= cos;
    end
    else
    begin
        sin_c1 <= sin;
        cos_c1 <= cos;
    end
end

endmodule

因为是分时输出的,所以体会下相位累加器变化规律:
在这里插入图片描述
通道值在切换,使用时根据该信号赋值:
在这里插入图片描述
六、仿真时间测量问题
在这里插入图片描述
如上图所示,测量输出的1MHz信号的周期,结果为12us,理论值应该为1us,这是因为系统自带的仿真文件中,时间设置的是10MHz,如下图
在这里插入图片描述
而实际IP设置的是120MHz,12us对应120个10M的周期,而实际120个120M的周期就是1us,即1MHz信号。

  • 23
    点赞
  • 298
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
VivadoDDS IP核是一种数字信号处理核,用于产生特定频率和相位的信号。DDS IP核可以在Vivado设计环境进行配置。根据引用所提供的配置方法,可以通过设置输出信号位宽、频率、频率分辨率和相位等参数来实现对DDS IP核配置。其,输出频率可以通过配置FTW(频率控制字)和系统工作时钟频率(fclk)来计算得到。通过调整相位累加器的位数(N),可以实现更精确的相位控制。为了详细了解VivadoDDS IP核配置方法,建议参考引用和提供的CSDN网页和学习笔记。这些资源将提供详细的指导和示例,有助于您更好地理解和配置VivadoDDS IP核。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Vivado DDS IP核使用、仿真、多相处理和相关计算验证](https://blog.csdn.net/Popplio/article/details/126711613)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Vivado DDS IP配置](https://blog.csdn.net/whangtash/article/details/127090406)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值