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