新聞中心

EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的FFT算法硬件實現

基于FPGA的FFT算法硬件實現

作者: 時間:2011-03-06 來源:網絡 收藏

可以看出,圖3減少了一個旋轉因子復乘模塊,不但節(jié)約了一次乘法運算時間,也省略了第一級旋轉因子,更好地利用了硬件結構。
首先,在QuartusⅡ環(huán)境中對4點蝶形運算時序仿真,采用流水線設計,連續(xù)輸入連續(xù)輸出,仿真結果如圖4所示。

本文引用地址:http://www.2s4d.com/article/191332.htm


由圖4可以看出,輸出比輸入延時6個時鐘,這在系統(tǒng)的控制核心地址產生單元的設計中需要考慮到。
1.3 地址產生與時序控制
對于1 024.點基4 運算,需要5級蝶形運算,每一級運算都要有寫地址和讀地址,根據同址運算的特點可知,當前的寫地址即是上一級蝶形運算的讀地址。因此完成運算需要設計6級RAM地址。其中第1級的寫地址即是數據輸入的順序地址,不予討論。最后一級讀地址為數據正序輸出所需的地址。其余4級為1 024點數據對應的FFT蝶形運算。
第一級讀取節(jié)點地址的順序應該是:(0,256,512.768),(1,257,513,769),……,(255,511.767,1 023)。易觀察其讀地址的規(guī)律如下:設讀取次序的二進制編碼為bit[9:0];則讀地址的二進制編碼為{bit[1:O],bit[9:2]},并且依次可以推出第2、3、4級的讀地址二進制編碼分別為{bit[9:8],bit[1:0],bit[7:2]},{bit[9:6],bit[1:0],bit[5:2]}、{bit[9:4],bit[1:0],bit[3:2]},而最后一級輸出數據的地址二進制編碼則為:{bit[1:0],bit[3:2],bit[5:4],bit[7:6],bit[9:8]}。圖5給出了第1級讀地址和第2級讀地址的部分數據,也可以看出第2級的寫地址即是第1級的讀地址。


圖1中的地址產生單元作為系統(tǒng)的控制核心,不僅要生成每一級的RAM讀寫地址,還要產生RAM寫使能信號、輸出有效信號以及4點蝶形運算單元和旋轉因子產生單元的啟動信號,由于時序電路還需要考慮器件延時,例如上文提到的4點蝶形運算輸出比輸入延時6個時鐘,以及RAM存取數據輸出比輸入延時1個時鐘,這些都需要在控制核心中考慮到。
1.4 旋轉因子產生
對于1 024點FFT蝶形運算,需要1 024個旋轉角度(即2π的1 024等份),其中第一級不需要復乘運算,第6級只是將數據進行整序沒有運算單元,其他4級都需要旋轉因子。本設計采用將旋轉因子預置于ROM中,通過查找表方法得出每一級運算的所需的旋轉因子。根據旋轉因子的可約性,后幾級運算所需的旋轉因子都可以在第一級運算的旋轉因子中找到,因此無需另外存儲。旋轉因子在ROM中的存儲規(guī)律是:旋轉因子相位角p處存儲旋轉因子W=*****。定義一個10 bit的計數器count[9:0],則第2、3、4、5級ROM的相位角規(guī)律按照Verilog語法可表示為

為了節(jié)省資源,本設計只在ROM單元中存儲了前256個旋轉因子數據,即第一象限因子其余象限的因子可通過象限轉換后得到,這樣就大大節(jié)省了存儲單元的硬件資源。圖6為旋轉因子產生單元在QuartusⅡ環(huán)境中仿真結果的部分數據。



關鍵詞: FPGA FFT 算法 硬件實現

評論


相關推薦

技術專區(qū)

關閉