DSP_radix2

xt

= x[2*l] − x[2*i];

x[2*i]

= x[2*i] + x[2*l];

yt

= x[2*l+1] − x[2*i+1];

x[2*i+1]

= x[2*i+1] + x[2*l+1];

x[2*l]

= (c*xt + s*yt)>>15;

x[2*l+1]

= (c*yt − s*xt)>>15;

}

 

}

 

ie = ie<<1;

 

}

}

Special Requirements

-2 nx 32768 (nx is a power of 2)

-Input x and coefficients w should be in different data sections or memory spaces to eliminate memory bank hits. If this is not possible, they should be aligned on different word boundaries to minimize memory bank hits.

-x data is stored in the order real[0], image[0], real[1], ...

-The FFT coefficients (twiddle factors) are generated using the program tw_radix2 provided in the directory ‘support\fft’.

Implementation Notes

 

- Bank Conflicts: See Benchmarks.

 

- Interruptibility: The code is interrupt-tolerant but not interruptible.

 

- Loads input x and coefficient w as words.

 

- Both loops j and i0 shown in the C code are placed in the INNERLOOP of

 

the assembly code.

Benchmarks

The performance of this function has not yet been characterized on the C64x+.

4-94

Page 122
Image 122
Texas Instruments TMS320C64X manual Bank Conflicts See Benchmarks