DSP_radix2
4-94
xt = x[2*l] − x[2*i];
x[2*i] = x[2*i] + x[2*l];
yt = x[2*l+1] − x[2*i+1];
x[2*i+1] = x[2*i+1] + x[2*l+1];
x[2*l] = (c*xt + s*yt)>>15;
x[2*l+1] = (c*yt − s*xt)>>15;
}
}
ie = ie<<1;
}
}
Special Requirements
- 2 ≤ nx ≤ 32768 (nx is a power of 2)
- Input x and coefficients w should be in different data sections or memory
spaces to eliminate memory bank hits. If this is not possible, they should
be aligned on different word boundaries to minimize memory bank hits.
- x data is stored in the order real[0], image[0], real[1], ...
- The FFT coefficients (twiddle factors) are generated using the program
tw_radix2 provided in the directory ‘support\fft’.
Implementation Notes
- Bank Conflicts: See Benchmarks.
- Interruptibility: The code is interrupt-tolerant but not interruptible.
- Loads input x and coefficient w as words.
- Both loops j and i0 shown in the C code are placed in the INNERLOOP of
the assembly code.
Benchmarks The performance of this function has not yet been characterized on the C64x+.