最近在研究的一个项目中必须要用到DSP处理器。可是在选型时遇到了一个问题,该选择定点型的DSP,还是选浮点型的DSP?这两者有什么区别呢?于是专门查找并总结了一些资料,如下:

一般来说,定点DSP处理器具有速度快,功耗低,价格便宜的特点;而浮点DSP处理器则计算精确,动态范围大,速度快,易于编程,功耗大,价格高。

1、宏观上的区别

从宏观上讲,浮点dsp比定点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。

2、硬件上

暂时抛开这些宏观的特点对比,单纯从技术的角度来看,定点与浮点的区别主要在两个方面,即硬件和软件。硬件上的区别来自于:浮点dsp处理器具有浮点/整数乘法器,整数/浮点算术逻辑运算单元ALU,适合存放扩展精度的浮点结果的寄存器等。

3、软件上

再看看在软件开发上的不同之处,主要有浮点dsp编程的特点以及注意事项;定点dsp进行浮点运算时的定标,移位,检测溢出操作。比较两个浮点数时,永远不要使用操作符==来判断是否相等。即使比较两个相同的数,还是可能有微小的舍入差别。甚至定义精确的0,也不是很安全,尽管C语言中有0的表示,永远不要写这样的代码(x==0),而应该写成(fabs(x) < TINY),其中TINY定义为一个很小的值,也就是处理器的浮点格式舍入误差。

4、应用例子

另外一个比较重要区别涉及应用场合对定点与浮点dsp处理器的选择。设计师关心的是最后的系统性能、成本以及上市时间。

(1)移动电视

这是另一个易于决定的选择。在移动电视中完全没有必要进行浮点处理。大部分的信号链处理是在标准解码器中进行的,如MPEG-2, MPEG-4, JPEG-2000和H.264。这些算法被设计由定点运算来执行。更高精度和更大动态范围的浮点运算不仅毫无帮助,而且根本无法使用,因为这些算法通常都只精确到比特。

例如,在视频编解码器中使用的频域的变换实际上是某种形式的DCT变换(离散余弦变换)。表面上,似乎浮点运算更适合于DCT计算,就像适合FFT计算一样。浮点运算确实会产生更加精确的DCT。不幸的是,视频编解码器中的DCT是被设计在定点处理器上完成的,并且只精确到比特,因此在这里追求更高的精度是完全错误的。

更何况,视频编解码器的大部分工作量都用于控制代码,那里同样也不需要浮点编码。比如,视频编解码器中使用的熵编码器占了整个工作量的很大一部分(在H.264算法中使用的CABAC编码器更是如此)。

这里所考虑的两种处理器,能根据下列事实较清楚地做出正确的选择,即Blackfin处理器拥有特别设计的加速视频算法性能的指令。相反,SHARC处理器没有特殊的视频指令。此外,功耗对于移动市场来说是至关重要的,这几乎就将浮点处理器排除在外了。这些使选择变得轻而易举。

而其余的应用实例将需要我们进行更加深入的分析,才能做出正确的处理器选择。

(2)军用雷达

我们最好从容易的选择开始。在军用雷达中你会经常用到浮点处理器。为什么?因为在这种应用中浮点性能是不可缺少的。雷达依靠的就是测定自模糊函数的最大绝对值。该函数表达的是发出的测试信号和接收的回波之间的互相关性。

这是一个指数函数的积分。这种积分能用FFT技术计算。在计算大型FFT时,浮点运算十分有用,而且在这里采用浮点处理器没有任何障碍。只要热量能排出(即处理器不发烫),功率不是大问题。该装置的成本也不是主要问题,因为这些处理器成本仅占整个系统成本的很小部分。事实上,一般不大会选择ADSP-21367 SHARC来完成这样的任务,因为该应用的一个目标是在每平方毫米中尽可能提供更多的处理能力。因此,ADI公司的TigerSHARC系列产品中的高性能ADSP-TS201会更适合这个应用。

希望以上对于定点DSP和浮点DSP的对比能使初学者建立起一个全局的感性认识。

浅论定点DSP与浮点DSP的区别相关推荐

  1. 定点DSP与浮点DSP的比较(定点DSP和浮点DSP的定义)

    [ 首先要理解什么是定点运算,浮点运算 你要知道DSP芯片是如何处理小数的 这就涉及的是小数的定标问题.数值的精度与数值的范围就成了一对矛盾了. 你要知道:支持浮点运算的DSP就是浮点DSP芯片,在这 ...

  2. 信迈TI OMAP-L138(定点/浮点DSP C674x+ARM9) + Xilinx Spartan-6 FPGA开发板规格书

    1 评估板简介 基于TI OMAP-L138(定点/浮点 DSP C674x+ARM9)+ Xilinx Spartan-6 FPGA处理器: OMAP-L138 FPGA 通过uPP.EMIFA.I ...

  3. DSP实现浮点数的乘除法 c语言,DSP中浮点转定点运算--定点数的加减乘除运算

    DSP中浮点转定点运算--定点数的加减乘除运算 3.定点数的加减乘除运算 简单的说,各种运算的原则就是先把待运算的数据放大一定的倍数,在运算的过程中使用的放大的数据,在最终需要输出结果的时候再调整回去 ...

  4. TI达芬奇系列TMS320DM8148浮点DSP C674x + ARM Cortex-A8高性能视频处理器;

    由广州创龙自主研发的SOM-TL8148是体积极小的TMS320DM8148浮点DSP+ARM双核核心板,86mm*60mm,性能强.成本低.性价比高.采用沉金无铅工艺的8层板设计,专业的PCB La ...

  5. TI达芬奇系列TMS320DM8168浮点DSP C674x + ARM Cortex-A8高性能视频处理器

    TL8168-EVM是一款广州创龙基于浮点DSP C674x + ARM Cortex-A8高性能视频处理器设计的DSP+ARM架构的开发平台,该平台主要用于评估处理器的多通道音视频采集.处理.编码压 ...

  6. TI达芬奇系列TMS320DM8168浮点DSP C674x + ARM Cortex-A8高性能视频处理器,用于视频基础设施

    由广州创龙自主研发的SOM-TL8168是体积极小的TMS320DM8168浮点DSP+ARM双核核心板,86mm*60mm,性能强.成本低.性价比高.采用沉金无铅工艺的10层板设计,专业的PCB L ...

  7. TI达芬奇系列TMS320DM8148浮点DSP C674x + ARM Cortex-A8高性能视频处理器开发板规格书

    TL8148-EasyEVM是一款广州创龙基于TI TMS320DM8148(浮点DSP C674x + ARM Cortex-A8)SOM-TL8148核心板设计的开发板,它为用户提供了SOM-TL ...

  8. 基于TI C55x架构的定点TMS320VC5509A音频专用DSP处理器开发板规格书

    TL5509-EVM是一款基于广州创龙TI C55x架构的定点TMS320VC5509A低功耗核心板SOM-TL5509设计的高端DSP开发板,底板采用沉金无铅工艺的2层板设计,它为用户提供了SOM- ...

  9. 创龙TI AM570x浮点DSP C66x + ARM Cortex-A15工业开发板规格书

    TL570x-EVM是一款由创龙基于SOM-TL570x核心板设计的开发板,它为用户提供了SOM-TL570x核心板的测试平台,用于快速评估SOM-TL570x核心板的整体性能. TL570x-EVM ...

最新文章

  1. 【命令】usemod 的用法
  2. mysql mtq_mysql基本操作 - osc_r3mtqivi的个人空间 - OSCHINA - 中文开源技术交流社区
  3. 天文学家搞医术,Science也挡不住
  4. 2019年Vue学习路线图
  5. 使用animate实现页面过度_很多人都在使用的开源CSS动画效果库——animate.css
  6. centos g++ 升级_今夏最潮装备来了!G-SHOCK推出seethru 冰韧系列
  7. 每天一道LeetCode-----删除链表倒数第n个节点
  8. Android框架式编程之MVP架构
  9. nls_lang.sh: 114: [[: not found
  10. python 通配符域名_LeetCode-python 44.通配符匹配
  11. 想在体制内吃得开,不要有这5种表现,不受领导待见,越混越糟糕
  12. 抖音小程序模板全行业整理合集,抖音小程序制作平台分享
  13. 100兆宽带下载速度为什么没有100兆/秒
  14. C语言实现物品竞拍管理系统
  15. androidstudio 引入百度或者高德地图 鉴权失败
  16. 从头到尾彻底理解傅里叶变换算法
  17. 基于python简易小说阅读器(一)
  18. 3词法分析 - 有穷自动机
  19. 堪比培训机构的MySQL系列博客
  20. 每日一threeJS(1)

热门文章

  1. python pytest测试框架(一)
  2. el-select支持远程搜索时是没有下拉箭头icon的
  3. Puppeteer之Pyppeteer-Pyppeteer基础用法入门(1)
  4. 年产2万吨山楂酒工厂的设计-陈酿工段及车间的设计(lunwen+任务书+cad图纸)
  5. 2022-2028年中国体外诊断行业市场发展现状及竞争格局预测报告
  6. MATLAB-一维插值运算
  7. nginx常见502错误提示原因和解决方法
  8. Spring事务开启方法 传播特性 隔离界别
  9. 天下手游服务器维护需要多久,《天下》手游维护更新公告(2017.01.19)
  10. SQL Server中的六种约束:主键约束,外键约束,唯一约束,非空约束,检查约束,默认约束