Texas Instruments TMS320C64X Security Camera User Manual


 
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 */