Altera FFT MegaCore Function User Manual

Page 46

Advertising
background image


full_range_real_out[25:0] <= {real_in[15:0],10'b0};

full_range_imag_out[26] <= {imag_in[15]};

full_range_imag_out[25:0] <= {imag_in[15:0],10'b0};

end

6'b110111 : //-9 Equals left shift by 9 with sign extension

begin

full_range_real_out[26:25] <= {real_in[15],real_in[15]};

full_range_real_out[24:0] <= {real_in[15:0],9'b0};

full_range_imag_out[26:25] <= {imag_in[15],imag_in[15]};

full_range_imag_out[24:0] <= {imag_in[15:0],9'b0};

end

.

.

.

endcase

In this example, the output provides a full scale 27-bit word. You must choose how many and which bits

must be carried forward in the processing chain. The choice of bits determines the absolute gain relative

to the input sample level.

Figure 4-1

demonstrates the effect of scaling for all possible values for the 256-point quad output FFT

with an input signal level of 0x5000. The output of the FFT is 0x280 when the exponent = –5. The figure

illustrates all cases of valid exponent values of scaling to the full scale storage register [26..0]. Because the

exponent is –5, you must check the register values for that column. This data is shown in the last two

columns in the figure. Note that the last column represents the gain compensated data after the scaling

(0x0005000), which agrees with the input data as expected. If you want to keep 16 bits for subsequent

processing, you can choose the bottom 16 bits that result in 0x5000. However, if you choose a different bit

range, such as the top 16 bits, the result is 0x000A. Therefore, the choice of bits affects the relative gain

through the processing chain.
Because this example has 27 bits of full scale resolution and 16 bits of output resolution, choose the

bottom 16 bits to maintain unity gain relative to the input signal. Choosing the LSBs is not the only

solution or the correct one for all cases. The choice depends on which signal levels are important. One

way to empirically select the proper range is by simulating test cases that implement expected system data.

The output of the simulations must tell what range of bits to use as the output register. If the full scale data

is not used (or just the MSBs), you must saturate the data to avoid wraparound problems.

4-4

Example of Scaling

UG-FFT

2014.12.15

Altera Corporation

Block Floating Point Scaling

Send Feedback

Advertising