IQ格式数据在汇编语言中是如何实现的,同时对于IQ格式数据的乘除法又是如何实现的,比如,a=iq20(0.25) b=iq24(0.01) 那么a*b ;a/b 以及a+b分别在数据格式上有什么不同,假如我要将结果用iq22表示又该如何实现!
请各位指教。谢谢
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
IQ格式数据在汇编语言中是如何实现的,同时对于IQ格式数据的乘除法又是如何实现的,比如,a=iq20(0.25) b=iq24(0.01) 那么a*b ;a/b 以及a+b分别在数据格式上有什么不同,假如我要将结果用iq22表示又该如何实现!
请各位指教。谢谢
整体上我大概理解,我理解成 数据换成IQ格式时,是将数据左移N位,也就是理解成将数据乘以2的N次方。是不是这样?
我想问的是细节问题,比如一个iq20格式的数据乘以一个iq24格式的数据;
问题:1) 其结果是什么格式?
2) 其过程,是先将数据转换成相同格式再计算,还是先计算再对结果进行格式转换?
3) 对于问题1的附加,要是将结果的格式转换成iq22,该如何实现?
4) 麻烦分析下面程序的处理是否正确。
MOVW DP,#_Temp1
MOVL XT,@_Temp1 ;Q20
MOVW DP,#_Temp2 ;Q24
IMPYL P,XT,@_Temp2 ;P = Temp1 * _Temp2[31:0]
QMPYL ACC,XT,@_Temp2 ;ACC = _Temp1 * _Temp2[63:32]
LSL64 ACC:P,#6 ;ACC->Q22
MOVW DP,#_Temp3
MOVL @_Temp3,ACC ;Q22
一个原则,Qn就是把1分成2^n次方份。理解这个就可以了。