曹劍英
(集寧師范學(xué)院 物理系,內(nèi)蒙古 烏蘭察布 012000)
基于擴(kuò)展CORDIC算法的正切余切函數(shù)的設(shè)計(jì)
曹劍英
(集寧師范學(xué)院 物理系,內(nèi)蒙古 烏蘭察布 012000)
傳統(tǒng)的坐標(biāo)旋轉(zhuǎn)算法(Cordinate Rotational Digital Computer,CORDIC)已經(jīng)能夠在硬件上較為滿(mǎn)意地計(jì)算三角函數(shù),但是依然存在范圍過(guò)窄的限制;需要進(jìn)一步改進(jìn)和完善的地方.本文基于擴(kuò)展的CORDIC算法原理對(duì)正切余切函數(shù)在硬件上的設(shè)計(jì).
坐標(biāo)旋轉(zhuǎn)算法;正切余切函數(shù);設(shè)計(jì)
1.1 算法推導(dǎo)[1]

圖1 平面坐標(biāo)的旋轉(zhuǎn)
CORDIC算法是一種旋轉(zhuǎn)坐標(biāo)的方法.設(shè)起點(diǎn)坐標(biāo)為P0=(x(1),y(1)),旋轉(zhuǎn)θ角度,得到終點(diǎn)坐標(biāo),設(shè)為Pn=(x(2),y(2)),如圖1所示.由三角函數(shù)知識(shí),旋轉(zhuǎn)后的坐標(biāo)由式(1-1)計(jì)算得到

其中

即

矩陣R可以寫(xiě)成


把cosθ去掉后相當(dāng)于把旋轉(zhuǎn)后矢量的模減小了,為了保證最終的結(jié)果正確,一般在結(jié)果的后面乘上一個(gè)系數(shù)K.對(duì)于某一個(gè)角度β,假定初始角度為z0,可以通過(guò)z0經(jīng)過(guò)若干個(gè)小角度θi的旋轉(zhuǎn)獲得,β=z0+Σθi;并可以得到如下所示的迭代公式:

1.2 傳統(tǒng)CORDIC的模型
以上所作的Cordic理論分析,只是Cordic算法提出時(shí)的理論雛形;之后,John Walther于1971年對(duì)其進(jìn)行了擴(kuò)展引申,進(jìn)一步的完備了Cordic算法,得到以下Cordic的迭代模型[2].

這里,


根據(jù)δi取值的判讀方式,CORDIC算法又分為旋轉(zhuǎn)模式和向量模式.當(dāng)m取不同的值時(shí),可以得到CORDIC的三種不同計(jì)算方式,在各個(gè)計(jì)算方式下,通過(guò)多次迭代,可以計(jì)算得到多個(gè)函數(shù)的值,比如三角函數(shù)、雙曲函數(shù)以及開(kāi)方運(yùn)算等.
1.3 擴(kuò)展CORDIC算法
我們可以知道傳統(tǒng)CORDIC迭代算法可以實(shí)現(xiàn)乘法、除法、三角函數(shù)、雙曲函數(shù)、指數(shù)、對(duì)數(shù)以及開(kāi)方等運(yùn)算.但是傳統(tǒng)CORDIC算法存在求值受限的問(wèn)題,比如Circular下的CORDIC算法只能進(jìn)行0°~99°范圍內(nèi)三角函數(shù)運(yùn)算,弧度還不能涵蓋0~π.針對(duì)CORDIC的這類(lèi)問(wèn)題,Xiaobo Hu等3位教授在在Expanding the Range of Convergence of the Cordic Algorithm[3]中提出了改進(jìn)型的CORDIC算法.
CORDIC迭代算法并不能直接被用于計(jì)算正切和余切函數(shù).由于圓周CORDIC算法能被用于計(jì)算正弦與余弦函數(shù),而線性CORDIC算法能實(shí)現(xiàn)兩變量的乘法與除法操作,基于此,本論文擬采用圓周CORDIC與線性CORDIC相結(jié)合的方式來(lái)實(shí)現(xiàn)正切與余切的操作,如圖2所示.

圖2 基于CORDIC的正切余切的實(shí)現(xiàn)
本文采用的定點(diǎn)數(shù)據(jù)格式如圖3所示,使用16位二進(jìn)制來(lái)表示小數(shù)部分,8位表示整數(shù)部分,還有一位是符號(hào)位.

圖3 定點(diǎn)數(shù)據(jù)格式(一位符號(hào)位,8位整數(shù)位以及16位小數(shù)位)
在本文中,我們引入M倍降速遞歸流水線技術(shù)(這里M=2),在一個(gè)模塊中同時(shí)實(shí)現(xiàn)正切與余切運(yùn)算.該模塊的內(nèi)部結(jié)構(gòu)如圖4所示.從而可知,通過(guò)增加較為簡(jiǎn)單的控制電路,可以使整個(gè)模塊能夠節(jié)省將近5%的LUTs[4].

圖4 基于M倍降速遞歸流水線技術(shù)的正切余切模塊
4.5.2仿真驗(yàn)證.

表1 測(cè)試用例以及仿真結(jié)果分析
在Modelsim中編寫(xiě)了TestBench文件進(jìn)行測(cè)試,測(cè)試用例如表1所示.由于在模塊內(nèi)部,針對(duì)符號(hào)位是做了特殊處理的,因此會(huì)出現(xiàn)在多次迭代后,±θ的正切或余切只是符號(hào)位有差別,而不會(huì)因?yàn)榈脑驅(qū)е掠薪^對(duì)值上的偏差.此外,從表1的誤差比率來(lái)看,本文所設(shè)計(jì)的正切余切計(jì)算模塊能較為精確地獲得角度θ的正切余切值.
〔1〕孔德元.針對(duì)正弦余弦計(jì)算的CORDIC算法優(yōu)化及其FPGA實(shí)現(xiàn)[D].中南大學(xué)碩士論文,2008.1-3.
〔2〕J.E.Volder.The CORDIC trigonometric computing technique [J].IRE Trans.on Electron.Computers,vol. EC-8,1959.P.330-P.334.
〔3〕Xiaobo Hu,Ronald G.Harber,and Steven C.Bass, Expanding the Range of Convergence of the CORDIC Algorithm,IEEE Trans.on Computers,[J].vol.40,no.1, 1991.Jan.P.13-P.21.
〔4〕曹劍英.M倍降速遞歸流水線技術(shù)實(shí)現(xiàn)正切余切函數(shù)[J].通信技術(shù),2013(05).
O174
A
1673-260X(2013)11-0005-02
赤峰學(xué)院學(xué)報(bào)·自然科學(xué)版2013年22期