Vivado关于dds IP核实现任意频率的正余弦波输出

这篇具有很好参考价值的文章主要介绍了Vivado关于dds IP核实现任意频率的正余弦波输出。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Vivado关于dds IP核实现任意频率的正余弦波输出

目录
一、dds IP核的创建与参数配置
1、创建dds IP核
2、参数配置
3、可编程输入设置
4、详细的设置
5、输出频率设置
6、配置总结
7、输出增量和对应频率总结
二、相关数据计算
1、DDS输出波形频率fout、相位增量∆Θ、频率分辨率∆f、相位位宽BΘ(n)相关函数计算
2、举例
三、 工程实现
四、dds IP核内部架构简介
1、dds IP核核心架构
2、DDS编译器核心的标准模式使用相位截断
五、DDS IP相关资料

一、dds IP核的创建与参数配置

1、创建dds IP核
首先创建工程后在左边打开IP catalog ,输入dds找到dds IP核,双击DDS compiler打开dds IP核,进行配置;
2、参数配置
vivadodds ip核参数设置,tcp/ip,fpga开发,网络协议

图1.2.1 dds IP核参数配置

(1)Component Name 可以修改IP核名字

(2)Configuration options 配置选项:这里我们选择phase generator and sin cos LUT

(3)system clock(系统时钟) 125MHz(范围0.01—1000MHZ);通过奈奎斯特定理可知,最大输出的频率为62.5MHz,实际测得输出最大频率为62.3576MHz,当输出的频率超过30MHz的时候频率就开始不稳定;要想输出更大的频率,可以通过增加系统时钟来实现;

(4)Number of channels(通道数选择) 1;最多可以选择16个通道输出,本项目为实现任意可调频率输出只用到单通道输出即可;

(5)Frequency per channel (每通道频率) 125MHz;通过系统时钟除以通道数得到每通道的频率;

(6)Parameter selection (参数选择) system parameters;系统参数,为了更精确的输出任意频率,选择系统参数模式;

(7)Spurious free dynamic range(伪动态自由范围) 48(决定输出正余弦数据位宽n,范围为6*(n-1)~6*n,后面选择正弦或者余弦输出时位宽为8位,如果正余弦同时输出则位宽为16位,正弦为高8位,余弦为低8位)

(9)Frequency resolution(频率分辨率) 0.02910383045673370361328125(决定相位位宽,由相位位宽函数可得出频率分辨率,分辨率越精确,可调输出频率越精确,相位位宽函数在后面讲到)

(10)Noise shaping(噪声整形):控制是否相位截断、抖动或泰勒级数校正使用;

3、可编程输入设置
vivadodds ip核参数设置,tcp/ip,fpga开发,网络协议

图1.3.1 dds IP核参数配置

(1)Phase increment programmability(相位增量可编程性)
Fixed(固定模式);固定输出频率,不可任意调整;
Programmable(可编程模式);根据设计需求选择相位增量可编程模式,通过频率输出函数可知,输入不同相位增量时可输出不同频率,频率输出函数后面讲到;
Streaming(流水模式);

(2)Phase offset programmability
None(无);选择无相位偏移;
Fixed(固定模式);固定相位偏移;
Programmable(可编程模式);可以调整波形相位;
Streaming(流水模式);

(3)Output selection(输出选择)
Sine and cosine(正弦和余弦);如果用到正弦和余弦同时输出,则高8位表示正弦输出,低8位表示余弦输出;
Sine(正弦);选择正弦输出即可;
Cosine (余弦);

(4)Polarity (极性)没用上,不用选;
Negative sine(负极性正弦);
Negative cosine(负极性余弦);

(5)Implementation options(实现选项)
Memory type(内存类型:它控制SIN/COS查找表的实现):auto默认选择自动、distribution rom(分布rom)、block rom(块rom)
Optimization goal(优化目标:选择控制实现决策的目标是最高速度还是最低资源):auto默认选择自动、area(区域)、speed(速度)
DSP48 use(控制相位累加器和后续添加阶段(相位偏移或抖动噪声添加)的实现):minimal(默认最小)、maximal(最大)

4、详细的设置
vivadodds ip核参数设置,tcp/ip,fpga开发,网络协议

图1.4.1 dds IP核参数配置

本页默认即可,在AXI Channel options下可以选择 output tready(输出正余弦数据有效信号)输出引脚;

Latency options(延迟选项:选择延迟是由GUI自动配置还是手动配置)
Auto (默认自动);
Configurable (手动);

Control signals(控制信号)
ACLKEN (时钟使能信号) ARESETN(复位信号,低有效)

5、输出频率设置
vivadodds ip核参数设置,tcp/ip,fpga开发,网络协议

图1.5.1 dds IP核参数配置

Channel(通道) output frequency(输出频率)
根据之前选择为单通道输出,为了输出任意频率之前选择相位增量可编程模式,输出频率由相位增量决定,这里不设置输出频率;

6、配置总结
vivadodds ip核参数设置,tcp/ip,fpga开发,网络协议

图1.6.1 dds IP核参数配置

Summary 总结,可以看到之前的各种配置参数;

7、输出增量和对应频率总结
vivadodds ip核参数设置,tcp/ip,fpga开发,网络协议

图1.7.1 dds IP核参数配置

Additional summary 额外的总结,可以通过之前输入的输出频率看到每个通道数对应的16进制的相位增量,以及理论输出的频率,如果之前选择了相位偏移,还可以看到16进制的相位偏移增量以及相位增量值;

二、相关数据计算

1、DDS输出波形频率fout、相位增量∆Θ、频率分辨率∆f、相位位宽BΘ(n)相关函数计算
DDS输出波形频率fout是系统时钟频率fclk、相位累加器中的相位数据位宽BΘ(n) 和相位增量值∆Θ 的函数:
vivadodds ip核参数设置,tcp/ip,fpga开发,网络协议

相位增量值∆Θ是输出波形频率fout、系统时钟频率fclk、相位累加器中的相位数据位宽BΘ(n) 的函数:
vivadodds ip核参数设置,tcp/ip,fpga开发,网络协议

如果DDS核是时分多路复用做多个通道,那么每个通道的有效时钟频率减少。对于C个通道,所需相位增量为:
vivadodds ip核参数设置,tcp/ip,fpga开发,网络协议

根据系统时钟频率fclk和相位累加器中的相位数据位宽BΘ(n) 可以得到频率分辨率∆f的函数:
vivadodds ip核参数设置,tcp/ip,fpga开发,网络协议

相位位宽BΘ(n)是系统时钟频率fclk和频率分辨率∆f取对数的函数:
vivadodds ip核参数设置,tcp/ip,fpga开发,网络协议

2、举例
系统时钟频率为125MHz,想要调整输出的频率为14.7456MHz,相位位宽设置为32位;
vivadodds ip核参数设置,tcp/ip,fpga开发,网络协议

则fclk=125MHz,fout=14.7456MHz,BΘ(n)=32;通过上述函数计算出来的∆Θ值取四舍五入,再转换为16进制数后得到1E32F0EE,将该16进制数通过创建的dds IP核输入后,通过创建好的工程输出到外部通过示波器测得输出值;

三、工程实现

将创建好的dds IP核例化到创建的dds_wave模块当中,将dds IP核输出的信号sin_reg[7:0]给到sin输出;
assign sin = {~sin_reg[7],sin_reg[6:0]};

这里为什么要将最高位取反呢?因为如果不取反得到的就不是标准的正弦波,通过仿真可以看到输出结果,在我们改变相位增量时,对应的输出波形频率也发生了改变,由于外部没有DAC的情况,无法通过示波器测得输出的正弦波,本次工程主要是要实现任意频率的输出,因此就提取sin[7]来作为输出可以反映整个波形的频率;
vivadodds ip核参数设置,tcp/ip,fpga开发,网络协议

图3.1.1 正弦输出仿真

四、dds IP核内部架构简介

1、dds IP核核心架构
vivadodds ip核参数设置,tcp/ip,fpga开发,网络协议

图4.1.1 dds核心架构

DDS IP核核心架构:内部主要由相位发生器和正余弦查找表构成,相位发生器由一个累加器和一个可选的加法器组成相位偏移量的加法。当核心被定制时,相位增量(PINC)和相位偏移(POFF)可以独立配置为固定,可编程(使用配置通道)或流(使用输入相位通道)。

2、DDS编译器核心的标准模式使用相位截断
vivadodds ip核参数设置,tcp/ip,fpga开发,网络协议

图4.2.1相位截断DDS (DDS核心简化图)

通过输入一个相位增量Δθ,积分器(D1和A1分量)计算相位斜率,通过查找表T1映射到一个正弦(可能是复数)。Q1是一个切片器,可以把高精度的相位切片至低精度的相位。量化器Q1的输入是高精度的相位,然后输出量化后精度较低的相位。然后该信号出现在查找表的地址端口,实现相位空间到时间的映射。
查找表的深度和宽度分别影响信号的相角分辨率和振幅分辨率。
直接数字合成器使用具有适当查找表的寻址方案来形成任意频率正弦信号的样本。如果需要模拟输出,DDS将这些样本提供给数字-模拟转换器(DAC)和低通滤波器,以获得具有特定频率结构的模拟波形。当然,样本也通常直接用于数字领域。查找表传统上存储均匀间隔的余弦波和正弦波的样本。

五、DDS IP相关资料

更多关于dds IP核的设置与使用可以查找相关文档;文章来源地址https://www.toymoban.com/news/detail-781507.html

到了这里,关于Vivado关于dds IP核实现任意频率的正余弦波输出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vivado DDS IP配置

            本文记录Vivado中DDS IP核相关配置方法,主要涉及输出信号位宽、频率、频率分辨率、相位等相关内容。       一、点击 IP Catalog,打开DDS IP配置界面 Configuration界面: 1、System Requirement         System Clock:产生DDS的时钟         Number of Channels:默认为1 2、System Par

    2024年02月15日
    浏览(37)
  • 基于vivado DDS ip核的DDS信号发生器(可调频调相)

    基于Vivado DDS ip核的DDS信号发生器: 在Vivado软件中调出DDS ip核进行设置,很多参数可以参考xilinx官方手册,比较重要的是System Clock系统时钟和Phase Widh相位宽度的设置,这是最终得到波形的频率和相位所需要的基础参数,在这里我分别设置为50Mhz和16bit。 在implementation页面设置频

    2024年02月12日
    浏览(34)
  • vivado DDS IP核的使用及仿真

    参考:https://blog.csdn.net/weixin_45303812/article/details/123704440 新人第一次写文档,有错误的地方请大佬指点。 文档:Xilinx官网搜DDS Configuration 可配置参数 : 1.Configuration Options,有如下三种模式 Phase Generator and SIN/COS LUT (DDS): 相位和sin和cos的数据都是IP核自己产生 Phase Generator only:

    2023年04月15日
    浏览(44)
  • 具于xilinx FPGA的可动态配置DDS频率控制字的DDS IP核使用例程详解

    本文用于讲解xilinx IP 的dds ip examples(动态配置频率)的功能说明,方便使用者快速上手。 本examples 是月隐编写的针对DDS的使用demo,实现通过vio控制频率控制字来调整DDS的输出频率,为大家演示一个可动态配置DDS频率的例程。 例程的平台: 1) 硬件平台:XC7Z020CLG484-2 2) FP

    2024年02月02日
    浏览(41)
  • FPGA 之 xilinx DDS IP相位控制字及频率控制字浅析

    本文仅为个人理解之用; 相关仿真结果如下:

    2024年02月12日
    浏览(40)
  • Vivado DDS IP核使用、仿真、多相处理和相关计算验证

    第一次学,查询了很多CSDN网页,也问了组里的技术专家,得到了很多指导。把我的个人学习笔记在这里保存记录分享,如果有问题欢迎大家批评指正。也欢迎大家点赞评论收藏,一起进步! 1 DDS IP核的配置 创建工程,在IP核配置页面选择DDS compiler 6.0。对IP核进行配置。 如图

    2024年02月02日
    浏览(48)
  • 关于 【vivado ila debug时 高级触发的使用】之 改变ILA采样频率

    【vivado ila 高级触发的使用】之 改变ILA采样频率 一.背景 通常情况下,FPGA工程师在设计完复杂的逻辑设计后,会进行初步的仿真测试,仿真测试之后进行上板测试,但是简单的仿真往往无以应对复杂的实际情况, 上板使用在线调试工具(ILA和VIO)抓取内部信号进行debug是常用

    2024年02月03日
    浏览(53)
  • FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(四)

            接着同样地我们也需要完成对千兆网口ETH模块和USB2.0模块的编写,实际上和UART串口模块的设计思想大同小异,也同样地需要完成两项关键功能即识别并解析报文、接收并发送数据,千兆网口ETH和USB2.0的底层驱动在前面的例程中也详细说明了,所以在这里笔者不想再重

    2024年02月04日
    浏览(54)
  • FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(三)

            如图1所示是USB2.0/RS232/ETH控制并行DAC输出任意频率正弦波、梯形波、三角波、方波的整体设计示意图,可以看到上位机通过RS232串口、ETH千兆网口以及USB2.0接口和FPGA建立通信,通过不同的接口发送报文,FPGA在指令解析模块中把相关设置和参数再下发到任意波(方波、

    2023年04月15日
    浏览(44)
  • FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(五)

           如表1所示是dds_ip_transform模块信号列表,在正弦波模块中我们需要把上游指令解析模块中发来的频率控制字和指示信号即dds_din_freq和dds_din_freq_vld、相位控制字和指示信号即dds_din_phase和dds_din_phase_vld、复位信号即ddsip_sclr写入到DDS IP核中,如图1所示是正弦波模块的代码设

    2024年02月01日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包