Why are the output results of the Pipelined Streaming I/O xFFT architecture not symmetrical? Why do I see differences between the Burst I/O implementation and the Pipelined Streaming I/O FFT implementation?
The output of the Pipelined Streaming I/O FFT architecture is not symmetrical because it uses a decimate-in-frequency (DIF) FFT algorithm, while the Burst I/O architectures use a decimate-in-time (DIT) FFT algorithm. The decimate-in-frequency (DIF) FFT algorithm is not inherently symmetrical because of rounding on the inner products, which introduces some nonsymmetrical noise. Both architectures do introduce some noise, but the decimate-in-time (DIT) introduces a more symmetrical noise and does not show the problem of the nonsymmetrical output.
(Please see the FFT Data Sheet DS260 Algorithm Section for more information.)
For more information, see the following documents:
"Limited Dynamic Range of Spectrum Analysis Due To Round off Errors Of The FFT," by Quang Hung Nguyen and Istvan Kollar, available at:
"Influence of Digital Signal Processing on Precision of Power Quality Parameters Measurement", by I. Szolik, K. Kovac, V. Smiesko, available at:
It should also be noted that this problem is more noticeable in larger point size FFTs. It is virtually unnoticeable for a 16-point FFT, and slightly noticeable in a 32-point FFT. Also, the discrepancies are larger in the lower frequency bins, because of more noise being introduced into the first half of the FFT results than in the second half. If your application needs more accurate results, you may want to consider using the X(N/2+1 : N) results.
See (Xilinx Answer 29209) for a detailed list of LogiCORE Fast Fourier Transform (FFT) Release Notes and Known Issues.