DDS基本原理
直接频数字合成器由三部分组成:相位累加器、相位量化器和SINE/COSINE查找表
输出频率fout、频率控制字W、频率控制字位宽N和采样频率fs之间关系:
在FPGA中,DDS IP核能产生的频率分辨率为:最高输出频率小于fs/2
相位累加器
相位累加器是一种模 N 计数器,具有 2N 个数字状态,这些状态会在每个系统时钟输入脉冲发生时逐渐递增。增量的大小取决于应用于累加器相加级的调谐字 M 的值。该调谐字确定了计数器增量的步长。这将决定输出波形的频率。
相位累加器的长度通常为 24 - 48 位;24 位累加器共有 224(即 16,777,216)个状态。这一数字表示 0 到 2p 弧度之间的相位值数量,或者说是可实现的相位增量。对于 24 位相位累加器,相位分辨率为 3.74 E-7 弧度。如果使用更大的相位累加器,相位增量会变得更加精细。
直观显示相位累加器运行情况的一种方法是,将累加器运行看作一个相位轮(图 2)。
累加器状态具有周期性,显示为一个圆圈上的点。这些点表示累加器的各个相位状态。在本例中,为简单起见,假设累加器有 16 个状态。如上方的图所示,如果调谐字等于 1,那么每个时钟的步长增量均为 1,而且在整个周期内选中了所有状态。
相位轮的右侧显示的是每个状态的模拟输出。由于这是一个量化器件,因此模拟输出将保持其当前状态,直到时钟将相位轮推进到下一个状态。输出波形由包含 16 个值的单个量化正弦波周期组成。
在下方的图中,调谐字的值设置为 2。这时的相位轮上每隔一个状态被选中。对应的模拟输出由两个周期组成,每个周期有 8 个幅值,因此总共有 16 个状态。由于调谐字设置为 2,因此输出频率现在是之前所获值的两倍。
DDS IP核的使用
1.DDS的配置模式--相位产生器、SIN/COS LUT或者相位累加器、DDS
2.参数配置
1.system requirements
1)system clock:统时钟(同时也是采样频率),直接影响DDS输出波形的频率
2)Number of channels 通道数,一般默认为1
3)Mode of operation 分为两种模式,详情可翻阅Xilinx的官方手册,一般选择标准operation模式,标准operation模式下,输出频率频率=已知时钟频率*频率控制字(相位增量)/2^相位累加器位宽。
rasterized模式下,把分母换成可直接调控的M,方便输出一些整数频率波形。
4)Parameter selection分为两种模式,Hardware Parameter 和 System Parameter
Hardware Parameter模式下需要选择是否需要整形噪声Noise Shaping以及输出的相位位宽核数据位宽
System Parameter模式包含Spurious Free Dynamic Range(SFDR)、Frequency Resolution(频率分辨率)、Noise Shaping三种需要配置的参数,SFDR与输出的数据位宽有关,Frequency Resolution与相位位宽有关
2.system Parameter
假设我要求输出数据宽度为8,则SFDR=48。
若 相位位宽为32bit则Frequency Resolution = 10M/2^32=0.002328
1.Phase increment programability
相位增量PINC(即频率控制字):固定、可编程和流式三种状态
fixed: PINC在生成时被固定,并且不能在运行时被更改。固定的,需要最少的资源。
programmable: PINC值可以在运行时使用配置通道进行更改。建议当DDS频率在不同的操作模式之间改变时使用。
streaming: PINC值直接从输入相位通道获取。当PINC值必须经常改变时,或者当需要调频时,建议这样做
Resync:当选中时,s_axis_phase通道有一个RESYNC字段。当断言时,这一位会减弱相关通道的累积阶段。该周期的累积阶段的值是伴随RESYNC断言的PINC值,加上POFF值。
2.Phase offset programability
相位偏移量POFF(即相位控制字):无、固定、可编程和流式四种状态
None:没有相位偏移功能,且未生成所需的硬件。这将节省FPGA资源。
Fixed:POFF在生成时是固定的,在运行时不能更改
Programmable:POFF值可以使用配置通道进行更改。当DDS阶段在不同的操作模式之间改变时,建议这样做
Streaming:POFF的值可以使用输入的相位通道来改变。当POFF值必须经常改变时,或者当需要相位调制时,建议这样做。
3.Output
Output Selection: 可以选择单独生成cos和sin,也可以选择生成{sin,cos}
Polarity:m_axis_data_tdata的sin场和余弦场可以被倒置。这允许使用共轭输出将作为发射混频器的DDS转换为接收混频器;因此,除了这里两个选择的值外,两个实例都是相同的
Amplitude Mode:有两种 Full Range 和 Unit Circle
Full Range:对通信应用,其中最大振幅在两者的补充表示,但由于对自动增益控制的期望,振幅值不那么重要。对于非泰勒模式,全范围模式的目标振幅为,而对于泰勒模式,振幅在这个值和1之间变化。注意,这里的振幅首先归一化为输出二值点的宽度。一个8位输出的二进制振幅为100000000-10,值在0111111111111110之间,分别小于1和多于-1
Unit Circle:对于DDS输出振幅值重要的应用,例如FFT旋转因子生成。当单位圆时,DDS输出振幅为半全范围(即,值范围为01000..(+0.5)。到110000..(-0.5))。当振幅在全范围内降低了2倍时,SDFR减少了6 dB。增加SFDR或输出宽度,以满足此要求。
4.Implementation Options
可以不变,保持默认
其他界面可以保持默认
参考文献
直接数字合成器DDS基础知识 - 文库 - DigiKey得捷电子
征战FPGA之使用IP核dds_compiler获取任意频率时钟和正余弦波形_dds compiler-CSDN博客
数据手册:https://www.xilinx.com/support/documentation/ip_documentation/dds_compiler/v6_0/pg141-dds-compiler.pdf