Texas Instruments TMS320C67 DSP Series Programmer's Reference Manual page 52

Library
Hide thumbs Also See for TMS320C67 DSP Series:
Table of Contents

Advertisement

Algorithm
sp_ifftSPxSP(N, &x[0], &w[0], y,brev,N/4,0, N)
sp_ifftSPxSP(N/4,&x[0], &w[2*3*N/4],y,brev,rad,0, N)
sp_ifftSPxSP(N/4,&x[2*N/4], &w[2*3*N/4],y,brev,rad,N/4, N)
sp_ifftSPxSP(N/4,&x[2*N/2], &w[2*3*N/4],y,brev,rad,N/2, N)
sp_ifftSPxSP(N/4,&x[2*3*N/4],&w[2*3*N/4],y,brev,rad,3*N/4,N)
As discussed previously, N can be either a power of 4 or 2. If N is a power of
4, then rad = 4, and if N is a power of 2 and not a power of 4, then rad = 2. "rad"
is used to control how many stages of decomposition are performed. It is also
used to determine whether a radix-4 or radix-2 decomposition should be per-
formed at the last stage. Hence when "rad" is set to "N/4" the first stage of the
transform alone is performed and the code exits. To complete the FFT, four
other calls are required to perform N/4 size FFTs.In fact, the ordering of these
4 FFTs amongst themselves does not matter and hence from a cache perspec-
tive, it helps to go through the remaining 4 FFTs in exactly the opposite order
to the first. This is illustrated as follows:
sp_ifftSPxSP(N, &x[0], &w[0], y,brev,N/4,0, N)
sp_ifftSPxSP(N/4,&x[2*3*N/4],&w[2*3*N/4],y,brev,rad,3*N/4,N)
sp_ifftSPxSP(N/4,&x[2*N/2], &w[2*3*N/4],y,brev,rad,N/2, N)
sp_ifftSPxSP(N/4,&x[2*N/4], &w[2*3*N/4],y,brev,rad,N/4, N)
sp_ifftSPxSP(N/4,&x[0], &w[2*3*N/4],y,brev,rad,0, N)
In addition this function can be used to minimize call overhead, by completing
the FFT with one function call invocation as shown below:
sp_ifftSPxSP_asm(N, &x[0], &w[0], y, brev, rad, 0,N)
This is the C equivalent of the assembly code without restrictions. Note that
the assembly code is hand optimized and restrictions may apply.
void DSPF_sp_ifftSPxSP(int n, float ptr_x[], float ptr_w[],
float ptr_y[],
unsigned char brev[], int n_min, int offset, int
n_max)
{
int
i, j, k, l1, l2, h2, predj;
int
tw_offset, stride, fft_jmp;
float x0, x1, x2, x3,x4,x5,x6,x7;
float xt0, yt0, xt1, yt1, xt2, yt2, yt3;
float yt4, yt5, yt6, yt7;
float si1,si2,si3,co1,co2,co3;
float xh0,xh1,xh20,xh21,xl0,xl1,xl20,xl21;
float x_0, x_1, x_l1, x_l1p1, x_h2 , x_h2p1, x_l2, x_l2p1;
float xl0_0, xl1_0, xl0_1, xl1_1;
float xh0_0, xh1_0, xh0_1, xh1_1;
DSPF_sp_ifftSPxSP
DSPLIB Reference
4-27

Hide quick links:

Advertisement

Table of Contents
loading
Need help?

Need help?

Do you have a question about the TMS320C67 DSP Series and is the answer not in the manual?

Questions and answers

Table of Contents