DSP HDL Toolbox FFT Throughput

1 view (last 30 days)
I am trying to determine the throughput of the DSP HDL Toolbox FFT that uses Streaming Radix-2^2 architecture.
My FFT is 1024 point and the input vector size is 64 (max value). The latency on the block says its 84 and my clock is running at 333 MHz.
How does the FFT deal with the number of samples (requires 1024 for 1024 pt fft?) and what would the overall throughput of my system be?

Accepted Answer

Bharath Venkataraman
Bharath Venkataraman on 27 Sep 2023
Edited: Bharath Venkataraman on 2 Oct 2023
I would recommend synthesizing the design to make sure that your constraints of 333MHz are met. Assuming that is the case, you are able to process 64 samples at 333MHz, so your throughput is 333MHz*64 samples/clock = 21.312Gsps. If this throughput is higher than what you need, I would suggest reducing the input vector size to reduce the area of the design (as well as its power).
While there is a latency of 84 clocks, the FFT itself accepts data every clock cycle. The blocks assumes that frame is formed by samples fed in over 16 clock cycles since you are feeding in 64 samples at a time (64*16=1024).
  2 Comments
Kevin
Kevin on 5 Oct 2023
Edited: Kevin on 5 Oct 2023
Hi Bharath,
Thanks for the detailed answer.
As for the Burst Radix-2 architecture, how can I calculate the throughput? From my simulation, it seems the Burst Radix-2 architecture takes in 1 sample at a time (instead of 64 like before) and the latency (5811 cycles) occurs between every computation as opposed to just initally, drastically reducing throughput?
Bharath Venkataraman
Bharath Venkataraman on 6 Oct 2023
You are correct that the Burst Radix-2 architecture takes a longer time to process the data with the benefit of using far fewer resources (1 butterfly). In this case, assuming the same frequency (333 MHz), you are able to process 1024 samples in 1024 + 5811 = 6835 clocks, so your throughput is 333 MHz * 1024/6835 = 49 Msps.
Note that you can use the Streaming architecture but feed it fewer samples per clock. Running the streaming architecture at 333 MHz sending in one sample at a time gives you a throughput of 333 Msps. You can of course pass in 2, 4, 8,16, 32 or 64 samples per clock to increase the throughput. For example, sending in 2 samples per clock into the streaming architecture gets you 333 MHz * 2 = 666 Msps.
To conclude, you can go anywhere between 49 Msps to 21.3 Gsps using the appropriate architecture and sending in the right amount of data in.

Sign in to comment.

More Answers (0)

Tags

Products


Release

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!