定点DSP和浮点DSP有很大的差别,宏观的比较就不谈了,比如动态范围、速度、价格等方面,网上大都是介绍这方面的,我在此主要介绍下技术角度的区别,毕竟技术才是最重要的。
部分内容摘自网上,谢谢大家无私分享。
单纯从技术的角度来看,定点与浮点的区别主要在两个方面,即硬件和软件。
硬件上的区别:定点DSP与浮点DSP在硬件结构上最大的不同之处在于数据存储结构方面。浮点DSP用户不必知道如何存储数据,而应用定点DSP时就需了解数据存储格式,必须对数据格式作一些转换。浮点dsp处理器具有浮点/整数乘法器,整数/浮点算术逻辑运算单元ALU,适合存放扩展精度的浮点结果的寄存器等。
软件上的区别:主要有浮点dsp编程的特点以及注意事项;定点dsp进行浮点运算时的定标,移位,检测溢出操作。比较两个浮点数时,永远不要使用操作符==来判断是否相等。即使比较两个相同的数,还是可能有微小的舍入差别。甚至定义精确的0,也不是很安全,尽管C语言中有0的表示,永远不要写这样的代码(x==0),而应该写成(fabs(x)<TINY),其中TINY定义为一个很小的值,也就是处理器的浮点格式舍入误差。
不同的数字格式:定点与浮点DSP的基本差异在于它们各自对数据的数字表示法不同。定点硬件严格执行整数运算,而浮点 DSP 既支持整数运算又支持实数运算,后者以科学计数法进行了标准化。字长为 16 位的定点 DSP 实现 (rovide) 64K 的精度,带符号整数值范围为 -215 至215-1。