2.4 數控振蕩器NCO中采用的CORDIC算法
數控振蕩器(NCO,Numerically Controlled Oscillator),亦稱直接數字(頻率)合成器(DDS,Direct Digital Synthesizer)[23]。用來產生一對相互正交的正弦和余弦載波信號,與插值以后的基帶信號混頻,完成頻譜上搬。
本文研究基于CORDIC算法[24]的流水線型數控振蕩器。該方法較之傳統的查表法有運算精度高速度快、結構簡單、耗費資源少等優勢。
CORDIC算法是一種基于向量旋轉的數值計算方法。該算法僅僅通過迭代操作來逼近三角函數及其他一些函數,用該算法來代替查找表產生正余弦函數樣值將會大大的節省硬件資源。算法原理如下;
對于圖2.10所示的矢量旋轉,
圖2.10 矢量旋轉示意圖
設起點坐標為,終點坐標為,由三角函數理論知道:
(2-28)
對于第i次旋轉,令,則式(2-23)可改寫為:
(2-29)
其中1/為幅度畸變因子, (當逆時針旋轉時為+1,順時針旋轉時為-1)。因為,所以我們假設從x正軸開始旋轉,通過足夠多的迭代次數后,就可以實現-/2~/2內的任意角度旋轉。每次旋轉后的實際矢量與目標矢量之間的的誤差角度如式(2-30),
(2-30) 其中為目標矢量角度,若>0,則i=+1,若<0,則i =-1,即來控制旋轉方向。
下面給出CORDIC算法的基本實現方式,根據以上原理,在實現時幅度畸變因子Ki不作處理,只是在后對模作一個校正即可,設初始向量經n次角度旋轉后得到的向量,根據J.S.Walter的推導有下面的迭代方程組(由式2-29和2-30也可得出):
(2-31)
其中, (2-32)
n次旋轉迭代后的結果為:
(2-33)
其中,,稱為摸校正因子。如果令=1/k,,=0,則=cos,=sin,由上述推導可知:若已知角度和初始向量,,可由式(2-31)迭代運算得到角度的正余弦值,通常一次迭代會產生一位精度的二進制幅值,只要迭代次數n足夠大,得到的正余弦值就能滿足一定的精度。一般來說,為了使CORDIC算法的迭代精度達到要求的相位分辨率,CORDIC算法的迭代次數K要求滿足下式:
哪里有射頻培訓機構
|