定点DSP中高精度除法的实现方法

合集下载

第三章 DSP定点运算

第三章 DSP定点运算
第三章 DSP定点运算
数的定标 高级语言 DSP定点算术运算 非线性运算的定点快速实现 小 结
3.1.1 数的定标
在定点DSP芯片中,采用定点数进行数 值运算,其操作数一般采用整型数来表 示。 一个整型数的最大表示范围取决于DSP 芯片所给定的字长,一般为16位或24位。 显然,字长越长,所能表示的数的范围 越大,精度也越高。
虽然有时需要使用混合表示法,但是,更通常 的是全部以Q15格式表示的小数或以Q0格式表 示的整数来工作。 这一点对于主要是乘法和累加的信号处理算法 特别现实,小数乘以小数得小数,整数乘以整 数得整数。 乘积累加时可能会出现溢出现象,在这种情况 下,程序员应当了解数学里面的物理过程以注 意可能的溢出情况。 返回
3.4.2 查表法
在实时DSP应用中实现非线性运算,一般都采取适当 降低运算精度来提高程序的运算速度。查表法是快速 实现非线性运算最常用的方法。 查表法:根据自变量的范围和精度要求事先制作一张 表格,根据输入值确定表的地址,根据地址就可得到 相应的值。 显然输入的范围越大,精度要求越高,则所需的表格 就越大,即存储量也越大。 查表法求值所需的计算就是根据输入值确定表的地址, 因而运算量较小。 查表法比较适合于非线性函数是周期函数或已知非线 性函数输入值范围这两种情况 。
3.3 DSP定点算术运算
定点DSP芯片的数值表示是基于2的补码表示形 式。 每个16位数用1个符号位、i个整数位和15-i个小 数位来表示。 例如数00000010.10100000表示的值为 21 + 2 −1 + 2 −3 =2.625, 这个数可用Q8格式(8个小数位)来表示,它表 示的数值范围为-128~+127.996,一个Q8定点 数的小数精度为1/256=0.004。

DSP基本算数运算

DSP基本算数运算

基本算术运算一﹑实验目的加、减、乘、除是数字信号处理中最基本的算术运算。

DSP 中提供了大量的指令来实现这些功能。

本实验学习使用定点DSP 实现16位定点加、减、乘、除运算的基本方法和编程技巧。

二﹑实验原理1﹑定点DSP 中数据表示方法C54X 是16位的定点DSP 。

一个16位的二进制数既可以表示一个整数,也可以表示一个小数。

当它表示一个整数时,其最低位(D0)表示02,D1位表示12,次高位(D14)表示142。

如果表示一个有符号数时,最高位(D15)为符号位,0表示正数,1表示负数。

例如,07FFFH 表示最大的正数32767(十进制),而0FFFFH 表示最大的负数-1(负数用2的补码方式显示)。

当需要表示小数时,小数点的位置始终在最高位后,而最高位(D15)表示符号位。

这样次高位(D14)表示12-,然后是22-,最低位(D0)表示152-。

所以04000H 表示小数0.5,01000H 表示小数125.023=-,而0001H 表示16位定点DSP 能表示的最小的小数(有符号)152-=0.000030517578125。

在后面的实验中,除非有特别说明,我们指的都是有符号数。

在C54X 中,将一个小数用16位定点格式来表示的方法是用152乘以该小数,然后取整。

从上面的分析可以看出,在DSP 中一个16进制的数可以表示不同的十进制数,或者是整数,或者是小数(如果表示小数,必定小于1),但仅仅是在做整数乘除或小数乘除时,系统对它们的处理才是有所区别的,而在加减运算时,系统都当成整数来处理。

2﹑实现16定点加法C54X 中提供了多条用于加法的指令,如ADD ,ADDC ,ADDM 和ADDS 。

其中ADDS 用于无符号数的加法运算,ADDC 用于带进位的加法运算(如32位扩展精度加法),而ADDM 专用于立即数的加法。

ADD 指令的寻址方式很多,其详细使用说明请参考《TMS320C54X 实用教程》。

DSP芯片的定点运算

DSP芯片的定点运算

第3章DSP芯片的定点运算3.1 数的定标在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。

一个整型数的最大表示范围取决于DSP芯片所给定的字长,一般为16位或24位。

显然,字长越长,所能表示的数的范围越大,精度也越高。

如无特别说明,本书均以16位字长为例。

DSP芯片的数以2的补码形式表示。

每个16位数用一个符号位来表示数的正负,0表示数值为正,1则表示数值为负。

其余15位表示数值的大小。

因此二进制数0010000000000011b=8195二进制数1111111111111100b=-4对DSP芯片而言,参与数值运算的数就是16位的整型数。

但在许多情况下,数学运算过程中的数不一定都是整数。

那么,DSP芯片是如何处理小数的呢?应该说,DSP芯片本身无能为力。

那么是不是说DSP芯片就不能处理各种小数呢?当然不是。

这其中的关键就是由程序员来确定一个数的小数点处于16位中的哪一位。

这就是数的定标。

通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数了。

数的定标有Q表示法和S表示法两种。

表3.1列出了一个16位数的16种Q表示、S表示及它们所能表示的十进制数值范围。

从表3.1可以看出,同样一个16位数,若小数点设定的位置不同,它所表示的数也就不同。

例如:16进制数2000H=8192,用Q0表示16进制数2000H=0.25,用Q15表示但对于DSP芯片来说,处理方法是完全相同的。

从表3.1还可以看出,不同的Q所表示的数不仅范围不同,而且精度也不相同。

Q越大,数值范围越小,但精度越高;相反,Q越小,数值范围越大,但精度就越低。

例如,Q0的数值范围是-32768到+32767,其精度为1,而Q15的数值范围为-1到0.9999695,精度为1/32768 =0.00003051。

因此,对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;而想提高精度,则数的表示范围就相应地减小。

DSP的定点运算

DSP的定点运算

DSP的定点运算DSP的定点运算技术2007-06-29 09:45:14阅读82评论0字号:大中小许DSP芯片只支持整数运算,如果现在这些芯片上进行小数运算的话,定点小数运算应该是最佳选择了,此外即使芯片支持浮点数,定点小数运算也是最佳的速度选择。

在DSP世界中,由于DSP芯片的限制,经常使用定点小数运算。

所谓定点小数,实际上就是用整数来进行小数运算。

下面先介绍定点小数的一些理论知识,然后以C语言为例,介绍一下定点小数运算的方法。

在TI C5000 DSP系列中使用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了。

DSP定点运算

DSP定点运算

一DSP定点算数运算1 数的定标在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。

一个整型数的最大表示范围取决于DSP芯片所给定的字长,一般为16位或24位。

显然,字长越长,所能表示的数的范围越大,精度也越高。

如无特别说明,本书均以16位字长为例。

DSP芯片的数以2的补码形式表示。

每个16位数用一个符号位来表示数的正负,0表示数值为正,l则表示数值为负。

其余15位表示数值的大小。

因此,二进制数0010000000000011b=8195二进制数1111111111111100b= -4对DSP芯片而言,参与数值运算的数就是16位的整型数。

但在许多情况下,数学运算过程中的数不一定都是整数。

那么,DSP芯片是如何处理小数的呢?应该说,DSP芯片本身无能为力。

那么是不是说DSP芯片就不能处理各种小数呢?当然不是。

这其中的关键就是由程序员来确定一个数的小数点处于16位中的哪一位。

这就是数的定标。

通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数了。

数的定标有Q表示法和S表示法两种。

表1.1列出了一个16位数的16种Q表示、S表示及它们所能表示的十进制数值范围。

从表1.1可以看出,同样一个16位数,若小数点设定的位置不同,它所表示的数也就不同。

例如,16进制数2000H=8192,用Q0表示16进制数2000H=0.25,用Q15表示但对于DSP芯片来说,处理方法是完全相同的。

从表1.1还可以看出,不同的Q所表示的数不仅范围不同,而且精度也不相同。

Q越大,数值范围越小,但精度越高;相反,Q越小,数值范围越大,但精度就越低。

例如,Q0 的数值范围是一32768到+32767,其精度为1,而Q15的数值范围为-1到0.9999695,精度为1/32768=0.00003051。

因此,对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;而想精度提高,则数的表示范围就相应地减小。

DSP实验报告五:汇编语言程序设计(1)——定点数除法实验

DSP实验报告五:汇编语言程序设计(1)——定点数除法实验

实验五:汇编语言程序设计(1)——定点数除法实验一、实验目的:1.熟悉 C54x 指令系统,掌握常用汇编指令,学习设计程序和算法的技巧。

2.学习用减法和移位指令实现除法运算。

二、实验仪器:安装 CCS3.1(CodeComposerStudioV3.1)的 PC 机。

三、实验内容:编写一个 16 位的定点除法子程序。

四、实验步骤:1.以Simulator的方式启动CCSv3.1。

2.在D:\Lab05_Divisio建立工程,工程名为“div”。

3.新建div.asm,编辑内容如下:4.新建div.cmd,编辑内容如下:5.汇编/编译与连接执行Project→Rebuild All 编译链接.如果未对汇编语言修改编译连接环境(参见实验 2),编译时将出现如下错误:warning:entry point symbol _c_int0 undefined出错原因:缺省时CCS设置项目程序为 C 语言编译,因此当我们编译汇编程序时,要对项目作适当配置。

发现错误要及时修改,修改方法与实验 2 相似:执行Project→Build Options…打开编译选项;在linker 属性页上单击,把Autoinit Model栏选择为 No Autoinitialization;按“确定”保存对配置的修改。

6. 装载程序准备运行调试(1)执行 File→Load Program 装载程序,装载完程序后,CCS把指针指向程序区 0000 处。

为了执行我们的程序代码,需要修改 DSP 的 PC 值;执行ViewÆCPU RegistersÆCPU Registers 打开寄存器窗口;双击窗口中的 PC 标号,CC 弹出修改对话框供修改寄存器;在对话框中输入”start“,程序将处于我们的程序入口点上。

(2)在div.asm窗口中NUMERA变量名上双击鼠标左键,再单击鼠标右键,选择“Add to Watch Window”,在观察窗口中出现 NUMERA 变量,请将窗口中变量名(Name)由“NUMERA”改成“(int*)NUMERA”;“Radix”由“hex”改成“dec”,结果如下:(3)重复(1)的操作,加入 DENOM、QUOT 和 ARIT 四个变量。

(4) 高精度除法思路及实现

(4) 高精度除法思路及实现

(4) 高精度除法思路及实现高精度除法是指当除数和被除数超出普通变量所能表示的范围时,使用大数运算方法进行除法运算。

其实现方法相对于加减乘法而言更为复杂。

本文将介绍高精度除法的思路和实现方法。

一、高精度除法思路高精度除法的实现思路主要包括以下几个步骤:1. 判断除数是否为0,若为0则直接返回错误信息。

2. 判断被除数和除数的符号,若两者符号相同,则结果为正,否则为负。

3. 将被除数和除数都转换为整数,并将它们的符号记录下来。

4. 对被除数和除数进行比较,若除数大于被除数,则直接返回0作为结果。

5. 从被除数的最高位开始,依次进行以下操作:(1) 将被除数的当前位与除数进行比较,若被除数小于除数,则将被除数向后一位,并将结果中的当前位设为0;(2) 若被除数大于除数,则将被除数减去除数,同时将结果中的当前位设为当前商的值;(3) 若被除数等于除数,则直接将结果中的当前位设为1,并返回结果。

6. 若被除数的所有位数都被处理完毕,则返回结果。

二、高精度除法实现高精度除法的实现可以使用字符串来存储被除数、除数和结果。

具体实现步骤如下:1. 首先定义两个字符串来存储被除数和除数,并读入它们的值。

2. 判断除数是否为0,若为0则直接返回错误信息。

3. 判断被除数和除数的符号,并将它们的符号记录下来。

4. 去除被除数和除数的符号,并将它们转换为整数。

这里可以使用字符串转数字的方法来实现。

5. 对被除数和除数进行比较,若除数大于被除数,则直接返回0作为结果。

6. 定义一个字符串来存储结果,并初始化为0。

7. 从被除数的最高位开始,依次进行以下操作:(1) 将被除数的当前位与除数进行比较,若被除数小于除数,则将被除数向后一位,并将结果中的当前位设为0;(2) 若被除数大于除数,则将被除数减去除数,同时将结果中的当前位设为当前商的值;(3) 若被除数等于除数,则直接将结果中的当前位设为1,并返回结果。

8. 若被除数的所有位数都被处理完毕,则返回结果。

DSP芯片的定点运算之四非线性运算的定点快速实现

DSP芯片的定点运算之四非线性运算的定点快速实现

DSP芯片的定点运算之四非线性运算的定点快速实现在数值运算中,除基本的加减乘除运算外,还有其他许多非线性运算,如对数运算、开方运算、指数运算、三角函数运算等,实现这些非线性运算的方法一般有:(1)调用DSP编译系统的库函数;(2)查表法;(3)混合法。

下面分别介绍这三种方法。

1.调用DSP编译系统的库函数TMS320C2X/C5X的C编译器提供了比较丰富的运行支持库函数。

在这些库函数中,包含了诸如对数、开方、三角函数、指数等常用的非线性函数。

在C 程序中(也可在汇编程序中)只要采用与库函数相同的变量定义,就可以直接调用。

例如,在库函数中,定义了以10为底的常用对数log10():#include math.h double log10(double x);在C程序中按如下方式调用:float x,y;x=10.0;y=log10(x);从上例可以看出,库函数中的常用对数log10()要求的输入值为浮点数,返回值也为浮点数,运算的精度完全可以保证。

直接调用库函数非常方便,但由于运算量大,很难在实时DSP中得到应用。

2.查表法在实时DSP应用中实现非线性运算,一般都采取适当降低运算精度来提高程序的运算速度。

查表法是快速实现非线性运算最常用的方法。

采用这种方法必须根据自变量的范围和精度要求制作一张表格。

显然输入的范围越大,精度要求越高,则所需的表格就越大,即存储量也越大。

查表法求值所需的计算就是根据输入值确定表的地址,根据地址就可得到相应的值,因而运算量较小。

查表法比较适合于非线性函数是周期函数或已知非线性函数输入值范围这两种情况,例3.12和例3.13分别说明这两种情况。

例3.12已知正弦函数y=cos(x),制作一个512点表格,并说明查表方法。

由于正弦函数是周期函数,函数值在-1至+1之间,用查表法比较合适。

由于Q15的表示范围为-1至32767/32768之间,原则上讲-1至+1的范围必须用Q14表示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

万方数据
 万方数据
 万方数据
定点DSP中高精度除法的实现方法
作者:刘洪鸣, 邱建辉, 邱奕文, Liu Hongming, Qui Jianhui, Qiu Yiwen
作者单位:刘洪鸣,Liu Hongming(武警杭州指挥学院), 邱建辉,Qui Jianhui(杭州电子科技大学),邱奕文,Qiu Yiwen(杭州萧山国际机场)
刊名:
单片机与嵌入式系统应用
英文刊名:MICROCONTROLLERS & EMBEDDED SYSTEMS
年,卷(期):2009(1)
被引用次数:2次
1.戴明桢;周建江TMS320C54X DSP结构、原理及应用 2001
2.石元君定点DSP除法原理及其TMS320C6000实现[期刊论文]-单片机与嵌入式系统应用 2002(10)
3.Texas Instruments TMS320C54x DSP Reference Set Volume 2:Mnemonic Instruction Set (SPRU172B)
4.张雄伟DSP芯片的原理与开发应用 2003
5.酆勇;李阳;李方伟基于DSP的视频编码的优化和实现[期刊论文]-电子工程师 2002(10)
1.丁电宽.万毅.DING Dian-kuan.WAN Yi除法运算在定点DSP中的实现[期刊论文]-安阳师范学院学报2006(2)
2.王华.汶德胜.Wang,Hua.Wen,Desheng浮点除法运算在TMS320C3X DSP中的实现[期刊论文]-微计算机信息2005,21(23)
3.田华快速浮点除法运算及其在单片机上的实现[期刊论文]-陕西师范大学学报(自然科学版)2004,32(2)
1.黄李国基于TMS320LF2407A的32位除法算法研究[期刊论文]-科技信息 2010(15)
2.陈晟.杨津骁.张洪华基于DSP的水下目标模拟器[期刊论文]-舰船科学技术 2011(11)
引用本文格式:刘洪鸣.邱建辉.邱奕文.Liu Hongming.Qui Jianhui.Qiu Yiwen定点DSP中高精度除法的实现方法[期刊论文]-单片机与嵌入式系统应用 2009(1)。

相关文档
最新文档