接下来对FPGA的DDS的ip核进行学习。
首先对DDS需要有些了解
DDS信号发生器采用直接数字频率合成(Direct Digital Synthesis,简称DDS)技术,简单来说就是 需要一个系统频率和一个输入的数字数据 ,用这个系统频率计算出输出波形的频率,而这个波形就是通过dac将数字数据进行来变换模拟的。
1.DDS的原理
频率控制字B 和相位控制字N分别控制DDS 所输出的正弦波的频率和相 位。DDS 系统的核心是相位累加器,它由一个N 位累加器与N 位相位寄存器构成。时钟脉冲每触发一次, 累加器便将频率控制数据与相位寄存器输出的累加相位数据相加, 然后把相加后的结果送至相位寄存器的数据输入端。 相位寄存器将累加器在上一个时钟作用后所产生的新相位数据反馈到累加器的输入端, 以使加法器在下一个时钟的作用下继续与频率控制数据相加。 这样, 相位累加器在参考时钟的作用下将进行线性相位累加, 当相位累加器累加满时, 就会产生一次溢出, 以完成一个周期性的动作, 这个周期就是DDS 合成信号的一个频率周期,相位累加器的溢出频率就是DDS 输出的信号频率。 相位寄存器的输出与相位控制字相加, 结果作为正弦查找表的地址。 查找表由ROM 构成, 其内部存有一个完整周期正弦波的数字幅度信息, 每个查找表的地址对应正弦波中的一个相位点。 查找表把输入地址信息映射成正弦波幅度信号, 同时输出到D/A 转换器的输入端, 通过D/A 可将数字量形式的波形幅值转换成所要求的合成频率模拟量形式信号。 低通滤波器用于衰减和滤除不需要的取样分量, 以便输出频谱纯净的正弦波信号。
DDS信号发生器原理是建立在采样定理基础上,首先对需要产生的波形进行采样,将采样值数字化后存入存储器作为查找表,然后通过查表读取数据,再经D/A转换器转换为模拟量,将保存的波形重新合成出来。每一个参考时钟脉冲输入时,累加一次频率,其输出相应增加一个步长的相位增量。
2 DDS ip
其内部主要有一个相位累加器,一个ROM存储这正弦波的查找表。相位累加器在时钟的作用下对相位进行累加,每次的累加值是通过phase increment 来指定的。累加得到的结果,通过量化器,取其高位,低位舍去,再将这个量化后的相位值,输出到查找表,从查找表中得到最终的波形。
DDS的最终输出的信号的频率和系统时钟,相位宽度和相位自增量之间满足如下关系:
其中ΔΘ 是相位自增量,BΘ(n)是相位的位宽,也就对应这查找表的深度为2^BΘ(n)
手册给的例子 其中系统时钟120MHz,相位宽度为10bit,相位增量为12,输出的频率通过上面的式子就可以计算出来。
这里的相位自增量Δθ也就是频率控制字(FTW)。
频率控制字(FTW)决定了相位累加器每次递增的量,也就是相位自增量。
2.1 dds的ip配置
上述的phase width 是相位累加器的位数
上述的参数模式是将动态范围以及频率分辨率固定好的,硬件模式可以随着输入动态调整。
生成的信号需要满足奈奎斯特抽样定理,也就是抽样时钟必须是被采样信号频率的两倍。以这个例子来说,系统时钟为40M,那么,最多可以生成频率为20MHz的正余弦信号
相位的自增量前面提到的
最终的输出频率如下