电机控制中的变量定标 (Q15、Q31)

变量定标 (Q15、Q31)

1、数字控制软件中的数值主要分为 定 点 数 \color{red}{定点数} 浮 点 数 \color{red}{浮点数} 两种类型,先前的微控制器仅支持定点运算,随着半导体技术的发展,越来越多的微控制器开始支持浮点运算,但是定点运算依然是目前的主流。
2、定点运算中的操作数均为整型数或纯小数,但是实际应用算法中不可避免地存在小数,为此需要采用整数定标的方法来表示小数,通常采用 Q 格式表示,即整数与小数的区别在于小数点的位置。
3、对于一个 N 比特位的有符号二进制补码数据,可以将其看作Qx.y格式的小数,x表示整数部分的位数,y表示小数部分的位数,y=N-x,其格式如下:
在这里插入图片描述
其中,S为符号位,I是整数部分,f是小数部分,其表示的数值大小为
在这里插入图片描述
即Qx.y代表的数值为 D/2^y D为该补码数据本身的值。
反之,值为m的小数按Qx.y格式定标的二进制补码数值为m·2^y。
例如,小数0.25用Q1.15表示则为0x2000,0x6000对应的Q1.15格式的小数为0.75。这样就简单地实现了用整数格式来表示小数。

当y=0时即表示整数,没有小数部分,此时 N 比特位补码数据数值 D 的范围为
在这里插入图片描述
当x=1时,整数位只有一位,即符号位,其表示的纯小数数值SF 的范围为
在这里插入图片描述
对于字型和长字型变量,
其表示最小负数-1.0的数据分别为0x8000 和0x80000000,

字型变量可以表示的最大正数是1.0-2^(-15),对应数据为Ox7FFF,
长字型变量可以表示的最大正数是1.0-2^(-31),对应的数据为0x7FFFFFFF。

同一个二进制补码,如0x4000,当为Q1.15格式小数时,其数值大小为0.5,当为带符号整数时,其数值大小为16384,因此控制软件中参数要如何解释。


文章来源于 NXP 的书籍

q31、q15、q7和f32是用于表示定点数或浮点数的不同格式。 其中,q31表示一个32位的定点数,用来表示分数部分的位,取值范围为-1到0.9999之间。 q15表示一个16位的定点数,用来表示分数部分的位,取值范围为-1到0.9999之间。 q7表示一个8位的定点数,用来表示分数部分的位,取值范围为-1到0.9999之间。 而f32表示一个32位的浮点数,可以表示更大范围的数值,并且具有更高的精度。 在进行Q格式相乘后,需要根据具体的Q格式进行向右移位操作,移位的位数取决于Q格式的大小。比如q15的乘法结果需要向右移动15位,q7的乘法结果需要向右移动7位,以此类推。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [请问为什么DSP需要Q格式? q31、q15、q7和f32是什么意思?](https://blog.csdn.net/xingsongyu/article/details/112646545)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [嵌入式代码优化(C语言)](https://blog.csdn.net/heda3/article/details/100800923)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式Stark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值