芯片" target="_blank">DSP芯片广泛应用于数字控制、运动控制等诸多方面,由此可见DSP芯片的重要性。为增进大家对DSP芯片的了解和认识,本文将对DSP芯片的浮点和定点的区别予以介绍。如果你对DSP芯片具有兴趣,不妨和小编一起来继续往下阅读哦。
在选择DSP器件的时候,是采用浮点还是采用定点,如果用定点是16位还是32位?其实这个问题和你的算法所要求的信号的动态范围有关。
浮点运算DSP比定点运算DSP的动态范围(动态范围:如音响系统重放时最大不失真输出功率与静态时系统噪声输出功率之比的对数值,又如一个多媒体硬盘播放器输出图像的最亮和最暗部分之间的相对比值)要大很多。定点DSP的字长每增加1bit,动态范围扩大6dB,16bit字长的动态范围为96dB。程序员必须时刻关注溢出的发生。例如:在做图像处理时,图像做旋转、移动等,就很容易产生溢出。这时,要么不断地移位定标,要么作截尾。前者要耗费大量的程序空间和执行时间,后者则很快带来图像质量的劣化。
总之,是使整个系统的性能下降。在处理低信噪比信号的场合,例如进行语音识别、雷达和声纳信号处理时,也会发生类似的问题。而32bit浮点运算DSP的动态范围可以作到1536dB,这不仅大大扩大了动态范围,提高了运算精度,还大大节省了运算时间和存储空间,因为大大减少了定标,移位和溢出检查。
由于浮点DSP的浮点运算用硬件来实现,可以在单周期内完成,因而其处理速度大大高于定点DSP,这一优点在实现高精度复杂算法时尤为突出。
定点的计算不过是把一个数据当作整数来处理,通常AD采样来的都是整数,这个数相对于真实的模拟信号有一个刻度因子,大家都知道用一个16位的AD 去采样一个0到5V的信号,那么AD输出的整数除以2^16再乘以5V就是对应的电压。在定点DSP中是直接对这个16位的采样进行处理,并不将它转换成以小数表示的电压,因为定点DSP无法以足够的精度表示一个小数,它只能对整数进行计算。
而浮点DSP的优势在于它可以把这个采样得到的整数转换成小数表示的电压,并不损失精度(这个小数用科学记数法来表示),原因在于科学记数法可以表示很大的动态范围的一个信号,以IEEE754浮点数为例,单精度浮点格式:[31] 1位符号[30-23]8位指数[22-00]23位小数。这样的能表示的最小的数是+-2^-149,最大的数是+-(2-2^23)*2^127,动态范围为20*log(最大的数/最小的数)=1667.6dB这样大的动态范围使得在编程的时候几乎不必考虑乘法和累加的溢出,而如果使用定点处理器编程,对计算结果进行舍入和移位则是家常便饭,这在一定程度上会损失精度。
原因在于定点处理的信号的动态范围有限,比如16位定点DSP,可以表示整数范围为1-65536,其动态范围为 20*log(65536/1)=96dB.对于32定点DSP,动态范围为20*log(2^32/1)=192dB,远小于32位ieee浮点数的1667.6dB,但是实际上192dB对绝大多数应用所处理的信号已经足够了。由于AD转换器的位数限制,一般输入信号的动态范围都比较小,但在 DSP的信号处理中,由于点积运算会使中间节点信号的动态范围增加,所以主要考虑信号处理流程中中间结果的动态范围,以及算法对中间结果的精度要求,来选择相应的DSP。另外就是浮点的DSP更易于编程,定点DSP编程中程序员要不断调整中间结果的PQ值,实际就是不断对中间结果进行移位调整和舍入。
实数运算可直接透过代码加入硬件运算中,而定点元件必须透过软件才能间接执行实数运算,这就增加了运算法指令并延长了开发时间。
整体上说,定点DSP在成本上具有优势而浮点DSP在易用上较优。