Texas Instruments TMS320C64X User Manual

Page 140

Advertising
background image

DSP_fft16x16t

4-112

xl0_1 = x_2 − x_l1_2; xl1_1 = x_3 − x_l1_3;

xh20_0 = x_h2_0 + x_l2_0; xh21_0 = x_h2_1 + x_l2_1;

xh20_1 = x_h2_2 + x_l2_2; xh21_1 = x_h2_3 + x_l2_3;

xl20_0 = x_h2_0 − x_l2_0; xl21_0 = x_h2_1 − x_l2_1;

xl20_1 = x_h2_2 − x_l2_2; xl21_1 = x_h2_3 − x_l2_3;

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

/* Derive output pointers using the input pointer ”x” */

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

x0 = x;

x2 = x0;

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

/* When the twiddle factors are not to be reused, j is */

/* incremented by 12, to reflect the fact that 12 half words */

/* are consumed in every iteration. The input data pointer */

/* increments by 4. Note that within a stage, the stride */

/* does not change and hence the offsets for the other three */

/* legs, 0, h2, l1, l2. */

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

j += 12;

x += 4;

predj = (j − fft_jmp);

if (!predj) x += fft_jmp;

if (!predj) j = 0;

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

/* These four partial results can be re−written to show */

/* the underlying DIF structure similar to DSP_radix2 as */

/* follows: */

/* */

/* X(4k) = (x(n)+x(n + N/2)) + (x(n+N/4)+ x(n + 3N/4)) */

/* X(4k+1)= (x(n)−x(n + N/2)) −j(x(n+N/4) − x(n + 3N/4)) */

/* x(4k+2)= (x(n)+x(n + N/2)) − (x(n+N/4)+ x(n + 3N/4)) */

/* X(4k+3)= (x(n)−x(n + N/2)) +j(x(n+N/4) − x(n + 3N/4)) */

/* */

/* which leads to the real and imaginary values as foll: */

/* */

/* y0r = x0r + x2r + x1r + x3r = xh0 + xh20 */

Advertising