DSP_fft16x16t

/*−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−*/

/*

Set up

offsets to access ”N/4”, ”N/2”, ”3N/4” complex point or

*/

/*

”N/2”,

”N”, ”3N/2” half word

*/

/*−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−*/

h2 = stride>>1;

l1 = stride;

l2 = stride + (stride >> 1);

/*−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−*/

/*

Reset ”x” to point to the start of the input data array.

*/

/* ”tw_offset” starts off at 0, and increments by ”6 * stride”

*/

/*

The stride quarters with every iteration of the outer loop

*/

/*−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−*/ x = ptr_x;

w = ptr_w + tw_offset; tw_offset += fft_jmp; stride >>= 2;

/*−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−*/ /* The following loop iterates through the different butterflies, */

/* within a given stage. Recall that there are logN to base 4

*/

/* stages. Certain butterflies share the twiddle factors. These

*/

/* are grouped together. On the very first stage there are no

*/

/* butterflies that share the twiddle factor, all N/4 butter−

*/

/* flies have different factors. On the next stage two sets of

*/

/* N/8 butterflies share the same twiddle factor. Hence, after

*/

/* half the butterflies are performed, j the index into the

*/

/* factor array resets to 0, and the twiddle factors are reused. */

/* When this happens, the data pointer ’x’ is incremented by the

*/

/* fft_jmp amount. In addition, the following code is unrolled to

*/

/* perform ”2” radix4 butterflies in parallel.

*/

/*−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−*/ for (i = 0; i < npoints; i += 8)

{

/*−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−*/

/* Read the first 12 twiddle factors, six of which are used

*/

/* for one radix 4 butterfly and six of which are used for

*/

/* next one.

*/

4-110

Page 138
Image 138
Texas Instruments TMS320C64X manual 110