0 引言
傅立葉變換是一種將信號(hào)從時(shí)域轉(zhuǎn)變?yōu)轭l域表示的變換形式,它是數(shù)字信號(hào)處理中對(duì)信號(hào)進(jìn)行分析時(shí)經(jīng)常采用的一種方法,。信號(hào)的一些特性在時(shí)域總是表現(xiàn)得不明顯,,通過(guò)傅里葉算法,將其變換到頻域,,其特性就一目了然,。例如,來(lái)自供電系統(tǒng)的干擾在時(shí)域上總是不易識(shí)別,,但是在頻域上就可以很清晰地看到50~60 Hz的離散諧波,。
在計(jì)算機(jī)系統(tǒng)中,實(shí)際上是以離散傅立葉變換(DFT)的方式處理數(shù)據(jù),。由于DFT的運(yùn)算量比較大,,并不適用于嵌入式控制系統(tǒng),所以實(shí)際應(yīng)用中常使用DFT 的快速算法一快速傅立葉變換(FFT),。雖然FFT 比DFT的計(jì)算量減少了很多,,但用普通單片機(jī)來(lái)實(shí)現(xiàn)FFT多點(diǎn)、實(shí)時(shí)運(yùn)算還是比較困難的,。DSP(數(shù)字信號(hào)處理器)具有運(yùn)算速度快和精度高的特點(diǎn),,恰好滿足FFT的要求,能較好地解決這個(gè)問(wèn)題,。
1 快速傅里葉變換的原理
非周期性連續(xù)時(shí)間信號(hào)x(t)的傅里葉變換可以表示為
式中計(jì)算出來(lái)的是信號(hào)x(t)的連續(xù)頻譜,。但是,在實(shí)際的控制系統(tǒng)中能夠得到的是連續(xù)信號(hào)x(t)的離散采樣值x(nT),。因此需要利用離散信號(hào)x(nT)來(lái)計(jì)算信號(hào)x(t)的頻譜,。
有限長(zhǎng)離散信號(hào)x(n),,n=0,1,,…,,N-1的DFT定義為:
可以看出,DFT需要計(jì)算大約N2次乘法和N2次加法,。當(dāng)N較大時(shí),,這個(gè)計(jì)算量是很大的。利用WN的對(duì)稱性和周期性,,將N點(diǎn)DFT分解為兩個(gè)N/2點(diǎn)的 DFT,,這樣兩個(gè)N/2點(diǎn)DFT總的計(jì)算量只是原來(lái)的一半,即(N/2)2+(N/2)2=N2/2,,這樣可以繼續(xù)分解下去,,將N/2再分解為N/4點(diǎn) DFT等。對(duì)于N=2m 點(diǎn)的DFT都可以分解為2點(diǎn)的DFT,,這樣其計(jì)算量可以減少為(N/2)log2N次乘法和Nlog2N次加法,。圖1為FFT與DFT-所需運(yùn)算量與計(jì)算點(diǎn)數(shù)的關(guān)系曲線。由圖可以明顯看出FFT算法的優(yōu)越性,。
將x(n)分解為偶數(shù)與奇數(shù)的兩個(gè)序列之和,,即
x1(n)和x2(n)的長(zhǎng)度都是N/2,x1(n)是偶數(shù)序列,,x2(n)是奇數(shù)序列,,則
其中X1(k)和X2(k)分別為x1(n)和x2(n)的N/2點(diǎn)DFT,。由于X1(k)和X2(k)均以N/2為周期,,且WN k+N/2=-WN k,所以X(k)又可表示為:
上式的運(yùn)算可以用圖2表示,,根據(jù)其形狀稱之為蝶形運(yùn)算,。依此類推,經(jīng)過(guò)m-1次分解,,最后將N點(diǎn)DFT分解為N/2個(gè)兩點(diǎn)DFT,。圖3為8點(diǎn)FFT的分解流程。
FFT算法的原理是通過(guò)許多小的更加容易進(jìn)行的變換去實(shí)現(xiàn)大規(guī)模的變換,,降低了運(yùn)算要求,,提高了與運(yùn)算速度。FFT不是DFT的近似運(yùn)算,,它們完全是等效的,。
2 快速傅里葉算法在TMS320LF2407上的實(shí)現(xiàn)
根據(jù)FFT算法的特點(diǎn),處理器要在一個(gè)指令周期內(nèi)完成乘和累加的工作,,因?yàn)閺?fù)數(shù)運(yùn)算要多次查表相乘才能實(shí)現(xiàn),。其二就是間接尋址,,可以實(shí)現(xiàn)增/減1個(gè)變址量,方便各種查表方法,。再次,,F(xiàn)FT變換的輸入序列x(n)是按所謂的碼位倒序排列的,處理器要有反序間接尋址的能力,。DSP控制器專門(mén)設(shè)計(jì)了特有的反序間接尋址,,并能在一個(gè)指令周期內(nèi)完成乘和累加的運(yùn)算。因此,,對(duì)數(shù)字信號(hào)的分析處理,,DSP比其它的處理器有絕對(duì)的優(yōu)勢(shì)。本文采用TI公司C2000系列TMS320LF2407芯片來(lái)實(shí)現(xiàn)FFT算法,。
TMS320LF2407定點(diǎn)DSP是一款專為工業(yè)控制,、電機(jī)控制和數(shù)字信號(hào)處理等用途而設(shè)計(jì)的DSP,具備單周期乘加指令,,具有FFT反序間接尋址功能,,最高運(yùn)行速度為40MIPS。為了充分利用DSP芯片特有的反序間接尋址等功能,,F(xiàn)FT算法程序采用匯編語(yǔ)言編寫(xiě),,主程序采用C語(yǔ)言,因此程序具有良好的兼容性和可擴(kuò)展性,。
主程序流程圖如圖4所示,。系統(tǒng)初始化主要完成DSP的系統(tǒng)控制和狀態(tài)寄存器、等待狀態(tài)發(fā)生器控制寄存器,、中斷寄存器等的必要設(shè)置,。
本程序采樣函數(shù)為:x=sin(20πt),采樣頻率為640Hz,。
輸入數(shù)據(jù)波形如圖5所示,。一般情況下,我們只關(guān)心信號(hào)頻域的幅度譜,。幅度譜|X(k)|2的計(jì)算:X(k)=XR(k)+jX(k),,|X(k)2|=|Xr(k)|2+|Xi(k)|2。FFT計(jì)算結(jié)果的信號(hào)幅度譜|X(k)|2如圖6所示,。
輸入信號(hào)頻率是10Hz,,根據(jù)公式f=kfs/N,f是原始信號(hào)的頻率,,k表示峰值出現(xiàn)的位置,,fS是采樣頻率,N是計(jì)算的點(diǎn)數(shù),,從幅度譜中看出,,峰值出現(xiàn)在k=1處,,那么,f=1×640/64=10,,與原始信號(hào)的實(shí)際頻率一致,,說(shuō)明計(jì)算結(jié)果正確。
3 快速傅里葉變換(FFT)的應(yīng)用
FFT在生產(chǎn)實(shí)踐和科學(xué)研究中有著廣泛的應(yīng)用,。圖7為FFT的典型應(yīng)用方案,。下面簡(jiǎn)單介紹一下FFT的應(yīng)用領(lǐng)域。
(1)頻譜分析,。對(duì)各類旋轉(zhuǎn)機(jī)械,、電機(jī)、機(jī)床等機(jī)器的主體或部件進(jìn)行實(shí)際運(yùn)行狀態(tài)下的頻譜分析,,可以提供設(shè)計(jì)數(shù)據(jù)和檢驗(yàn)設(shè)計(jì)結(jié)果,,或者找尋震源和診斷故障,保證設(shè)備的安全運(yùn)行等,。在聲納系統(tǒng)中,,為了尋找海洋水面船只或潛艇,需要對(duì)噪聲信號(hào)進(jìn)行頻譜分析,,以提供有用信息,,判斷艦艇運(yùn)行速度、方向,、位置,、大小等。
(2)濾波,。濾波是FFT最廣泛的應(yīng)用,,它使對(duì)波形的頻率分量濾波變得十分簡(jiǎn)單。比如對(duì)采樣信號(hào)進(jìn)行FFT后,,去掉不需要的頻率分量,,再進(jìn)行FFT反變換,就得到濾波后的期望信號(hào),。
(3)電力監(jiān)控系統(tǒng)的諧波分析。電力監(jiān)控系統(tǒng)的諧波分析,,需要對(duì)采樣數(shù)據(jù)進(jìn)行FFT運(yùn)算,,然后通過(guò)液晶屏或其它人機(jī)界面重新繪畫(huà)出來(lái),以方便技術(shù)人員掌握電力的質(zhì)量,。
4 總結(jié)
實(shí)驗(yàn)證明,,此程序在TMS320LF2407定點(diǎn)DSP中運(yùn)行良好,速度快且運(yùn)算結(jié)果十分可靠,,其用于一般的信號(hào)處理和工業(yè)控制都能滿足精度和實(shí)時(shí)的要求,,具有較高的學(xué)術(shù)價(jià)值和良好的應(yīng)用前景,。其次,掌握FFT,,學(xué)會(huì)在空域和頻域中同時(shí)思考問(wèn)題,,很多時(shí)候可以讓我們使用簡(jiǎn)單的方法來(lái)解決復(fù)雜的問(wèn)題。