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