# FFT for DSP563xx: dynamic range

Started by November 27, 2003
 Can anyone give me some guidance on the dynamic range of signals that I can process with an FFT on the 563xx? Here's my situation: I have a 24-bit A/D, and I am doing synchronous averaging in the time domain, followed by the single-precision FFT. My record size and FFT size is 4096. I'm interested in measuring the amplitude of two sinusoids, where one of the sinusiods is as much as 90 dB below the other sinusiod at another (remote) frequency. I'm confident my hardware has a low-enough noise floor to handle this situation, but I'm not so sure about the FFT. Given the round-off noise of the FFT, and the input scaling that should be done to prevent overflows in the algorithm, what dynamic range can I expect? Also knowing that FFT algorithms may differ in their dynamic range, can anyone guide me as to a correct choice of algorithm?
 I don't have a good answer to your dynamic range question. Given the 16-bit word size and your requirement of dynamic range in excess of 90 dB, you are pushing it. You are correct in that various FFT algorithms may differ somewhat in their performance with regard to roundoff and finite word size errors. If it were ME, and I didn't already have the FFT implemented in the HW, with the necessary input signal sources and an easy means of examining the FFT output, I would try simulating the performance of an FFT algorithm in a simulation software package such as MATLAB. I would code the (radix-2, radix-4, etc) butterfly as a MATLAB function. The truncation/roundoff of the 16-bit word would be implemented in the butterfly function. Each stage of the FFT (12 stages for radix-2, length 4096 FFT) would call this butterfly over and over. You would also apply the necessary truncation to any windowing that you apply to your time-domain record before the FFT. Bill Schintler --- In , "wygonski" wrote: > Can anyone give me some guidance on the dynamic range of signals that > I can process with an FFT on the 563xx? Here's my situation: > > I have a 24-bit A/D, and I am doing synchronous averaging in the time > domain, followed by the single-precision FFT. My record size and FFT > size is 4096. I'm interested in measuring the amplitude of two > sinusoids, where one of the sinusiods is as much as 90 dB below the > other sinusiod at another (remote) frequency. I'm confident my > hardware has a low-enough noise floor to handle this situation, but > I'm not so sure about the FFT. Given the round-off noise of the FFT, > and the input scaling that should be done to prevent overflows in the > algorithm, what dynamic range can I expect? > > Also knowing that FFT algorithms may differ in their dynamic range, > can anyone guide me as to a correct choice of algorithm?
 My first response to your question that I posted is in error. When I wrote it, I was thinking that you were implementing the FFT on a 16-bit machine, but the 563xx is a 24-bit architecture. Given that, I don't think you should have any difficulty realizing an FFT dynamic range in excess of 100 dB. I wouldn't go through all of the trouble of simulating things. Bill Schintler --- In , "wygonski" wrote: > Can anyone give me some guidance on the dynamic range of signals that > I can process with an FFT on the 563xx? Here's my situation: > > I have a 24-bit A/D, and I am doing synchronous averaging in the time > domain, followed by the single-precision FFT. My record size and FFT > size is 4096. I'm interested in measuring the amplitude of two > sinusoids, where one of the sinusiods is as much as 90 dB below the > other sinusiod at another (remote) frequency. I'm confident my > hardware has a low-enough noise floor to handle this situation, but > I'm not so sure about the FFT. Given the round-off noise of the FFT, > and the input scaling that should be done to prevent overflows in the > algorithm, what dynamic range can I expect? > > Also knowing that FFT algorithms may differ in their dynamic range, > can anyone guide me as to a correct choice of algorithm?