一種FFT算法的設計和實現(xiàn)
出處:電子技術 發(fā)布于:2011-07-05 22:52:43
傅里葉變換能將滿足一定條件的某個函數(shù)表示成三角函數(shù)(正弦和/或余弦函數(shù))或者它們的積分的線性組合。在不同的研究領域,傅里葉變換具有多種不同的變體形式,如連續(xù)傅里葉變換和離散傅里葉變換。初傅里葉分析是作為熱過程的解析分析的工具被提出的。信號的一些特性在時域總是表現(xiàn)得不明顯,通過傅里葉算法,將其變換到頻域,其特性就一目了然。
在計算機系統(tǒng)中,實際上是以離散傅立葉變換(DFT)的方式處理數(shù)據(jù)。由于DFT的運算量比較大,并不適用于嵌入式控制系統(tǒng),所以實際應用中常使用DFT 的快速算法一快速傅立葉變換(FFT)。雖然FFT 比DFT的計算量減少了很多,但用普通單片機來實現(xiàn)FFT多點、實時運算還是比較困難的。DSP(數(shù)字信號處理器)具有運算速度快和高的特點,恰好滿足FFT的要求,能較好地解決這個問題。
數(shù)字信號處理(Digital Signal Processing,簡稱DSP)是一門涉及許多學科而又廣泛應用于許多領域的新興學科。20世紀60年代以來,隨著計算機和信息技術的飛速發(fā)展,數(shù)字信號處理技術應運而生并得到迅速的發(fā)展。數(shù)字信號處理是一種通過使用數(shù)學技巧執(zhí)行轉換或提取信息,來處理現(xiàn)實信號的方法,這些信號由數(shù)字序列表示。在過去的二十多年時間里,數(shù)字信號處理已經(jīng)在通信等領域得到極為廣泛的應用。德州儀器、Freescale等半導體廠商在這一領域擁有很強的實力。其工作原理是接收模擬信號,轉換為0或1的數(shù)字信號。再對數(shù)字信號進行修改、刪除、強化,并在其他系統(tǒng)芯片中把數(shù)字數(shù)據(jù)解譯回模擬數(shù)據(jù)或實際環(huán)境格式。它不僅具有可編程性,而且其實時運行速度可達每秒數(shù)以千萬條復雜指令程序,遠遠超過通用微處理器,是數(shù)字化電子世界中日益重要的電腦芯片。它的強大數(shù)據(jù)處理能力和高運行速度,是值得稱道的兩大特色。
1 快速傅里葉變換的原理
非周期性連續(xù)時間信號x(t)的傅里葉變換可以表示為

式中計算出來的是信號x(t)的連續(xù)頻譜。但是,在實際的控制系統(tǒng)中能夠得到的是連續(xù)信號x(t)的離散采樣值x(nT)。因此需要利用離散信號x(nT)來計算信號x(t)的頻譜。
有限長離散信號x(n),n=0,1,…,N-1的DFT定義為:
|
|
|
|
可以看出,DFT需要計算大約N2次乘法和N2次加法。當N較大時,這個計算量是很大的。利用WN的對稱性和周期性,將N點DFT分解為兩個N/2點的 DFT,這樣兩個N/2點DFT總的計算量只是原來的一半,即(N/2)2+(N/2)2=N2/2,這樣可以繼續(xù)分解下去,將N/2再分解為N/4點 DFT等。對于N=2m 點的DFT都可以分解為2點的DFT,這樣其計算量可以減少為(N/2)log2N次乘法和Nlog2N次加法。圖1為FFT與DFT-所需運算量與計算點數(shù)的關系曲線。由圖可以明顯看出FFT算法的優(yōu)越性。
Drive Fitness Test 驅動器健康檢測技術,是IBM公司為其PC贏哦俺開發(fā)的數(shù)據(jù)保護技術,它通過使用DFT程序訪問IBM硬盤里的DFT微代碼對硬盤進行檢測,可以讓用戶方便快捷地檢測硬盤的運轉狀況。DFT微代碼可以自動對錯誤事件進行登記,并將登記數(shù)據(jù)保存在硬盤的保留區(qū)域中。DFT微代碼還可以實時對硬盤進行物理分析,如通過讀取伺服位置錯誤信號來計算出盤片交換、伺服穩(wěn)定性、重復移動等參數(shù),并給出圖形供用戶或技術人員參考。這是一個全新的觀念,硬盤子系統(tǒng)的控制信號可以被用來分析硬盤本身的機械狀況。
將x(n)分解為偶數(shù)與奇數(shù)的兩個序列之和,即

x1(n)和x2(n)的長度都是N/2,x1(n)是偶數(shù)序列,x2(n)是奇數(shù)序列,則
其中X1(k)和X2(k)分別為x1(n)和x2(n)的N/2點DFT。由
于X1(k)和X2(k)均以N/2為周期,且WN k+N/2=-WN k,所以X(k)又可表示為:

上式的運算可以用圖2表示,根據(jù)其形狀稱之為蝶形運算。依此類推,經(jīng)過m-1次分解,將N點DFT分解為N/2個兩點DFT。圖3為8點FFT的分解流程。

FFT算法的原理是通過許多小的更加容易進行的變換去實現(xiàn)大規(guī)模的變換,降低了運算要求,提高了與運算速度。FFT不是DFT的近似運算,它們完全是等效的。
2 快速傅里葉算法在TMS320LF2407上的實現(xiàn)
根據(jù)FFT算法的特點,處理器要在一個指令周期內(nèi)完成乘和累加的工作,因為復數(shù)運算要多次查表相乘才能實現(xiàn)。其二就是間接尋址,可以實現(xiàn)增/減1個變址量,方便各種查表方法。再次,F(xiàn)FT變換的輸入序列x(n)是按所謂的碼位倒序排列的,處理器要有反序間接尋址的能力。DSP控制器專門設計了特有的反序間接尋址,并能在一個指令周期內(nèi)完成乘和累加的運算。因此,對數(shù)字信號的分析處理,DSP比其它的處理器有的優(yōu)勢。本文采用TI公司C2000系列TMS320LF2407芯片來實現(xiàn)FFT算法。
TMS320LF2407定點DSP是一款專為工業(yè)控制、電機控制和數(shù)字信號處理等用途而設計的DSP,具備單周期乘加指令,具有FFT反序間接尋址功能,運行速度為40MIPS。為了充分利用DSP芯片特有的反序間接尋址等功能,F(xiàn)FT算法程序采用匯編語言編寫,主程序采用C語言,因此程序具有良好的兼容性和可擴展性。
主程序流程圖如圖4所示。系統(tǒng)初始化主要完成DSP的系統(tǒng)控制和狀態(tài)寄存器、等待狀態(tài)發(fā)生器控制寄存器、中斷寄存器等的必要設置。
本程序采樣函數(shù)為:x=sin(20πt),采樣頻率為640Hz。
輸入數(shù)據(jù)波形如圖5所示。一般情況下,我們只關心信號頻域的幅度譜。幅度譜|X(k)|2的計算:X(k)=XR(k)+jX(k),|X(k)2|=|Xr(k)|2+|Xi(k)|2。FFT計算結果的信號幅度譜|X(k)|2如圖6所示。
輸入信號頻率是10Hz,根據(jù)公式f=kfs/N,f是原始信號的頻率,k表示峰值出現(xiàn)的位置,fS是采樣頻率,N是計算的點數(shù),從幅度譜中看出,峰值出現(xiàn)在k=1處,那么,f=1×640/64=10,與原始信號的實際頻率一致,說明計算結果正確。

3 快速傅里葉變換(FFT)的應用
FFT(Fast Fourier Transformation),即為快速傅氏變換,是離散傅氏變換的快速算法,它是根據(jù)離散傅氏變換的奇、偶、虛、實等特性,對離散傅立葉變換的算法進行改進獲得的。它對傅氏變換的理論并沒有新的發(fā)現(xiàn),但是對于在計算機系統(tǒng)或者說數(shù)字系統(tǒng)中應用離散傅立葉變換,可以說是進了一大步。
FFT在生產(chǎn)實踐和科學研究中有著廣泛的應用。圖7為FFT的典型應用方案。下面簡單介紹一下FFT的應用領域。

(1)頻譜分析。對各類旋轉機械、電機、機床等機器的主體或部件進行實際運行狀態(tài)下的頻譜分析,可以提供設計數(shù)據(jù)和檢驗設計結果,或者找尋震源和診斷故障,保證設備的安全運行等。在聲納系統(tǒng)中,為了尋找海洋水面船只或潛艇,需要對噪聲信號進行頻譜分析,以提供有用信息,判斷艦艇運行速度、方向、位置、大小等。
(2)濾波。濾波是FFT廣泛的應用,它使對波形的頻率分量濾波變得十分簡單。比如對采樣信號進行FFT后,去掉不需要的頻率分量,再進行FFT反變換,就得到濾波后的期望信號。
(3)電力監(jiān)控系統(tǒng)的諧波分析。電力監(jiān)控系統(tǒng)的諧波分析,需要對采樣數(shù)據(jù)進行FFT運算,然后通過液晶屏或其它人機界面重新繪畫出來,以方便技術人員掌握電力的質量。
4 總結
實驗證明,此程序在TMS320LF2407定點DSP中運行良好,速度快且運算結果十分可靠,其用于一般的信號處理和工業(yè)控制都能滿足和實時的要求,具有較高的學術價值和良好的應用前景。其次,掌握FFT,學會在空域和頻域中同時思考問題,很多時候可以讓我們使用簡單的方法來解決復雜的問題。
版權與免責聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權均屬于維庫電子市場網(wǎng),轉載請必須注明維庫電子市場網(wǎng),http://hbjingang.com,違反者本網(wǎng)將追究相關法律責任。
本網(wǎng)轉載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉載時,必須保留本網(wǎng)注明的作品出處,并自負版權等法律責任。
如涉及作品內(nèi)容、版權等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關權利。
- 掌握 DSP:原理剖析與應用實踐2025/5/8 14:03:24
- 模糊邏輯在 DSP 上實時執(zhí)行2023/7/25 17:13:30
- 多速率DSP及其在數(shù)模轉換中的應用2023/6/12 15:28:52
- 使用 DSP 加速 CORDIC 算法2023/3/29 15:46:30
- 高速DSP系統(tǒng)的信號完整性2022/9/26 16:45:38











