基于Altera MegaCore實現(xiàn)FFT的方法
0 引 言
本文引用地址:http://www.ex-cimer.com/article/189661.htmFFT(快速傅里葉變換)是計算離散傅里葉變換(DFT)的高效算法,它把計算N 點DFT 的乘法運算量從N2 次下降到N/2log2N 次。FFT 的出現(xiàn)對數(shù)字信號處理的發(fā)展起著至關(guān)重要的作用,它可應(yīng)用于傅里葉變換所能涉及的任何領(lǐng)域,為廣泛應(yīng)用數(shù)學方法處理數(shù)字信號開辟了新局面[ 1 ] 。
傳統(tǒng)的FFT 實現(xiàn)方法是通過軟件(軟件編程)和硬件(專用芯片ASIC)這兩種方法來實現(xiàn),而近年來,F(xiàn)PGA 發(fā)展十分迅速,這給FFT 設(shè)計提供了一個新思路[2]。為了更好地滿足設(shè)計人員的需要,各大公司相繼推出了I P 模塊,本文提出了一種采用Altera 公司的IP Core FFT MegaCore來實現(xiàn)FFT 的簡單方法。
1 FFT MegaCore核的性能
Altera 公司的FFT MegaCore 是一個高性能、高參數(shù)化的快速傅里葉變換處理器,可以高效的完成FFT 和IFFT 運算,支持的器件系列包括Stratix Ⅱ、StratixGX、StratixⅡGX、Stratix、Cyclone、CycloneⅡ以及CycloneⅢ等,采用基2/4頻域抽取(DIF)FFT算法,運算長度從64 到16384,使用嵌入式內(nèi)存,系統(tǒng)最大時鐘頻率大于300MHz。FFT 處理器可以設(shè)置兩種不同的引擎結(jié)構(gòu):四輸出和單輸出,結(jié)構(gòu)圖如圖1 和圖2 所示[3]。
為了增加F F T 兆核函數(shù)的總吞吐量,也可以在一個FFT 兆核函數(shù)變量中使用多個并行引擎。復(fù)取樣數(shù)據(jù)X[k,m]從內(nèi)部存儲器并行讀出并由變換開關(guān)(SW)重新排序,排序后的取樣數(shù)據(jù)由基4 處理器處理并得到復(fù)數(shù)輸出G [ k ,m],由于基4 按頻率抽選(DIF)分解方法固有的數(shù)字特點,在蝶形處理器[ 4 ]輸出上僅需要3 個復(fù)數(shù)乘法器完成3 次乘旋轉(zhuǎn)因子( 有一個因子為1 ,不需要乘) 計算。這種實現(xiàn)結(jié)構(gòu)在一個單時鐘周期內(nèi)計算所有四個基4 蝶形復(fù)數(shù)輸出。同時,為了辨別取樣數(shù)據(jù)的最大動態(tài)范圍,四個輸出由塊浮點單元(BFPU)并行估計,丟棄適當?shù)淖畹臀?LSB),在寫入內(nèi)部存儲器之前對復(fù)數(shù)值進行四舍五入并行重新排序。
若要求轉(zhuǎn)換時間盡量小,四輸出是最佳選擇;若要求資源盡量少,單輸出比較合適。FFT 處理器支持3 種I/O 數(shù)據(jù)流結(jié)構(gòu):連續(xù)型、緩沖突發(fā)型、突發(fā)型。連續(xù)型允許在處理過程中連續(xù)輸入數(shù)據(jù);緩沖突發(fā)型與連續(xù)型相比,占用內(nèi)存資源較小,但這是以減少平均吞吐量為代價的;突發(fā)型與緩沖突發(fā)型類似,但占用內(nèi)存資源更少,也是以減少平均吞吐量為代價的。
圖1 FFT處理器四輸出引擎結(jié)構(gòu)
圖2 FFT處理器單輸出引擎結(jié)構(gòu)
2 整體方案
整體方案設(shè)計框圖如圖3 所示。輸入緩沖器和輸出緩沖器分別存儲預(yù)處理數(shù)據(jù)和F F T 變換結(jié)果,F(xiàn) F T 運算器負責F F T 運算;控制器為輸入緩沖器和輸出緩沖器提供讀寫地址和控制運算時序及緩沖器的讀寫操作。下面重點介紹FFT 運算器的實現(xiàn)。
圖3 整體方案設(shè)計框圖
評論