公式(2-5)

我们定义这种旋转为伪旋转,公式(2-5)叫做伪旋转方程式。因为去掉了cos(θ),这样使得每次循环又减少了乘法运算的次数,但带来的影响是,每次旋转后得到的新坐标点到原点的距离都改变了了,因为cos(θ)<1,所以实际值是增大了,而增大后的值是原来的1/cos(θ)倍。但我们求的是角度θ值得大小,所以对于ρ值的变化,我们暂且搁置。这样一来,每次循环的乘法运算一下就从4次减少到了2次了。

我们知道,CORDIC算法的思想是通过迭代的方法,不断地旋转某一特定的角度,而这角度就是使得其正切值为上一值得一半,从而使得累计的旋转角度为最开始设定的值。每次旋转的角度值为:θ=arctan(1/(2^n)),即,那我们是如何确定这个特定的值呢?

一开始我们采用角度减半的方式进行迭代,因为第一次循环时,tan(45°)=1,所以第一次循环是不需要乘法运算的。那么第二次迭代的角度为22。5°,我们要tan(22。5°)=0。41421356,但这是个没有规律的小数。所以我们要用二分查找法得出它的值,尽管二分查找法的效率很高,但也同样不可避免的使用到了乘法器,这样一来,不但增加了资源的占用率,还大大降低了运算的速度。这是我们所不想看到的结果,像乘法器这样占用资源的我们能少用便少用。所以我们还得对每一次迭代的角度进行修改,我们需要选择一个在22。5°和45°之间的角度值,尽管这样会降低查找的效率,却能有效的减少使用乘法器的次数,这样就能提高运算的速率了。如果按照原来的旋转角度来算,也就是二次旋转采用26。565051177078°而不是22。5°,tan(26。565051177078°)=1/2,那么需要进行运算是乘以1/2,因为我们采用的计算方法是定点数运算,乘以对应的操作就是乘数右移一位。而移位运算在硬件中实现是很非常方便的,运算足够快,这样第二次迭代中的乘法运算也被消除了。使用同样的方法,在第三次循环中不用11。25°,而采用14。0362434679265°,tan(14。0362434679265°)=1/4。也就是乘数右移两位就可以了。剩下的都以此方法类推,如下表所示,表中记录的是乘法器每一次右移时对应的tan(θ)值对,及他们对应角度θ的值,还有在每次伪旋转时去掉的伸缩因子cos(θ)的值,我们可以得到表2-1。

表2-1 迭代次数所对应的旋转角

i

 0 45。0000 1 0。707106781

1 26。5651 0。5 0。894427191

2 14。0362 0。25 0。970142684

3 7。1250 0。125 0。992277877

4 3。5763 0。0625 0。998052578

5 1。7899 0。03125 0。999512076

6 0。8952 0。015625 0。999877952

7 0。4476 0。0078125 0。999969484

8

上一篇:AT89C51单片机模拟GPS定位信息显示系统设计
下一篇:纳米孔道中离子电流整流现象仿真研究

基于Java的串口通信设计

基于Kinect的深度图像编码

编码式超材料codingmetamaterial结构散射特性分析

基于混沌的数字图像加密技术研究

基于Virtex-5FPGA的图像处理系统研究

基于移动通信的工业生产线状态监测技术研究

基于TF/IDF特征的网络问题自动分类研究

ASP.net+sqlserver企业设备管理系统设计与开发

LiMn1-xFexPO4正极材料合成及充放电性能研究

新課改下小學语文洧效阅...

麦秸秆还田和沼液灌溉对...

我国风险投资的发展现状问题及对策分析

网络语言“XX体”研究

张洁小说《无字》中的女性意识

安康汉江网讯

互联网教育”变革路径研究进展【7972字】

老年2型糖尿病患者运动疗...