1 / 15
文档名称:

基于FPGA的FFT算法报告.doc

格式:doc   页数:15
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

基于FPGA的FFT算法报告.doc

上传人:小猪猪 2012/3/13 文件大小:0 KB

下载得到文件列表

基于FPGA的FFT算法报告.doc

文档介绍

文档介绍:基于VHDL的FFT算法

摘要
本实验主要目的是对输入的信号进行FFT算法,以便研究FFT算法的实现与原理
本实验主要步骤:由单片机430产生一个正弦波信号,送入FPGA(EP2C5T114C8)进行FFT算法,FFT的结果再送入单片机430,最后在12864液晶上显示波形。
硬件组成

FFT算法
FFT(Fast Fourier Transformation),即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。是通过蝶形运算实现的。蝶形算法如下
X=A+WNKB Y=A-WNKB
基本原理的组成
12 864 MSP430 fpga
Data[0..7]
Clk
Data[0..7 ] Sink_dav
Sink_en
Sink_sop
Clk
Sink_dav
Sink_en
Sink_sop

正弦波的生成
此次实验仅以一个固定的正弦波来测试FFT算法的实现,其具体程序如下:
#include <>
#include ""
#include ""
#include ""
#define sink_sop0 P1OUT &=~BIT2
#define sink_sop1 P1OUT |=BIT2
#define inv_i P1OUT |=BIT3
#define sink_dav0 P1OUT &=~BIT0
#define sink_dav1 P1OUT |=BIT0
#define reset0 P1OUT &=~BIT1
#define reset1 P1OUT |=BIT1
#define pi
uchar realout[256];
uchar imagout[256];
uchar realin[256];
uchar line_table[16];
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
BoardConfig(0xbe);
Ini_Lcd(); //初始化液晶
Clear_GDRAM();
BCSCTL2 |=SELS +DIVS_2; //
P1DIR |=BIT4;
P1SEL |=BIT4;
P1DIR |=BIT0 + BIT1 + BIT2 + BIT3;
uint count=0;
uchar k;
uint i,j,z=0;
uchar x_line=0x80;
P2DIR |= 0x00;//realin
P6DIR |= 0x00;//imain
P5DIR |= 0xff;//realout
inv_i;
reset0;
for(j=0;j<256;j++)
{
realin[j]=(uchar)(127*sin(*pi*j)+128);
}
sink_dav1;
while((P1IN & 0x80)==0x80)//sink_ena
{
sink_sop1;
sink_sop0;
for(count=0;count<256;count++)
{
P5OUT=realin[count];
}
while((P1IN & 0x40)==0x40) ; //sop
{
for(i=0;i<256;i++)
{
realout[i]=P2IN;
imagout[i]=P6IN;
}
}
for(j=0;j<256;j++)
{
dataout[j]=(uchar)sqrt(realout[j]^2+imagout[j]^2);//pingfang
}
}
while(z<128)
{
for(k=0;k<16;k++)
{
line_table[k]=dataout[z];
z++;
}
DRAW_Line(line_table,x_line);
x_line++;
}
while(1)
{
}
FFT算法
本次实验是基于256点的FFT算法,FFT算法由FPGA的IP
核生成,其具体程序如下:
library IEEE;
use ;
library fft_lib;
use ;
ENTITY ff