打印

定点DSP用作浮点运算的问题

[复制链接]
2737|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
louli|  楼主 | 2011-4-20 16:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
教科书上说:定点DSP硬件一般都是面向定点的运算,不支持标准的浮点运算。可是现在的开发工具都可以定义浮点型,算起来也没问题,这是怎么回事情呢?

我是用的16位定点dsp,55xx。定义了32位浮点型的。计算起来也挺好,但是经常
溢出,而且不像教科书上说的到±1.40129846432481707e-45 to ±3.40282346638528860e+38.这是怎么回事?

相关帖子

沙发
aresc| | 2011-4-20 19:06 | 只看该作者
开发工具自己提供了在定点DSP上进行浮点运算的子程序. 比如下面的程序:
float c = 0.5, d = 0.25, e;
e = c+d;
那个浮点加法开发工具是使用单独的一个子函数去实现的.其他的*,/,-都有各自的子程序.而如果是整数运算,直接就是一条指令ADD或MPY,或SUB就可以搞定的,(貌似TI的DSP没有除法指令?).
至于溢出,建议你写一个类似上面的小程序,然后使用MIXED SOURCE模式,研究一下显示的汇编程序应该可以搞清楚. 对32位的定点数,在内存里可以用4个字节存贮,但最终运算的时候还是要把数读到16位的寄存器里,那至少要两个寄存器才能表示一个32位的浮点数,也许溢出就发生在这个地方.

在定点DSP里进行浮点运算, 会消耗很多的处理能力, 尽量别用.

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
louli + 1
板凳
dqyubsh| | 2011-4-20 19:08 | 只看该作者
51也可以做浮点运算。浮点运算是编译器仿真的,跟硬件没多大关系。

仿真效率低,代码庞大。能不能溢出,在设计程序的时候就要考虑到,比如,很小的小数不做分母,两大数量级差别很大的数不做乘除运算。

使用特权

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

本版积分规则

23

主题

108

帖子

0

粉丝