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、参数配置
图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、可编程输入设置
图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、详细的设置
图1.4.1 dds IP核参数配置
本页默认即可,在AXI Channel options下可以选择 output tready(输出正余弦数据有效信号)输出引脚;
Latency options(延迟选项:选择延迟是由GUI自动配置还是手动配置)
Auto (默认自动);
Configurable (手动);
Control signals(控制信号)
ACLKEN (时钟使能信号) ARESETN(复位信号,低有效)
5、输出频率设置
图1.5.1 dds IP核参数配置
Channel(通道) output frequency(输出频率)
根据之前选择为单通道输出,为了输出任意频率之前选择相位增量可编程模式,输出频率由相位增量决定,这里不设置输出频率;
6、配置总结
图1.6.1 dds IP核参数配置
Summary 总结,可以看到之前的各种配置参数;
7、输出增量和对应频率总结
图1.7.1 dds IP核参数配置
Additional summary 额外的总结,可以通过之前输入的输出频率看到每个通道数对应的16进制的相位增量,以及理论输出的频率,如果之前选择了相位偏移,还可以看到16进制的相位偏移增量以及相位增量值;
二、相关数据计算
1、DDS输出波形频率fout、相位增量∆Θ、频率分辨率∆f、相位位宽BΘ(n)相关函数计算
DDS输出波形频率fout是系统时钟频率fclk、相位累加器中的相位数据位宽BΘ(n) 和相位增量值∆Θ 的函数:
相位增量值∆Θ是输出波形频率fout、系统时钟频率fclk、相位累加器中的相位数据位宽BΘ(n) 的函数:
如果DDS核是时分多路复用做多个通道,那么每个通道的有效时钟频率减少。对于C个通道,所需相位增量为:
根据系统时钟频率fclk和相位累加器中的相位数据位宽BΘ(n) 可以得到频率分辨率∆f的函数:
相位位宽BΘ(n)是系统时钟频率fclk和频率分辨率∆f取对数的函数:
2、举例
系统时钟频率为125MHz,想要调整输出的频率为14.7456MHz,相位位宽设置为32位;
则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]来作为输出可以反映整个波形的频率;
图3.1.1 正弦输出仿真
四、dds IP核内部架构简介
1、dds IP核核心架构
图4.1.1 dds核心架构
DDS IP核核心架构:内部主要由相位发生器和正余弦查找表构成,相位发生器由一个累加器和一个可选的加法器组成相位偏移量的加法。当核心被定制时,相位增量(PINC)和相位偏移(POFF)可以独立配置为固定,可编程(使用配置通道)或流(使用输入相位通道)。
2、DDS编译器核心的标准模式使用相位截断
图4.2.1相位截断DDS (DDS核心简化图)
通过输入一个相位增量Δθ,积分器(D1和A1分量)计算相位斜率,通过查找表T1映射到一个正弦(可能是复数)。Q1是一个切片器,可以把高精度的相位切片至低精度的相位。量化器Q1的输入是高精度的相位,然后输出量化后精度较低的相位。然后该信号出现在查找表的地址端口,实现相位空间到时间的映射。
查找表的深度和宽度分别影响信号的相角分辨率和振幅分辨率。
直接数字合成器使用具有适当查找表的寻址方案来形成任意频率正弦信号的样本。如果需要模拟输出,DDS将这些样本提供给数字-模拟转换器(DAC)和低通滤波器,以获得具有特定频率结构的模拟波形。当然,样本也通常直接用于数字领域。查找表传统上存储均匀间隔的余弦波和正弦波的样本。文章来源:https://www.toymoban.com/news/detail-781507.html
五、DDS IP相关资料
更多关于dds IP核的设置与使用可以查找相关文档;文章来源地址https://www.toymoban.com/news/detail-781507.html
到了这里,关于Vivado关于dds IP核实现任意频率的正余弦波输出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!