|
本帖最后由 fpgaw 于 2010-7-15 11:33 编辑
下面这段程序是对输入的数组进行时域里的倒序(DIT),但是不是完整的程序,我不明白数组在VHDL语言中的应用,麻烦高手能将程序完善一下!
procedure rec_fft_dit2(a[], n, x[], is)
// complex a[0..n-1] input
// complex x[0..n-1] result
{
complex b[0..n/2-1], c[0..n/2-1] // workspace
complex s[0..n/2-1], t[0..n/2-1] // workspace
if n == 1 then // end of recursion
{
x[0] := a[0]
return
}
nh := n/2
for k:=0 to nh-1 // copy to workspace
{
s[k] := a[2*k] // even indexed elements
t[k] := a[2*k+1] // odd indexed elements
}
// recursion: call two half-length FFTs:
rec_fft_dit2(s[],nh,b[],is)
rec_fft_dit2(t[],nh,c[],is)
fourier_shift(c[],nh,is*1/2)
for k:=0 to nh-1 // copy back from workspace
{
x[k] := b[k] + c[k];
x[k+nh] := b[k] - c[k];
}
} |
|