STM32带符号乘法运算能力

wangzhijie588   2009-5-4 11:42 楼主
最近用STM32做24位AD的FIR滤波算法,需要进行两个32位有符号数相乘的运算,用C写的两个数相乘的语句如下:
FIR_Result = (signed long long)AD_Result[0] * (signed long long)B[0];
其中AD_Result和B是signed long型的,FIR_Result是signed long long型的。
测试发现STM32工作在72M时该语句执行时间为480多ns。如果将程序用速度优化为最高后大概450ns。
我的问题是这个执行时间能不能再短一些?Cortex-M3不是带有单周期硬件乘法器吗?

回复评论 (5)

没有说是单周期的,你看看手册是不是?

乘法也是32*32--》32不是32*2--》64  这个你要搞清楚哦!
如果你的数没有溢出。
点赞  2009-5-5 08:59

确实是单周期的硬件乘法器

                                 我又看了一遍STM32的数据手册,确实是单周期的硬件乘法器。如下图的最后一行:
点赞  2009-5-5 09:36

哈哈,习惯性当作MLA了,MUL

signed long long是C99的64呢。这样不慢才怪!
你使用STM32的FIR库吧?
点赞  2009-5-5 10:01

ST发布的FIR滤波程序是针对16位以下AD的。

如题。
我用的是外接的24位AD,所以不能用ST发布的FIR滤波程序,而且那是用汇编写的,看不太明白,所以也不好改。
但是两个带符号32位数相乘时结果是64位的,所以得用64位的signed long long计算。
点赞  2009-5-5 18:31

学习,准备做FFT

                                  
点赞  2009-5-5 19:54
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复