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
How do I deal with final scaling factor in 8K FFT?
Started by ●January 22, 2007
Reply by ●January 23, 20072007-01-23
Mr. Ken wrote:> 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.