许多DSP芯片只支持整数运算,如果现在这些芯片上进行小数运算的话,定点小数运算应该是最佳选择了,此外即使芯片支持浮点数,定点小数运算也是最佳的速度选择。

在DSP世界中,由于DSP芯片的限制,经常使用定点小数运算。所谓定点小数,实际上就是用整数来进行小数运算。下面先介绍定点小数的一些理论知识,然后以C语言为例,介绍一下定点小数运算的方法。在TIC5000DSP系列中使用16比特为最小的储存单位,所以我们就用16比特的整数来进行定点小数运算。

先从整数开始,16比特的储存单位最多可以表示0x0000到0xffff,65536种状态,如果它表示C语言中的无符号整数的话,就是从0到65535。如果需要表示负数的话,那么最高位就是符号位,而剩下的15位可以表示32768种状态。这里可以看出,对于计算机或者DSP芯片来说,符号并没有什么特殊的储存方式,其实是和数字一起储存的。为了使得无论是无符号数还是符号数,都可以使用同样的加法减法规则,符号数中的负数用正数的补码表示。

我们都知道-1+1=0,而0x0001表示1,那么-1用什么来表示才能使得-1+1=0呢?答案很简单:0xffff。现在就可以打开Windows的计算器,用16进制计算一下0xffff+0x0001,结果是0x10000。那么0x10000和0x0000等价麽,我们刚才说过用16比特来表达整数,最高位的1是第17位,这一位是溢出位,在运算寄存器中没有储存这一位,所以结果是低16位,也就是0x0000。现在我们知道负数的表达方式了。举个例子:-100。首先我们需要知道100的16进制,用计算器转换一下,可以知道是0x0064,那么-100就是0x10000-0x0064,用计算器算一下得0xff9c。

还有一种简单的转换符号的方法,就是取反加一:把数x写成二进制格式,每位0变1,1变0,最后把结果加1就是-x了。

好,复习了整数的相关知识之后,我们进入定点小数运算环节。所谓定点小数,就是小数点的位置是固定的。我们是要用整数来表示定点小数,由于小数点的位置是固定的,所以就没有必要储存它(如果储存了小数点的位置,那就是浮点数了)。既然没有储存小数点的位置,那么计算机当然就不知道小数点的位置,所以这个小数点的位置是我们写程序的人自己需要牢记的。

先以10进制为例。如果我们能够计算12+34=46的话,当然也就能够计算1.2+3.4或者0.12+0.34了。所以定点小数的加减法和整数的相同,并且和小数点的位置无关。乘法就不同了。12*34=408,而1.2*3.4=4.08。这里1.2的小数点在第1位之前,而4.08的小数点在第2位之前,小数点发生了移动。所以在做乘法的时候,需要对小数点的位置进行调整?!可是既然我们是做定点小数运算,那就说小数点的位置不能动!!怎么解决这个矛盾呢,那就是舍弃最低位。也就说1.2*3.4=4.1,这样我们就得到正确的定点运算的结果了。所以在做定点小数运算的时候不仅需要牢记小数点的位置,还需要记住表达定点小数的有效位数。上面这个例子中,有效位数为2,小数点之后有一位。

现在进入二进制。我们的定点小数用16位二进制表达,最高位是符号位,那么有效位就是15位。小数点之后可以有0-15位。我们把小数点之后有n位叫做Qn,例如小数点之后有12位叫做Q12格式的定点小数,而Q0就是我们所说的整数。

Q12的正数的最大值是0111.111111111111,第一个0是符号位,后面的数都是1,那么这个数是十进制的多少呢,很好运算,就是0x7fff/2^12=7.999755859375。对于Qn格式的定点小数的表达的数值就它的整数值除以2^n。在计算机中还是以整数来运算,我们把它想象成实际所表达的值的时候,进行这个运算。

反过来把一个实际所要表达的值x转换Qn型的定点小数的时候,就是x*2^n了。例如0.2的Q12型定点小数为:0.2*2^12=819.2,由于这个数要用整数储存,所以是819即0x0333。因为舍弃了小数部分,所以0x0333不是精确的0.2,实际上它是819/2^12=0.199951171875。

我们用数学表达式做一下总结:

x表示实际的数(*一个浮点数),q表示它的Qn型定点小数(一个整数)。

q=(int)(x*2^n)

x=(float)q/2^n

由以上公式我们可以很快得出定点小数的+-*/算法:

假设q1,q2,q3表达的值分别为x1,x2,x3

q3=q1+q2若x3=x1+x2

q3=q1-q2若x3=x1-x2

q3=q1*q2/2^n若x3=x1*x2

q3=q1*2^n/q2若x3=x1/x2

我们看到加减法和一般的整数运算相同,而乘除法的时候,为了使得结果的小数点位不移动,对数值进行了移动。

用c语言来写定点小数的乘法就是:

shortq1,q2,q3;

....

q3=((longq1)*(longq2))>>n;

由于/2^n和*2^n可以简单的用移位来计算,所以定点小数的运算比浮点小数要快得多。下面我们用一个例子来验证一下上面的公式:

用Q12来计算2.1*2.2,先把2.12.2转换为Q12定点小数:

2.1*2^12=8601.6=8602

2.2*2^12=9011.2=9011

(8602*9011)>>12=18923

18923的实际值是18923/2^12=4.619873046875和实际的结果4.62相差0.000126953125,对于一般的计算已经足够精确了。

dsp处理浮点数_定点DSP如何做浮点运算相关推荐

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

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

  2. DSP应用学习:定点DSP的小数运算方法—Q格式

    一.定点DSP做小数运算思路梳理: 1.由于定点DSP适用于做整数的加减乘除运算,在做小数的加减乘除等运算时效率极低,因此在做含小数数据运算时需要将小数转换为Q格式的整数,从而将问题转变为整数的加减乘 ...

  3. 【DSP学习笔记】定点DSP小数乘加计算

    由于我装的版本是CCS5.5,此版本只支持C55系列的软件仿真而不支持C54系列的软件仿真,所以本次试验我采用TMS320C5510芯片进行,新建工程的过程这里不再赘述. 以下分别采用汇编语言和C语言 ...

  4. dsp处理浮点数_关于IQMATH和浮点数在DSP的深入理解

    使用了一段时间IQmath来处理浮点数,发现对其的理解还是不够,只是限于根据其resolution/precison来选取不同的IQ形式来处理浮点数.今天就遇到了一个比较棘手的问题,如果我想把一个整数 ...

  5. 浅论定点DSP与浮点DSP的区别

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

  6. Bmu计算机,高性能定点DSP位处理单元BMU的 - 处理器/DSP - 电子发烧友网

    1 功能概述 位处理单元(Bit ManipulaTION unit,BMU)主要由取指电路.移位数据处理电路.移位选择处理电路.桶形移位电路和输出电路等几部分组成.BMU的输入数据是36位的BMUi ...

  7. 语音识别及其定点DSP实现

    语音识别研究的根本目的是研究出一种具有听觉功能的机器,能直接接受人的口呼命令,理解人的意图并做出相应的反映.语音识别系统的研究涉及微机技术.人工智能.数字信号处理.模式识别.声学.语言学和认知科学等许 ...

  8. dsp处理浮点数_DSP中浮点数的表示方法

    DSP中浮点数的表示方法 tongxin | 2009-03-20 15:16:17    阅读:2484 发布文章 先介绍一下IEEE754中浮点数的定义(这里只介绍单精度浮点数): %A %A 单 ...

  9. dsp指令ixh_第一章 DSP入门教程(非常经典).pdf

    DSP 入门教程 1.TI DSP 的选型 主要考虑处理速度.功耗.程序存储器和数据存储器的容量.片内的资源,如定时器的数量. I/O 口数量.中断数量.DMA 通道数等.DSP 的主要供应商有 TI ...

最新文章

  1. 20211108 微分跟踪器
  2. HTTPS证书的申请过程
  3. SQL中的CASE使用方法
  4. Linux内核安装-5.9.1为例
  5. 原码、反码、补码、移码的换算关系
  6. 在Android中使用自带API操作Json
  7. 软件测试项目案例.pdf,最经典软件测试案例.pdf
  8. http服务器 显示中文乱码,Tomcat Http请求中文乱码
  9. vue echarts 柱状图
  10. 如何打开RAR文件?
  11. 源码看JAVA【十】Short
  12. MQTT客户端软件(MQTT.fx)的使用详解
  13. 01-java设计模式知识点-上篇
  14. 狂野飙车4java的音乐_狂野飙车8音乐名字大全 所有音乐目录敬请下载
  15. windows系统可以用android,如何在电脑上使用Android系统?
  16. Pseudo-3D Residual Networks算法的pytorch代码
  17. 《机器学习实战》支持向量机(手稿+代码)
  18. 【Google Earth Engine 】 本地安装教程
  19. excel排名技巧:万能透视表加筛选找出销售冠军
  20. 大学排行榜 : qs全球中国区大学排行榜

热门文章

  1. 沪江前端由H5页面引起的一场前端数据结构讨论 1
  2. iWO(联通3G详单及套餐使用情况查询工具)更新至v0.8
  3. EmailEditView的实现(仿知乎邮箱登录效果)
  4. 团购网站的销售额是怎么来的?
  5. 即将上市的三星Note8竟然拥有一般手机没有的这几个功能,你知道吗?
  6. 苹果系统虚拟机无usb服务器,苹果电脑Mac系统中VMware虚拟机无法识别USB Key如何解决...
  7. 扔鸡蛋问题 动态规划大法
  8. 面试官都爱问的java模式之装饰模式!!!
  9. kafka线上环境搭建对软硬件要求
  10. table中td文字超出长度用省略号隐藏超出内容,鼠标点击内容全部显示