From: pallav on
Hello all,

I'm very new to signal processing and want to learn to implement some
basic FFT algorithms in hardware. First, I coded up the radix-4 Cooley-
Tukey FFT algorithm in Matlab and it is working fine (compared it
against the Matlab's builtin FFT) when I use floating point number to
represent my signal.

For hardware implementation, the input data is a complex (a + jb). The
real/imaginary are each 8 bits. For fixed point arithmetic, they are
represented as 1 bit for sign, 7 bits for fraction. I'm trying to
implement fixed-point FFT in Matlab but am getting very strange
results. In practice, if the input data is 8 bits each, how many bits
should one use for the internal multiplication/addition? how many bits
for integer part and how many for fraction? Furthermore, how many bits
for the output? It is possible that the output point trasnform could
be greater than [-1,1]. Is there a general rule to determine this?

Here is my Matlab code (in case anyone is curious):

I'm noticing for fixed-point the transform points getting saturated at
-1,1 but not sure how many bits to use internally and how to divide
them between integer/fraction. Any ideas would be most helpful.

Kind regards.