在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4657|回复: 18

CORDIC算法

[复制链接]
发表于 2009-11-19 14:57:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
那位大侠能帮小弟解决下CORDIC算法的初值的问题?
比如我要用CORDIC计算sinx的值,按照书上的说法是应该选择模式1,这样y0应该等于0,那x0应该怎么设定呢?sinx中的x和x0、y0又有啥关系呢?
麻烦那位大侠帮忙解决下!!
发表于 2009-11-19 17:00:19 | 显示全部楼层
感谢分享!~~~
发表于 2009-11-19 17:55:05 | 显示全部楼层
思路是这样把?
如果x在-90~90度之间,0~-90和0~90的sin和cos只是符号不同,所以我们假设x在0~90之间。
从0度开始,向量长为1,就是1+j0(复数表示),然后逆时针旋转45度。用公式:
                 x` = x*cosn- y*sinn
                y` = y*cosn+x*sinn
n是每次旋转的角度,这里就是45。然后45和x比较,如果x>45,继续逆时针旋转22.5度,反之顺时针旋转22.5度,这里n=22.5。然后比较x和45+或者-22.5度,再正负旋转11.25度,同时每次要记住累加旋转的总角度,例如45-25+11.25等等。最后到累加的角度和x比较的差值在最小精度上,就认为相等了。
这时候,最新的x`就是sin,y`就是cos。
0~90度区间可以推广到0~360度。
因为每次旋转都是45,45/2,45/4,。。。。所以这些角度的sin和cos都是已知的。。
 楼主| 发表于 2009-11-19 21:16:27 | 显示全部楼层
感觉楼上的将得很有道理,不过我还是有点不明白。
比如我要计算sin60,我的初值该怎么给呢,还是这个初值根本就和最后要算的角度值没有关系呢?
发表于 2009-11-19 23:25:44 | 显示全部楼层
本帖最后由 trurwong 于 2009-11-19 23:27 编辑


感觉楼上的将得很有道理,不过我还是有点不明白。
比如我要计算sin60,我的初值该怎么给呢,还是这个初值根本就和最后要算的角度值没有关系呢?
worker2 发表于 2009-11-19 21:16

什么意思?你说的初值是什么?我说了阿,x=1,y=0,就是初值,然后不停的变成x`和y`。。。和sinx的x没关系的,只要x在0~90之间就可以了。
你应该先上网找点cordic的算法论文看看,cordic的几种主要应用了解下就清楚了。
还有一些可以简化的地方。不过大概的原理就是这么一个收敛的过程。
发表于 2009-11-20 00:06:48 | 显示全部楼层
学习中……
 楼主| 发表于 2009-11-20 09:54:47 | 显示全部楼层
5# trurwong
哎!说来惭愧啊,网上的论文看了一大堆才有了上面的问题。
经过您的指教,现在有点感觉了,再到网上去找点论文。
谢谢!!
发表于 2009-11-20 10:01:18 | 显示全部楼层
有点不太对的地方,为了避免过多的乘法。用这样的公式。还是1+j0,然后的旋转用下面的公式:
          x`= x - (2^-n)*y             y` = y + (2^-n)*x,  n=0,1,2,3,.....到你需要的精度。这样每次旋转的角度就是arctan(2^-n),已知的值,可以直接写在RTL里,累加这个值,累加的角度和待求角相等时,x`就是cos, y`就是sin
这样就不需要乘法,移位就可以了。
发表于 2009-11-20 12:37:36 | 显示全部楼层
3楼回答的不错
发表于 2009-11-20 17:01:32 | 显示全部楼层
你做一张精确的初值表,然后从最近的角做初值开始叠代.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-29 01:40 , Processed in 0.035189 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表