Why does the Xilinx FFT block generate different results from the MATLAB command line FFT function?
There are a few reasons why you are seeing differences in values for random data:
1. Xilinx uses fixed point, while MATLAB used floating point.
2. Xilinx FFT simulation has a 84 clock period latency for a 16 point FFT. (The latency is different based on the number of points on the FFT. Please consult the FFT data sheet for more information on this latency.) Therefore, you will have to feed the data 84 times before valid data output. Your intermediate output might not be valid before 84 clock periods for a 16 point FFT.
When you implement the FFT in hardware, you will see the same results as the MATLAB function once you have waited the latency period for the FFT as described in the Xilinx FFT Data Sheet.
Please also consult the "FFT/IFFT in streaming mode" demo available with the System Generator software.