基于TMS32OLF24O7的FFT算法的實(shí)現(xiàn)及應(yīng)用
2 快速傅里葉算法在TMS320LF2407上的實(shí)現(xiàn)
根據(jù)FFT算法的特點(diǎn),處理器要在一個指令周期內(nèi)完成乘和累加的工作,因?yàn)閺?fù)數(shù)運(yùn)算要多次查表相乘才能實(shí)現(xiàn)。其二就是間接尋址,可以實(shí)現(xiàn)增/減1個變址量,方便各種查表方法。再次,FFT變換的輸入序列x(n)是按所謂的碼位倒序排列的,處理器要有反序間接尋址的能力。DSP控制器專門設(shè)計了特有的反序間接尋址,并能在一個指令周期內(nèi)完成乘和累加的運(yùn)算。因此,對數(shù)字信號的分析處理,DSP比其它的處理器有絕對的優(yōu)勢。本文采用TI公司C2000系列TMS320LF2407芯片來實(shí)現(xiàn)FFT算法。
TMS320LF2407定點(diǎn)DSP是一款專為工業(yè)控制、電機(jī)控制和數(shù)字信號處理等用途而設(shè)計的DSP,具備單周期乘加指令,具有FFT反序間接尋址功能,最高運(yùn)行速度為40MIPS。為了充分利用DSP芯片特有的反序間接尋址等功能,F(xiàn)FT算法程序采用匯編語言編寫,主程序采用C語言,因此程序具有良好的兼容性和可擴(kuò)展性。
主程序流程圖如圖4所示。系統(tǒng)初始化主要完成DSP的系統(tǒng)控制和狀態(tài)寄存器、等待狀態(tài)發(fā)生器控制寄存器、中斷寄存器等的必要設(shè)置。
本程序采樣函數(shù)為:x=sin(20πt),采樣頻率為640Hz。
輸入數(shù)據(jù)波形如圖5所示。一般情況下,我們只關(guān)心信號頻域的幅度譜。幅度譜|X(k)|2的計算:X(k)=XR(k)+jX(k),|X(k)2|=|Xr(k)|2+|Xi(k)|2。FFT計算結(jié)果的信號幅度譜|X(k)|2如圖6所示。
輸入信號頻率是10Hz,根據(jù)公式f=kfs/N,f是原始信號的頻率,k表示峰值出現(xiàn)的位置,fS是采樣頻率,N是計算的點(diǎn)數(shù),從幅度譜中看出,峰值出現(xiàn)在k=1處,那么,f=1×640/64=10,與原始信號的實(shí)際頻率一致,說明計算結(jié)果正確。
3 快速傅里葉變換(FFT)的應(yīng)用
FFT在生產(chǎn)實(shí)踐和科學(xué)研究中有著廣泛的應(yīng)用。圖7為FFT的典型應(yīng)用方案。下面簡單介紹一下FFT的應(yīng)用領(lǐng)域。
(1)頻譜分析。對各類旋轉(zhuǎn)機(jī)械、電機(jī)、機(jī)床等機(jī)器的主體或部件進(jìn)行實(shí)際運(yùn)行狀態(tài)下的頻譜分析,可以提供設(shè)計數(shù)據(jù)和檢驗(yàn)設(shè)計結(jié)果,或者找尋震源和診斷故障,保證設(shè)備的安全運(yùn)行等。在聲納系統(tǒng)中,為了尋找海洋水面船只或潛艇,需要對噪聲信號進(jìn)行頻譜分析,以提供有用信息,判斷艦艇運(yùn)行速度、方向、位置、大小等。
(2)濾波。濾波是FFT最廣泛的應(yīng)用,它使對波形的頻率分量濾波變得十分簡單。比如對采樣信號進(jìn)行FFT后,去掉不需要的頻率分量,再進(jìn)行FFT反變換,就得到濾波后的期望信號。
(3)電力監(jiān)控系統(tǒng)的諧波分析。電力監(jiān)控系統(tǒng)的諧波分析,需要對采樣數(shù)據(jù)進(jìn)行FFT運(yùn)算,然后通過液晶屏或其它人機(jī)界面重新繪畫出來,以方便技術(shù)人員掌握電力的質(zhì)量。
4 總結(jié)
實(shí)驗(yàn)證明,此程序在TMS320LF2407定點(diǎn)DSP中運(yùn)行良好,速度快且運(yùn)算結(jié)果十分可靠,其用于一般的信號處理和工業(yè)控制都能滿足精度和實(shí)時的要求,具有較高的學(xué)術(shù)價值和良好的應(yīng)用前景。其次,掌握FFT,學(xué)會在空域和頻域中同時思考問題,很多時候可以讓我們使用簡單的方法來解決復(fù)雜的問題。
評論