DSP_fft16x16t

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

*/

4-112

Page 140
Image 140
Texas Instruments TMS320C64X manual 112