基於Altera MegaCore實現FFT的方法

2021-01-10 電子產品世界

0 引 言

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

FFT(快速傅立葉變換)是計算離散傅立葉變換(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 整體方案設計框圖


相關焦點

  • 用FPGA實現FFT算法(圖)
    快速傅立葉變換(fast fourier transformation,簡稱fft)使dft運算效率提高1~2個數量級。其原因是當n較大時,對dft進行了基4和基2分解運算。fft算法除了必需的數據存儲器ram和旋轉因子rom外,仍需較複雜的運算和控制電路單元,即使現在,實現長點數的fft仍然是很困難。
  • 基於MSP430系列微控制器的FFT算法實現
    離散時間採樣的快速傅立葉變換FFT(fast Fouriertrans form)算法是目前最主要的諧波檢測和分析方法。FFT算法的實現可以採用專用晶片37—40、DSP晶片6—1141—44、FPGA晶片193— 207以及微控制器等。隨著集成電路製造技術和數字計算機技術的進步,微控制器晶片的功能和所能提供的邏輯資源越來越多。
  • 基於DSP的FFT算法實現
    基於DSP的FFT算法實現1、FFT的原理快速傅氏變換(FFT)是離散傅氏變換的快速算法,它是根據離散傅氏變換的奇、偶、
  • 通俗易懂的講解FFT的讓你快速了解FFT
    當然這都是以前的事情了,經過了系統的學習+2個星期的研究,自製了一個FFT的算法,不敢說速度上的優勢,但是個人認為是一種通俗易懂的實現方法。經過實際的VC++模擬實驗、和STM32跑的也很成功。 首先,要會FFT,就必須要對DFT有所了解,因為兩者之間本質上是一樣的。
  • matlab下實現FFT信號分析
    利用matlab做頻譜分析前我們需要了解分析過程中的一些基礎知識,matlab中的 fft 函數用法、fftshift 函數的用法函數 1  fft :作用:快速傅立葉變換。語法:Y = fft(X)Y = fft(X,n)Y = fft(X,n,dim)語法:Y = fft(X) 用快速傅立葉變換 (FFT) 算法計算 X 的離散傅立葉變換 (DFT)。
  • 快速傅立葉變換FFT在MATLAB中的實現
    具體計算方法如下:(y); %採集信號的長度t=(0:1:N-1)*T; %定義整個採集時間點t=t';  %轉置成列向量figureplot(t,y)xlabel('時間')ylabel('信號值')title('時域信號')2. fft
  • 基於FPGA IP核的FFT實現
    這裡從Altera IP核出發,建立了基4算法的512點FFT工程,對不同參數設置造成的誤差問題進行分析,並在EP2C70F896C8器件上進行基於Quartus II的綜合仿真,得到利用FFT IP核的FFT算法高效實現,最後利用Matlab進行的計算機仿真分析證明了工程結果的正確性。
  • 基於FPGA的FFT算法硬體實現
    基於FPGA的FFT算法硬體實現
  • 每日函數——fft
    fft快速傅立葉變換語法Y  = fft(X)Y  = fft(X
  • 基於FPGA IP核的FFT實現與改進
    FFT運算複雜,需要大量的存儲器和運算單元,其硬體實現平臺多種多樣。DSP需要外置存儲器和特定接口,限制了運算速度。ASIC雖能滿足速度要求,但其硬體電路複雜、可擴展性差、且價格昂貴。FPGA具有陝速並行運算、高集成度、低功耗等特點,且具有豐富的IP核資源,方便調用,適合FFT算法的實現。
  • 用C語言實現FFT算法
    /*****************fft programe*********************/#include typedef.h #include math.h本文引用地址:http://www.eepw.com.cn/article/150637.htmstruct compx
  • 基於Cyclone II FPGA開發平臺實現語音識別算法程序的設計
    基於Cyclone II FPGA開發平臺實現語音識別算法程序的設計 瀋陽;馮良;洪誠 發表於 2021-01-12 10:21:38 SOPC可編程片上系統是一種獨特的嵌入式微處理系統。
  • 【基礎教程】Matlab實現傅立葉變換
    傅立葉變換傅立葉變換是一種常見的分析方法,傅立葉變換將滿足一定條件的函數表示為一些函數的加權和(或者積分)。
  • 基於信號處理技術的機器學習
    本文講解一篇關於基於信號處理技術的機器學習的博客:《Machine Learning with Signal Processing Techniques
  • 基於TMS32OLF24O7的FFT算法的實現
    傅立葉變換是一種將信號從時域轉變為頻域表示的變換形式,它是數位訊號處理中對信號進行分析時經常採用的一種方法。信號的一些特性在時域總是表現得不明顯,通過傅立葉算法,將其變換到頻域,其特性就一目了然。
  • MATLAB實驗——FFT變換
    實際上,現在有實現傅立葉變換的晶片,可以實時實現傅立葉變換。實驗過程1. 實驗步驟:(1)讀入圖像;(2)用Fourier變換算法,對圖像作二維Fourier變換;(3)將其幅度譜進行搬移,在圖像中心顯示;(4)取對數;(5)顯示圖像的頻譜。2.
  • 基於Xilinx FPGA 實現FFT算法的電力諧波檢測的設計方案詳解
    基於Xilinx FPGA 實現FFT算法的電力諧波檢測的設計方案詳解 工程師青青 發表於 2018-07-16 18:22:00 基於FFT算法的電力系統諧波檢測裝置
  • 史上最簡單的FFT(快速傅立葉變換)
    asin(1.0)*2; typedef complex<double> cp; cp tmp[N<<1],a[N<<1],b[N<<1]; int n,m;cp c(int n,int k){ return cp(cos(2*k*PI/n),sin(2*k*PI/n)); } void fft
  • Altera Quartus II軟體8.0開創高端FPGA的性能和效能最高水平
    Quartus II軟體8.0訂購版和網絡版都可以在6月3號通過www.altera.com/download進行下載。也可以通過www.altera.com/dvdrequest申請DVD格式的Quartus II軟體。Altera的軟體訂購程序將軟體產品和維護費用合併在一個年度訂購支付中,簡化了獲得Altera設計軟體的過程。