打印

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

[复制链接]
4087|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完成。

使用特权

评论回复
5
wh6ic| | 2010-1-29 14:39 | 只看该作者
PIC用移位法16位数开方得到8位结果不超过150周期。具体实现参考手工开方方法(每次左移两bit,减法比较后得到一bit结果)。

使用特权

评论回复
6
yxwsz| | 2010-2-2 11:15 | 只看该作者
逗LZ一下,外挂一个浮点DSP,专门来做这个平方根运算;
浮点DSP速度很快的,比如ti的67xx系列, fastRTS里面42个时钟就可以算出来一个single float的平方根。

使用特权

评论回复
7
兰天白云| | 2010-2-2 20:35 | 只看该作者
本人做过一个32位开方的程序,结果为16位 可惜是汇编的,2003年的程序,速度非常快,当时用在PIC16F73上

使用特权

评论回复
8
兰天白云| | 2010-2-2 20:36 | 只看该作者
[img][/img]

使用特权

评论回复
9
兰天白云| | 2010-2-2 20:36 | 只看该作者
如何插入图片?

使用特权

评论回复
10
huangqi412| | 2010-2-2 21:29 | 只看该作者
高级,先上传附件,然后插入。

使用特权

评论回复
11
jtl|  楼主 | 2010-2-3 15:25 | 只看该作者
TO 兰天白云
对你的回复表示感谢,不知道能否提供个代码来参考?汇编不要紧,前面那位说的150个周期的没有找到类似的,我最快也是1000周期,确实有点慢,

使用特权

评论回复
12
IJK| | 2010-2-4 13:56 | 只看该作者
32位开方到16位,150个周期是有一定可能,有几个基本运算比较重要:
归一化到最高位,
周期少的硬件乘法,
周期少的硬件除法。
另外,可以用查表来减少循环次数。
对于CortexM3,估计可以少于100个周期。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

jtl

5

主题

15

帖子

0

粉丝