> In the implement of dynamic scaling FFT(8k for DVB-T), a scaling factor is
> incremented at the end of each stage if the maximum value of the stage is
> large
> enough to cause overflow in next stage and the data in the memory is scaled
> down.
>
> In the end of the FFT, I will have a final scaling factor SF.
>
> That is to say,
>
> y0 = fft(x); // SF = 2;
> y1 = fft(x/2); // SF = 1;
>
> y0 and y1 will be nearly identical, however scaling factor is different. How
> would
> I deal with this situation before feeding to ADC?
>
> Thanks
>
>
>
That sounds like it is basically block floating point. The scale factor
adjustments from each stage should be accumulated so that you have the
scale factor available at the end. The scale factor will be a power of
two that indicates how far the result has been right shifted. You will
need to figure out what an appropriate overall scale factor for all the
data sets pumped through, and shift the data appropriately so that it
all has the same scale.
Reply by Mr. Ken●January 22, 20072007-01-22
In the implement of dynamic scaling FFT(8k for DVB-T), a scaling factor is
incremented at the end of each stage if the maximum value of the stage is
large
enough to cause overflow in next stage and the data in the memory is scaled
down.
In the end of the FFT, I will have a final scaling factor SF.
That is to say,
y0 = fft(x); // SF = 2;
y1 = fft(x/2); // SF = 1;
y0 and y1 will be nearly identical, however scaling factor is different. How
would
I deal with this situation before feeding to ADC?
Thanks