Reply by Bill Schintler November 27, 20032003-11-27
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" <jwygonski@h...> 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?


Reply by Bill Schintler November 27, 20032003-11-27
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" <jwygonski@h...> 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?


Reply by wygonski November 27, 20032003-11-27
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?