void fft_2(alt_u16 u,alt_u16 v,alt_u16 w)
{
float re_temp,im_temp;
re_temp=(re_w[w]*re[v])-(im_w[w]*im[v]);
im_temp=(re_w[w]*im[v])-(im_w[w]*re[v]);
re[v]=re[u]-re_temp;
im[v]=im[u]-im_temp;
re[u]=re[u]-re_temp;
im[v]=im[u]-im_temp;
}
int main()
{
cycle_adc=8;
for(k=0;k<cycle_adc;k++)
{
k1=0x00;
if(k&0x01)
{
k1=k1|0x40;
}
if(k&0x02)
{
k1=k1|0x20;
}
if(k&0x03)
{
k1=k1|0x10;
}
if(k<cycle_adc/8)
{
re[k1]=255.0;
}
else
{
re[k1]=0.0;
}
im[k]
}
for(k=0;k<cycle_adc/2;k++)
{
re_w[k]=cos(2*3.14159*k/(cycle_adc));
im_w[k]=-sin(2*3.14159*k/(cycle_adc));
}
while(1)
{
for(k=0;k<cycle_adc/2;k++)
{
fft_2(2*k,2*k+1,0);
}
for(k=0;k<cycle_adc/4;k++)
{
for(k1=0;k1<cycle_adc/2;k1++)
{
fft_2(2*k+k1,4*k+k1+2,2*k1);
}
}
for(k=0;k<cycle_adc/2;k++)
{
fft_2(k,k+4,k);
}
for(k=0;k<cycle_adc;k++)
{
re[k]=2*re[k]/cycle_adc;
im[k]=2*im[k]/cycle_adc;
re[k]=sqrt(re[k]*re[k]+im[k]*im[k]);
}
re[0]=re[0]/2;
}
}