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.

[参考译文] MSP430F2252:优化32位乘法

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/865796/msp430f2252-optimize-32bit-multiplication

器件型号:MSP430F2252

您好!

我正在使用 MSP430F2252并执行 goertzel 算法来检测 DTMF 音调。

在我的当前实现中、goertzel 算法的计算大约需要7ms、MCLK 为3.579.545Hz。

是否有可能加快这一速度?
正如我在数据表中看到的、F2252没有硬件乘法器。
我正在使用 ADC10、因此我将获得 ADC_Values 的10位值。

当前代码:

const int coeff [7]={2766726510、25248、23887、17558、15786、12063}; 

int goertzel (int sample []、long int coeff、int bksize)
{

int Q、q_prev、q_preme2、i;
long power2;
long prod1、prod2、prod3;

Q_prev = 0; //将延迟元件1 Q_prev 设置为零
Q_premel2 = 0;//将延迟元件2 Q_premel2设置为零
power2 = 0; //针对

(i = 0;i < bksize;i++)将功率设置为零//循环 bksize 次数并计算每个迭代的 Q、Q_prev、Q_preme2
{
Q =(sample[i])+((coeff * Q_prev)>> 14)-(Q_fort2);//>> 14用作系数的 Q15格式
Q_fort2 = Q_prev;//随机播放延迟元素
Q_prev = Q;
}

//计算用于计算功率
的三个乘积1 =((long) Q_prev * Q_prev);
prod2 =((long) Q_fort2 * Q_fort2);
prod3 =((long) Q_prev * coeff)>> 14;
prod3 =(prod3 * Q_fort2);

prod3 =(prod3 + 2)(prod3)+ prod3)(prod3) //calculate power using the three products and scalate the result down

return power2;
} 


谢谢!

Manuel

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

    您好!

    通常、您可以以更高的频率运行 MCLK 以加快此速度。 但是、它也会消耗更多的功率。

    此外、您还可以将 IQmath 库与优化的算术函数配合使用。