资源简介
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 下对文件的操作
相关资源
- dsp2812上128点FFTc程序以及其CMD文件
- 用FFT对信号进行频谱分析
- FFT混合基 文章 FFT混合基 文章
- labview FFT变换(频域分析).vi
- 基于Altera MegaCore实现FFT的方法
- 基于FPGA的快速并行FFT及应用
- 基于FPGA的移位寄存器流水线结构FFT处
- 在FPGA上优化实现复数浮点计算
- 基于十项余弦窗插值FFT的谐波相量算
- 基于FFT算法的电网谐波检测方法
- 基4-浮点-时域-FFT
- 用FFT进行频谱分析
- Altera最新FFT ip核使用手册
- 单片机与DSP中的基于DSP的FFT算法在无
- 128点的基2-FFT算法
- ffmpeg转码为hls代码
- FFT并行MPI实现
- FFT(快速傅里叶变换)的FPGA实现
- vivado HLS图像处理了解
- FFT快速傅立叶变换)图文并茂
- fftw-3.3.4.tar.gz安装包
- NUFFT算法及说明
- H5视频播放工具hls.js
- XILINX官方HLS视频课程学习总结 .pdf
- STM32F103通过DMA传输进行快速FFT.rar
- fftw-3.2.1.rar
- myplot.rar
- HLSL基础教程完整篇
- 数字信号处理-快速傅里叶变换FFT实验
- 64点FFT变换
评论
共有 条评论