基于FPGA的FFT算法硬件實(shí)現(xiàn)
2 系統(tǒng)仿真結(jié)果
輸入數(shù)據(jù)為s=1 024×cos(2π×f_in×t),其中f_in=50 M,F(xiàn)s=80 MHz,n=40,t=0:1/Fs:(n-1)/Fs,利用QuartusⅡ軟件對系統(tǒng)在100 MHz的時鐘環(huán)境下進(jìn)行了仿真,將仿真輸出結(jié)果轉(zhuǎn)換成tbl文件并利用Matlab軟件讀取后,得到如圖7所示的頻譜數(shù)據(jù)圖(實(shí)部數(shù)據(jù)部分)。本文引用地址:http://www.ex-cimer.com/article/191332.htm
圖8所示為Maflab自帶FFT函數(shù)對于輸入相同1 024點(diǎn)數(shù)據(jù)的FFT計算結(jié)果(同樣為實(shí)部數(shù)據(jù)部分)。
通過比較可以看到,本設(shè)計的仿真結(jié)果與Matlab的仿真結(jié)果基本一致,可以正確高效地計算出1 024點(diǎn)FFT數(shù)據(jù)。
3 結(jié)束語
本設(shè)計全部由Verilog HDL語言實(shí)現(xiàn),采用自頂向下的設(shè)計方法,完成了一種基于FPGA的1 024點(diǎn)16位FFT算法,共需要5級運(yùn)算,每級需要計算256個蝶形。提出了將蝶形運(yùn)算先進(jìn)行前一級的蝶形加減運(yùn)算,再進(jìn)行本級的與旋轉(zhuǎn)因子復(fù)乘運(yùn)算的結(jié)構(gòu)。由前所述,平均每個蝶形運(yùn)算需要4個時鐘周期,所以理論上完成1 024點(diǎn)FFT的總時鐘周期為N=256×4×5=5 120;假設(shè)使用的時鐘為100MHz,那么將耗時T=5 120×(1/100)=51.2μs,這與仿真結(jié)果51.32μs基本一致。
評論