5DSPQ格式辩析.pptVIP

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * 1. Q格式 不会运用Q格式的DSP程序员不是优秀的程序员 大多数C2000 型 DSP属于定点微处理器,定点微处理 器不能直接处理小数。以表达精度为0.01Hz的频率变量f为 例,处理小数有3种方法。 把变量f定义为float类型 C语言中自动 调用运行时函数来处理浮点数运算,在高级 语言的层次,C语言抹平了定点处理器和浮点处理器的差 别,用户的编程工作量最少,编译出来的代码也最庞大。 1. Q格式 2) 变量仍定义为整型变量类型 采用放大若干倍数来表示小数。比如要表达精度达到 0.01Hz的频率变量f,就将频率变量放大100倍。这是一个比 较僵硬的做法. 3)变量仍定义为整型变量类型,采用定标法来确定小数 常用Q格式来表示定标 在Q格式中,Q之后的数字(如Q15格式中的15)决定小数点右边有多少位二进制位,故Q15表示在小数点后有15位小数。 当用一个16位的字来表示Q15格式时,在MSB(最高位)的右边有一个小数点,而MSB表示符号位。 所以Q15的表示数字可表示范围从+1(以+0.99996表示)到-1的值。 浮点数和定点数之间的转换公式如下 浮点数xf转换为定点数xq时, 定点数xq转换为浮点数xf时, 例:将浮点数1.1转换为定点数Q13格式 1.1 定点运算 任何数制(包括整型和浮点型)运算都要考虑溢出,定点数之间的运算也要考虑溢出。 1.定点加减法 必须是具有相同Q格式的数据才能相加,不同Q格式的数据必须先通过移位至相同的Q格式,然后才能相加。 例: int a, b; //Q15 int c; //Q15 c=a+b; 1.1 定点运算 2.定点乘法 不同Q格式的数据相乘,相当于Q值相加 3.定点除法 不同Q格式的数据相除,相当于Q值相减 4.定点左移 相当于Q值增加 int a; //Q5 int c; //Q7 c=a2; 5.定点右移 相当于Q值减少 例: int a; //Q5 int c; //Q3 c= a2; 1.1 定点运算 1. 2 Q15格式 程序中最常用的是Q0和Q15格式。 int型变量的Q15格式数值范围是一个不超过1的小数。小数之间相互做乘法仍然是小数,永远不会溢出,这是小数的一个优势。 例 Q15格式相乘,永远不会溢出 int a ,b; //Q15 int c; //Q15 c=((long)a*b)15; 如果一个数据既包括有整数又有小数,使用Q格式时,直观的做法是选定一个合适的Q格式来表示,有些运算必须这样做。 但还有一个常用且简洁的方法:把数据全部转化成小数,再用Q15格式表示。 假设整数x取值范围不会超过某一极限最大值,设此极限最大值为MAX,将整数x除以常数MAX转换成一个小数,再按照浮点数转换成定点数的公式,转换成Q15格式。 1.2 Q15格式 整数x转换为定点数x15 1.2 Q15格式 把整数x转换为Q15格式x15后,在后续程序运算中就只用变量x15。程序员应建立起一个应用概念:变量x15是Q15格式,Q15格式只能表示一个小数,因此,变量x15就代表一个不超过1的百分数。 例:设定一个常数MAXF=120,那么频率变量f=50Hz的Q15表示为: #define MAXF 120 unsigned int f; f=((unsigned long)5015)/MAXF; 频率变量f等于13653; 频率f代表的是百分比数值,且精度也很高。 1.2 Q15格式 上述计算用到了除法“/”,而除法运算是比较费时的,解决方 法有如下3个: 很多数值可以离线设定。也就说,先离线计算出13653,然后赋值即可 从50Hz转换到13653的设定过程,绝大多数情况下对时间要求不苛刻,可以放在主程序或优先级低的任务中 必须在线设定且对时间一起苛刻时,一个变通的方法是设定常数MAXF为2的n次幂,比如MAXF=128,即可把除法转换为右移。 1.2 Q15格式 当要表达频率精度0.01Hz时,对于频率变量f=50.01Hz, 要稍微运用技巧。 例:设定一个常数MAXF=120,频率变量f=50.01Hz的Q15格式为: #define MAXF 120 unsigned int f; f=((unsigned long)500115)/(MAXF*100); 于是,频率变量f=13656。 1.2 Q15格式 EXAMPLE1:Current Sensing and Scaling The FOC structure requires two phase

文档评论(0)

2226657222 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档