基於FPGA IP核的FFT實現

2021-01-10 電子產品世界

0 引 言
數位訊號處理領域中FFT算法有著廣泛的應用。目前現有的文獻大多致力於研究利用FFT算法做有關信號處理、參數估計、F+FT蝶形運算單元與地址單元設計、不同算法的FFT實現以及FFT模型優化等方面。而FPGA廠商Altera公司和Xilinx公司都研製了FFT IP核,性能非常優越。在FFT的硬體實現中,需要考慮的不僅僅是算法運算量,更重要的是算法的複雜性、規整性和模塊化,而有關利用FFT IP核實現FFT算法卻涉及不多。這裡從Altera IP核出發,建立了基4算法的512點FFT工程,對不同參數設置造成的誤差問題進行分析,並在EP2C70F896C8器件上進行基於Quartus II的綜合仿真,得到利用FFT IP核的FFT算法高效實現,最後利用Matlab進行的計算機仿真分析證明了工程結果的正確性。

1 算法原理
FFT算法是基於離散傅立葉變換(DFT),如式(1)和式(2):

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


求和運算的嵌套分解以及複數乘法的對稱性得以實現。其中一類FFT算法為庫利一圖基(Cooley-Tukey)基r按頻率抽選(DIF)法,將輸入序列循環分解為N/r個長度為r的序列,並需要logr N級運算。算法的核心操作是蝶型運算,蝶型運算的速度直接影響著整個設計的速度。
基4頻域抽取FFT算法是指把輸出序列X(k)按其除4的餘數不同來分解為越來越短的序列,實現x(n)的DFT算法。FFT的每一級的運算都是有N/4個蝶形運算構成,第m級的一個蝶形運算的四節點分別為Xm(k),Xm(k+N/4m),Xm(k+2N/4m)以及Xm(k+3N/4m),所以每一個蝶形運算結構完成以下基本迭代運算:

式(3)~式(6)中:m表示第m級蝶形算法;k為數據所在的行數;N為所要計算的數據的點數;WN為旋轉因子。
將輸入序列循環分解為4點序列的基4分解,使用4點FFT在乘法上更具優勢,Altera的:FFT兆核選用的就是基4運算,若N是2的奇數冪的情況下,FFT IP核則自動在完成轉換的最後使用基2運算。

2 FFT兆核(IP)函數
FFT Core支持4種I/O數據流結構:流(Stream-ing)、變量流(Variable Streaming)、緩衝突發(BufferedBurt)、突發(Burst)。流結構允許輸入數據連續處理,並輸出連續的複數據流,這個過程不需要停止FFT函數數據流的進出。變量流結構允許輸入數據連續處理,並產生一個與流結構相似連續輸出數據流。緩衝突發數據流結構的FFT需要的存儲器資源比流動I/O數據流結構少,但平均模塊吞吐量減少。突發數據流結構的執行過程和緩衝突髮結構相同,不同的是,對於給定參數設置,突髮結構在降低平均吞吐量的前提下需要更少的存儲資源。

3 FFT處理器引擎結構
FFT兆核函數可以通過定製參數來使用兩種不同的引擎結構:四輸出(Quad-outlput)或單輸出(Signal-output)引擎結構。為了增加FFT兆核函數的總吞吐量,也可以在一個FFT兆核函數變量中使用多個並行引擎。本文建立一個基於QuartusⅡ7.O計算24位512點FFT工程,採用四輸出FFT引擎結構,如圖1所示。

復取樣數據X[k,m]從內部存儲器並行讀出並由變換開關(SW)重新排序,排序後的取樣數據由基4處理器處理並得到複數輸出G[k,m],由於基4按頻率抽選(DIF)分解方法固有的數字特點,在蝶形處理器輸出上僅需要3個複數乘法器完成3次乘旋轉因子(有一個因子為1,不需要乘)計算。這種實現結構在一個單時鐘周期內計算所有四個基4蝶形複數輸出。
同時,為了辨別取樣數據的最大動態範圍,四個輸出由塊浮點單元(BFPU)並行估計,丟棄適當的最低位(LSB),在寫入內部存儲器之前對複數值進行四捨五入並行重新排序。對於要求轉換時間儘量小的應用,四輸出引擎結構是最佳的選擇;對於要求資源儘量少的應用,單輸出引擎結構比較合適。為了增加整個FFT吞吐量,可以採用多並行的結構。

4 系統驗證
4.1 工程仿真
選擇CycloneⅡ系列的EP2C70F896C8晶片來實現,先在QuartusⅡ軟體下進行綜合仿真,初始化參數設置FFT變換長度為512點,數據和旋轉因子精度為24 b,選擇緩衝突發的數據流結構,四輸出引擎並行FFT引擎個數為4個,複數乘法器結構為「4/Mults/2Adders」。EP2C70F896C8晶片包括68 416個邏輯單元,31 112個寄存器單元,最大用戶輸入/輸出引腳622個,總RAM達1 152 000 b,其布線資源由密布的可編程開關來實現相互間的連接,這種結構完全符合實現FFT電路的要求。
經綜合和時序分析得知:其工作時鐘頻率
69.58 MHz(period=14.372 ns),進行一次蝶形運算只需約14 ns,全部512點數據處理完成則需14.372×4×512=29.3μs滿足時序要求。具體綜合結果如圖2所示,為Quartus軟體環境下仿真得到。

圖3則表明了FFT的綜合邏輯結果,為編譯成功後的RTL級電路描述。

fpga相關文章:fpga是什麼


相關焦點

  • 用FPGA實現FFT算法(圖)
    快速傅立葉變換(fast fourier transformation,簡稱fft)使dft運算效率提高1~2個數量級。其原因是當n較大時,對dft進行了基4和基2分解運算。fft算法除了必需的數據存儲器ram和旋轉因子rom外,仍需較複雜的運算和控制電路單元,即使現在,實現長點數的fft仍然是很困難。
  • 基於fpga二維小波變換核的實時可重構電路
    項目背景及可行性分析本文引用地址:http://www.eepw.com.cn/article/266432.htm  2.1 項目名稱及摘要:  基於fpga二維小波變換核的實時可重構電路  現場可編程門陣列為可進化設計提供了一個理想的模板
  • 基於FPGA IP核的FFT實現與改進
    常規的FFT硬體實現方法均不考慮由於非整數倍截斷導致的頻譜洩露問題。針對以上問題,本文設計了一種基於Altera IP核的512點FFT系統,同時通過對輸入信號的加窗處理,抑制了非整數倍信號周期截斷所產生的頻譜洩露。1 原理概述1.1 FFT原理離散傅立葉變換(DFT)算法為
  • 用FPGA實現FFT算法
    FFT算法除了必需的數據存儲器ram和旋轉因子rom外,仍需較複雜的運算和控制電路單元,即使現在,實現長點數的FFT仍然是很困難。本文提出的FFT實現算法是基於FPGA之上的,算法完成對一個序列的FFT計算,完全由脈衝觸發,外部只輸入一脈衝頭和輸入數據,便可以得到該脈衝頭作為起始標誌的N點FFT輸出結果。
  • 基於FPGA高精度浮點運算器的FFT設計與仿真
    摘要 基於IEEE浮點表示格式及FFT算法,提出一種基2FFT的FPGA方法,完成了基於FPGA高精度浮點運算器的FFT的設計。利用VHDL語言描述了蝶形運算過程及地址產生單元,其仿真波形基本能正確的表示輸出結果。
  • 基於DSP的FFT算法實現
    基於DSP的FFT算法實現1、FFT的原理快速傅氏變換(FFT)是離散傅氏變換的快速算法,它是根據離散傅氏變換的奇、偶、
  • 基於FPGA和IP核的FIR低通濾波器的設計與實現
    打開APP 基於FPGA和IP核的FIR低通濾波器的設計與實現 秩名 發表於 2012-12-03 11:50:23   FIR
  • 基於FPGA的可配置FFT IP核實現研究
    摘要 針對FFT算法基於FPGA實現可配置的IP核。採用基於流水線結構和快速並行算法實現了蝶形運算和4k點FFT的輸入點數、數據位寬、分解基自由配置。用FPGA實現FFT處理器具有硬體系統簡單、功耗低的優點,同時具有開發時間較短、成本較低的優勢。基於FPGA實現的數位訊號處理系統具有較高的實時性和嵌入性,並能方便地實現系統集成與功能擴展。基於FPGA的硬體實現FFT通常有兩種方法:(1)並行方法,其採用多個蝶形處理器並行運算,能對較高的數據採樣率進行運算,但其硬體規模較大,當在FPGA上要實現較大點數的FFT時較為困難。
  • 用C語言實現FFT算法
    /*****************fft programe*********************/#include typedef.h #include math.h本文引用地址:http://www.eepw.com.cn/article/150637.htmstruct compx
  • 基於DSP和FPGA的機器人聲控系統設計與實現
    2 系統硬體總體設計 系統的硬體功能是實現語音指令的採集和步進電機的驅動控制,為系統軟體提供開發和調試平臺。如圖1所示。 系統硬體分為語音信號的採集和播放,基於dsp的語音識別,fpga動作指令控制、步進電機及其驅動、dsp外接快閃記憶體晶片,jtag口仿真調試和鍵盤控制幾個部分。
  • 基於FPGA的實時中值濾波器硬體實現
    在許多實際應用場合,如高清視頻監控、X光圖像的降噪等,需要快速且實時地進行中值濾波,軟體實現達不到實時處理的要求,因此選用硬體實現。 在硬體實現上,文獻[1]、[2]等採用行延遲的方法形成鄰域數據,以實現3×3的中值濾波。文獻[7]為了提高紅外成像跟蹤器設計了大窗口的中值濾波器。
  • 基於FPGA的FFT算法硬體實現
    基於FPGA的FFT算法硬體實現
  • 基於FPGA的複數浮點協方差矩陣實現
    故目前國內外協方差運算的FPGA實現都是採用定點運算方式。 在所有運算都是定點運算的情況下,每次乘法之後數據位寬都要擴大一倍。若相乘後的數據繼續做加減運算,為了保證數據不溢出,還必須將數據位寬擴展一位,而協方差矩陣的運算核心就是乘累加單元,隨著採樣點數的增加,位寬擴展呈線性增加。最終導致FPGA器件資源枯竭,無法實現設計。
  • 基於FPGA IP核的線性調頻信號脈衝壓縮-電子發燒友網
    基於FPGA IP核的線性調頻信號脈衝壓縮 張 旭,李 巍 發表於 2011-06-29 10:40:20     近年來,隨著現場可編程門陣列(FPGA)在雷達信號處理中的廣泛應用以及FPGA
  • 基於MSP430系列微控制器的FFT算法實現
    TI公司的MSP430系統微控制器具有功耗低、供電範圍寬及外圍模塊齊全等特點,適合實現各種監測設備。採用MSP430系列微控制器實現FFT算法具有超低功耗、低電壓工作、低成本、分析速度快等優點,它比採用專用晶片和DSP晶片價格便宜,比採用FPGA晶片容易實現。1 利用微控制器實現FFT算法快速傅立葉變換在信號處理中的線性濾、相關計算、譜分析等方面起著重要的作用。
  • 基於FPGA的伺服驅動器分周比設計與實現
    為此提出一種基於FPGA的整數分周比實現方法。該方法邏輯結構簡單,配置靈活,易於擴展,具有很高的實用價值。  1 電子齒輪比與分周比  電子齒輪比與分周比是數控工具機和數控加工中心中一個很重要的概念。國外的各種驅動器一般都帶有分周比功能,對利用FPGA實現分周比進行研究和探討,電子齒輪比、分周比功能示意圖如圖1所示。
  • 基於FPGA 的二維提升小波變換IP核設計
    提出了一種高效並行的二維離散提升小波(DWT)變換結構,該結構只需要7 行數據緩存,即可實現行和列方向同時進行濾波變換。採用一種基於CSD 編碼和優化的移位加操作實現常係數乘法器,整個小波變換插入多級流水線寄存器,加快了處理速度。
  • 利用FFT IP Core實現FFT算法
    結合工程實踐,介紹了一種利用FFT IP Core實現FFT的方法,設計能同時對兩路實數序列進行256點FFT運算,並對轉換結果進行求模平方運算,且對數據具有連續處理的能力。
  • 如何在FPGA中實現狀態機
    FPGA常常用於執行基於序列和控制的行動,比如實現一個簡單的通信協議。對於設計人員來說,滿足這些行動和序列要求的最佳方法則是使用狀態機。狀 態機是在數量有限的狀態之間進行轉換的邏輯結構。一個狀態機在某個特定的時間點只處於一種狀態。
  • 基於FPGA的無損圖像壓縮系統設計
    編者按:  摘要:本文簡要介紹了圖像壓縮的重要性和常用的無損圖像壓縮算法,分析了快速高效無損圖像壓縮算法(FELICS)的優勢,隨後詳細分析了該算法的編碼步驟和硬體實現方案,最後公布了基於該方案的FPGA性能指標。