07-20-2018 09:18 AM - edited 07-20-2018 01:38 PM
I am having trouble trying to understand the output of my FFT core.
The FFT has:
- 1 Channel
-Transform Length of 1024
-Running at a clock speed of 225(MHz)
This is how my FFT Implementation is currently configured:
The FFT is being fed by a FIFO with an Input bit width of 8(128 bits) times the output(16 bits). The FIFO is being driven by the same 225MHz clock as the FFT.
The input of the signal into the FIFO is a pulsed sinusoid with a frequency of 50MHz which is coming from a DDS IP Core.
I am storing the output of the FFT on a BRAM(driven by the same 225MHz) after running the real and imaginary output of FFT through a matlab script that generates the magnitude I get this:
My question is why there are more prominent spikes in frequency bins than my frequency bin of itnerest(N= 228, the larger spike just after 200.). I have also scoured the IP core's data sheet for some example outputs to determine whether or not this frame output data contains the negative frequency of an FFT. The reason I ask is because it looks like the data is reflected about the mid point. My biggest problem is that the largest spikes are not at my desired frequency been. I have confirmed that the DDS is outputing the correct frequency(50MHz) on an O-scope.
When I have run some simulations of the FFT the output signal is just a single spike, why am I getting a more bathtub looking output on hardware implementations.
I have included: my data set of both the real and the imaginary data, my matlab script .
There is a lot of information to relate regarding this issue so if you have any clarifying questions please ask me. Any help would be appreciated.
07-27-2018 02:18 AM
It's might due to quantization, you can generate a sine wave in Matlab with single floating point, and then send this stimulus to FFT, configure the FFT data format to single floating point.