返回首页

Q15格式说明

时间:2019-08-26 来源:原创/投稿/转载作者:管理员点击: 162

  Q15格式说明_计算机软件及应用_IT/计算机_专业资料。单片机数据格式

  Q15格式说明 今天看 Pic 的逆变器程序,看到采集后的 ADBUF 数据全部都是《5,这就搞不明白了,为什么要左 移5呀?然后看到上面说是兼容 Q15,在 QQ 群里也问了高手,说是用于 DSP 小数运算,于是在网上找了 下 Q15的定义,下面把 Q15整理下。 许多 DSP 都是定点 DSP,处理定点数据会相当快,但是处理浮点数据就会非常慢。可以利用 Q 格式 进行浮点数据到定点的转化,节约 CPU 时间。实际应用中,浮点运算大都时候都是既有整数部分,也有小 数部分的。所以要选择一个适当的定标格式才能更好的处理运算。 Q 格式表示为:Qm.n,表示数据用 m 比特表示整数部分,n 比特表示小数部分,共需要 m+n+1 位来表示这个数据,多余的一位用作符合位。假设小数点在 n 位的左边(从右向左数) ,从而确定小数的精 度 例如 Q15表示小数部分有15位,一个 short 型数据,占2个字节,最高位是符号位,后面15位是 小数位,就假设小数点在第15位左边,表示的范围是:-1X0.9999695 。 浮点数据转化为 Q15,将数据乘以2^15;Q15数据转化为浮点数据,将数据除以2^15。 例如:假设数据存储空间为2个字节,0.333×2^15=10911=0x2A9F,0.333的所有运算就可以用 0x2A9F 表示,同理10911×2^(-15)=0.,可以看出浮点数据通过 Q 格式转化后是有误 差的。 例:两个小数相乘,0.333*0.414=0.137862 0.333*2^15=10911=0x2A9F,0.414*2^15=13565=0x34FD short a = 0x2A9F; short b = 0x34FD; short c = a * b 15; 数据结果需要右移15位 // 两个 Q15格式的数据相乘后为 Q30格式数据,因此为了得到 Q15的 这样 c 的结果是0x11A4=0,这个数据同样是 Q15格式的,它的小数点假设在 第15位左边,即为0.=0.25...和实际结果0.137862差距不大。或者0x11A4 / 2^15 = 0.25 Q 格式的运算 1 定点加减法:须转换成相同的 Q 格式才能加减 2 定点乘法:不同 Q 格式的数据相乘,相当于 Q 值相加,即 Q15数据乘以 Q10数据后的结果是 Q25格式 的数据 3 定点除法:不同 Q 格式的数据相除,相当于 Q 值相减 4 定点左移:左移相当于 Q 值增加 5 定点右移:右移相当于 Q 减少 Q 格式的应用格式 实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。所以要选择一个适当的定 标格式才能更好的处理运算。一般用如下两种方法: 1 使用时使用适中的定标,既可以表示一定的整数复位也可以表示小数复位,如对于2812的32 位系统,使用 Q15格式,可表示-65536.0~65535.999969482区间内的数据。 2 全部采用小数,这样因为小数之间相乘永远是小数,永远不会溢出。取一个极限最大值(最 好使用2的 n 次幂) ,转换成 x/Max 的小数(如果 Max 是取的2的 n 次幂,就可以使用移位代替除法) 。

【责任编辑:管理员】
随机推荐 更多>>