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