段素蓉
(西南交通大學(xué)信息科學(xué)與技術(shù)學(xué)院,四川成都 610031)
三角函數(shù)的坐標(biāo)旋轉(zhuǎn)數(shù)字計算機(Coordinate Rotation Digital Computer,CORDIC)算法最早是由Volder于1959年提出,主要應(yīng)用于實時導(dǎo)航的數(shù)字處理[1],通過擴展,該方法現(xiàn)已應(yīng)用于眾多領(lǐng)域,如風(fēng)力發(fā)電、航空航天、雷達信號處理、圖像處理、數(shù)字濾波以及通信設(shè)備等[2-4].
基本CORDIC算法的思路為:設(shè)定一個旋轉(zhuǎn)角度,經(jīng)過多步旋轉(zhuǎn)迭代,最終計算出三角函數(shù)值.該方法由于迭代公式的選取限制了最大旋轉(zhuǎn)角度,所以旋轉(zhuǎn)角度不能覆蓋整個周期(-π~+π),導(dǎo)致部分角度計算出的三角函數(shù)值偏差較大,在應(yīng)用中存在較大誤差[5-8].本文利用三角函數(shù)的對稱性,對輸入角度進行了預(yù)處理,把角度限制在基本CORDIC算法能正確計算的范圍內(nèi),再對迭代結(jié)果進行后處理,實現(xiàn)了完整周期(-π~+π)的三角函數(shù)計算.算法采用18級流水線結(jié)構(gòu)實現(xiàn),具有轉(zhuǎn)換速度快,精度高,占用資源少等特點.
假設(shè)在直角坐標(biāo)系下有向量(Xi,Yi),按圖1所示的方向旋轉(zhuǎn)角度θ得到向量(Xj,Yj),則二者關(guān)系為,
圖1 坐標(biāo)旋轉(zhuǎn)圖
使用迭代的方法,坐標(biāo)需要旋轉(zhuǎn)的角度可通過多步旋轉(zhuǎn)疊加完成(見圖2).根據(jù)多步旋轉(zhuǎn)疊加完成
圖2 多次旋轉(zhuǎn)疊加示意圖
平面坐標(biāo)旋轉(zhuǎn),則式(1)可進一步轉(zhuǎn)化為,
假設(shè),tanθn= Sn/22,則,θn= Snarctan(1/2n).這里,Sn={-1;+1},當(dāng)Sn=-1時,表示向量逆時針旋轉(zhuǎn),否則為順時針旋轉(zhuǎn).式(2)中的cosθn= cos(arctan(1/2n)).隨著旋轉(zhuǎn)次數(shù)的增加,該式收斂為一個常數(shù),k≈0.607253.如果令 Y的初始分量為0,X的初始分量為單位1,則有,
當(dāng) n→∞時,CORDIC公式的輸出變?yōu)?
基本CORDIC算法旋轉(zhuǎn)角度總和為,即最大角度覆蓋范圍約為-99.88°≤θ≤99.88°.利用三角函數(shù)的對稱性,可把輸入角度限制在{-90°~90°},原理如下:
(1)若,θ≥0°,則θ′=θ-90°,否則,θ′=θ+ 90°,所以有,-90°≤θ′≤90°.
(2)根據(jù)三角函數(shù)變換公式,
改進CORDIC算法采用18級流水結(jié)構(gòu),各級間組合邏輯處理復(fù)雜度適中,處理速度快,能夠滿足風(fēng)力發(fā)電變流器的控制系統(tǒng)坐標(biāo)變換處理實時性要求.設(shè)計分為3個模塊.
(1)輸入角度預(yù)處理模塊.若輸入角度符號位為0,則減去90°,否則加上90°.設(shè)計中采用17 bit有符號數(shù)表示輸入角度.該模塊使用1級流水處理.
(2)基本CORDIC迭代模塊.迭代過程采用15級流水結(jié)構(gòu)(見圖3),內(nèi)部使用17 bit有符號變量,保證了運算精度高且運算過程不發(fā)生溢出,迭代中的乘法(1/2n)采用移位實現(xiàn).該模塊使用15級流水處理.
圖3 CORDIC算法流水線結(jié)構(gòu)框圖
(3)迭代結(jié)果后處理模塊.將輸入角度符號位延時16級,與迭代結(jié)果對齊,根據(jù)延時后的符號位及式(6)對結(jié)果進行處理,同時對結(jié)果進行飽和處理,最后輸出16 bit有符號的三角函數(shù)值.該模塊使用2級流水處理.
圖4 改進前的CORDIC迭代三角函數(shù)值
(1)改進前后三角函數(shù)值仿真對比(輸入角度為-π~+π).
圖5 改進后的CORDIC迭代三角函數(shù)值
CORDIC算法改進前后三角函數(shù)值仿真對比如圖4、圖5所示.從圖4、圖5可以看出,改進后的CORDIC算法可以覆蓋完整周期(-π~+π)的三角函數(shù)計算,從而滿足了信號處理的需求.
(2)改進CORDIC算法精度對比.
改進前后CORDIC算法精度對比如表1所示.從表1的對比結(jié)果可以看出,改進CORDIC算法采用18級流水結(jié)構(gòu),內(nèi)部使用17 bit有符號數(shù)進行計算,得到的結(jié)果精度高,誤差小于0.01%,完全可以滿足風(fēng)力發(fā)電變流器的控制系統(tǒng)坐標(biāo)變換處理的精度要求.
表1 改進型CORDIC算法仿真對照表
改進CORDIC算法克服了基本CORDIC算法不能覆蓋完整周期的三角函數(shù)計算的缺點,由于改進CORDIC算法采用18級流水線結(jié)構(gòu),且內(nèi)部采用17 bit有符號定點數(shù)計算,保證了轉(zhuǎn)換速度快,運算結(jié)果精度高,易于用FPG A實現(xiàn).仿真測試表明,改進CORDIC算法完全能滿足風(fēng)力發(fā)電變流器系統(tǒng)控制中坐標(biāo)變換處理的精度要求.
[1]Volder J E.The CORDIC Trigonometric Computing Technique [J].IRE Trans Electronic Computers,1959,8(3):330-334.
[2]Walther J S.A Unified Algorithm for Elementary Functions[C]// AFIPS71’Spring Joint Computer Conference.New Y ork:ACM Press,1971:379-385.
[3]徐國庫,陳禾.基于CORDIC算法的坐標(biāo)變換電路的FPG A實現(xiàn)[J].微電子技術(shù),2010,39(10):108-110.
[4]陳嫦娥,毛承雄.多相交流系統(tǒng)的PARK變換[J].高電壓技術(shù),2008,34(11):2475-2482.
[5]王敏,薛忠杰.基于改進Cordic算法的NCO設(shè)計[J].電視技術(shù),2011,35(5):30-33.
[6]湯文亮.基于CORDIC算法的高速高精度DDS研究與實現(xiàn)[J].制造業(yè)自動化,2011,33(3):104-106.
[7]文婧媛,徐欣峰.基于CORDIC算法的高速可配置FFT的FPG A實現(xiàn)[J].微電子學(xué)與計算機,2010,27(3):24-28.
[8]何曉華,謝建精,郭洪志,等.基于擴展收斂域CORDIC算法的FM信號數(shù)字化解調(diào)實現(xiàn)[J].電子技術(shù)應(yīng)用,2010, 36(1)53-56.