世界足球俱乐部杯

FPGA数字信号处理之CORDIC算法

出处:维库电子市场网 发布于:2023-03-08 11:51:02

CORD(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法。该算法通过基本的加和移位运算代替乘法运算,用于三角函数、双曲线、指数、对数的计算。CORDIC算法的思想是:反复迭代,逐次逼近终值,计算结果达到一定精度即可终止。比如下边图中任意坐标0 [10,20],计算它的角度值,使用cordic算法就是三角函数不断的旋转坐标系,做法就是:1、将该点0顺时针旋转π/2,得到点1;
2、由于点1位于第四象限,说明转多了,再往逆时针方向转π/4,得到点2;3、点2位置象限,顺时针旋转π/8,得到点3,

4、由于点3位于第四象限,说明转多了,再往逆时针方向转π/16,得到点4;5、点4位置象限,顺时针旋转π/32,得到点5....(根据所需精度,确定旋转次数即可)

终把旋转的角度求和就得到了任意坐标[10,20]的角度值,其中坐标旋转用的三角函数公式为:

X1=cos(θ)(X0-Y0*tan(θ))

Y1=cos(θ)(Y0+X0*tan(θ))

上边的例子能说明cordic算法的思想,在确定旋转次数之后,每次旋转的cos(θ)和tan(θ)值是确定的,这样我们就可以用提前存储的cos(θ)和tan(θ)值去计算任意坐标的角度值。

但是上面角度旋转过程中用到了乘法运算,并没有简化运算量。接下来对cordic进一步优化,将上式中的cos(θ)舍弃,得到如下的结果:

循环过程中Y的正负判断象限,决定旋转方向,但是X/Y坐标会向外无限循环,这时候旋转得到的X/Y坐标会扩展很多倍,如下图,注意下图中的坐标轴刻度是1E17。


上述旋转过程的计算变化成了:

X1=(X0-Y0*tan(θ))

Y1=(Y0+X0*tan(θ))每次旋转减少了两个乘法,在需要知道正确坐标值的情景下,比如要知道该信号的幅度,由于cordic算法的旋转测试是确定的,所以cos(θ)确定的,所以cos(θ1)*cos(θ2)*cos(θ3)*...*cos(θn)是一个定值,只需要在旋转之后将的X/Y值与cos(θ1)*cos(θ2)*cos(θ3)*...*cos(θn)这个定值相乘即可。上面的旋转过程还是用到了乘法,乘法依然是FPGA/IC中的紧俏资源,下一篇文章介绍如何不用乘法的在FPGA中实现CORDIC。
关键词:FPGA

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,//domainnameq.cn,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
 一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:
技术客服:

0571-85317607

网站技术支持

13606545031

客服在线时间周一至周五
9:00-17:30 

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!