Tuesday, December 29, 2009

1536 FFT Implementation in LTE

 In an LTE downlink, the system needs support variable transmission bandwidths, such as 1.25 MHz, 2.5 MHz, 5 MHz, 10 MHz, 15 MHz, and 20 MHz. Each transmission bandwidth corresponds to a different fast Fourier transform (FFT) size of 128, 256, 512, 1024, 1536, and 2048 points. Table 1 lists the downlink transmission bandwidth, sampling frequency and FFT size. 

Transmission BW

1.4 MHz

2.5 MHz

5 MHz

10 MHz

15 MHz

20 MHz

Sampling Frequency

1.92 MHz

3.84 MHz

7.68 MHz

15.36 MHz

20.34 MHz

30.72 MHz

FFT size

128

256

512

1024

1536

2048

 Except 15 MHz bandwidth, all FFT sizes have 2m form and can be implemented in the standard Cooley–Tukey algorithm using radix-2 FFT.  This essay discusses the implementation of 1536 FFT for 15 MHz bandwidth.

The FFT reduces the number of computations of DFT from O(N2) to O(NlogN) by decomposition in time or frequency domain. The DFT of a sequence x(n) is given by

In the current design, the transform length, N, is 1536. Using the decimation in time method, the first step is to divide the input sequence into three sequences. Each sequence goes through the 512-point FFT computation. The last step  combines the three sequences to get a final output result.

 

For N=1536, we have

 Therefore, a 1536-point FFT can be decomposed into three 512-point FFTs followed by a single radix-3 combinational stage. It should be noted that a FFT 512 has a period 512, if the number of frequency is larger than 512, we have

Where mod() denote the modular operation. The following flowchart describes the steps to calculate 1536 FFT for LTE downlink.

 

 

Following Matlab script implements the 1536 FFT.

 

N=1536;

N1 = 1536/3;

 

for i=1:N1

   

    y1(i) = x(3*i-2);

    y2(i) = x(3*i-1);

    y3(i) = x(3*i);

end

 

FFT_y1 = fft(y1,512);

FFT_y2 = fft(y2,512);

FFT_y3 = fft(y3,512);

 

for n=1:N

   

    FFT_y(n) = FFT_y1(mod((n-1),512)+1)+FFT_y2(mod((n-1),512)+1)*exp(-j*2*pi*(n-1)/1536);

    FFT_y(n) = FFT_y3(mod((n-1),512)+1)*exp(-j*2*2*pi*(n-1)/1536)+FFT_y(n);

End