16F877做16位数开方,谁有运算高效方法?

[复制链接]
5239|11
 楼主| jtl 发表于 2010-1-26 11:16 | 显示全部楼层 |阅读模式
试了 几个方法,好像都 处理的 时间很长,最大超过1000指令周期,不知道 谁有 更好的 办法?
yewuyi 发表于 2010-1-26 13:39 | 显示全部楼层
不可能很短。
ferrari059 发表于 2010-1-27 09:12 | 显示全部楼层
换芯片吧
 楼主| jtl 发表于 2010-1-29 11:34 | 显示全部楼层
感谢2位的 回复。
终于搞定,改为8M震荡,开方后最大转换500US完成无符号8位结果。如果结果采用四舍五入,则最大需要600US完成。
wh6ic 发表于 2010-1-29 14:39 | 显示全部楼层
PIC用移位法16位数开方得到8位结果不超过150周期。具体实现参考手工开方方法(每次左移两bit,减法比较后得到一bit结果)。
yxwsz 发表于 2010-2-2 11:15 | 显示全部楼层
逗LZ一下,外挂一个浮点DSP,专门来做这个平方根运算;
浮点DSP速度很快的,比如ti的67xx系列, fastRTS里面42个时钟就可以算出来一个single float的平方根。
兰天白云 发表于 2010-2-2 20:35 | 显示全部楼层
本人做过一个32位开方的程序,结果为16位 可惜是汇编的,2003年的程序,速度非常快,当时用在PIC16F73上
兰天白云 发表于 2010-2-2 20:36 | 显示全部楼层
[img][/img]
兰天白云 发表于 2010-2-2 20:36 | 显示全部楼层
如何插入图片?
huangqi412 发表于 2010-2-2 21:29 | 显示全部楼层
高级,先上传附件,然后插入。
 楼主| jtl 发表于 2010-2-3 15:25 | 显示全部楼层
TO 兰天白云
对你的回复表示感谢,不知道能否提供个代码来参考?汇编不要紧,前面那位说的150个周期的没有找到类似的,我最快也是1000周期,确实有点慢,
IJK 发表于 2010-2-4 13:56 | 显示全部楼层
32位开方到16位,150个周期是有一定可能,有几个基本运算比较重要:
归一化到最高位,
周期少的硬件乘法,
周期少的硬件除法。
另外,可以用查表来减少循环次数。
对于CortexM3,估计可以少于100个周期。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

jtl

5

主题

15

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0