002 定点计算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ቤተ መጻሕፍቲ ባይዱ
确定变量的Q值实际上就是确定变量的动态范围 设变量的绝对值的最大值为|max|,注意|max|必须小于 或等于32767。取一个整数n,使它满足2n-1 <|max|<2n,则 有2-Q=2-15× 2n =2-(15-n),Q = 15-n。 确定变量的|max|有两种方法:一种是理论分析法,另 一种是统计分析法。
z = (temp*y) >> (Qx+Qy-Qz); z = (temp*y) << (Qz-Qx+Qy);

练习题
将下列数据表示为Q1~Q15的定点数 2.35647 15.3633 0.02698 4.39865 72.965912 0.29516 0.00395
例1:浮点加法,z=x+y,x,y,z为浮点数 先由x,y,z的数据范围算出其Q值,Qx,Qy,Qz zq*2-Qz=xq*2-Qx+yq*2-Qy=[xq+yq*2(Qx-Qy) ]*2-Qx zq=[xq+yq*2(Qx-Qy) ]*2Qz-Qx
int xq,yq,zq; long temp; /*临时变量*/ if(Qx≥Qy) temp=y<<(Qx-Qy); if(Qx<Qy) temp=y>>(Qy-Qx); zq=(xq << (Qz-Qx)) +(temp << (Qz-Qx));
例1:x=0.5,16bit定点化,取Q15, xq=0.5*215=16384 例2:x=4,16bit定点化,取Q12, xq=4*212=16384
特别地,整数可看作为Q0的小数。
浮点运算的定点化
对浮点运算进行定点化的方法是根据算法原理分析运 算公式左右两侧每一个数据的取值范围,为每一个数据确定 相应的Q值,再进行运算,运算规则为: 1. 定点加减法,需转换成相同的Q值才能加减 2. 定点乘法,不同Q值的数据相乘,相当于Q值相加,即 Q15数据乘以Q10数据结果为Q25数据 3. 定点除法,不同Q值数据相除,相当于Q值相减 4. 定点左移,相当于Q值增大 5. 定点右移,相当于Q值减小
DSP实践课件
定点计算部分

目录
定点化意义 程序变量的Q值确定
浮点数的定点化
浮点运算的定点化
定点化意义
在定点DSP芯片中,采用整形数进行数值运算。所以就 需定点化将浮点数转化为整形数。
程序变量的Q值确定
一个整型数的最大表示范围取决于DSP芯片所给定的 单位存储单元的大小,一般为16-bit、24-bit或32-bit 。例 如,存储单元为16bit时,可以表示[-215,215-1)这个范围内 的数。显然,字长越长,所能表示的数的范围越大,精度 也越高。如无特别说明,本节均以16位字长为例。 Q格式是浮点数据向定点数据转化常用的表示方法, 即一个基本单元表示浮点数时,除去符号位,用m位表示 整数部分,n位表示小数部分,则有Q格式为Qn。浮点算 法定点化的主要任务是根浮点据数据范围确定合适的Q值, 即n的数值。
例2 浮点乘法, z=x*y,x,y,z为浮点数 先根据x,y,z的数值范围计算出其Q值 zq*2-Qz=(xq*2-Qx)*(yq*2-Qy)= xq*yq*2-(Qx+Qy) zq= xq*yq*2Qz-(Qx+Qy)
int x,y,z; long temp; temp = (long)x; if(Qx+Qy ≥Qz) if(Qx+Qy < Qz)
浮点数的定点化
对于一个浮点数据,浮点数和定点数的转换公式为:
浮点数(x)转换为定点数(xq):xq=(int)(x * 2Q) 定点数( xq)转换为浮点数(x):x=(float) (xq * 2-Q)
不同的Q格式所表示的数的范围不同,精度也不同。Q 越大,数值范围越小,但精度越高;Q越小,数值范围越 大,但精度降低。在浮点数据固定的情况下,求出的Q需 保证xq尽可能地接近基本单元所能表示数据的最大(最小) 值。
相关文档
最新文档