国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的CORDIC算法的分析和實現(xiàn)

2013-12-29 00:00:00劉偉亮
電腦知識與技術(shù) 2013年4期

摘要:該文分析了CORDIC算法為作為硬件實現(xiàn)基本的運算的方法,實現(xiàn)了開方、正弦、余弦、乘法、除法、正切、反正切,和一些雙曲函數(shù)的實現(xiàn)。提供了一種基于流線設(shè)計的CORDIC算法的實現(xiàn),在每層流水線上都可實現(xiàn)6種計算,共用一個加法器。減少了硬件內(nèi)部資源的使用。通過是實現(xiàn)的結(jié)果可以看到計算結(jié)果在水線級數(shù)STAGE+3 個CLK信號后實現(xiàn)了連續(xù)的實時計算結(jié)果。

關(guān)鍵詞:CORDIC;流水線設(shè)計;共用;基本運算

中圖分類號:TP301 文獻標識碼:A 文章編號:1009-3044(2013)04-0841-03

The Analysis and Implementation of CORDIC Algorithm Based on FPGA

LIU Wei-liang

(Chongqing University of Posts and Telecommunications, Chongqing 400065, China)

Abstract: This paper analyzed the CORDIC algorithm for hardware implementation of basic operation method, realized the root, sine, cosine, multiplication, division, tangent, inverse tangent, and some hyperbolic function. Provide a method based on pipeline design CORDIC algorithm, each line can be realized 6 kinds of calculation, sharing one adder. Reducing the hardware resource use. Is to achieve the results you can see through calculation results in line series STAGE+3 CLK signal after achieving a continuous real-time calculation results.

Key words: CORDIC; pipeline design; share; basic operations

1 概述

隨著現(xiàn)代數(shù)字電路中工作頻率的不斷提高,計算結(jié)果要求隨時按工作要求實時計算,然而在實際工作中軟件語言實現(xiàn)的算法實時性不高,在硬件中計算數(shù)據(jù)只有加法和位移的操作。因此一種需要資源耗費小,實時性高的算法來實現(xiàn)工作中的基本運算。該文首先分析了CORDIC算法的基本原理,然后分別研究了幾種基本運算的實現(xiàn)方法,幾種運算的共用,最后進行了仿真和實現(xiàn)結(jié)果的分析。

2 CORDIC算法原理

CORDIC[1]是基于坐標旋轉(zhuǎn)的數(shù)字計算方法,通過加法,位移和查找表的計算實現(xiàn)開方、正弦、余弦、乘法、除法、正切、反正切,和一些雙曲函數(shù)。下式用極坐標分別表示了一個直角坐標系中的一個模長為[r],相角為[?]的向量,和此向量旋轉(zhuǎn)[ψ]角后的另一個向量。

[x0=rcos(?)y0=rsin(?)] (1)

[x1=rcos(?+ψ)y1=rsin(?+ψ)] (2)

(2)式經(jīng)過和差化積公式變換可得(3)式為

[x1=rcos(?)cos(ψ)-rsin(?)sin(ψ)y1=rsin(?)cos(ψ)+rcos(?)sin(ψ)] (3)

聯(lián)合(1)式和(3)式可知

[x1y1=cos(ψ)-sin(ψ)sin(ψ)cos(ψ)x0y0] (4)

提取公因式[cos(ψ)]后得到

[x1y1=cos(ψ)1-tan(ψ)tan(ψ)1x0y0] (5)

現(xiàn)在假定旋轉(zhuǎn)的角度[ψ]是經(jīng)過多次旋轉(zhuǎn)得到的,每次旋轉(zhuǎn)的角度為[ψi]=[snarctan(2-n)](n= 0,1,2,……),[sn]={-1,+1}經(jīng)過這樣的假設(shè)后[tan(ψ)]變換為2-n,可見經(jīng)過這樣的變換之后乘法運算就變成為位移操作。則(5)式可以變換下式:

[x1y1=(i=0ncos(ψi)1-tan(ψi)tan(ψi)1)x0y0] (6)

上式中[ψi]和[ψ]的關(guān)系為[ψ]=[i=0nψi]。將上式分成n次迭代動作完成,則迭代的第i次為:

[xi+1yi+1=cos(ψi)1-tan(ψi)tan(ψi)1xiyi] (7)

又根據(jù)[ψi]=[snarctan(2-n)] 可得下式:[xi+1yi+1=cos(ψi)1-si(1/2)isi(1/2)i1xiyi] (8)

式(8)中cos([ψi])=cos(arctan(2-i))= [11+2-2i],經(jīng)過多次累乘后得到的值收斂于一個值K,

[K=11+2-2i=0.607253] (9)

通過(6),(8),(9)可得:[x1y1=K(i=0n1-sn(2-i)sn(2-i)1)x0y0] (10)

經(jīng)過足夠多的迭代后可知原向量變?yōu)樾D(zhuǎn)后的向量假設(shè)Z為旋轉(zhuǎn)角度,則最后輸出為:

[xyz=(1/K)(xcos(ψ)-ysin(ψ))(1/K)(ycos(ψ)+xsin(ψ))0] (11)

可知當輸入x=K,y=0,z=[?]時。輸出為x=[cos(?)],y=[sin(?)]。

可知只要選取適當?shù)姆椒梢允筞經(jīng)過迭代足夠次數(shù)后趨近到0。故選取下面的方法:

[Zi+1=Zi-Siarctan(2-i)] (12)

當[Zi]>0時,[Si]=1;[Zi]<0時,[Si]= -1。

可見此方法中旋轉(zhuǎn)的是Z角,逐漸改變x,y。另一種結(jié)構(gòu)是逐漸旋轉(zhuǎn)y。改變x,z。可得到另一組結(jié)果:

[x=Xy=Yz=0] => [x=X2+Y2y=0z=arctan(Y/X)] (13)

通過以上的分析方法可以在線性系統(tǒng)和雙曲系統(tǒng)中建立相關(guān)旋轉(zhuǎn)。通過觀察相互之間的關(guān)系可建立如下的通用方程[2]

[xi+1=xi-μδi(2-iyi)yi+1=yi+δi(2-ixi)zi+1=zi-δietai] (14)

圓系統(tǒng):[μ]=1;[etai=arctan(2-i)];

線性系統(tǒng):[μ=0];[etai=2-i];

雙曲系統(tǒng):[μ=-1];[etai=atanh(2-i)];

其中輸入輸出關(guān)系可建立表1[3]。

式子(14)表明計算中一個迭代過程只需3次加法,2次位移,和一次查找表。這樣解算在FPGA中實現(xiàn)是可行的,而且節(jié)省了乘法器的使用,在每次迭代的過程中可以共用一個加法器來實現(xiàn)6種函數(shù)的計算,減少硬件資源的的消耗。所有的迭代過程可以通過流線設(shè)計連接,可以大量節(jié)省計算的時間。單級水線結(jié)構(gòu)如下圖所示:

圖1中Fun_mode控制選擇函數(shù)系統(tǒng)為圓系統(tǒng),線性系統(tǒng)和雙曲系統(tǒng),Rot_vec控制選擇旋轉(zhuǎn)坐標為極坐標和直角坐標。

本設(shè)計采用alter公司FPGA芯片,使用verilog HDL語言實現(xiàn)電路描述,在Quartus ii 9.0 上編譯仿真。

[\&Sin\&Cos\&[x2+y2]\&Atan\&Mul\&Div\&Sinh\&Cosh\&[x2-y2]\&atanh\&計算\&0.7081\&0.7081\&587.82\&0.54\&250\&0.6015\&0.2608\&1.0336\&400.89\&0.6948\&理論\&0.7071\&0.7071\&583.0952\&0.5404\&256\&0.6\&0.2582\&1.0328\&400\&0.6931\&]

仿真結(jié)果表明在誤差允許范圍內(nèi),該方案可行。

4 結(jié)束語

此算法經(jīng)過修改后,成功應用在衛(wèi)星信號的跟蹤模塊中實現(xiàn)了信號相位的精確計算,并且該算法具有一定的通用性,在共用一個加法器的情況下,成功的設(shè)計出了上述幾種函數(shù)的計算方法,設(shè)計中采用流水線設(shè)計方法,在水線級數(shù)stage+3clk 個時鐘后可連續(xù)輸出計算結(jié)果,并且可以實現(xiàn)不同的函數(shù)。

參考文獻:

[1] 楊宏,李國輝,劉立新.基于FPGA的CORDIC算法的實現(xiàn)[J].西安郵電學院學報,2008(1).

[2] Xiaobo Hu.Expanding the Range of Convergence of the CORDIC Algorithm[J].IEEE TRANSACTIONS ON COMPUTERS,1991,40(1).

[3] 耿丹.CORDIC算法的研究與實現(xiàn)[J].遙測遙控,2007(S1).

[4] 王金明.數(shù)字系統(tǒng)設(shè)計與Verilog HDL[M].北京:電子工業(yè)出版社,2010.

白朗县| 西乡县| 忻州市| 安徽省| 文成县| 达日县| 枣庄市| 瑞安市| 盐源县| 凌海市| 旬阳县| 北辰区| 武邑县| 崇明县| 安阳市| 蕲春县| 会宁县| 通州区| 武邑县| 博湖县| 榕江县| 海口市| 辉县市| 盐城市| 扶余县| 应用必备| 清镇市| 来安县| 大关县| 嘉定区| 台中县| 平阴县| 岳普湖县| 平凉市| 鄂伦春自治旗| 河东区| 祁门县| 高邮市| 崇礼县| 潼关县| 会理县|