數(shù)字下變頻(DDC)中坐標變換模塊的ASIC實現(xiàn)
數(shù)字下變頻器中坐標變換模塊的ASIC實現(xiàn)
本文引用地址:http://m.butianyuan.cn/article/150652.htm1.引言
數(shù)字下變頻(DDC)技術(shù)是軟件無線電接收機的核心技術(shù)。其基本功能是從輸人的寬帶高速數(shù)字信號中提取所需的窄帶信號,將其下變頻為數(shù)字基帶信號,并轉(zhuǎn)換成較低的數(shù)據(jù)率,以供后續(xù)的DSP作進一步的處理。目前許多型號的DDC芯片事實上其功能己遠遠不只是下變頻,還包括了成形濾波器、定時同步內(nèi)插濾波器、重采樣NCO、坐標變換、數(shù)字ACC等功能,其結(jié)構(gòu)如圖1所示。
CORDIC(Coordinate Rotation Digital Computer)是一種迭代算法,它提供了計算三角函數(shù)和欠量求模的方法。該算法僅利用加法和移位兩種運算通過迭代方式進行矢量旋轉(zhuǎn),因此,它非常適合于硬件A-SIC實現(xiàn)。本文所要闡述的就是基于CORDIC算法的數(shù)字下變頻器中坐標變換模塊的ASIC實現(xiàn)結(jié)構(gòu),該模塊的主要功能是實現(xiàn)直角坐標系到極坐標系的變換,從而求得由I路信號和Q路信號構(gòu)成的向量的幅度值和相位值,將得到的幅度信息返回給前級的數(shù)字AGC進行增益控制,還可以實現(xiàn)對FM信號的解調(diào)。
2.CORDIC算法與實現(xiàn)
2.1 CORDIC算法原理
CORDIC是一種迭代算法,它可以用來計算sin,cos等三角函數(shù),計算幅值和相位等到所需的精度,CORDIC算法計算幅值和相位的原理如下:
假設(shè)直角坐標系內(nèi)有向量A(Xn,Yn),向量A順時針旋轉(zhuǎn)θn后得到向量B(Xn,Yn),如圖2所示。
向量A和向量B之間存在以下關(guān)系,用矩陣表示為
將cosθn提出以后得到
在這里我們?nèi)?i=arctan(1/2i),所有迭代的總和為,其中Si={-1,+1},則tanθi=Si2-i,可得
上式Si中的符號決定了向量的旋轉(zhuǎn)方向,當時Yi≥0,Si=1,順時針旋轉(zhuǎn);當Yi0時,Si=-1,逆時針旋轉(zhuǎn),式中的cosθi=cos(arctan(1/2i),隨著迭代次數(shù)的增加它收斂于一個常數(shù),我們暫不考慮這個常數(shù)增益,這樣式(2-3)就變?yōu)?br />
設(shè)總共旋轉(zhuǎn)的角度為,初值為0,則,給定向量 一組初值如下
從上面的式子可以看出,當向量A旋轉(zhuǎn)到X軸時,可以得到迭代的結(jié)果為 ,即可求得向量A的幅值和相位。由式(2-4)可知每次旋轉(zhuǎn)的角度的正切值都是2的負冪次,在硬件實現(xiàn)時只需要執(zhí)行右移和相加運算就可以實現(xiàn)每次迭代,易于硬件的實現(xiàn)。
2.2 用CORDIC算法的流水結(jié)構(gòu)實現(xiàn)坐標變換
CORDIC迭代結(jié)構(gòu)如圖3所示,采用流水結(jié)構(gòu)每次迭代完成一次旋轉(zhuǎn),每級迭代都用寄存器寄存,這樣每個時鐘周期都可以計算出一次幅度和相位。迭代的次數(shù)越多,精度越高,當然耗費的資源也就越多。
評論