戈華,聶陽
(集寧師范學(xué)院 物理系,內(nèi)蒙古 集寧 012000)
隨著現(xiàn)代通信的高速發(fā)展,高精度的正交三角信號廣泛應(yīng)用在頻率轉(zhuǎn)換電路中。目前產(chǎn)生正交三角信號的主要的方法是使用直接數(shù)字頻率合成器 (Direct Digital Frequency Synthesizer,DDFS)。DDFS中頻率控制字提供周期性的相位數(shù)字序列,在參考時鐘的作用下這些相位作為地址信號來讀取存儲在ROM中三角函數(shù)的波形幅度值。然而,隨著存儲的波形數(shù)據(jù)和地址信號位數(shù)不斷增加的,電路會消耗大量的硬件資源。
文中采用CORDIC算法代替ROM儲存表結(jié)構(gòu),并實現(xiàn)正弦和余弦正交三角的函數(shù)信號電路。
CORDIC算法是J.E.Volder在進(jìn)行航天飛行控制系統(tǒng)設(shè)計時提出[1],它是一種迭代算法,在實現(xiàn)過程中利用移位和加法運算來代替乘法運算,因此特別適合于硬件實現(xiàn)。假設(shè)初始向量 OW1(x,y)旋轉(zhuǎn) θ角度后得到向量 OW2(x1,y1),如圖1所示。
由三角函數(shù)得:
圖1 向量旋轉(zhuǎn)θ角度Fig.1 Vector rotationθangle
假設(shè)經(jīng)過i次旋轉(zhuǎn)后角度為θi,xi+1和yi+1分別為:
對 θi進(jìn)行一定的限制[2-3],令 tanθi=2-i,即 θi=arctan2-i。 旋轉(zhuǎn)角度的總和時表示向量逆時針旋轉(zhuǎn),di=-1時表示向量順時針旋轉(zhuǎn)。Ki為伸縮因子,表示每次旋轉(zhuǎn)時向量模長發(fā)生的變化。
如果位寬一定,旋轉(zhuǎn)次數(shù)趨于無窮大時,總的伸縮因子K為:
為了使算法的迭代實現(xiàn)更具有實用性,用zi表示第i次旋轉(zhuǎn)后剩余的角度值,這樣每次的迭代運算可以簡化為:
根據(jù)式(5)可知CORDIC算法的多級迭代運算電路主要由加、減法運算器和移位寄存器構(gòu)成,非常適合于FPGA設(shè)計與實現(xiàn),具體設(shè)計結(jié)構(gòu)原理如圖2所示。
圖2 CORDIC算法結(jié)構(gòu)原理圖Fig.2 Structure diagram of CORDICalgorithm
整個ODDFS電路由相位累加器、相位加法器、相位幅值轉(zhuǎn)化器、CORDIC處理單元4個基本模塊構(gòu)成,結(jié)構(gòu)如圖3所示。
圖3 ODDFS電路結(jié)構(gòu)圖Fig.3 Structure diagram of ODDFScircuit
相位累加器是ODDFS電路的核心,在參考時鐘作用下對頻率控制字不斷進(jìn)行線性累加,當(dāng)累加器輸出溢出時,就完成一個周期。累加器的輸出數(shù)據(jù)代表了正余弦曲線的相位。
相位加法器通過改變相位控制字可以控制輸出信號的相位,相位累加器的輸出與相位控制字的代數(shù)和作為相位幅值轉(zhuǎn)換單元的地址數(shù)據(jù),使輸出的信號產(chǎn)生了不同的相移。
CORDIC處理單元包含相位象限處理單元和相位幅值轉(zhuǎn)換單元。通過CORDIC算法可以實現(xiàn)(-99.9°,99.9°)內(nèi)的正余弦值的計算。將累加器輸出的最高兩位用于表示相位所在的象限。通過目標(biāo)角度進(jìn)行預(yù)處理,可以在原有旋轉(zhuǎn)角度的基礎(chǔ)上再添加兩級迭代,實現(xiàn)輸出(-189.9°,189.9°)所有象限內(nèi)的正余弦值。相位幅值轉(zhuǎn)換單元存儲正余弦信號值作為基本幅值信號輸出給相位幅值轉(zhuǎn)化器。
相位幅值轉(zhuǎn)化器之后插入一個幅值乘法器,通過幅度控制字對輸出的幅度編碼進(jìn)行幅值調(diào)制,生成不同幅度的正余弦信號。
在MATLAB2012a平臺下利用Xilinx公司的SystemGenerator DSP開發(fā)工具,采用XILINX的xc3s500e-4fg320 FPGA作為驗證平臺,在ISE14.1中進(jìn)行綜合、實現(xiàn)、布局布線,最后使用Modelsim6.6a進(jìn)行電路的時序仿真,電路的功能仿真和時序仿真如圖4和圖5所示。
圖4 ODDFS電路功能仿真Fig.4 Functional simulation of ODDFScircuit
圖5 ODDFS電路時序仿真Fig.5 Timing simulation of ODDFScircuit
文中利用CORDIC算法進(jìn)行的ODDFS電路設(shè)計和建模仿真,實現(xiàn)了ODDFS電路的基本功能,采用FPGA為驗證平臺,在MATLAB2012、Xilinx System Generator DSP完成的電路的驗證。仿真結(jié)果表明,系統(tǒng)不但滿足高速信號處理的要求,而且具有很高的實用價值。
[1]Volder JE.The CORDIC trigonometric computing technique[J].IRE Trans.Electronic Computers,1959:330-334.
[2]Haviland G,Tuszynski A.A CORDIC arithmetic processor chip[J].IEEE Transaction on Computers,1996:68-79.
[3]Volder J E.The birth of CORDIC[J].Journal of VLSI Signal Processing,2000:101-105.
[4]Srikanthan T,Gisuthan B.A novel technique for eliminating iterative based computation of polarity of micro rotations in CORDIC based sine-cosine generators[J].Microprocessors and Microsystems,2002:243-252.
[5]Kebbati H S,Blonde J Ph,Braun F.A new semi-flat architecture for high speed and reduced area CORDIC chip[J].Microelectronics Journal,2006:181-187.
[6]Juang T T B,Hsiao S F,Tsai M Y.Para-CORDIC:parallel CORDICrotation algorithm[J].IEEE Transactions on Circuits and Systems I,2004:1515-1524.