用硬件实现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系统用的都是定点处理。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>