基于CORDIC算法的数字下变频技术设计与实现
2012-07-13侯武威袁安民赵颖辉
侯武威,袁安民,赵颖辉
(空军工程大学 电讯工程学院,陕西 西安710077)
传统的数字下变频器(DDC)是将本地数控振荡器(NCO)产生的信号与输入信号相乘实现数字下变频。NCO产生离散正弦信号最简单、最直接的方法就是查表法(LUT),即事先根据各个NCO正弦波相位计算好相应的正弦值,并按相位角度作为地址存储该相位的正弦值数据[1]。
1 NCO结构
图1为用查表法实现的NCO结构,DDC工作时,每向DDC输入一个待下变频的信号采样样本,NCO就增加一个相位增量,然后按照相位累加角度作为地址,检查该地址上的数值并输出到数字混频器,与信号样本相乘,完成数字下变频。其中,初始相位控制字用来设置本振信号的初相,相位步进控制字用来设置本振信号的频率。

图1 查表法NCO基本结构Fig.1 Basic diagram of look-up table method NCO
2 CORDIC算法基本原理
CORDIC算法是由J.Volder等人在1959年首先提出的[2],该算法通过迭代方式仅用加法和移位2种运算进行矢量旋转,不仅可以用来计算正余弦、极坐标和直角坐标变换与反变换、反正切、矢量求模,而且还可以实现反正弦和反余弦函数的计算,摆脱了用查表法产生离散正弦信号需要占用大量ROM资源的弊端。CORDIC算法由于只采用加法和移位运算,很适合在FPGA中实现,可以用来实现数字下变频功能。
设一向量(x′1,y′1),旋转 θ角后得新向量(x′2,y′2),如图 2所示,根据坐标变换规则,两者有如下关系:

图2 CORDIC算法原理图Fig.2 Principle block diagram of CORDIC algorithm




式(2)可改写为:


当 N→∞ 时,有 zi+1=zi-δiarctan(2-i),i=0,1,2,…,N-1,θ,故K可以看做一个常数。
这样,向量旋转式(1)的计算问题转换为式(7)的计算以及如下迭代运算。

式(8)中仅含移位、加减法算法,特别适合硬件实现,为硬件快速计算三角函数提供了一种新的算法,这就是提出CORDIC算法的初衷。……
