Skip to main content
Carter Lee
Associate III
November 14, 2017
Question

Memory requirements for FFT

  • November 14, 2017
  • 3 replies
  • 1216 views
Posted on November 14, 2017 at 04:36

Dear All,

I'd like to implement FFT within STM32F103C8 without any extra memory buffers.

So I want to know how many memories are needed to implement if I have 2592x1944x8bit size's one image?

    This topic has been closed for replies.

    3 replies

    AvaTar
    Senior III
    November 14, 2017
    Posted on November 14, 2017 at 07:32

    So I want to know how many memories are needed to implement if I have 2592x1944x8bit size's one image?

    You will have a hard time to find any Cortex M with a RAM size in that dimension (5MB).

    So you would need to operate block-wise.

    I have not much experience with two-dimensional FFTs, but a cursory research will tell you.

    It will surely depend on the frequency resolution you need.

    But then, you still have an obvious performance issue.

    I would consider a Cortex A.

    Carter Lee
    Associate III
    November 14, 2017
    Posted on November 14, 2017 at 08:06

    If I can't use STM32F103C8, then I was going to use STM32F4 board,

    Actually I'd like to have a below process

    Image ----> FFT

     ----> Processing  ----> IFFT -> modified Image

    Is there any way to process that kind of way?

    Even I've seen M4 support such as this DSP from document, does it have a quite a bit limited constraints?

    I'm wondering how can I calculate it what how much do I need the memory?

    AvaTar
    Senior III
    November 14, 2017
    Posted on November 14, 2017 at 09:17

    Image ----> FFT

     ----> Processing  ----> IFFT -> modified Image

    Is there any way to process that kind of way?

    One usually works over blocks (rectangular parts) of the image, were the block size relates to the frequency resolution.

    One-dimensional data, like audio, are treated this way as well. For images, you just have two dimensions.

    Two-dimensional FFTs are quite common, you will find a lot of generic code examples to start with.

    But how you manage loading and processing parts of a 5MB image, and keep/store results in a RAM measured in kBytes is IMHO a serious challenge.

    How about scaling down (reducing resolution) before processing ?