首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于DDS的几点理解

关于DDS的几点理解

DDS的理解关键在于分清相位累加器、ROM查找表和DAC的位数的不同,如果将上述三者的位数混淆的话就很难理解DDS的原理。
直接数字频率合成器DDS(Direct Digital Synthesizer)是从相位概念出发直接合成所需波形的一种频率合成技术,通过控制相位的变化速度,直接产生各种不同频率、不同波形信号的一种频率合成方法。DDS 的基本结构如下图 所示,它主要由相位累加器、正弦ROM 表、D/A 转换器和低通滤波器构成。


DDS工作时,在时钟脉冲fc 的控制下对频率控制字K 用累加器进行处理以得到相应的相位码,然后由相位码寻址波形存储器ROM进行相位码―幅度编码变换,再经过D/A 数模变换器得到相应的阶梯波,最后经过低通滤波器对阶梯波进行平滑处理即可得到由频率控制字K 决定的频率可调的输出波形。波形存储器所储存的幅度值与余弦信号有关。余弦信号波形在一个周期内相位幅度的变化关系可以用下图所示的相位圆表示,每一个点对应一个特定的幅度值。一个N位的相位累加器对应着圆上2的N次方 个相位点,其相位分辨率为 2pi除以2的N次方。若 N=4,则共有16种相位值与16种幅度值相对应,并将相应的幅度值存储于波形存储器中,存储器的字节数决定了相位量化误差。在实际的DDS中,可利用正弦波的对称性,可以将一个周期)范围内的幅、相点减小到 四分之一周期内以降低所需的存储量,量化的比特数决定了幅度量化误差。


频率控制字K可决定相应的相位增量,相位累加器则以步长K进行线性累加,相位累加器积满时就会产生一次溢出,从而完成一个周期性动作,这个动作周期即是DDS合成信号的一个周期。通常N 位相位累加器的最小值为0,最大值为2的N −1次方。故最后输出信号的频率为,频率分辨率的大小为,频率分辨率也就是说频率变化的最小单位,DDS输出的频率值都是频率分辨率对应频率的倍数。实际运用中,根据实际需要所计算出的K 很难为整数,因此不可避免地会存在频率误差。如将计算出来的K的小数部分舍去,那么最终输出信号的频率误差不超过频率分辨率,如果将K 的小数部分四舍五入,则频率误差不会超过0.5倍的频率分辨率。
Xilinx官方给出的DDS IP核的数据手册中也介绍了DDS的原理但是原理理解起来不如上图。


还有一个关键的问题就是累加器得到的相位是怎么去寻址正弦ROM的,对于N位的相位累加器对应2的N次方数量的相位累加值,如果正弦ROM中存储的点数也是2的N次方的话,对存储容量和资源的要求就比较高了,实际上在寻址正弦ROM表时,用的是相位累加值的高位,也就是说并不是每个时钟fc都从正弦ROM表中取一个数值,而是多个时钟取一个值,这样能保证相位累加器溢出时,从正弦ROM表中取出正好一个正弦周期的样点。因此,相位累加器每计数2的N次方次,对应一个正弦周期。而相位累加器1秒钟计数fc次,在k=1时,DDS输出的时钟频率就是频率分辨率。频率控制字K增加时,相位累加器溢出的频率增加,对应DDS输出的频率变为K倍的DDS频率分辨率。
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表