用硬件实现DSP基本上是基于定点的算法。什么叫做定
点呢?定点的意思就是小数点的位置是确定的,这是跟浮
点不同的地方。比如说,有一种常用的表示定点的方法,
比如说一个数的定点方式为(1, 6, 4),意思就是说这个数的
长度为6比特,最高位为符号位,小数位占据了4比特,整
数位占据了1比特。举个例子:
101011,假设该数的定点方式为(1,6,0),那么该数的实
际数值为(-1)*25 + 1*23 + 1*21 + 1 = -21。
001011,假设该数的定点方式为(1,6,0),那么该数的实
际数值为1*23 + 1*21 + 1 = 11。
如果一个数的定点方式为(0,6,0),这里的0代表该数为无
符号数。假设101011的定点方式为(0,6,0),那么该数实际
为43。
如果有小数点,假设为(1,6,4),那么101011实际对应的
数值是多少呢?由于这时候小数点点在第4位,那么权值发
生了变化,101011 实际对应的值为(-1)*21 + 1*2-1 + 1*2-3 +
1*2-4= -2 + 0.6875 = 1.3125。 如果该数的定点化为
(0,6,4),那么101011实际对应的值是21 + 1*2-1 + 1*2-3 +
1*2-4= 2.6875。
那么这些定点数是如何而来呢?或者是说为什么要使用
定点数?事实上一个完整的,规范的DSP系统,源头来源
于算法仿真。算法设计人员根据系统需求设计算法,一般
在进行算法功能性实现的时候仿真常用的数据都是浮点
数,也就是说在初步做仿真时,数据用的都是double型或
者是float型,在基于这种类型的算法仿真符合系统性能要求
后,接着下来就要进行定点仿真。所谓的定点仿真就是把
浮点数据做定点化,比如说做仿真时候的输入数据幅度从-
0.8~0.8,中间的数据基本是连续的,定点化就是把这些几
乎是连续的浮点数据做阶梯式的量化,即改变数据的表示
方法(定点),裁减数据的表示位宽。前面ADC采集时候
的量化精度却是阶梯式的,而且硬件的处理资源则是定点
乘法远远方便于浮点乘法,所以一般来说都会做定点仿
真。即根据系统的精度和数据的概率统计情况结合在该定
点精度情况下的系统指标来做精度的取舍(定点表示数据
的精度一般来说远逊于浮点)。这就是定点的由来。在业
界,基本上用硬件实现DSP,特别是复杂大规模的DSP系
统用的都是定点处理。