CMSIS DSP library: FFT speed on XMC4500

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
User8734
Level 4
Level 4
Good day,

Here just my speed results for 1024 points FFT, running on XMC4500 Hexagon Kit:

- arm_cfft_radix4_f32 - 0,91milliSec; // complex input float32
- arm_cfft_radix4_q31 - 1,83milliSec; // complex input q31_t (fixed point 1.31 format)
- arm_cfft_radix4_q15 - 0,75milliSec; // complex input q15_t (fixed point 1.15 format)
//arm_cfft_radix_xx functions supported lengths [16, 64, 256, 1024]

- arm_cfft_radix2_f32 - 1,4milliSec; // complex input float32
- arm_cfft_radix2_q31 - 2,0milliSec; // complex input q31_t (fixed point 1.31 format)
- arm_cfft_radix2_q15 - 0,91milliSec; // complex input q15_t (fixed point 1.15 format)
//arm_cfft_radix2_xx functions supported lengths [16, 32, 64, 128, 256, 512, 1024, 2048, 4096]

- arm_rfft_f32 - 0,71milliSec; // real input float32
- arm_rfft_q31 - 1,33milliSec // real input q31_t (fixed point 1.31 format)
- arm_rfft_q15 - 0,5milliSec // real input q15_t (fixed point 1.15 format)
//arm_rfft_xx functions supported lengths [128, 512, 2048] size of data according DOC's.
//Somehow they operational for 1024 as well (probably output data incorrect)

Test was performed repeating functions itself (without initialization) 60 000 times & using ordinary WIN clocks.

Any comments welcome.

BR
K
0 Likes
3 Replies
Mike1
Employee
Employee
5 sign-ins First question asked 10 replies posted
Hi Konstantin,

Could you please post your example code here on the forum?

Thank you!

Best regards,
Mike
0 Likes
Travis
Employee
Employee
First solution authored Welcome! 500 replies posted
This is cool.... Source code please.
0 Likes
lock attach
Attachments are accessible only for community members.
User8734
Level 4
Level 4
Good day,

As a basis, I use example located at: ..\DAVE-3.1.10\CMSIS\DSP_Lib\Examples_M0\arm_fft_bin_example
(This project can be simply imported into DAVE.)

Please as well see .ZIP file attached.


Then I use cycle "for" to repeat function
arm_cfft_radix4_f32(&S, testInput_f32_10khz);
several thousand times, start program and see on WIN clocks when it stops running.
(Array used as I/O, so no need to reload input data for speed testing.)

Two-three minutes overall running time is sufficient to get acceptable tolerance.

BR
K
0 Likes