资源简介
使用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.xm
文件 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个文件信息
相关资源
- xilinx_fpga_7系列 Altium library
- Xilinx FPGA高级设计及应用
- Xilinx FPGA的EMIF使用例程
- MP3的verilog硬件实现_完整工程
- Schematic_VCU1525_REVA.pdf
- VC707原理图
- ISE的Block_Ram的设计流程附xilinx block
- dma_performance_demo
- ZYNQ开发全过程概览
- FPGA数字信号处理实现原理及方法-清华
- Xilinx SRIO详解.pptx
- Unityshader——HLSL初级教程
- xapp1052.pdf
- xilinx xc3s50a开发板原理图
- 使用xilinx FPGA实现USB控制的全套资料(
- Xilinx时序约束指南 SDC编写指南
- 基于FPGA的DDS信号发生器设计
- xilinx的fpga+pcie数据采集卡,包括linu
- 基于xilinx Spartan™-3E开发板的SOC设计
- 基于HLS的Tiny_yolo卷积神经网络加速研
- ZYNQ UltraSCALE+ ZCU102 User Guide
- AD导入xilinx FPGA原理图和封装教程
- Xilinx_Zynq-7000 、Artix-7、Kintex-7、Virte
- 1.Xilinx7系列普及讲座之-----Xilinx7系列
- Xilinx ego 1 开发板 中文说明
- Xilinx Spartan-6封装库
- xilinx 的rom ip核使用方法
- 嵌入式系统软硬件协同设计实战指南
- 最新最全的赛灵思xilinx芯片元件库,
- Xilinx Zynq-7000嵌入式系统设计与实现
评论
共有 条评论