1.引言
數(shù)字下變頻(DDC)技術是軟件無線電接收機的核心技術。其基本功能是從輸人的寬帶高速數(shù)字信號中提取所需的窄帶信號,,將其下變頻為數(shù)字基帶信號,,并轉換成較低的數(shù)據(jù)率,以供后續(xù)的DSP作進一步的處理,。目前許多型號的DDC芯片事實上其功能己遠遠不只是下變頻,,還包括了成形濾波器、定時同步內(nèi)插濾波器,、重采樣NCO,、坐標變換、數(shù)字ACC等功能,,其結構如圖1所示,。
CORDIC(Coordinate Rotation Digital Computer)是一種迭代算法,它提供了計算三角函數(shù)和欠量求模的方法,。該算法僅利用加法和移位兩種運算通過迭代方式進行矢量旋轉,,因此,,它非常適合于硬件A-SIC實現(xiàn),。本文所要闡述的就是基于CORDIC算法的數(shù)字下變頻器中坐標變換模塊的ASIC實現(xiàn)結構,該模塊的主要功能是實現(xiàn)直角坐標系到極坐標系的變換,,從而求得由I路信號和Q路信號構成的向量的幅度值和相位值,,將得到的幅度信息返回給前級的數(shù)字AGC進行增益控制,還可以實現(xiàn)對FM信號的解調(diào),。
2.CORDIC算法與實現(xiàn)
2.1 CORDIC算法原理
CORDIC是一種迭代算法,,它可以用來計算sin,cos等三角函數(shù),,計算幅值和相位等到所需的精度,,CORDIC算法計算幅值和相位的原理如下:
假設直角坐標系內(nèi)有向量A(Xn,Yn),,向量A順時針旋轉θn后得到向量B(Xn,,Yn),如圖2所示,。
向量A和向量B之間存在以下關系,,用矩陣表示為
將cosθn提出以后得到
在這里我們?nèi)?i=arctan(1/2i),,所有迭代的總和為,其中Si={-1,,+1},,則tanθi=Si2-i,可得
上式Si中的符號決定了向量的旋轉方向,,當時Yi≥0,,Si=1,順時針旋轉,;當Yi<0時,,Si=-1,逆時針旋轉,,式中的cosθi=cos(arctan(1/2i),,隨著迭代次數(shù)的增加它收斂于一個常數(shù),我們暫不考慮這個常數(shù)增益,,這樣式(2-3)就變?yōu)?br />
設總共旋轉的角度為,,初值為0,則,,給定向量 一組初值如下
從上面的式子可以看出,,當向量A旋轉到X軸時,可以得到迭代的結果為 ,,即可求得向量A的幅值和相位,。由式(2-4)可知每次旋轉的角度的正切值都是2的負冪次,在硬件實現(xiàn)時只需要執(zhí)行右移和相加運算就可以實現(xiàn)每次迭代,,易于硬件的實現(xiàn),。
2.2 用CORDIC算法的流水結構實現(xiàn)坐標變換
CORDIC迭代結構如圖3所示,采用流水結構每次迭代完成一次旋轉,,每級迭代都用寄存器寄存,,這樣每個時鐘周期都可以計算出一次幅度和相位。迭代的次數(shù)越多,,精度越高,,當然耗費的資源也就越多。
在數(shù)字下變頻器輸出I,,Q兩路信號后(輸出信號用補碼表示),,用CORDIC實現(xiàn)坐標變換時,為簡化電路結構,,只用計算的相角,,其他象限的相角,采用處理后再映射的辦法求取,,岡此,,對剛進入的數(shù)據(jù)會進行預處理,。首先就是求輸人數(shù)據(jù)的絕對值,并記錄符號位作為處理后象限映射的依據(jù),。接下來,,會判斷I,Q兩路數(shù)據(jù)的大小關系,,并將較小的值交換到Q路,,這樣做的目的是要在同樣的迭代次數(shù)下,達到更高的迭代精度,。進入CORDIC迭代單元前會對I,,Q兩路數(shù)據(jù)進行位寬拓展,從而保證CORDIC迭代過程中,,不會因截斷誤差造成太大的偏差,。經(jīng)過CORDIC迭代后所得的幅度值是有增益的,此時需要對其進行修正,,另一方面,,相位值需根據(jù)先前記錄的I,Q兩路數(shù)據(jù)的符號位和I,,Q兩路數(shù)據(jù)交換的情況作象限映射,,表1列出了相位映射的規(guī)則。坐標變換模塊的實現(xiàn)結構如圖4所示,。
2.3 使用modeIsim仿真的結果
圖5是當輸入激勵為I路:sin(sin2πf),;Q路:COS(COS2πf)時的modelsim仿真結果,由圖中可以看出坐標變換得出的相位值是一個標準正弦信號,,幅度值為恒定值,,幅度相位完全正確。
2.4 硬件實現(xiàn)結果
在硬件實現(xiàn)時,,用verilog語言對坐標變換模塊進行描述,,為滿足DDC的精度要求進行了18次迭代,并用DC基于UMC0.18μm的庫進行了綜合,,硬件實現(xiàn)結果如圖6所示。
圖6(a)是DC綜合后的面積報告,,圖6(c)是關鍵路徑的時序報告,,綜合后的最大路徑延時為9.77ns,完全可以滿足本模塊數(shù)字下變頻器100MHz的處理速度要求,,綜合出的單元(cell)的總面積僅為0.27,。圖6(b)是該設計在FPGA上驗證的結果,該DDC的工作頻率為80MHz,,通道2為輸入的基帶信號頻率20kHz,,載波頻率5MHz,,頻偏200KHz的FM信號,通道1是通過DDC下變頻后交給坐標變化模塊的I,,O兩路信號求出的相位信息,,即頻率為20kHz的正弦信號,由圖可知該沒計實現(xiàn)了坐標變換功能,。
3 結論
使用CORDIC算法,,并用流水結構實現(xiàn)幅度相位的求取可以獲得較高的處理速度,增加迭代次數(shù)可以獲得更高的處理精度,,但會耗費較多的資源,,在設計時應根據(jù)需要,合理的確定迭代次數(shù),。該設計已成功應用于高速數(shù)字下變頻芯片中,。