ZYNQ学习--DDSIP核

DDS Compiler(6.0)

参考资料:
可搜索Vivado DDS Compiler(6.0)模块使用
Vivado 的DDS Compiler(6.0)IP核参考手册

注:创建工程省略

IP核调用

在IP Catalog 中搜索DDS
在这里插入图片描述

参数设置界面

一、基础设置

在这里插入图片描述
1、模式选择–(1)相位和波形数据 (2)相位数据 (3)波形数据
2、系统时钟设置
3、设置通道数
4、模式选择,两种模式的区别在于参数计算的方式不同
5、选择在System Parameters下进行参数设置
6、输出数据宽度和频率精度
SFDR 决定了输出的数据位宽。
在这里插入图片描述

二、运行设置

在这里插入图片描述

A、相位的增量(PINC)和偏移(POFF)

两个参数都是这几个选项:手册中解释都是相同的
Fixed(固定模式):运行前确定,运行中不可更改,占用资源最少
Programmable(编程模式): 运行时可修改,DDS频率在不同模式下进行切换
Streaming(流模式):参数取决于输入的相位值,适用于DDS频率频繁变动的模式
在这里插入图片描述

B、输出格式设置

output selection 中几个不同模式的输出时序
在这里插入图片描述

三、通道的频率和相位偏移设置

设置想要得到的正余弦频率
在这里插入图片描述

四、设置汇总及补充

在这里可以核对设置的参数是否为预期设置,便于检查
在这里插入图片描述
汇总补充实际的输出频率
在这里插入图片描述

五、 编写Testbeach进行仿真

设置时钟+实例化即可
注:
即,不能以 TestBench中的 reg 型赋值给被测模块作为输出的 wire 型;
同,不能以 TestBench中的 reg 型赋值给被测模块作为输出的 reg 型;
只能以TestBench中的 wire 型赋值给被测模块作为输出的 wire 型,
对于输入来说用 reg 可行。

module DDS_sim;
 reg sys_clk;
 wire [15:0]data_output;
 wire data_vaild;
 wire [23:0]phase_output;
 wire phase_vaild;
 dds_compiler u1
 (
  .aclk(sys_clk),
  .m_axis_data_tvalid(data_vaild),
  .m_axis_data_tdata(data_output),
  .m_axis_phase_tvalid(phase_vaild),
  .m_axis_phase_tdata(phase_output)  
 );
 initial
 begin
    sys_clk=0;
 end
 always #20 sys_clk=~sys_clk;
endmodule

AXI4-Stream的接口规范下,只有时钟和Vaild同时有效时才能成功输出数据
在这里插入图片描述

DDS IP 数字波形合成

首先得了解DDS IP核是参数设置,增加相位增量(频率字)
在这里插入图片描述
频率字的位宽计算,Δf 自己根据需求填写,再根据fCLK即可算出相位增量的位宽

在这里插入图片描述
设计中fCLK=50MHz Δf=1,所以频率字位宽为26bit
在这里插入图片描述
标准模式下的输出频率计算Δθ即为频率字
在这里插入图片描述
使用 Vivado的IPI工具,例化DDS IP,DDS需要能够配置频率字(相位增量)
DDS工作时钟使用PL的板载50MHz时钟,使用ILA工具观察波形, 使用VIO设定频率字
设计Block Design
在这里插入图片描述
在最后加ILA观察每一路信号,下图为实际观察结果
3MHz频率输出 频率字(26位)=0X 003D_70A3
在这里插入图片描述
将输出数据导出在matlab中生成频谱1MHz、3MHz
蓝色线为1MHz,红色线为3MHz。
误差可能是导入matlab转化数据格式时数据进位或者省和数字化过程中产生的
在这里插入图片描述

DDS IP & ADDA使用

基于“DDS IP 数字波形合成DAC ” 实验方案,使用50MHz时钟频率,使用DAC输出正弦波。把DAC输出模拟信号自环给ADC的输入

一、ADDA模块

使用的黑金配套的高速 AD/DA 模块 AN108
功能结构图
在这里插入图片描述
DA芯片AD9708 是 8位,125MSPS的 DA 转换芯片
AN108板载幅度调节,使用的是 5K 的电位器,最终的输出范围是-5V~5V(10Vpp)
AD芯片AD9280 芯片为8 位,最大采样率 32MSPS

Clocking Wizard (产生时钟) MMCM模式

MMCM是基于PLL的优化,MMCM相对PLL的优势就是相位可动态调整,但PLL占用的面积更小。
在这里插入图片描述

二、DDS IP核

IP核设置基本沿用上一个实验:最终输出为8位,频率字为26位;同样的DDS的频率字使用VIO生成。DDS的输出为有符号数,芯片的输入DAC CODE范围为无符号数0-255,所以DDS数据输出后需要与0X80进行异或,将数据最高位取反(相对于原始数据+128)
在这里插入图片描述

三、整体设计

ILA观察信号:频率字、DDS相位、DA输入、AD输出
在这里插入图片描述

100kHz的实验–频率低,AD输出较平滑

相位因为数字(32bits)过大显示范围太小而显示不全
在这里插入图片描述
matlab频谱图
在这里插入图片描述

  • 9
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Zynq-7000是Xilinx推出的一款全新的可编程系统芯片(SoC),其核心特点是将ARM Cortex-A9处理器与可编程逻辑器件(FPGA)集成在一起。ZED是由Digilent和Avnet合作生产的一款基于Zynq-7000 SoC的开发板。 关于Zynq-7000-ZED的资料,您可以从以下几个方面进行了解和获取: 1. 官方文档:Xilinx官方网站提供了针对Zynq-7000 SoC的详细技术资料和应用指南,包括技术手册、用户指南、应用笔记等。这些资料涵盖了硬件设计、软件开发、调试和测试等方面的内容,非常全面详细。 2. 社区论坛:在Xilinx官方网站上,您可以加入或搜索Xilinx社区论坛。这个论坛是一个交流平台,可以与其他用户分享经验和解决问题。在论坛上,您可以找到很多关于使用Zynq-7000-ZED进行开发的实际案例和技术讨论。 3. 参考设计和开发板说明:Digilent和Avnet官方网站上提供了基于Zynq-7000-ZED开发板的一些参考设计和示例代码。这些参考设计涵盖了不同的应用领域,包括图像处理、通信、机器学习等。通过研究这些设计,您可以更好地了解如何使用Zynq-7000-ZED进行应用开发。 4. 在线教程和视频:在互联网上,有许多第三方的在线教程和视频可以帮助您快速入门Zynq-7000-ZED的开发。这些教程和视频通常以实际的项目为例,展示了如何进行硬件设计、软件开发和调试等过程。 总之,Zynq-7000-ZED的资料非常丰富,包括官方文档、社区论坛、参考设计、在线教程等多种渠道。只要您愿意花时间去研究和学习,就能够轻松掌握Zynq-7000-ZED的开发技术和应用方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伊丽莎白鹅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值