首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

定点DSP与浮点DSP的区别

定点DSP与浮点DSP的区别

DSP芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。DSP芯片内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速地实现各种数字信号处理算法。DSP芯片一般具有如下一些主要特点:
1.  在一个指令周期内可完成一次乘法和一次加法。
2.  程序和数据空间分开,可以同时访问指令和数据。
3.  片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问。
4.  具有低开销或无开销循环及跳转的硬件支持。
5.  快速的中断处理和硬件I/O支持。
6.  具有在单周期内操作的多个硬件地址产生器。
7.  可以并行执行多个操作。
8.  支持流水线操作,使取指、译码和执行等操作可以重叠执行。
DSP芯片的应用主要有:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-comfficeffice" />
(1) 信号处理--如,数字滤波、自适应滤波、快速傅里叶变换、相关运算、频谱分析、卷积等。
(2) 通信--如,调制解调器、自适应均衡、数据加密、数据压缩、回坡抵消、多路复用、传真、扩频通信、纠错编码、波形产生等。
(3) 语音--如语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认、语音邮件、语音储存等。
(4) 图像/图形--如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等。
(5) 军事--如保密通信、雷达处理、声纳处理、导航等。
(6) 仪器仪表--如频谱分析、函数发生、锁相环、地震处理等
在给定的直角坐标系上,坐标全是整数的点,叫做整点。全部整点构成的组就叫做空间网格。在空间网格里的运算称为定点运算。在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。一个整型数的最大表示范围取决于DSP芯片所给定的字长,一般为16位或24位。字长越长,所能表示的数的范围越大,精度也越高。DSP芯片处理小数的关键是由程序员确定一个数的小数点处于16位中的哪一位,就是数的定标。通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数。
在选择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编程中程序员要不断调整中间结果的P,Q值,实际就是不断对中间结果进行移位调整和舍入。
实数运算可直接透过代码加入硬件运算中,而定点元件必须透过软件才能间接执行实数运算,这就增加了运算法指令并延长了开发时间。
整体上说,定点DSP在成本上具有优势而浮点DSP在易用上较优。
返回列表