打印
[STM32U5]

【NUCLEO-U575ZI-Q测评】dsp库fft性能测试

[复制链接]
750|48
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dql2015|  楼主 | 2023-2-21 22:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
NUCLEO-U575ZI-Q采用的是M33核,根据官网资料介绍:
The Cortex®-M33 core features a single-precision FPU (floating-point unit), that supports all the Arm® single-precision data-processing instructions and all the data types.
The Cortex®-M33 core also implements a full set of DSP (digital signal processing) instructions and a MPU (memory protection unit) that enhances the application security.


M33核采用ARMv8M架构,


将STM32CubeU5中的DSP库arm_ARMv8MMLldfsp_math.lib添加到工程中,其中ARMv8MMLldfsp含义如下:
Cortex-M33 内核,l 表示小端格式,f 表示带 FPU 单元,sp 表示 Single Precision 单精度浮点。


RTE开启event recorder调试支持:


fft测试函数:
#include "arm_math.h"
#include "arm_const_structs.h"
#include "main.h"

#define TEST_LENGTH_SAMPLES 1024
static float32_t testOutput_f32[TEST_LENGTH_SAMPLES*2];
static float32_t testInput_f32[TEST_LENGTH_SAMPLES*2];
static float32_t Phase_f32[TEST_LENGTH_SAMPLES*2];

void arm_cfft_f32_app(void)
{
        arm_status status = ARM_MATH_SUCCESS;
        uint32_t fftSize = TEST_LENGTH_SAMPLES;
        uint32_t refIndex = 213, testIndex = 0;
        uint32_t ifftFlag = 0;
        uint32_t doBitReverse = 1;
        float32_t maxValue;
        uint16_t i;
        //按照实部,虚部,实部,虚部..... 的顺序存储数据
        for(i=0; i<TEST_LENGTH_SAMPLES; i++)
        {
                //波形是由直流分量,50000Hz 正弦波组成,波形采样率 1024,初始相位 60°
                testInput_f32[i*2] = 1 + cos(2*3.1415926f*50000*i/1024 + 3.1415926f/3) + cos(2*3.1415926f*1000*i/1024 + 3.1415926f/2) + cos(2*3.1415926f*12000*i/1024 + 3.1415926f/6);
                testInput_f32[i*2+1] = 0.0;
        }
        for(i=0; i<TEST_LENGTH_SAMPLES; i++)
        {
        printf("%d %f %f\r\n",i,testInput_f32[i*2],testInput_f32[i*2+1]);
        }

        uint32_t start = DWT->CYCCNT;
       
        EventStartA(0);
        arm_cfft_f32(&arm_cfft_sR_f32_len1024, testInput_f32, ifftFlag, doBitReverse);
        EventStopA(0);
       
        uint32_t end = DWT->CYCCNT;
        float t = (end - start)*1.0/160;
        printf("t=%fus %fms\r\n",t,t/1e3);

        arm_cmplx_mag_f32(testInput_f32, testOutput_f32, TEST_LENGTH_SAMPLES);

        arm_max_f32(testOutput_f32, fftSize, &maxValue, &testIndex);

        printf("maxValue=%f testIndex=%d\r\n",maxValue,testIndex);
}
调试效果,可以看到进行1024点浮点fft运算耗时1ms左右

网友测试stm32f407进行fft运算的性能:


总结:M33核比M4核在dsp性能上似乎没有太多优势。


使用特权

评论回复
沙发
yangxiaor520| | 2023-2-22 07:43 | 只看该作者
M4和M4F的性能要强些。

使用特权

评论回复
板凳
abotomson| | 2023-3-3 21:05 | 只看该作者
进行fft内存不够怎么办               

使用特权

评论回复
地板
ulystronglll| | 2023-3-3 21:37 | 只看该作者
利用CMSISDSP库做FFT运算

使用特权

评论回复
5
sdCAD| | 2023-3-3 21:59 | 只看该作者
是否含有浮点FFT的运算函数               

使用特权

评论回复
6
hilahope| | 2023-3-3 22:26 | 只看该作者
STM32F0系列有DSP库支持吗?

使用特权

评论回复
7
plsbackup| | 2023-3-4 13:00 | 只看该作者
stm32f4的DSP库可以做4096点FFT吗

使用特权

评论回复
8
yorkbarney| | 2023-3-4 20:06 | 只看该作者
如何使用 DSP算法库FFT和IFFT

使用特权

评论回复
9
sanfuzi| | 2023-3-10 10:36 | 只看该作者
怎么调用fft 库函数               

使用特权

评论回复
10
软核硬核| | 2023-3-10 14:12 | 只看该作者
这个DSP能力和内核有关系吧?

使用特权

评论回复
11
Pretext| | 2023-3-10 14:13 | 只看该作者
看样子确实没什么区别。

使用特权

评论回复
12
芯路例程| | 2023-3-10 14:14 | 只看该作者
好像还没F4开启FPU来的快。

使用特权

评论回复
13
10299823| | 2023-3-10 17:50 | 只看该作者
计算512点fft到底需要多少时间

使用特权

评论回复
14
AloneKaven| | 2023-3-10 22:23 | 只看该作者
hilahope 发表于 2023-3-3 22:26
STM32F0系列有DSP库支持吗?

F0系列应该没有DSP库

使用特权

评论回复
15
deliahouse887| | 2023-3-11 20:03 | 只看该作者
stm32f4的DSP库可以做4096点FFT吗

使用特权

评论回复
16
wwppd| | 2023-3-14 14:14 | 只看该作者
如何使用STM32提供的DSP库进行FFT

使用特权

评论回复
17
bartonalfred| | 2023-3-14 15:06 | 只看该作者
有FFT运算模块吗               

使用特权

评论回复
18
mollylawrence| | 2023-3-18 10:55 | 只看该作者
FFT是如何实现信号的倒序输入

使用特权

评论回复
19
febgxu| | 2023-3-18 14:35 | 只看该作者
如何使用 DSP算法库FFT和IFFT

使用特权

评论回复
20
Henryko| | 2023-4-2 16:21 | 只看该作者
还没F4开启FPU来的快

使用特权

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

本版积分规则

101

主题

372

帖子

7

粉丝