定点运算及浮点运算_第1页
定点运算及浮点运算_第2页
定点运算及浮点运算_第3页
定点运算及浮点运算_第4页
定点运算及浮点运算_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

定点运算及浮点运算第一页,共五十五页,2022年,8月28日一、定点运算及定点DSP1、数据格式2、运算方法3、定点DSP芯片第二页,共五十五页,2022年,8月28日1、数据格式

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

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

数的定标:“小数点”的位置

Q表示法和S表示法对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价。第三页,共五十五页,2022年,8月28日0000000000000100Q0表示为8192Q15表示为0.25Q表示法16进制数2000H小数点的位置0000000000000100小数点的位置符号位第四页,共五十五页,2022年,8月28日浮点数与定点数的转换关系浮点数转换为定点数定点数转换为浮点数浮点数x=0.5,定标Q=15,则定点数=0.5*32768=16384第五页,共五十五页,2022年,8月28日Q表示S表示十进制数表示范围Q15S0.15-1≤X≤0.9999695Q14S1.14-2≤X≤1.9999390..................Q1S14.1-16384≤X≤16383.5Q0S15.0-32768≤X≤32767第六页,共五十五页,2022年,8月28日加法/减法运算的C语言定点模拟floatx,y,z;z=x+y;两个操作数的定标值一样如果加法/减法的结果超出16位的表示范围,则必须保留32位结果,以保证运算的精度z=x+y==第七页,共五十五页,2022年,8月28日定点加法描述:

intx,y,z;longtemp; /*临时变量*/temp=y<<(Qx-Qy);temp=x+temp;z=(int)(temp>>(Qx-Qz)),若Qx≥Qzz=(int)(temp<<(Qz-Qx)),若Qx≤Qz第八页,共五十五页,2022年,8月28日例子:设x=0.5,y=3.1,则浮点运算结果为z=x+y=0.5+3.1=3.6;Qx=15,Qy=13,Qz=13,则定点加法为:

x=16384;y=25395;temp=25395<<2=101580;temp=x+temp=16384+101580=117964;z=(int)(117964L>>2)=29491;验算:z=29491/8192=3.6定点加法第九页,共五十五页,2022年,8月28日定点减法设x=3.0,y=3.1,则浮点运算结果为z=x-y==-0.1;Qx=13,Qy=13,Qz=15,则定点减法为:

x=24576;y=25395;

temp=25395;temp=x-temp=24576-25395=-819;因为Qx<Qz,故z=(int)(-819<<2)=-3276。验算:由于z的Q值为15,所以定点值z=-3276即为浮点值z=-3276/32768-0.1第十页,共五十五页,2022年,8月28日结果超过16位表示范围设x的Q值为Qx,y的Q值为Qy,且Qx>Qy,加法结果z的定标值为Qz,则定点加法为:intx,y;

longtemp,z;

temp=y<<(Qx-Qy);

temp=x+temp;z=temp>>(Qx-Qz),若Qx≥Qzz=temp<<(Qz-Qx),若Qx≤Qz第十一页,共五十五页,2022年,8月28日例子:设x=15000,y=20000,则浮点运算结果为z=x+y=15000+20000=35000,显然z>32767;Qx=1,Qy=0,Qz=0,则定点加法为:

x=30000;y=20000;temp=20000<<1=40000;temp=temp+x=40000+30000=70000;z=70000L>>1=35000;结果超过16位的定点加法第十二页,共五十五页,2022年,8月28日乘法运算的C语言定点模拟floatx,y,z;z=xy;intx,y,z;longtemp;temp=(long)x;z=(temp×y)>>(Qx+Qy-Qz);z=xy=

=第十三页,共五十五页,2022年,8月28日定点乘法设x=18.4,y=36.8,则浮点运算值为z=18.4×36.8=677.12;Qx=10,Qy=9,Qz=5,所以x=18841;y=18841;

temp=18841L;z=(18841L*18841)>>(10+9-5)=354983281L>>14=21666;因为z的定标值为5,故定点z=21666即为浮点的z=21666/32=677.08第十四页,共五十五页,2022年,8月28日除法运算的C语言定点模拟floatx,y,z;z=x/y;intx,y,z;longtemp;temp=(long)x;z=(temp<<(Qz-Qx+Qy))/y;z=x/y=

第十五页,共五十五页,2022年,8月28日定点除法设x=18.4,y=36.8,浮点运算值为z=x/y=18.4/36.8=0.5;Qx=10,Qy=9,Qz=15;所以有x=18841,y=18841;temp=(long)18841;z=(18841L<<(15-10+9))/18841=308690944L/18841=16384;因为商z的定标值为15,所以定点z=16384即为浮点z=16384/32768=0.5第十六页,共五十五页,2022年,8月28日程序变量的Q值确定

确定变量的Q值实际上就是确定变量的动态范围。设变量的绝对值的最大值为|max|,取整数n,使其满足

如果某变量的值在-1至+1之间,即<1,因此n=0,Q=15-n=15

确定变量的绝对值的最大值理论分析法(三角函数、汉明窗、FIR卷积、自相关线性预测编码等)统计分析法(依据足够多的采样值)第十七页,共五十五页,2022年,8月28日2、运算方法通常的是全部以Q15格式表示的小数或以Q0格式表示的整数来工作定点乘法定点加法定点除法第十八页,共五十五页,2022年,8月28日定点乘法小数乘小数Q15×Q15=Q300.5*0.5=0.25;Q15;Q15 ;Q30LT OP1 ;OP1=4000H(0.5/Q15)MPY OP2 ;OP2=4000H(0.5/Q15)PACSACH ANS,1 ;(ANS)=2000H(0.25/Q15)

第十九页,共五十五页,2022年,8月28日定点乘法(续)整数乘整数Q0×Q0=Q017×(-5)=-850000000000010001=17第二十页,共五十五页,2022年,8月28日定点乘法(续)混合表示法1.5×0.75=1.125;Q14;Q14 =1.125;Q28第二十一页,共五十五页,2022年,8月28日定点加法保留32位结果——双字调整小数点保留16位结果加法运算必须用相同的Q点表示通过移位操作解决溢出问题溢出检测溢出保护完全避免第二十二页,共五十五页,2022年,8月28日XXXXXXXXXXXXXX00XXXXXXXXXXXXXX00XXXXXXXXXXXXXX10XXXXXXXXXXXXXX10定点加法无溢出有溢出被加数加数被加数加数第二十三页,共五十五页,2022年,8月28日定点加法XXXXXXXXXXXXXX10XXXXXXXXXXXXXX00XXXXXXXXXXXXXX00XXXXXXXXXXXXXX10可能溢出可能溢出被加数加数被加数加数第二十四页,共五十五页,2022年,8月28日定点除法在通用DSP芯片中,一般不提供单周期的除法指令,为此必须采用除法子程序来实现二进制除法是乘法的逆运算。乘法包括一系列的移位和加法,而除法可分解为一系列的减法和移位。第二十五页,共五十五页,2022年,8月28日定点除法00001010-00011000

11110010例如:10÷3=3余1000010100000001100001010+11101000

11110010得数为负,舍去第一次运算除数的最低有效位对齐被除数的最高有效位第二十六页,共五十五页,2022年,8月28日定点除法00010100-00011000

1111110000010100+11101000

11111100被除数左移一次得数为负,舍去第二次运算第二十七页,共五十五页,2022年,8月28日定点除法00101000+11101000

00010000被除数左移一次得数为正,左移加一00101000-00011000

0001000000100001第三次运算第二十八页,共五十五页,2022年,8月28日定点除法00100001-00011000

00001001余数商00100001+11101000

00001001

00010011得数为正左移加一第四次运算第二十九页,共五十五页,2022年,8月28日定点除法00001010-00011000

1111001000010100-00011000

1111110000101000-00011000

0001000000100001-00011000

00001001舍去舍去左移加一左移加一00010011余数商第三十页,共五十五页,2022年,8月28日非线性运算的定点快速实现调用DSP编译系统的库函数查表法

在实时DSP应用中实现非线性运算,一般都采取适当降低运算精度来提高程序的运算速度。查表法是快速实现非线性运算最常用的方法。混合法提高查表法的精度扩大自变量范围

第三十一页,共五十五页,2022年,8月28日提高查表法的精度第三十二页,共五十五页,2022年,8月28日扩大查表法的范围第三十三页,共五十五页,2022年,8月28日3、定点DSP芯片TMS320C54x为实现低功耗、高性能而专门设计的定点DSP芯片为无线通讯用的高性能价格比的芯片。运算速度快,指令周期为10ns优化的CPU结构。1个40位的算术逻辑单元、2个40位的累加器、2个40位的加法器、1个17×17乘法器和40位的桶型移位器,有4条内部总线和2个地址产生器低功耗,可在3.3V或2.7V电压下工作,三个低功耗方式智能外设,除标准的串行口和时分复用串行口外,还含有自动缓存串行口(2kbuffer)和外部处理器并行口HPI从TMS32010、经历了TMS320C1X、C2X、C5X、C54X、C62X等几代产品第三十四页,共五十五页,2022年,8月28日定点DSP芯片TMS320C62xTI公司1997年开发的新型定点DSP芯片,用于无线基站,无线PDA,Modem,GPS等。速度快,指令周期为3.3ns,运算能力为2400MIPS内部结构不同,同时集成有2个16bit乘法器和6个算术运算单元,一个周期内可执行8条32bit指令使用超长指令集,在一个周期内可并行执行几个指令大容量片内存储器(片内有96K程序和512K数据存储器)和52MB寻址空间多种外设,4个DMA,3个多通道缓存串口,2个计时器

第三十五页,共五十五页,2022年,8月28日高级语言:从浮点到定点为了DSP程序调试的方便及模拟定点DSP实现时的算法性能,在编写DSP汇编程序之前一般需将高级语言浮点算法改写为高级语言定点算法取整操作:i=int(f1);i=int(f1+0.5);先放后缩:f1=(y1+y2)*x;f1=f1/x;第三十六页,共五十五页,2022年,8月28日二、浮点运算及浮点DSP芯片1、数据格式2、运算方法3、浮点DSP芯片第三十七页,共五十五页,2022年,8月28日1、数据格式指数和尾数的形式x=m×2eIEEE单精度浮点数格式fes30-2322-031符号位阶码尾数第三十八页,共五十五页,2022年,8月28日IEEE单精度浮点数格式第三十九页,共五十五页,2022年,8月28日TMS320浮点数格式fse符号位阶码尾数或:第四十页,共五十五页,2022年,8月28日TMS320浮点数格式短浮点格式:4位指数,1位符号,11位分数(16位)单精度浮点格式:8位指数,1位符号,23位分数(32位)扩展精度格式:8位指数,1位符号,31位分数(40位)第四十一页,共五十五页,2022年,8月28日TMS320浮点数格式短浮点格式:4位指数,1位符号,11位分数(16位)fse010111215第四十二页,共五十五页,2022年,8月28日TMS320浮点数格式短浮点格式:4位指数,1位符号,11位分数(16位)fse0101112151001000000000000第四十三页,共五十五页,2022年,8月28日TMS320浮点数格式短浮点格式:4位指数,1位符号,11位分数(16位)fse010111215第四十四页,共五十五页,2022年,8月28日TMS320浮点数格式短浮点格式:4位指数,1位符号,11位分数(16位)fse0101112150111100000000000第四十五页,共五十五页,2022年,8月28日TMS320浮点数格式短浮点格式:4位指数,1位符号,11位分数(16位)fse0101112151000000000000000第四十六页,共五十五页,2022年,8月28日TMS320浮点数格式单精度浮点格式:8位指数,1位符号,23位分数(32位)fse022

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论