1、基于CORDIC算法的流水型DDS设计的路径建设 直接数字频率合成(Direct Digital Synthesis,DDS)技术,最早于1971年,美国学者J.Tierney等撰写的A Digital Frequency Synthesizer一文中提出的[1]。它以有别于其他频率合成方法具有低成本、低功耗、高分辨率和快速转换时间等优点而得到广泛的运用。但是传统的DDS主要运用查找表结构,其存放相位到幅度转换的查找表ROM的大小和相位精度的位数成指数关系,很难实现数字信号处理中的高精度、高分辨率、实时运算的要求[2]。而采用CO
3、得到新的向量B(x1,y1),此向量满足以下关系:x1 y1=cos θ-sin θ sin θcos θx0 y0 =cos θ1-tan θ tan θ1x0 y0 (1) 图1 CORDIC算法图解假设初始向量经过n次旋转后得到新的向量,且每次旋转的角度θi满足条件tan θi=2-i,则第i次旋转的角度θi=arctan 2-i。即cos θi=(1+2-2i)-12。引入s(
4、i)={1;-1},s(i)=1时表示逆时针旋转,s(i)=-1时表示顺时针旋转。则第i步旋转的向量关系可以表示为:xi+1 yi+1=cos θi1-si2i si2i1xi yi =(1+2-2i)-121-si2i si2i1xi yi (2)式中cos θi=(1+2-2i)-12称为校模因子,收敛于一个常数,即∏∞i=0(1+2-2i)-12≈0.607 3 这样,算法的每一步就可以简化为:xi+1 yi+1=1-si2i si2i1xi y
7、89.883°之间的任意角度的转换。在工程实际应用中,需要对-π~π之间任意角度值进行运算。由于sin θ和cos θ只需计算[0,π/2]便可恢复整个周期的值[810]。本文采用分象限法,将输入角转到第一象限之中,此称为前处理。相位累加器对频率控制字K进行线性累加,产生输入相位,用16位的phase_in表示。利用它的最高两位判断该相位所在的象限,然后转入到第一象限中。在同样的精度下,可以节约硬件成本。前处理Verilog编写的代码如下: begin case(phase_i