基於FPGA流水線結構並行FFT的設計與實現

2021-01-10 電子產品世界

離散傅立葉變換DFT在通信、控制、信號處理、圖像處理、生物信息學、計算物理、應用數學等領域中有著廣泛的應用。FFT算法是作為DFT快速算法提出的,它將長序列的DFT分解為短序列的DFT,大大減少了運算量。FFT的FPGA實現同時具有軟體編程的靈活性和ASIC電路的快速性等優點,成為快速實時實現FFT的一種重要手段。文章意在設計一種高速率高吞吐率的FFT處理器,以滿足實時處理要求。

本文引用地址:http://www.eepw.com.cn/article/201610/308308.htm

1 數學模型

FFT的基本思想是利用旋轉因子的周期性、對稱性和可約性將一個長度為N的序列的DFT逐次分解為較短的DFT來計算,而總的運算次數比直接DFT運算要少得多,達到提高速度的目的。根據旋轉因子的周期性、對稱性和可約性,我們可以得到如式(1)的一系列有用結果。

2 結構說明

2.1 流水線結構

硬體結構實現FFT的常用形式有4種:遞歸結構,流水線結構,並行迭代結構和全並行結構。設計採用流水線結構,流水線結構一般在FFT實現的每一級均採用一個運算單元,前一級算結果直接用於下一級運算而無需等到本級運算全部完成,因此,可提高運算速度。遞歸結構的運算的時間較長,並行迭代結構對數據存取帶寬要求很高,全並行結構資源消耗過大,均不適用。

2.2 並行處理

FFT作為時域和頻域轉換的基本運算,是數字頻譜分析的必要前提,超級的運算能力在雷達處理、觀測、跟蹤、定時定位處理、高速圖像處理、保密無線通訊和數字通信、濾波等的應用上極為強烈,而實時系統對FFT的運算速度要求更高。提高FFT速度的一種有效解決方法是並行運算,如採用多個蝶形運算單元並行處理。

綜上,設計選取流水結構,4路並行處理結構。

3 硬體設計

3.1 邏輯設計

FFT邏輯框架如圖1,為了構造高速率高吞吐量的FFT,設計4路並行輸入輸出,採用基4與基2混合FFT,FFT512採用基4蝶形算法,其餘則採用基2蝶形算法。

流水結構的FFT處理器的基本結構如圖2所示。實際設計由3個部分組成:運算單元、數據交換單元和重排單元。

運算單元完成蝶形運算,是處理器的核心,其運算速度直接決定整個FFT處理器的速度。由於4組輸入數據同時進入蝶形運算,所以處理速度為串行的4倍。其中,每個蝶形單元均採用流水線技術設計。運算單元啟動後,每個周期處理4組數據,完成4輸入4輸出的FFT。

數據交換單元是處理器的關鍵,實現對前一級蝶形運算單元輸出數據的交換,以滿足下一級蝶形運算的配對需求。實現方法為每一級的輸入均採用順序輸入,內部用FIFO緩存數據,按照逆序形式配對數據,等待數據到來,將加法結果輸出,減法結果存至FIFO中,待加法結果輸出完畢,繼續輸出減法結果,如此輸出結果即為順序輸出。

數據重排單元負責對最終計算結果進行重新排序,以實現自然序數輸出。512點基4框架圖如圖3所示,在512基4運算完成後,輸出數據的順序並不是所需順序,需要進行調整,由輸入數據與輸入數據的地址特點發現,倒序RAM的讀地址即完成順序輸出。

3.2 時序設計

流水示意圖如圖4所示,詳細說明如下:

FFT64模塊的5級流水:第1級,前64組輸入數據的實部、虛部均寄存在FIFO中,當第65組數據到來時,與FIFO中寄存的第一組數據做蝶形運算,將相減的結果繼續存在FIFO中待用,相加運算將在第二級進行;第2級,前64個周期,做蝶形加法,結果記為add,第65個周期起,從FIFO中讀數給add;第3級,前64個周期,add賦給第一級緩存寄存器,第65個周期起,把add賦給乘法器的輸入端;第4級,前64個周期,把第一級緩存寄存器賦值給第二級緩存寄存器,第65個周期起,做乘法運算;第5級,前64個周期,把第二級緩存寄存器的值賦給輸出端,第65個周期起,把乘法器輸出累加的結果賦給輸出端;

FFT512模塊的6級流水:第1級,當輸入有效信號拉高時,將第一組輸入數據放入第一級緩存器中,寄存第二至四組數據,待接乘法器輸入端。同時,從rom中讀取旋轉因子;第2級,第一路緩存至第二級緩存中,其餘三路做乘法運算;第3級,第一路緩存至第三級緩存中,其餘三路做複數乘法的加法運算;第4級,四路數據均做緩存;第5級,做如圖3中的第一個蝶形運算。其中,乘以-j運算可以用顛倒相加來完成,如此可以節省乘法器資源;第6級,做如圖3中的第二個蝶形運算,同時將輸出有效信號拉高。

FFT32、FFT16、FFT8、FFT4、FFT2、FFT1與FFT_64流水原理一致,只是控制位數不同,其分別為32、16、8、4、2、1。

4 驗證設計

Testbench是一種驗證手段,通常包含3個部分,激勵生成、待測設計、輸出校驗。針對設計搭建的testbench如圖5所示,從文件中讀取向量i_data_real、i_data_imag,經過FFT處理得到結果o_data_relal、o_data_imag,並根據end信號將向量寫入相應文檔中,與正確結果進行比對。

5 仿真結果

ISE仿真波形如圖6所示,輸出文件經與MATLAB對比驗證正確。圖(1)為整體仿真波形,輸出有效信號拉高后,數據連續輸出。圖(2)為FFT 512模塊局部仿真波形,輸入有效信號拉高后,第6個周期輸出有效,與分析的流水級數相吻合。

6 綜合結果

綜合後得到資源利用情況如表1,我們發現,並行處理帶來面積的增大,如何在實際問題中平衡速度與面積尤為重要。

7 結束語

文章用FPGA實現了512點FFT處理器,採用Verilog硬體描述語言進行RTL級描述,並完成綜合、布局布線。經過ISE仿真,結果與MATLAB仿真輸出結果吻合。處理器先採用時域基2蝶形算法,後採用時域基4蝶形算法,並行處理4個蝶形運算單元,並同時採用流水線結構,大幅度提高了處理器速度,可進行實時FFT運算。在設計中用FIFO存儲中間數據,並將旋轉因子固定為乘法器IP的常數係數,以進一步提高處理器的速度。因為採用並行結構,所以FPGA硬體資源消耗較多,系統功耗也相應增大,如何根據系統實際需求找到速度與資源的平衡至關重要。


相關焦點

  • 基於FPGA IP核的FFT實現
    目前現有的文獻大多致力於研究利用FFT算法做有關信號處理、參數估計、F+FT蝶形運算單元與地址單元設計、不同算法的FFT實現以及FFT模型優化等方面。而FPGA廠商Altera公司和Xilinx公司都研製了FFT IP核,性能非常優越。在FFT的硬體實現中,需要考慮的不僅僅是算法運算量,更重要的是算法的複雜性、規整性和模塊化,而有關利用FFT IP核實現FFT算法卻涉及不多。
  • 基於FPGA的移位寄存器流水線結構FFT處理器設計與實現
    從上面的算法結構分析中知道,由於後級的DFT運算點數是前一級的一半,所以後一級的開關轉換周期也是前一級的一半,基於這種關係,可以使用一個8位計數器的每一位狀態來對各級開關進行控制。最高位控制第一級,同時由於上一級數據進入下一級需要一個時鐘,所以下一級的開關轉換時刻要比上一級延遲一個時鐘周期。
  • 用FPGA實現FFT算法(圖)
    快速傅立葉變換(fast fourier transformation,簡稱fft)使dft運算效率提高1~2個數量級。其原因是當n較大時,對dft進行了基4和基2分解運算。fft算法除了必需的數據存儲器ram和旋轉因子rom外,仍需較複雜的運算和控制電路單元,即使現在,實現長點數的fft仍然是很困難。
  • 基於FPGA的結構光圖像中心線提取
    編者按:在線結構光視覺三維測量系統中,為了實現對結構光圖像線條紋中心的實時高精度提取,本文採用了極值法、閾值法和灰度重心法相結合的中心線提取方法。利用現場可編程門陣列器件(FPGA)的流水線技術以及並行技術的硬體設計來完成運算,保證了光條紋中心點的實時準確提取。
  • 基於FPGA的高速流水線FFT算法實現
    與CPLD(複雜可編程邏輯器件)相比,FPGA屬寄存器豐富型結構,更加適合於完成時序邏輯控制。因此,FPGA為高速FFT算法的實現提供了一個很好的平臺。  1 基4-FFT算法基本原理  在FFT各類算法中,基2-FFT算法是最簡單的一種,但其運算量與基4-FFT算法相比則大得多,分裂基算法綜合了基4和基2算法的特點,雖然具有最少的復乘運算量,但其L蝶形運算控制的複雜性也限制了其在硬體上的實現,因此,本設計採用了基4-FFT算法結構。
  • 基於FPGA的高速流水線浮點乘法器設計與實現
    同時由於基於IEEE754 標準的浮點運算具 有動態範圍大,可實現高精度,運算規律較定點運算更為簡捷等特點,浮點運算單元的設計 研究已獲得廣泛的重視。本文介紹了 32 位浮點乘法器的設計,採用了基4 布思算法,改進的4:2 壓縮器及布思 編碼算法,並結合FPGA自身特點,使用流水線設計技術,在實現高速浮點乘法的同時,也 使是系統具有了高穩定性、規則的結構、易於FPGA 實現及ASIC 的HardCopy 等特點。
  • 基於FPGA的可配置FFT_IFFT處理器的設計與實現
    2 可配置FFT/IFFT 處理器設計2.1 FFT/IFFT 處理器整體結構可配置FFT/IFFT 處理器整體結構如圖1 所示。圖中, 基4 蝶形單元主要完成輸入的4 路並行計算。本文設計實現了一種用於P2P移動無線通信手持終端產品,採用單碟形4路並行結構,兼容802.11g協議,可配置FFT_IFFT處理器,在處理速度、實現面積、功耗方面均滿足802.11g系統及手持移動無線通信終端的要求。2.2 FFT/IFFT可配置方案由基4算法分析可知,要分別完成1 024、256、64點的FFT計算,需要的迭代級數分別為5、4、3級。
  • 基於FPGA高精度浮點運算器的FFT設計與仿真
    摘要 基於IEEE浮點表示格式及FFT算法,提出一種基2FFT的FPGA方法,完成了基於FPGA高精度浮點運算器的FFT的設計。利用VHDL語言描述了蝶形運算過程及地址產生單元,其仿真波形基本能正確的表示輸出結果。
  • 基於FPGA的實時中值濾波器硬體實現
    在許多實際應用場合,如高清視頻監控、X光圖像的降噪等,需要快速且實時地進行中值濾波,軟體實現達不到實時處理的要求,因此選用硬體實現。 在硬體實現上,文獻[1]、[2]等採用行延遲的方法形成鄰域數據,以實現3×3的中值濾波。文獻[7]為了提高紅外成像跟蹤器設計了大窗口的中值濾波器。
  • 基於FPGA的24點離散傅立葉變換結構設計
    摘要 基於Good—Thomas映射算法和ISE快速傅立葉變換IP核,設計了一種易於FPGA實現的24點離散傅立葉變換,所設計的24點DFT模塊採用流水線結構,主要由3個8點FFT模塊和1個3點DFT模塊級聯而成,並且兩級運算之間不需要旋轉因子,整個DFT
  • 基於DSP和FPGA的機器人聲控系統設計與實現
    2 系統硬體總體設計 系統的硬體功能是實現語音指令的採集和步進電機的驅動控制,為系統軟體提供開發和調試平臺。如圖1所示。 系統硬體分為語音信號的採集和播放,基於dsp的語音識別,fpga動作指令控制、步進電機及其驅動、dsp外接快閃記憶體晶片,jtag口仿真調試和鍵盤控制幾個部分。
  • 基於FPGA的FFT算法硬體實現
    在高速數位訊號處理中,FFT的處理速度往往是整個系統設計性能的關鍵所在。FPGA(現場可編程門陣列)是一種具有大規模可編程門陣列的器件,不僅具有ASIC(專用集成電路)快速的特點,更具有很好的系統實現的靈活性。基於FPGA的設計可以滿足實時數位訊號處理的要求,在市場競爭中具有很大的優勢。因此,FPGA為高速FFT算法的實現提供了一個很好的平臺。
  • 基於FPGA的並行掃頻DDS的實現
    2.1 相位累加器電路實現實現並行相位累加器的直接方法是:由兩套結構完全相同的相位累加器電路構成,相位累加器的輸入(頻率碼)也相同,只是兩路輸出要有一個固定的初始相位偏差,其數值為相位累加器輸入(頻率碼)的1/2.為了電路實現容易,需對上述方法進行簡化。
  • 一種基於FPGA的實時紅外圖像預處理方法
    針對這一問題,提出一種基於FPGA的實時紅外圖像預處理方法。該方法採用了流水線技術來並行完成非均勻校正、空間濾波、直方圖統計等多個紅外圖像預處理算法,對系統結構進行了改進和優化。經過實驗測試驗證,該方法合理可行,能夠實時高效地完成紅外圖像預處理任務。與DSP圖像預處理系統相比可以節約將近50%的處理時間。
  • 基於Cyclone II FPGA開發平臺實現語音識別算法程序的設計
    基於Cyclone II FPGA開發平臺實現語音識別算法程序的設計 瀋陽;馮良;洪誠 發表於 2021-01-12 10:21:38 SOPC可編程片上系統是一種獨特的嵌入式微處理系統。
  • 基於高速定點FFT算法的FPGA設計方案
    在高速數位訊號處理領域,如雷達信號處理,FFT的處理速度往往是整個系統設計性能的關鍵所在。 針對高速實時信號處理的要求,軟體實現方法顯然滿足不了其需要。近年來現場可編程門陣列(FPGA)以其高性能、高靈活性、友好的開發環境、在線可編程等特點,使得基於FPGA的設計可以滿足實時數位訊號處理的要求,在市場競爭中具有很大的優勢。 在FFT算法中,數據的寬度通常都是固定的寬度。
  • 用FPGA實現FFT算法
    FFT算法除了必需的數據存儲器ram和旋轉因子rom外,仍需較複雜的運算和控制電路單元,即使現在,實現長點數的FFT仍然是很困難。本文提出的FFT實現算法是基於FPGA之上的,算法完成對一個序列的FFT計算,完全由脈衝觸發,外部只輸入一脈衝頭和輸入數據,便可以得到該脈衝頭作為起始標誌的N點FFT輸出結果。
  • 基於FPGA的可配置FFT IP核實現研究
    摘要 針對FFT算法基於FPGA實現可配置的IP核。採用基於流水線結構和快速並行算法實現了蝶形運算和4k點FFT的輸入點數、數據位寬、分解基自由配置。現場可編程邏輯陣列(FPGA)是一種可定製集成電路,具有面向數位訊號處理算法的物理結構。用FPGA實現FFT處理器具有硬體系統簡單、功耗低的優點,同時具有開發時間較短、成本較低的優勢。基於FPGA實現的數位訊號處理系統具有較高的實時性和嵌入性,並能方便地實現系統集成與功能擴展。
  • 基於FPGA的自然對數變換器的設計與實現
    引言  在需要硬體實現對數運算的場合[1],其精度和速度是必須考慮的問題。目前硬體實現對數變換的方法主要有查表法、泰勒公式展開法和線性近似法。查表法[2]所需要的存儲單元隨著精度的增加或輸入值範圍的增大而成指數增加;泰勒公式展開法[3]需要乘法器,面積大不易實現;線性近似法[4]的精度有限,且需要誤差校正電路,實現較難。
  • 基於Xilinx FPGA 實現FFT算法的電力諧波檢測的設計方案詳解
    基於Xilinx FPGA 實現FFT算法的電力諧波檢測的設計方案詳解 工程師青青 發表於 2018-07-16 18:22:00 基於FFT算法的電力系統諧波檢測裝置