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.

[参考译文] MSP430I2031:在具有 MPY16的器件上进行定点 IQ31乘法

Guru**** 1684410 points
Other Parts Discussed in Thread: MSP430I2031
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1117049/msp430i2031-fixed-point-iq31-multiplication-on-a-device-with-mpy16

器件型号:MSP430I2031

您好!

我需要以 IQ31格式将两个定点数相乘。 MSP430I2031既不支持32x32、也不支持小数乘法、因此我需要滚动自己的函数。

我遇到的最好的情况是:

int32_t __iq31mpy(int32_t a, int32_t b)
{
    return  ((int32_t)(((int64_t)(a) * (int64_t)(b)) >> 31));
}

但是、这会产生相当大的开销。 所有将被丢弃的中间64位值(我们只关注前32位)占用寄存器/堆栈、还有4级深嵌套内部__mspabi 函数。

通过使用 MACS 直接使用4个16x1=32类型的 MPY16、必须有一个更简单的路由、但我无法确定它。

大家好

Michał μ A

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它需要4个16x16乘法来产生32x32乘法。 足够简单、但您必须自行添加部分产品。 Mac 没有帮助。