原创 对DDS的理解

2008-11-27 19:35 5005 7 5 分类: 工程师职场

DDS的理解<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


 


面积和速度是不能同时兼得的。


对于初学者而言,先从整个正弦函数的取值存在ROM中学起,一个ROM当然分为它的纵向和横向精度而言,对于纵向精度也就是存入的正弦值的精度,位数越多,精度越高;而纵向精度指的是ROM可以分为多少个单元空间,比如28次方,也就是256个单元,即寻址0-255,那么这256个单元中存放的是一个周期的正弦值,也就是说把一个连续的一个周期的正弦信号分成255个等份,存入ROM中的是离散值,很明显如果一个周期的正弦值分的越细,那么越接近连续的正弦函数值,但是分的太细,也就是ROM的分的单元太多,例如232次方,那么硬件实现是几乎不可能的,即使制造出来,也没有人买的起,所以人们就象征性的缩短ROM的空间;
   
至于前面的NCO部分,可以使用很多为的加法运算,例如32位或者24位,但是加法的结果位数太多,也应证了前面的ROM位数,一般用加法结果的高位去寻址ROM,至于多少位根据你实际的需要,例如你设计的DDS的分辨率以及时钟和合成频率的值来确定;
   
至于DDS的速度,当然是不用操心的,你可以看到它没有反馈回路,速度肯定超过PLL,如果仔细深究设计DDS的话,一般采用行波加法或者是流水线的方法去设计NCO,各有个的好处,就速度而言当然是流水线的方法更好,但是它会带来更多的面积,因为在每一级流水线会插入一个寄存器;对于FPGA设计实现DDS而言用行波进位加法比较好,因为FPGA的构造可以看出,它本身就有一个很长的进位链结构,很符合行波的进位要求,很实用;当然你肯定会问为什么不直接用32的加法呢?当然可以,但是你想想,这么大的位数的加法,你能否在你所谓的一个时钟内进行,那么对于你的时钟要求是不是很紧张,所以你应该把一个32位的加法可以分成48位加法,每个8位的加法又可以分为42位的加法,然后再分成全加器,半加器;
   
至于ROM压缩方法也就是为了减少DDS的芯片面积而言,现在的算法很多,可以查相关资料!


 


参考自:http://www.edacn.net/bbs/thread-109555-1-3.html

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条