5 c54x定点运算Q格式.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DSP 芯片的定点数的表示及运算 不会运用Q格式的DSP程序员不是优秀的程序员! 定点处理器不能直接处理小数 举例: 表达精度为0.01Hz的频率变量f,处理小数的方法有三种: 1)定义为float型。C语言的‘抹平’作用,编程工作量小,编译后的代码长,运算速度慢,但精度高 。 2)仍定义为整型(int或long),采用放大若干倍数来表示小数。比如100倍,若改为0.001Hz呢? 3)仍定义为整型(int或long),采用定标法来确定小数。 1、 数的定标 由程序员来确定一个数的小数点处于16位或32位中的哪一位。 常用Q格式来表示数的定标。 浮点数和定点数之间的转换公式: 浮点数转换为定点数: xq=(int)(xf*2Q) 定点数转换为浮点数: xf=(float)(xq *2-Q) 浮点数1.1转换成16位定点数Q13格式 xq=(int)(1.1*213) =(int)9011.2=9011=2333h 2、16位数的定标 1)16位有符号数的定标 计算机采用2的补码存储有符号数。每个16位数用一个符号位表示数的正负,其余15位表示数值的大小。最高位是符号位,Q0-Q15 2)16位无符号数的定标 没有符号位,都是正数,Q0-Q16,理论上可以用Q16表示精度更高的小数,但常用Q15,原因: 简化,既可表示有符号又可表示无符号,Q15精度已足够; 防止变量以后变为有符号,留有余地。 从上表可以得知: 1)Q值越大,数值范围越小,但精度越高,范围与精度是一对矛盾; 2)同样一个16位数,若小数点设定的位置不同,它所表示的数也不同。 2000H = 8192; Q0 而 2000H = 0.25 ; Q15 以上是对16位来讲的,对于32位,定标表示的小数精度是一样的,但其整数范围不一样。 有符号 32位的Q15格式表示的范围为 -65536≤X ≤65535.9999695 3、Q15格式 程序中最常用的是Q0和Q15格式,小数之间相互做乘 法仍是小数,永远不会溢出。 int a,b; //Q15 int c; //Q15 c=((long)a*b)15; //一定要有“(long)” TI公司的例程中的变量都使用了Q格式,甚至还给出了 一个Q 格式数据库qmath.lib,包含倒数,正弦运算, 可以免费下载。 Q15定点小数乘法运算 两个16位整数相乘,乘积总是“向左增长”,这就意味着多次相乘后乘积将会很快超出定点器件的数据范围。而且要将32位乘积保存到数据存储器,就要耗费两个机器周期以及两个字的程序和RAM单元。然而,两个Q15的小数相乘,乘积总是“向右增长”,这就意味着超出定点器件数据范围的将是不太感兴趣的部分。 小数乘法与冗余符号位 2 基于C语言的定点运算的基本原理 2.1加法/减法运算 必须保证两个操作数的定标值一样; 小数点的调整,Q 值小的调整; 1.结果不超过16位表示范围 设x的Q值为Qx,y的Q值为Qy,且QxQy,加法/减法结果z的定标值为Qz,则 z=x+y ? 所以定点加法可以描述为: int x,y,z; long temp; /*临时变量*/ temp=y(Qx-Qy); temp=x+temp; z=(int)(temp(Qx-Qz)), 若Qx≥Qz z=(int)(temp(Qz-Qx)), 若Qx ≤ Qz 设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=253952=101580; temp=x+temp=16384+101580=117964; z=(int)(117964L2)=29491; 因为z的Q值为13,所以定点值z=29491即为浮点值z=29491/8192=3.6。 设x=3.0,y=3.1,则浮点运算结果为z=x-y=3.0-3.1=-0.1; Qx=13,Qy=13,Qz=15,则定点减法为: x=24576;y=25295; temp=25395; temp=x-temp=24576-25395=-819; 因为QxQz,故 z=(int)(-8192)=-3276。由于z的Q值 为15,所以定点值z=-3276即为浮点值z=-3276/32768?-0.1。 2.结果超过16位表示范围 设x的Q值为Qx,y的Q值为

文档评论(0)

ajgoaw + 关注
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档