资源简介

使用xilinx hls编写的8点fft,稍加扩展就可变为任意基二点fft,代码简洁有注释

资源截图

代码片段和文件信息

#include “fft.h“

/*******computing the cos twiddles*********/
float cos_lookup(int n){
float cos_table[FFT_SIZE/4+1]={
#include “cos_qtable.txt“
};
float tmp;
int idx;
int sign;
if(n<=FFT_SIZE/4){
idx=n;
sign=0;
}
else{
idx=FFT_SIZE/4-n%(FFT_SIZE/4);
sign=1;
}
return sign? (float)-cos_table[idx]:(float)cos_table[idx];
}
/*******computing the sin twiddles*********/
float sin_lookup(int n){
float sin_table[FFT_SIZE/4+1]={
#include “sin_qtable.txt“
};
float tmp;
int idx;
if(n<=FFT_SIZE/4){
idx=n;
}
else{
idx=FFT_SIZE/4-n%(FFT_SIZE/4);
}
return (float)sin_table[idx];
}
/*************computing the twiddles****************/
compx twiddle_fft(int n)
{
compx tmp;
tmp.real=cos_lookup(n);
tmp.imag=-sin_lookup(n);
return tmp;
}

/**************complex multiply********************/
compx multiply(compx twiddlecompx data)
{
compx tmp;
float abcdefg;
a=twiddle.real;
b=twiddle.imag;
c=data.real;
d=data.imag;

tmp.real=a*c-b*d;
tmp.imag=a*d+b*c;

return tmp;
}
/**************complex addition*******************/
compx plus(compx acompx b){
compx tmp;
tmp.real=a.real+b.real;
tmp.imag=a.imag+b.imag;
return tmp;
}
/**************complex subtraction****************/
compx minus(compx acompx b){
compx tmp;
tmp.real=a.real-b.real;
tmp.imag=a.imag-b.imag;
return tmp;
}

void fft(int xin[FFT_SIZE]compx xout[FFT_SIZE])
{
int kk;
int k;

compx xout1[FFT_SIZE];
compx xout2[FFT_SIZE];
compx twd;
compx tmp;

//变换地址
int m;
int tmpl;
for(kk=0k=0;k if(k tmpl=xin[kk];
xin[kk]=xin[k];
xin[k]=tmpl;
}
m = FFT_SIZE/2;
while(m<(kk+1)){
kk = kk-m;
m = m/2;
}
kk = kk+m;
}

//第一阶段
for(k=0;k xout1[k].real=xin[k]+xin[k+1];
xout1[k].imag=0.0;
xout1[k+1].real=xin[k]-xin[k+1];
xout1[k+1].imag=0.0;
}
for(k=0;k printf(“%f~~~%f\n“xout1[k].realxout1[k].imag);
}

//第二阶段
for(kk=0;kk for(k=0;k<2;k++){
twd=twiddle_fft(k*FFT_SIZE/4);
tmp=multiply(twdxout1[k+kk+2]);
xout2[k+kk]=plus(xout1[k+kk]tmp);
xout2[k+kk+2]=minus(xout1[k+kk]tmp);
}
}
//第三阶段
for(kk=0;kk for(k=0;k<4;k++){
twd=twiddle_fft(k*FFT_SIZE/8);
tmp=multiply(twdxout2[k+kk+4]);
xout[k+kk]=plus(xout2[k+kk]tmp);
xout[k+kk+4]=minus(xout2[k+kk]tmp);
}
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-03-08 11:15  fft\
     目录           0  2014-03-08 11:15  fft\fft_prj\
     目录           0  2014-03-08 11:15  fft\fft_prj\.apc\
     目录           0  2014-03-08 11:15  fft\fft_prj\.apc\.src\
     目录           0  2014-03-08 11:15  fft\fft_prj\.apc\.tb\
     文件         667  2014-03-13 04:04  fft\fft_prj\.apc\autopilot.apfmapping
     文件       17888  2014-03-13 04:35  fft\fft_prj\.cproject
     文件        4251  2014-03-13 04:04  fft\fft_prj\.project
     目录           0  2014-03-08 11:15  fft\fft_prj\.settings\
     文件        1952  2014-03-13 02:53  fft\fft_prj\.settings\fft_prj.Debug.launch
     文件        1955  2014-03-13 02:53  fft\fft_prj\.settings\fft_prj.Release.launch
     文件         944  2014-03-13 04:35  fft\fft_prj\.vivado_hls_log_all.xml
     文件          33  2014-03-11 16:52  fft\fft_prj\cos_qtable.txt
     文件        2498  2014-03-13 04:33  fft\fft_prj\fft.c
     文件         239  2014-03-13 04:34  fft\fft_prj\fft.h
     文件         513  2014-03-13 04:29  fft\fft_prj\fft_test.c
     文件          15  2014-03-11 17:46  fft\fft_prj\in.dat
     文件          33  2014-03-11 16:53  fft\fft_prj\sin_qtable.txt
     目录           0  2014-03-08 11:15  fft\fft_prj\solution1\
     目录           0  2014-03-13 04:35  fft\fft_prj\solution1\.autopilot\
     文件          32  2014-03-13 04:35  fft\fft_prj\solution1\.autopilot\.automg_exit
     文件          22  2014-03-13 04:35  fft\fft_prj\solution1\.autopilot\.autopilot_exit
     目录           0  2014-03-13 04:35  fft\fft_prj\solution1\.autopilot\db\
     文件       19271  2014-03-13 04:35  fft\fft_prj\solution1\.autopilot\db\a.export.ll
     文件        7680  2013-09-04 04:11  fft\fft_prj\solution1\.autopilot\db\a.g
     文件        7680  2013-09-04 04:11  fft\fft_prj\solution1\.autopilot\db\a.g.0
     文件        9716  2014-03-13 04:35  fft\fft_prj\solution1\.autopilot\db\a.g.0.bc
     文件        9964  2014-03-13 04:35  fft\fft_prj\solution1\.autopilot\db\a.g.1.bc
     文件       61700  2014-03-13 04:35  fft\fft_prj\solution1\.autopilot\db\a.g.1.ll
     文件       10016  2014-03-13 04:35  fft\fft_prj\solution1\.autopilot\db\a.g.2.bc
     文件        9632  2014-03-13 04:35  fft\fft_prj\solution1\.autopilot\db\a.g.2.prechk.bc
............此处省略296个文件信息

评论

共有 条评论