DSPF_sp_icfftr2_dif
Special Requirements
Implementation Notes
4-36
x[i*2+1] = itemp;
}
}
}
The follwoing C code is used to perform the final scaling of the IFFT:
/* divide each element of x by n */
divide(float* x, int n)
{
int i;
float inv = 1.0 / n;
for(i=0; i < n; i++)
{
x[2*i]
= inv * x[2*i];
x[2*i+1] = inv * x[2*i+1];
}
}
-
Both input x and coefficient w should be aligned on double-word boundary.
-
x should be padded with 4 words.
-
n should be greater than 8.
-
Loading input x as well as coefficient w in double word.
-
MPY was used to perform an MV. EX. mpy x, 1, y <=> mv x, y
-
Because the data loads are 1 iteration ahead of the coefficent loads,
counter i was copied so that the actual count could live longer for the coef-
ficent loads.
-
2 inner loops are callapsed into one loop.
-
Prolog and epilog are done in parallel with the outermost loop.
-
Since the twiddle table is in bit-reversed order, it turns out that the same
twiddle table will also work for smaller IFFTs.This means that if you need
to do both 512 and 1024 point IFFTs in the same application, you only need
to have the 1024 point twiddle table. The 512 point FFT will use the first
half of the 1024 point twiddle table.
Need help?
Do you have a question about the TMS320C67 DSP Series and is the answer not in the manual?
Questions and answers