图示CORDIC算法

目录

简介

原理

硬件实现


简介

CORDIC,Coordinate Rotation Digital Computer, 坐标旋转数字计算方法

应用:计算三角函数,cos,sin,tan,或者计算旋转角

原理

问题:在下图中,C点的坐标是(x0,y0),AC与AD的夹角是48.71°,求D点的坐标。

解答:

\\ x1 = x0 cos\theta - y0 sin\theta = cos\theta(x0-y0tan\theta)\\ y1 = y0 cos\theta + x1 sin\theta = cos\theta (y0+ x0 tan\theta) \\

这里的难点在于如何得到cos以及tan。

假设我们重新选择一点C',使AC'与AC之间的夹角是45°。由于tan45°=1,我们比较方便的得到C'的坐标为

\\ x_{C'} = cos\theta(x0-y0tan\theta) = cos45(x0-y0)\\ y_{C'} = cos\theta(y0+ x0 tan\theta) = cos45(y0+x0)

由于C'与D还不足够接近,我们再次选择一个点,C'',使AC''与AC'之间的夹角是22.5°,由于tan22.5°=1/2,我们比较方便的从C'得到C''的坐标为

\\ x_{C''} = cos\theta(x_{C'}-y_{C'}tan\theta) = cos22.5(x_{C'}-\frac{1}{2}y_{C'})\\ y_{C''} = cos\theta(y_{C'}+ x_{C'} tan\theta) = cos22.5(y_{C'}+\frac{1}{2}x_{C'})

C''好像离D点更远了,我们继续执行以上操作,使新的点C'''与前一个点C''的夹角为11.25°。由于C''远离了D点,因此C''要顺时针旋转11.25°来得到C'''。

\\ x_{C'''} = cos\theta(x_{C''}-y_{C''}tan\theta) = cos(-11.25)(x_{C''}+\frac{1}{4}y_{C''})\\ y_{C'''} = cos\theta(y_{C''}+ x_{C''} tan\theta) = cos(-11.25)(y_{C''}-\frac{1}{4}x_{C''})

不断的迭代以上过程,旋转的角度分别为5.625°,2.8125°等等,我们就可以无限的逼近D点

这里,还有个cos联乘的问题没有解决,好消息是:

cos45*cos22.5*cos11.25*cos5.625*cos.... = 0.0672。

那么迭代多少次次才能够满足精度要求呢?看下图,大概12次左右就可以满足

 

硬件实现

每一拍需要两个移位器,三个加法器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值