DSP_radix2
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 |
| - 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+. |