DSPRelated.com
Forums

How to improve FFT accuracy on fixed point DSP processor?

Started by Mehul Patel July 28, 2004
Hi All,

I am using FFT on Motorola DSP (24 bit processor). I am working on an
audio encoder project which required atleast 20 bit accuracy.

The twiddle factor (which is in Q21 format) value is coming from
table. The sample application developed to calculate 8-point 10 2048
FFT in radix-2 DIT is loosing 9-bit accuracy. If we compare the output
of Windows floating point code and DSP fixed point code, it has 9-bit
accuracy loss.

Does anyone has idea about where am i making mistake? Any data points
will be of great help.

Regards,
Mehul
Check the literature / Google / etc. for block floating point.  FFTs 
generate intermediate results that can oveflow so a divide by two is 
usually used at each outer loop iteration.  But that overcompensates, 
costing you accuracy.  Block floating point can prevent that.

Also be sure to use the correct accuracy in your factors and lookup 
tables, rounding vs. truncation, etc.

Some homework here will pay real dividends in accuracy and dynamic 
range...

Jim Horn (tweaked 68k FFT code for HP 70000 series spectrum analyzers)