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格式数据在汇编语言中是如何实现的,同时对于IQ格式数据的乘除法又是如何实现的,比如,a=iq20(0.25)  b=iq24(0.01) 那么a*b ;a/b 以及a+b分别在数据格式上有什么不同,假如我要将结果用iq22表示又该如何实现!

  请各位指教。谢谢

  • IQ格式是通过移位实现的,您可以参考IQmath的文档学习参考一下!

  • 整体上我大概理解,我理解成 数据换成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次方份。理解这个就可以了。