利用FPGA實現的FFT變換設計

2021-01-10 電子產品世界

  隨著集成電路的飛速發展,在圖像處理,通信和多媒體等很多領域中,數位訊號處理技術已經被廣泛應用。快速傅立葉變換(FFT)算法的提出,使得數位訊號處理的運算時間上面縮短了好幾個數量級。因此對FFT算法及其實現方法的研究具有很強的理論和現實意義。

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

  1 FFT算法及其實現方法

  現場可編程門陣列FPGA是一種可編程使用的信號處理器件,其運算速度高,內置高速乘法器可實現複雜累加乘法運算;同時其存儲量大,無需外接存儲器就可實現大量數據運算;而且算法實現簡單,通過VHDL程式語言可輕鬆實現功能開發,縮短了開發周期。FPGA已經在通訊、視頻、圖像處理等領域被廣泛使用。

  本次設計採用FPGA實現8點32位的FFT變換,現場可編程門陣列FPGA是一種可編程使用的信號處理器件,用戶可以通過改變配置信息對其功能進行定義,以滿足設計需求。與DSP相比,FPGA實現FFT具有速度高,存儲容量大,硬體實現簡單,I/O帶寬高等特點。

  FFT處理器被分成一下幾個主要的功能模塊:數據地址產生單元、蝶形運算單元、數據選擇單元、控制單元、存儲單元等。通過VHDL語言在CycloneII系列晶片上編程實現。運算方案採用順序處理的方法。傅立葉變換實現時首先進行基2、基4分解,一般來說,如果算法使用基2實現,雖然使用的資源較多,但速度優勢明顯。設計中採用基-2DIT-FFT算法來實現整個系統的設計,如圖1所示。

  

 

  圖1

  在FFT模塊的設計中,旋轉因子與輸入數據進行的是一個小數乘法的蝶形運算,需要將旋轉因子表示成小數的二進位形式。為了保證運算結果的正確性,還需要將輸入和輸出數據進行小數點的調整。在此次設計中採用定點小數的方法,所謂定點小數,就是小數點的位置是固定的。設計中統一將小數點放在了Q6的位置,在仿真的結果圖中顯示的輸出數據均是小數點經過移位後的結果即結果均擴大了64倍。

  複數乘法器採用FPGA內部IP核的例化與調用來設計實現了蝶形處理,這樣就可以提高蝶形運算單元的的運算速度,降低了運算複雜度。控制單元的設計通過一個有限狀態機來實現控制器。通過有限狀態機狀態的輸出分別控制ROM因子表、隨機存儲器RAM和蝶形處理器。使它們可以協調一致地工作,從而實現FFT運算的正確輸出。

  將系統設計的各個模塊連接起來,利用順序處理的FFT設計結構,將輸入數據的8個點放到RAM中進行處理。經過元件例化和調用操作完一級蝶形之後對其結果進行存儲;之後完成二級蝶形操作及存儲;最後進行三級蝶形的操作。

  若輸入8點數據為[5,8,3,2.0,6,1,2].其仿真結果經轉換後的值為(即結果擴大了64倍):[1728,410-j218,64-j640,230+j38,-576,230-j38,64+j640,410+j218 ],與MATLAB仿真的結果一致。

  如圖2所示,圖中的x0,x1,x2……x7是輸入信號,分別給它們輸入的值為[5,8,3,2,0,6,1,2];y0_i,y0_r……y7_i,y7_r是仿真中得到的輸出信號。經過運算,輸出結果與理論計算結果一致。

  

 

  圖2

  2總結

  通過仿真驗證此次利用FPGA實現的FFT設計採用內置雙埠RAM、ROM單元,實現了存取數據、旋轉因子計算、蝶形計算,系統結構簡單,運算可靠性高,速度得到了進一步提升。


相關焦點

  • 用FPGA實現FFT算法(圖)
    快速傅立葉變換(fast fourier transformation,簡稱fft)使dft運算效率提高1~2個數量級。其原因是當n較大時,對dft進行了基4和基2分解運算。fft算法除了必需的數據存儲器ram和旋轉因子rom外,仍需較複雜的運算和控制電路單元,即使現在,實現長點數的fft仍然是很困難。
  • 用FPGA實現FFT算法
    快速傅立葉變換(Fast Fourier Transformation,簡稱FFT)使DFT運算效率提高1~2個數量級。其原因是當N較大時,對DFT進行了基4和基2分解運算。FFT算法除了必需的數據存儲器ram和旋轉因子rom外,仍需較複雜的運算和控制電路單元,即使現在,實現長點數的FFT仍然是很困難。
  • 基於FPGA IP核的FFT實現
    目前現有的文獻大多致力於研究利用FFT算法做有關信號處理、參數估計、F+FT蝶形運算單元與地址單元設計、不同算法的FFT實現以及FFT模型優化等方面。而FPGA廠商Altera公司和Xilinx公司都研製了FFT IP核,性能非常優越。在FFT的硬體實現中,需要考慮的不僅僅是算法運算量,更重要的是算法的複雜性、規整性和模塊化,而有關利用FFT IP核實現FFT算法卻涉及不多。
  • 基於FPGA高精度浮點運算器的FFT設計與仿真
    摘要 基於IEEE浮點表示格式及FFT算法,提出一種基2FFT的FPGA方法,完成了基於FPGA高精度浮點運算器的FFT的設計。利用VHDL語言描述了蝶形運算過程及地址產生單元,其仿真波形基本能正確的表示輸出結果。
  • 快速傅立葉變換FFT在MATLAB中的實現
    首先,為什麼要進行傅立葉變換?將時域的信號變換到頻域的正弦信號,正弦比原信號更簡單,且正弦函數很早就被充分地研究,處理正弦信號比處理原信號更簡單。正弦信號的頻率保持性:輸入為正弦信號,輸出仍是正弦信號,幅度和相位可能發生變化,但頻率與原信號保持一致,只有正弦信號才擁有這樣的性質。
  • MATLAB實驗——FFT變換
    實驗基本原理與設計1 應用傅立葉變換進行圖像處理傅立葉變換是線性系統分析的一個有力工具,它能夠定量地分析諸如數位化系統、採樣點、電子放大器、卷積濾波器、噪音和顯示點等的作用。通過實驗培養這項技能,將有助於解決大多數圖像處理問題。對任何想在工作中有效應用數字圖像處理技術的人來說,把時間用在學習和掌握博裡葉變換上是很有必要的。
  • 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)。
  • 基於DSP和FPGA的機器人聲控系統設計與實現
    2 系統硬體總體設計 系統的硬體功能是實現語音指令的採集和步進電機的驅動控制,為系統軟體提供開發和調試平臺。如圖1所示。 3.3 語音識別程序模塊的設計 為了實現機器人對非特定人語音指令的識別,系統採用非特定人的孤立詞識別系統。非特定人的語音識別是指語音模型由不同年齡、不同性別、不同口音的人進行訓練,在識別時不需要訓練就可以識別說話人的語音[2]。系統分為預加重和加窗,短點檢測,特徵提取,與語音庫的模式匹配和訓練幾個部分。
  • 基於fpga二維小波變換核的實時可重構電路
    項目背景及可行性分析本文引用地址:http://www.eepw.com.cn/article/266432.htm  2.1 項目名稱及摘要:  基於fpga二維小波變換核的實時可重構電路  現場可編程門陣列為可進化設計提供了一個理想的模板
  • 史上最簡單的FFT(快速傅立葉變換)
    ,而FFT利用複數的知識做到了這個就需要傅立葉變換了。3 複數複數是數學上一個很常見的概念,複數的特點是對負數進行開方。負數相加的規則是實部(x軸)和實部相加,虛部(y軸)和虛部相加。 複數乘法的規則是模長相乘,幅角相加。
  • 【基礎教程】Matlab實現傅立葉變換
    傅立葉變換傅立葉變換是一種常見的分析方法,傅立葉變換將滿足一定條件的函數表示為一些函數的加權和(或者積分)。
  • 基於MSP430系列微控制器的FFT算法實現
    摘要:傅立葉變換算法在供電質量監測系統中被用來進行諧波分析,如何加快分析速度和降低系統成本是當前這種監測系統設計關注的主要問題。
  • 基於FPGA實現多種小波變換
    引 言 基於提升框架的小波變換方法,利用FPGA 可編程特性可實現多種小波變換。提升框架(LS :Lifting Scheme) 是由Sweldens 等人在近幾年提出的一種小波變換方法,用它的框架結構能有效地計算DWT。對於較長的濾波器,LS 的操作次數比濾波器組的操作方式減少將近一半,更適合硬體實現。作者根據提升小波變換的框架式結構,利用FPGA 可完全重構的特點構造不同的小波變換核,以滿足不同應用場合的要求。
  • 通俗易懂的講解FFT的讓你快速了解FFT
    在基本上的研究FFT,並且通過編程的形式實現之後。我決定寫一篇通俗易懂的關於FFT的講解。因此我在接下來的敘述中儘量非常通俗細緻的講解。 本人最早知道傅立葉變換的時候是沉迷於音樂的頻譜跳動無法自拔,當時就很想做一個音樂頻譜顯示器。搜閱了很多資料之後,才了解到傅立葉變換,和FFT。
  • 基於FPGA的巴特沃茲IIR數字帶通濾波器設計
    數字濾波器通常採用計算機軟體、專用數字濾波器、DSP器件或可編程邏輯器件(如FPGA) 實現。因為,用FPGA實現數字濾波器具有實時性強、靈活性高、處理速度快以及小批量生產成本低等優點,所以得到了較為廣泛的應用。本文以巴特沃思數字帶通濾波器為例,較為詳細地介紹了其設計和實現方法。給定巴特沃茲數字帶通濾波器的抽樣頻率為500Hz,上、下邊帶截止頻率分別為150Hz和30Hz.
  • 利用FFT IP Core實現FFT算法
    結合工程實踐,介紹了一種利用FFT IP Core實現FFT的方法,設計能同時對兩路實數序列進行256點FFT運算,並對轉換結果進行求模平方運算,且對數據具有連續處理的能力。
  • 基於FPGA流水線結構並行FFT的設計與實現
    離散傅立葉變換DFT在通信、控制、信號處理、圖像處理、生物信息學、計算物理、應用數學等領域中有著廣泛的應用。FFT算法是作為DFT快速算法提出的,它將長序列的DFT分解為短序列的DFT,大大減少了運算量。
  • 基於FPGA IP核的FFT實現與改進
    摘要 利用FPGA IP核設計了一種快速、高效的傅立葉變換系統。針對非整數倍信號周期截斷所導致的頻譜洩露問題,提出了一種通過時輸入信號加窗處理來抑制頻譜洩露的方法。利用Modelsim和Matlab對設計方案進行了仿真,同時在Altera公司的CycloneⅡ硬體平臺上進行了驗證。驗證結果表明,系統性能良好,改進效果明顯。
  • 一種近距雷達目標檢測信號處理的FPGA實現
    對某種用於探測近距離運動目標的雷達系統來說,數位訊號處理的任務,是要實現對回波的A/D變換、數據預處理和緩衝積累、時-頻域變換、坐標系轉換、時域-頻域目標信號檢測和目標運動參數(如速度)的提取。採用FFT(快速傅立葉變換)完成對回波信號由時間序列向頻譜序列變換的過程。
  • OFDM信道調製解調的仿真及其FPGA設計
    本文引用地址:http://www.eepw.com.cn/article/269688.htm  OFDM利用離散傅立葉反變換/離散傅立葉變換(IDFT/DFT)代替多載波調製和解調,調製解調的核心是快速傅立葉運算單元,在進行蝴蝶運算時,不可避免的要進行大量的乘法運算。