1.简介(几个公式)
在很多的dsp芯片上不含有浮点单元,所以,为了计算小数,就会必不可少的使用定点的概念。首先,要有一个概念,定点其实就是意淫一个小数点,来处理小数。
定点浮点的知识其实比较简单,其面对的问题主要是处理器芯片是否含有浮点处理单元区分,对于做嵌入式的人来说,大部分情况下用的定点就可以认为是整数,浮点就是小数。
但是,为了让没有浮点处理能力的芯片也能运算小数,一些人呢就找到了一个意淫的方法:在整数点里面找个小数的位置,也就称为定标。通俗点说,就是你认为哪个位置是小数点位置,哪个位置就是小数点。
有2种大家都认同的计小数点位置的方法,主要还是值法,所以只说Q值法。
比如一个16位的数,定标,就表示小数位数为15,最高位为符号位。
举一个例子,一个16位数的最大最小值:
最大值是在Q0产生,值为:,故通用的最大值计算方法为:,说通用是由于定标位置是可变的。
最小值也是在Q0中产生的,最小值为:,所有通用的最小值公式为:
这两个公式的精度可以用一个公式来表示:,其表达的意思就是小数点越多,精度越高。
下面考虑的就是定点浮点之间的转换了。
公式可以如下:
浮点转定点:
定点转浮点:
估计,该公式对于做嵌入式的工程师来说,乍看确实如此,但是我们用一个实例做一下分析,例如一个小数0.6,使用记法,转为定点值为:,使用向下取整,值为19660。接着反过来再算一下,使用,本来的精度为,而现在差值为:,对比向上取整,值则为,则浮点值为:,差值为:
,故而精度提高了很多。
因此,总结一点,浮点转定点的时候,需要修改公式:
浮点转定点:,然后再采取向下取整。
2.dsp处理定点的计算
在dsp中,有两个功能是必备的,一个是溢出保护,一个是乘累加在一个周期中完成。
3.参考资料
关于这节,其实有一本非常好的实用书籍:《语音信号处理及Blackfin DSP实现》。
网友评论