低时延CORDIC算法计算平方根电路设计研究.docVIP

低时延CORDIC算法计算平方根电路设计研究.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 PAGE 页 共 NUMPAGES 页 低时延CORDIC算法计算平方根电路设计研究 摘要:开平方运算广泛应用于数值分析、调制解调、图像处理等领域,而应用坐标旋转数字计算(Coordinate Rotation Digital Computer,CORDIC)进行平方根运算是一种新应用.基本CORDIC算法精度必须用迭代次数作保证,而较多的迭代次数会导致时延过大等问题,通过运用建立查找表、单向旋转、合并迭代和免除补偿因子等手段,提出一种能够免去大部分迭代运算的改进CORDIC算法用于平方根计算.相较于基本算法计算平方根,该改进算法使用了一半的时钟周期便能得到输出结果,大大减少了输出时延,而且可以达到较高的计算精度,更加适合实时性要求高的应用场合. 关键词:坐标旋转数字计算;平方根计算;单向旋转;合并迭代;数字计算机 中图分类号:TN492 文献标志码:A 开平方运算是一种应用范围广泛的数学运算,比如通信信号解调时计算信号包络需要进行开平方运算,正交调制信号提取相位信息时也需要开平方运算,它也是很多数字校正算法如功率放大器数字预失真参数提取算法中的关键运算[1].而平方根运算的精度和速度是开平方电路的主要性能指标.坐标旋转数字计算机(Coordinate Rotation Digital Com?puter,CORDIC)算法[2-3]是提高平方根运算精度和速度的一种新颖方法,CORDIC算法在其计算过程中只涉及移位操作和加减操作,因此非常适合硬件特别是FPGA实现[4].该方法最初用于进行三角函数求值和产生正余弦波形,经过一定推广后也可用于计算双曲线函数[5],采用CORDIC算法在双曲线旋转下的向量模式,可以计算平方根. 文献[6,7]对基本CORDIC算法计算平方根进行了详细阐述,它是一种循环迭代的计算方法,通过迭代运算不断逼近所要旋转的角度.但由于迭代次数过多存在时延偏大的缺陷,同时每次迭代方向必须等待上一次迭代结束,由上次迭代剩余角度符号决定本次迭代旋转方向,限制了算法的运算速度.文献[8]虽然对模校正因子进行了简化,但最终精度稍有损失,另外还有其他一些改进方法求平方根. 本文在前人对CORDIC算法进行优化基础上提出了一种改进算法求取平方根,将查找表法、单向旋转、合并迭代和基本CORDIC算法相结合,只需进行单向迭代运算,避免了每次旋转方向的不确定,消去了缩放因子[9],从而有效提高了算法的工作速度.同时把迭代运算划分为两个阶段完成:第一阶段迭代通过移位运算和减法运算直接实现,第二阶段迭代通过简化蝶形递归运算一步完成.这样大大减少了迭代运算的次数,降低了延时,特别适合实时性要求高的应用场合.本改进算法在XILINX公司xc6vlx75t-3ff484型号FPGA芯片进行了验证,结果表明:在保证与基本CORDIC算法精度相同的情况下,能够有效计算平方根,不但显著减少了算法迭代次数,还有效提高了算法运算速度,本改进算法应用在计算平方根方面的综合性能有了较明显提升和改善. 1基本CORDIC算法 CORDIC算法最早是由J.Volder提出的,它是一种只需通过移位-相加运算不断迭代逼近目标值的计算方法[10].在XY坐标平面上将向量(x0,y0)旋转 两向量间坐标变换关系如式(1): 如果去除cosθ项,可得到向量的伪旋转方程如式(2): CORDIC算法核心在于把旋转θ角分解为N个递减的小旋转角θi进行N步迭代旋转,即限定旋转角度θ,使tanθ=di?2-i,其中di=1或-1,表示旋转的方向,ìx′1=(x0-y0?tanθ)?í?y1′=(y0+x0?tanθ)从而可以通过简单移位来完成由tanθ引入的乘法运-1-i算.任意角度的旋D可通过一系列θ=tan(2)的角度旋转迭代完成,在这里引入了角度累加器:zi+1=ziCdi?θi用来在每次迭代过程中追踪累加后剩余的旋转角度,该剩余的旋转角度确定旋转的方向,若zi 0,di=1;否则di=-1.那么第i+1次角度的向量伪旋转方程可表示为式(3): 正如前面所述,如果消去了cosθi项,迭代方程(2)就只有移位和加减操作.当cosθi项经过N步旋转后可得到模校正因子Kn,当N确定时Kn就是一个 常量,而常数项Kn可以在系统的其他地方进行补偿,Kn表达式∏如式(4):∏ CORDIC算法也可以用于投影计算,当将向量(x,y)投影到x轴时,此时旋转方向由y确定.若y《0,d=1;否则d,=-1.迭代的最终值为式(6): 扩展迭代方程式,CORDIC算法可以用于计算双曲线方程,扩展后的向量伪旋转方程为式(7): 对于平方根运算采用的是双曲线方程,而且迭代模式为投影模式,迭代的最终值为式(8): 如果要求值a的平方根,只需要将x、y分别赋值

文档评论(0)

134****3623 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档