基于FPGA的CORDIC算法的分析和实现.docVIP

  • 27
  • 0
  • 约3.56千字
  • 约 7页
  • 2019-08-23 发布于北京
  • 举报
PAGE PAGE 1 基于FPGA的CORDIC算法的分析和实现   摘要:该文分析了CORDIC算法为作为硬件实现基本的运算的方法,实现了开方、正弦、余弦、乘法、除法、正切、反正切,和一些双曲函数的实现。提供了一种基于流线设计的CORDIC算法的实现,在每层流水线上都可实现6种计算,共用一个加法器。减少了硬件内部资源的使用。通过是实现的结果可以看到计算结果在水线级数STAGE+3个CLK信号后实现了连续的实时计算结果。   关键词:CORDIC;流水线设计;共用;基本运算   中图分类号:TP301文献标识码:A文章编号:1009-3044(2013)04-0841-03   TheAnalysisandImplementationofCORDICAlgorithmBasedonFPGA   LIUWei-liang   (ChongqingUniversityofPostsandTelecommunications,Chongqing400065,China)   Abstract:ThispaperanalyzedtheCORDICalgorithmforhardwareimplementationofbasicoperationmethod,realizedtheroot,sine,cosine,multiplication,division,tangent,inversetangent,andsomehyperbolicfunction.ProvideamethodbasedonpipelinedesignCORDICalgorithm,eachlinecanberealized6kindsofcalculation,sharingoneadder.Reducingthehardwareresourceuse.IstoachievetheresultsyoucanseethroughcalculationresultsinlineseriesSTAGE+3CLKsignalafterachievingacontinuousreal-timecalculationresults.   Keywords:CORDIC;pipelinedesign;share;basicoperations   1概述   随着现代数字电路中工作频率的不断提高,计算结果要求随时按工作要求实时计算,然而在实际工作中软件语言实现的算法实时性不高,在硬件中计算数据只有加法和位移的操作。因此一种需要资源耗费小,实时性高的算法来实现工作中的基本运算。该文首先分析了CORDIC算法的基本原理,然后分别研究了几种基本运算的实现方法,几种运算的共用,最后进行了仿真和实现结果的分析。   2CORDIC算法原理   CORDIC[1]是基于坐标旋转的数字计算方法,通过加法,位移和查找表的计算实现开方、正弦、余弦、乘法、除法、正切、反正切,和一些双曲函数。下式用极坐标分别表示了一个直角坐标系中的一个模长为[r],相角为[?]的向量,和此向量旋转[ψ]角后的另一个向量。   [x0=rcos(?)y0=rsin(?)](1)   [x1=rcos(?+ψ)y1=rsin(?+ψ)](2)   (2)式经过和差化积公式变换可得(3)式为   [x1=rcos(?)cos(ψ)-rsin(?)sin(ψ)y1=rsin(?)cos(ψ)+rcos(?)sin(ψ)](3)   联合(1)式和(3)式可知   [x1y1=cos(ψ)-sin(ψ)sin(ψ)cos(ψ)x0y0](4)   提取公因式[cos(ψ)]后得到   [x1y1=cos(ψ)1-tan(ψ)tan(ψ)1x0y0](5)   现在假定旋转的角度[ψ]是经过多次旋转得到的,每次旋转的角度为[ψi]=[snarctan(2-n)](n=0,1,2,……),[sn]={-1,+1}经过这样的假设后[tan(ψ)]变换为2-n,可见经过这样的变换之后乘法运算就变成为位移操作。则(5)式可以变换下式:   [x1y1=(i=0ncos(ψi)1-tan(ψi)tan(ψi)1)x0y0](6)   上式中[ψi]和[ψ]的关系为[ψ]=[i=0nψi]。将上式分成n次迭代动作完成,则迭代的第i次为:   [xi+1yi+1=cos(ψi)1-tan(ψi)tan(ψi)1xiyi](7)   又根据[ψ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],经过多次累乘后得到的值收敛于一个值K,   [K=11+2-2i

文档评论(0)

1亿VIP精品文档

相关文档