打印

STM32带符号乘法运算能力

[复制链接]
7057|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
f43067|  楼主 | 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不是带有单周期硬件乘法器吗?
沙发
f43067|  楼主 | 2009-5-5 09:36 | 只看该作者

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

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

使用特权

评论回复
板凳
f43067|  楼主 | 2009-5-5 18:31 | 只看该作者

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

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

使用特权

评论回复
地板
zgcumt| | 2009-5-5 19:54 | 只看该作者

学习,准备做FFT

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

20

帖子

0

粉丝