资源简介
FFT算法的HLS实现,经过好层次综合已经生成电路,c simulation通过,并且可以联合仿真。
代码片段和文件信息
#include “TTF.h“
//-------------------------computing the cos twiddles--------------------
float cos_lookup(int n)
{
float cos_table[4] = { #include “cos_qtable.txt“ };
return cos_table;
}
//-------------------------computing the sin twiddles----------------------
float sin_lookup(int n)
{
float sin_table[4] = { #include “sin_atable.txt“ };
return sin_table[n];
}
//-------------------------computing the twiddles------------------------
compx twiddle_fft(int n)
{
commpx tmp;
tmp.real = cos_lookup(n);
tmp.omag = -sin_lookup(n);
return tmp;
}
//----------------------complex multiply-------------------------------------
compx multiply(compx twiddlecompx data)
{
compx tmp;
float a;
float b;
float c;
float d;
float e;
float f;
float g;
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(complx 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;
//address tranlsation
int m;
int tmpl;
AddTra_Loop:for(kk = 0 k = 0 ; k < FFT_SIZE - 1 ; k++)
{
if(k < kk)
{
tmpl = xin[kk];
xin[kk] = xin[];
xin[k] = tmpl;
}
m = FFT_SIZE / 2;
while(m < (kk+1))
{
kk = kk - m;
m = m/2;
}
kk = kk + m;
}
//stage 1
Stage1_Loop:for(k = 0 ; k < FFT_SIZE ; k = k + 2)
{
xou1[k].real = sin[k] + xin[k+1];
xout1[k].imag = 0.0;
xout1[k+1].real = xin[k] - xin[k+1];
xout1[k+1].imag = 0.0;
}
//stage2
Stage2_Outer_Lop:for(kk = 0 ; kk < FFT_SIZE ; kk = kk+ 4)
{
for(k = 0 ; k < 2 ; k+)
{
twd = twiddle_fft(k*FFT_SIZE/4);
tmp = multiply(twdxout1[k+kk+2]);
xout1[k+kk] = plus(xout1[k+kk]tmp);
xout2[k+kk+2] = minus(xout1[k+kk]tmp);
}
}
//stage3
Stage3_Outer_Lop:for(kk = 0 ; kk < FFT_SIZE ; kk = kk+ 8)
{
for(k = 0 ; k < 4 ; k+)
{
twd = twiddle_fft(k*FFT_SIZE/8);
tmp = multiply(twdxout2[k+kk+4]);
xout1[k+kk] = plus(xout2[k+kk]tmp);
xout2[k+kk+2] = minus(xout2[k+kk]tmp);
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2669 2016-03-17 15:06 FFT\FFT.c
文件 236 2016-03-16 16:49 FFT\FFT.h
文件 469 2016-03-17 19:41 FFT\TB_FFT.c
文件 45 2016-03-16 16:55 FFT\cos_qtable.txt
文件 16 2016-03-17 19:42 FFT\in.dat
文件 44 2016-03-16 16:55 FFT\sin_qtable.txt
目录 0 2016-03-17 19:41 FFT\
- 上一篇:调测风塔数据用超声波软件
- 下一篇:windows cmd 下对文件的操作
相关资源
- 基于加汉宁窗的FFT高精度谐波检测改
- FFT Verilog代码
- 基于4的FFT变换
- 64点的FFT基8算法的蝶形图
- 数字信号处理大作业——编写FFT程序
- FFT_XILINX实现
- 细化FFT的短时傅里叶变换方法
- labview-fft幅值和相位
- 基4—FFT程序代码
- 基于fpga FFT处理
- 89C51FFT蝶形算法
- jmeter压力测试HLS流的脚本
- 1024点FFT快速傅立叶变换,16位数据输
- 3780点FFT实现
- stm32DSP 库FFT
- LABVIEW中利用FFT求波形频率
- 基于FPGA的FFT算法设计与实现
- 5529ADC采样进行fft计算
- msp430f5529计算fft程序,可用
- fft算法1024
- DSP 基2 FFT算法的详细代码带注释本人
- uCOS-II_DDS_FFT
- 28点fft.rar
- 基于FPGA的fft变换
- LED音乐频谱
- FFT算法的DSP实现.rar
- DSP算法实验大作业
- DSP 基2 FFT 算法详细代码带注释
- FFT滤波处理
- 2D FFT基于CUDA的并行处理
评论
共有 条评论