繁体中文
设为首页
加入收藏
当前位置:技术文章首页 >> EDA技术 >> 如何用fpga实现fft算法(fft算法的FPGA设计)

如何用fpga实现fft算法(fft算法的FPGA设计) (3)

2008-05-09 22:47:47  作者:  来源:互联网  浏览次数:462  文字大小:【】【】【
简介:有限长序列的DFT(离散傅里叶变换)特点是能够将频 ...
计算4个数据地址,地址计算结果将交替存人寄存器组a和b中。这种控制方式类似于Pingpong RAM的控制方式,适用于流水线工作时序中,可以较大地提高系统的工作效率。地址寄存器组a(或b)中的第1个地址在用于保存完本次蝶形运算数据的第1个计算结果数据之后的,将被立即写入下一个蝶形第1个数据读取地址,可见这种流水线方式具有非常高的工作效率。

       

  图3中,ROM_addr为分别计算3个旋转因子的地址,M1、M2、M3分别为每个蝶形单元的3次复乘。蝶形运算单元对4个输入数据A/B/C/D进行计算,输出结果4个数据为A′/B′/C′/D′。可以看出,在这16个时钟单元中,共有4个蝶形运算同时处于流水线工作中,因此每个蝶形运算平均只需4个时钟周期就可以完成。

  需要指出的是,在所有蝶形运算结束后,即第5级运算完成后,所存储在RAM中的数据是四进制倒序的,为了能在输出端得到正确的1024点频域数据,在输出时必须进行四进制倒序输出,输出的数据可以直接用于后续的数据分析等工作。

  2.4 FFT算法仿真结果

  在QuartusⅡ软件中利用simulator tool工具在100 MHz的时钟环境下对系统进行了仿真。输入时域数据为一个矩形窄脉冲信号,完成整个FFT运算的耗时仅为51.28μs。仿真得到的矢量波形文件的部分结果如图4所示。

        

  将仿真输出结果转换成tbl文件并利用MATLAB软件读取后,得到如图5所示的频谱数据图(实部数据部分)。

        
 
  图6所示为MATLAB自带FFT()函数对于输入相同1 024点数据的FFT计算结果(同样为实部数据部分)。
        
       

  通过对比可以看到,本设计的仿真结果与MAT-LAB计算的结果基本一致。只在较小值受到了有限字长效应的影响。就总体而言,本设计能够正确而高效地计算输入的1 024点数据的频域数据值,数据能够有效地用于实际的频谱分析过程中。

  3 结束语

  1024点基4-FFT算法共需要5级运算,每级需要计算256个蝶形,由前所述,平均每个蝶形运算需要4个时钟周期,所以理论上完成1 024点FFT的总时钟周期为N=256×4×5=5120;假设使用的时钟为100MHz,那么将总共耗时T=5120×(1/100)=51.2μs,这与仿真结果51.28μs基本一致。将所设计的FFT程序模块在Altera公司的自带DSP单元的stratix系列FPGA上进行综合后,除了乘法器以及存储单元外,所占据资源仅为1 619个逻辑单元。因此,本设计方案能够在FPGA有限的资源下实现较高效率的FFT算法。

[1] [2] [3]

责任编辑:cjb


相关文章
 

最新文章

更多

· 基于FPGA开发的便携式远...
· FPGA设计的数据无阻塞交...
· 基于ARM的嵌入式系统中从...
· 光电智能探测器SOC的设计
· 基于FPGA设计的多路可控...
· 基于单片机和CAN总线的能...
· 片上系统(SOC)设计流程
· 基于FPGA设计的FFT处理器
· 基于AVR单片机和PDIUSBD...
· 高速AD转换器ADS8364的中...

推荐文章

更多

· 基于FPGA开发的便携式远...
· FPGA设计的数据无阻塞交...
· 基于ARM的嵌入式系统中从...
· 光电智能探测器SOC的设计
· 基于FPGA设计的多路可控...
· 基于单片机和CAN总线的能...
· 片上系统(SOC)设计流程
· 基于FPGA设计的FFT处理器
· 基于AVR单片机和PDIUSBD...
· 高速AD转换器ADS8364的中...
. 如何用fpga实现fft算法(fft算法的FPGA设计)

热点文章

更多

. 如何用fpga实现fft算法(fft算法的FPGA设计)