Prev: Some questions about radix-4 FFT algorithm using fixed-point arithmetic
Next: SPI and I2S on SHARC ADSP-21369
From: pallav on 7 Feb 2010 01:13 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): http://pastey.net/132596 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. |