DSP_fft16x16t

x2[h2+1] = (co10 * yt1_0 − si10 * xt1_0) >> 15; x2[h2+2] = (si11 * yt1_1 + co11 * xt1_1) >> 15; x2[h2+3] = (co11 * yt1_1 − si11 * xt1_1) >> 15; x2[l1 ] = (si20 * yt0_0 + co20 * xt0_0) >> 15; x2[l1+1] = (co20 * yt0_0 − si20 * xt0_0) >> 15; x2[l1+2] = (si21 * yt0_1 + co21 * xt0_1) >> 15; x2[l1+3] = (co21 * yt0_1 − si21 * xt0_1) >> 15; x2[l2 ] = (si30 * yt2_0 + co30 * xt2_0) >> 15; x2[l2+1] = (co30 * yt2_0 − si30 * xt2_0) >> 15; x2[l2+2] = (si31 * yt2_1 + co31 * xt2_1) >> 15; x2[l2+3] = (co31 * yt2_1 − si31 * xt2_1) >> 15;

}

}

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

/* The following code performs either a standard radix4 pass or a */

/* DSP_radix2 pass. Two pointers are used to access the input data.*/

/* The input data is read ”N/4” complex samples apart or ”N/2”

*/

/* words apart using pointers ”x0” and ”x2”. This produces out−

*/

/* puts that are 0, N/4, N/2, 3N/4 for a radix4 FFT, and 0, N/8

*/

/* N/2, 3N/8 for radix 2.

*/

/*−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−*/ y0 = ptr_y;

y2 = ptr_y + (int) npoints;

x0 = ptr_x;

x2 = ptr_x + (int) (npoints >> 1); if (radix == 2)

{

/*−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−*/ /* The pointers are set at the following locations which are half */

/* the offsets of a radix4 FFT.*/ /*−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−*/ y1 = y0 + (int) (npoints >> 2);

y3 = y2 + (int) (npoints >> 2);

l1 = norm + 1;

j0 = 8;

n0 = npoints>>1;

4-114

Page 142
Image 142
Texas Instruments TMS320C64X manual Y3 = y2 + int npoints L1 = norm + J0 = N0 = npoints1