04-15-2021 07:19 AM
I am doing FFT on 1024 Single floating point Complex values packed as 0:31 real & 32:63 Imag part, the answer is correct in comparison to MATLAB. Then i do some division on these values by first converting them from float to integer, perform division and then again store them as float. When I give these values as input to 1024 point IFFT, the output results match for first and last 450 values and does not match for central 124 values. What could be the possible source of such error?
I used Automatic as well as Radix 4 burst I/O architecture, with scaling 0x2AB, the forward /inverse for both blocks.
Please help me with this.
P.S. I know IFFT does not scale by 1/N in vivado.
04-29-2021 02:17 AM
Hi @Nitin_Kumar ,
Is the FFT configured for Floating point Input and output? Scaling schedule is not applied when the FFT is configured for Floating point I/O.
Can you check the FFT - > IFFT process and compare the result ? What is the output ordering used in the FFT IP ? If it is bit reversed, then the input to the IFFT has to be re-arranged to be in normal order.
05-18-2021 10:14 PM
Hi @vkanchan ,
Thanks for your reply, yes the FFT is configured for floating point and now I understand that scaling schedule is not applied for this case. I figured out the source of my problem, it was the sample values given as input to the FFT.
My sample set contains several zeros in the middle of the packet with only one positive value placed at the center, So it is like integers followed by zeros, one positive value at center again followed by zeros and then some integers. I figured out if i remove zeros and place some very very small values close to zeros, I get proper results from FFT or IFFT.