此帖出自微控制器 MCU论坛
最新回复
不知道你留意过iq变量的定义没有,从本质上讲,iq是一个int32型的量,只是根据q值的不同,对这个int32型的量的不同位赋予不同的含义。
“GLOBAL_Q是24时,_IQmpy(a,b);这个函数好像如果a是Q0格式,b是Q24格式的话,计算出来的东西好像是Q0格式的”
_IQmpy并不会检查a或b是不是Q24,它直接把它当成GLOBAL_Q型,然后做乘法。乘出来的结果仍然是GLOBAL_Q型的。
为什么你认为它是q0型的呢?
以你这个为例,计算时,先要q0->q24,相当于*2^(-24),然后与b相乘;这样算完之后,得到一个q24型的数,而q24->q0,相当于*2^24,这样的话a*b=>{[a*2^(-24)]*b}*2^24。看出来了吧,中间的转化抵消掉了。
注意里面的两次转换(q0->q24,q24->q0)是由于你认为是他们q0型带来的。虽然你定义了a就是q0型,但_IQmpy并不知道。
我是这样理解的。
详情
回复
发表于 2016-8-19 22:57
| ||
|
||
| |
|
|
此帖出自微控制器 MCU论坛
点评 | ||
|
||
此帖出自微控制器 MCU论坛
| ||
|
||
此帖出自微控制器 MCU论坛
| ||
|
||
EEWorld Datasheet 技术支持