MATLAB: Do I obtain different results when using the FFT block from the Signal Processing Blockset library versus that from the Embedded Target for TI C6000 DSP library

I have a model where I am calculating FFT for the same input using the two FFT blocks from the following libraries:
1. Signal Processing Blockset->Transforms->FFT block
2. Embedded Target for TI C 6000 DSP->C64x DSP Library->FFT block
The results are different in both the cases.

Best Answer

The reason as to why the two implementations of FFT do not generate same results is that one of the blocks uses fixed point data type (FFT from Embedded Targets TI C6000 library) while the other uses double point precision (FFT from DSP blockset).
Note that TI's assembly routine that is simulated in "TI C64x FFT16x16R" block uses an intermediate word length of 16 bits to store accumulations. For this reason, it is quite easy for TI's FFT16x16R algorithm to overflow in Radix4 FFT stages, causing numerical inaccuracy. The results of performing a fixed point fft can therefore be quite different than a double precision FFT. As far as we can tell, the TI algorithm is doing the right thing given the limitations of using a small word length for intermediate computations. To avoid this situation, you need to keep the dynamic range of the input signal under control.
Also, even if the DSP Blockset FFT block data type is converted to operate on fixed point data the results out of DSP Blockset FFT may not match those of C64x FFT16x16R block exactly because of many differences between the algorithm implementations between the two blocks.