基于dsp的fft算法進行頻譜分析畢業(yè)論文_第1頁
已閱讀1頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  基于DSP用FFT變換進行分析</p><p>  摘要: 隨著計算機和微電子技術(shù)的飛速發(fā)展,基于數(shù)字信號處理的頻譜分析已經(jīng)應(yīng)用到各個領(lǐng)域并且發(fā)揮著重要作用。信號處理方法是當(dāng)前機械設(shè)備故障診斷中重要的技術(shù)基礎(chǔ)之一,分析結(jié)果的精確程度是診斷成功與否的關(guān)鍵因素。研究頻譜分析是當(dāng)前主要的發(fā)展方向之一。數(shù)字信號處理基本上從兩個方面來解決信號的處理問題:一個是時域方法,即數(shù)字濾波;另一個是頻域方法,即

2、頻譜分析.</p><p>  本文主要介紹了離散傅里葉變換以及快速傅里葉變換,通過對DFT以及FFT算法進行研究,從基礎(chǔ)深入研究和學(xué)習(xí),掌握FFT算法的關(guān)鍵。通過對DSP芯片工作原理以及開發(fā)環(huán)境的學(xué)習(xí),掌握CCS的簡單調(diào)試和軟件仿真,在DSP芯片上實現(xiàn)對信號的實時頻譜分析。</p><p>  關(guān)鍵詞: DFT;FFT;頻譜分析;DSP;</p><p>  Sp

3、ectrum Analysis through FFT Based on DSP</p><p>  Abstract: With the development of computer and micro-electronic technology, the analysis of spectrum through FFT which based on DSP has applied to many are

4、as and played a very important role. Signal processing method is a important part of the basic technology at the present mechanical equipment fault. The precise degree of analysis result is the key factor of whether the

5、diagnostic is success or not. Study about the spectrum analysis is one of the mainly develop directions. However, DSP is </p><p>  The passage is mainly introduced FFT and DFT, by studying about the algori

6、thm of FFT and DFT, studying deeply from the basic and learning, grasping the key of FFT algorithm. By learning the working principle of DSP chip and develop environment, grasping the basic debugging and software simulat

7、ing of CCS, achieving the presently spectrum analysis of signal on DSP chip. </p><p>  Key words: DFT; FFT; Spectrum analysis ;DSP </p><p><b>  1 緒論</b></p><p><b&g

8、t;  1.1 引言</b></p><p>  隨著數(shù)字技術(shù)與計算機技術(shù)的發(fā)展,數(shù)字信號處理(DSP)技術(shù)已深入到各個學(xué)科領(lǐng)域。近些年來,數(shù)字信號處理技術(shù)同數(shù)字計算器、大規(guī)模集成電路等,有了突飛猛進的發(fā)展。</p><p>  在數(shù)字信號處理中,離散傅里葉變換(Discrete.Time Fourier Transform,DFT)是常用的變換方法,它在數(shù)字信號處理系統(tǒng)中扮

9、演著重要角色。由離散傅里葉變換發(fā)現(xiàn)頻率離散化,可以直接用來分析信號的頻譜、計數(shù)濾波器的頻率響應(yīng),以及實現(xiàn)信號通過線系統(tǒng)的卷積運算等,因而在信號的頻譜分析方面有很大的作用。</p><p>  由于DFT的運算量太大,即使是采用計算機也很難對問題進行實時處理,所以經(jīng)過很多學(xué)者的不懈努力,便出現(xiàn)了通用的快速傅里葉變換(FFT)??焖俑道锶~變換(Fast Fourier Transform,F(xiàn)FT)并不是與離散傅里葉變

10、換不同的另一種變換,而是為了減少DFT計算次數(shù)的一種快速有效的算法。對FFT算法及其實現(xiàn)方式的研究是很有意義的。目前,F(xiàn)FT己廣泛應(yīng)用在頻譜分析、匹配濾波、數(shù)字通信、圖像處理、語音識別、雷達處理、遙感遙測、地質(zhì)勘探和無線保密通訊等眾多領(lǐng)域。在不同應(yīng)用場合,需要不同性能要求的FFT處理器。在很多應(yīng)用領(lǐng)域都要求FFT處理器具有高速度、高精度、大容量和實時處理的性能。因此,如何更快速、更靈活地實現(xiàn)FFT變得越來越重要。</p>

11、<p>  數(shù)字信號處理器(DSP)是一種可編程的高性能處理器。它不僅是一種適用于數(shù)字信號處理,而且在圖像處理、語音處理、通信等領(lǐng)域得到廣泛的應(yīng)用。DSP處理器中集成有高速的乘法硬件,能快速的進行大量的乘法加法運算[1]。</p><p>  1.2 頻譜分析的技術(shù)發(fā)展</p><p>  頻譜分析在生產(chǎn)實踐和科學(xué)研究中獲得日益廣泛的應(yīng)用。例如,對汽車、飛機、輪船、汽輪機等各類

12、旋轉(zhuǎn)機械、電機、機床等機器的主體或部件進行實際運行狀態(tài)下的譜分析,可以提供設(shè)計數(shù)據(jù)和檢驗設(shè)計效果,或者尋找振源和診斷故障,保證設(shè)備的安全運行等;在聲納系統(tǒng)中,為了尋找海洋水面船只或潛艇,需要對噪聲信號進行譜分析,以提供有用信息,判斷艦艇運動速度、方向、位置、大小等。因此對譜分析方法的研究,受到普遍注意和重視,是當(dāng)前信號處理技術(shù)中一個十分活躍的課題。</p><p>  1965年庫利首次提出了快速傅里葉變換(FF

13、T)算法,F(xiàn)FT和頻譜分析很快發(fā)展成為機械設(shè)備故障診斷、振動分析、無線電通信、信息圖象處理和自動控制等多種學(xué)科重要的理論基礎(chǔ)。然而長期的應(yīng)用和近年來的理論分析表明:經(jīng)快速傅立葉變換得到的離散頻譜,頻率、幅值和相位均可能產(chǎn)生較大誤差,單諧波加矩形窗時最大誤差從理論上分析可達36.4%;即使加其他窗時,也不能完全消除此影響,在加漢寧(Hanning)窗時,只進行幅值恢復(fù)時的最大幅值誤差仍高達15.3%,相位誤差高達90度。因此,頻譜分析的結(jié)

14、果在許多領(lǐng)域只能定性而不能精確的定量分析和解決問題,大大限制了該技術(shù)的工程應(yīng)用,特別是在機械振動和故障診斷中的應(yīng)用受到極大限制。</p><p>  從70年代中期,有關(guān)學(xué)者開始致力于頻譜校正理論的研究以期解決離散頻譜誤差較大的問題。1975年John C.Burges等從事電學(xué)領(lǐng)域研究工作的學(xué)者采用插值法對加矩形窗的離散化頻譜進行校正,解決了電學(xué)中的離散高次諧波參數(shù)的精確測量問題。1983年Thomas Gra

15、ndke提出了加Hanning窗的內(nèi)插法,進一步提高了離散高次諧波參數(shù)的分析精度。1993年,丁康和謝明提出了三點卷積法幅值校正法,提高了頻率間隔較大的信號的離散頻譜幅值精度,解決了工程實際中的一些問題。1994年,謝明、丁康等提出和發(fā)展了比例頻譜校正方法,使內(nèi)差法系統(tǒng)地發(fā)展成為一種通用的頻譜校正方法,解決了頻率間隔較大的離散化頻譜幅值、相位和頻率的精確求解問題,并開始對離散頻譜的校正方法和誤差分析進行了深入系統(tǒng)的分析和研究。1996年

16、,余佳兵,史鐵林等提出了采用復(fù)調(diào)制細化譜分析將已產(chǎn)生頻譜干涉的密集頻率成分分離開,消除干涉,再用比例法進行校正以解決密集頻率成分的離散頻譜的校正問題。1997年,謝明、丁康等分析了離散頻譜中的負頻率成分和多頻譜成分的干涉現(xiàn)象,提出了離散頻譜中用相位和幅值綜合判定和識別單頻率成分的方法,實現(xiàn)了單</p><p>  1.3 本論文主要研究的內(nèi)容</p><p>  本文主要介紹基于DSP用

17、FFT變換實現(xiàn)對信號的頻譜分析。研究離散傅里葉變換以及快速傅里葉變換的原理及算法??焖俑道锶~變換和離散傅里葉變換的基本理論是一樣的,它根據(jù)離散傅里葉變換的奇、偶、虛、實等特性,對離散傅里葉變換進行了改進。在計算機系統(tǒng)或者數(shù)字系統(tǒng)中廣泛應(yīng)用者快速傅里葉變換,這是一個巨大的進步。本文主要解決的問題就是如何對信號的頻譜進行研究,使FFT更廣泛的應(yīng)用于科學(xué)研究。</p><p>  2 離散傅里葉變換(DFT)<

18、/p><p>  2.1 離散傅里葉變換的定義</p><p>  設(shè)x(n)是一個長度為M的有限長序列,則x(n)的N點離散傅立葉變換為:</p><p>  X(k)=DFT[x(n)]=,k=0,1,...,N-1。 (1)</p><p>  X(k)的離散傅里葉逆變換為:</p><p&g

19、t;  x(n) =IDFT[X(k)]= ,k=0,1,...,N-1 (2)</p><p>  式中,,N稱為DFT變換區(qū)間長度,N≥M。</p><p>  2.2 離散傅里葉變換的基本性質(zhì)</p><p><b>  2.2.1線性性質(zhì)</b></p><p>  如果和是兩個有限長序列,長

20、度分別為和,且</p><p><b>  。</b></p><p>  式中,a、b為常數(shù),取,則y(n)的N點DFT為:</p><p>  0≤k≤N—1 (3)</p><p>  其中,和分別為和的N點DFT。</p><p>  2.2.2 循環(huán)移位

21、性質(zhì)</p><p> ?。?)序列的循環(huán)移位</p><p>  設(shè)x(n)為有限長序列,長度為M,M≤N,則x(n)的循環(huán)移位定義為</p><p><b>  (4)</b></p><p> ?。?)時域循環(huán)移位定理</p><p>  設(shè)x(n)是長度為M(M≤N)的有限長序列,y(n)

22、為x(n)的循環(huán)移位,即</p><p>  則 (5)</p><p>  其中 0≤k≤N—1</p><p> ?。?)頻域循環(huán)移位定理</p><p>  如果 0≤k≤N—1</p><p>  則

23、 (6)</p><p>  2.2.3 循環(huán)卷積定理</p><p>  有限長序列和的長度分別為和,N≥max[,],和的N點循環(huán)卷積為:</p><p><b>  =</b></p><p>  則x(n)的N點DFT為:</p><

24、;p><b> ?。?)</b></p><p>  2.2.4 共軛對稱性</p><p>  如果序列x(n)的DFT為X(k),則x(n)的實部和虛部(包括j)的DFT分別為X(k)的共軛對稱分量和共軛反對稱分量;而x(n)的共軛對稱分量和反共軛對稱分量的DFT分別為X(k)的實部和虛部乘以j[3]。</p><p>  3 快速

25、傅里葉變換(FFT)</p><p>  3.1 FFT算法基本原理</p><p>  快速傅里葉變換(FFT)是離散傅里葉變換的快速算法,它是根據(jù)離散傅里葉變換的奇、偶、虛、實等特性,對離散傅里葉變換的算法進行改進獲得的,它對離散傅里葉變換并沒有新的發(fā)現(xiàn)。</p><p>  有限長序列x(n)及其頻域表示X(k)可由以下離散傅立葉變換得出</p>

26、<p><b> ?。?)</b></p><p><b> ?。?)</b></p><p>  其中。式(8)稱為離散傅立葉正變換,式(9)稱為離散傅立葉逆變換,x(n)與X(k)構(gòu)成了離散傅立葉變換對。</p><p>  根據(jù)上述公式,計算一個X(k),需要N次復(fù)數(shù)乘法和N-1次復(fù)數(shù)加法,而計算全部X

27、(k)( ),共需要次復(fù)數(shù)乘法和N(N-1)次復(fù)數(shù)加法。實現(xiàn)一次復(fù)數(shù)乘法需要四次實數(shù)乘法和兩次實數(shù)加法,一次復(fù)數(shù)加法需要兩次實數(shù)加法,因此直接計算全部X(k)共需要4次實數(shù)乘法和2N(2N-1)次實數(shù)加法。當(dāng)N較大時,對實時信號處理來說,對處理器計算速度有十分苛刻的要求,于是如何減少計算離散傅里葉變換運算量的問題變得至關(guān)重要。</p><p>  為減少運算量,提高運算速度,就必須改進算法。計算DFT過程中需要完

28、成的運算的系數(shù)里,存在相當(dāng)多的對稱性。通過研究這種對稱性,可以簡化計算過程中的運算,從而減少計算DFT所需的時間。</p><p>  如前所述,N點的DFT的復(fù)乘次數(shù)等于。顯然,把N點的DFT分解為幾個較短的DFT,可是乘法的次數(shù)大大減少。另外,旋轉(zhuǎn)因子具有明顯的周期性和對稱性,其周期為:</p><p><b>  其對稱性表現(xiàn)為:</b></p>

29、<p><b>  或</b></p><p>  FFT算法就是不斷地把長序列的DFT分解成幾個短序列的DFT,并利用的周期性和對稱性來減少DFT的運算次數(shù)。</p><p><b>  具有以下固有特性:</b></p><p><b>  (1)的周期性:</b></p>

30、<p><b>  (2)的對稱性: </b></p><p><b>  (3)的可約性:</b></p><p><b>  另外,。</b></p><p>  利用的上述特性,將x(n)或X(k)序列按一定規(guī)律分解成短序列進行運算,這樣可以避免大量的重復(fù)運算,提高計算DFT的運算速

31、度。算法形式有很多種,但基本上可以分為兩大類,即按時間抽取(Decimation In Time,DIT)FFT算法和按頻率抽取(Decimation In Frequency,DIF)FFT算法。</p><p>  3.2 基-2FFT算法</p><p>  如果序列x(n)的長度,其中M是整數(shù)(如果不滿足此條件,可以人為地增補零值點來達到),在時域上按奇偶抽取分解成短序列的DFT

32、,使最小DFT運算單元為2點。通常將FFT運算中最小DFT運算單元稱為基(radix),因而把這種算法稱為基-2時間抽取FFT(DIT-FFT)算法[4]。</p><p>  將x(n)按n為奇偶分解成兩個子序列,當(dāng)n為偶數(shù)時,令n=2r;當(dāng)n為奇數(shù)時,令n=2r+l;可得到</p><p><b> ?。?0)</b></p><p>&l

33、t;b>  則其DFT可寫成</b></p><p><b> ?。?1)</b></p><p>  和均分別是N/2點序列和的DFT,而且r與k的取值滿足0,1,…,N/2-1。而X(k)是一個N點的DFT,因此式(11)只計算了X(k)的前N/2的值。由DFT和的性質(zhì)可得到X(k)的后N/2的值為:</p><p>&l

34、t;b>  (12)</b></p><p>  式(11)和式(12)表明,只要計算出兩個N/2點的DFT 和,經(jīng)過線性組合,即可求出全部N點的X(k)。由于,仍為偶數(shù),因而這樣的分解可以繼續(xù)進行下去,直到最后的單元只需要做2點DFT為止。</p><p>  若Xm(p)和Xm(q)為輸入數(shù)據(jù),和為輸出數(shù)據(jù),為旋轉(zhuǎn)因子,則對于基-2DIT-FFT算法,蝶形運算的基本公

35、式為</p><p>  其圖形表示如圖1所示,稱Xm(P)為上結(jié)點,Xm(q)為下結(jié)點。</p><p>  圖1 時間抽取蝶形運算單元</p><p>  對于一個8點的FFT,根據(jù)上述算法可以得到一個完整的N=8的基-2DIT-FFT的運算流圖,如圖2所示。</p><p>  圖2 N=8 DIT-FFT運算流圖</p>

36、;<p>  根據(jù)上述算法原理及運算流圖,可以得出基-2DIT-FFT的基本特點,特點如下。</p><p>  (1)級數(shù)分解:對于。共分了M級,每級包含N/2個蝶形運算單元,總共所需蝶形運算個數(shù)為。</p><p>  (2)運算量估計:每個蝶形運算需要一次復(fù)數(shù)乘法和兩次復(fù)數(shù)加(減)法,N點FFT共需要次復(fù)數(shù)乘法,次復(fù)數(shù)加(減)法。實際上有些蝶形運算不需要做復(fù)乘。<

37、/p><p>  (3)原位運算:當(dāng)數(shù)據(jù)輸入到存儲器以后,每一組蝶形運算后,結(jié)果仍然存放在這同一組存儲器中的同一位置,不需要另辟存儲單元,直到最后輸出。</p><p>  (4)位碼倒序:由圖2可以看到,F(xiàn)FT輸出的X(k)的次序正好是順序排列的,即X(0),X(1),…,X(7),而輸入X(n)是按x(0),X(4),…,X(7)的倒序存入存儲單元,即為倒序輸入,正序輸出。這種順序看起來相

38、當(dāng)雜亂,然而它是有規(guī)律的,即位碼倒序規(guī)則。</p><p>  (5)旋轉(zhuǎn)因子的確定:由8點FFT的三次迭代運算可以看出的變化。在第一級迭代中,只有一種類型的蝶形運算系數(shù),即,參加蝶形運算的兩個數(shù)據(jù)點間隔為l;在第二級迭代中,有兩種類型的蝶形運算系數(shù),分別是和,參加蝶形運算的兩個數(shù)據(jù)點間隔為2;在第三級迭代中,有四種類型的蝶形運算系數(shù),分別是,,,,參加蝶形運算的兩個數(shù)據(jù)點間隔4。可見,每次迭代的蝶形類型比前一迭

39、代增加一倍,間隔也增大一倍。最后一次迭代的蝶形類型最多,參加蝶形運算的兩個數(shù)據(jù)點的間隔也最大,為N/2。</p><p>  4 FFT算法的MATLAB仿真及DSP的實現(xiàn)</p><p>  4.1 MATLAB仿真</p><p>  4.1.1 相關(guān)的MATLAB功能函數(shù)簡介</p><p> ?。?)圖像顯示函數(shù):plot,x軸和

40、y軸均為線性刻度。</p><p>  (2) 圖形生成函數(shù):figure,生成圖形窗口。</p><p> ?。?)FFT函數(shù):fft(S),其中S為加窗后的一個幀信號。因為實時信號FFT的頻域樣值關(guān)于中點(即采樣頻率的1/2)對稱,所以fft(S)給出的矩陣數(shù)據(jù)只有前半部分有用。</p><p>  (4)復(fù)數(shù)取共軛函數(shù):conj(Z),其中Z是fft的結(jié)果。該

41、函數(shù)在求X(m,k)(是個復(fù)數(shù))的幅度時是有用的。</p><p>  (5) randn:產(chǎn)生正態(tài)分布的隨機數(shù)或矩陣的函數(shù)[5-6]。</p><p>  4.2.2 用FFT變換進行頻譜分析在MATLAB軟件上的驗證</p><p>  為了驗證FFT算法的正確性,在這里設(shè)定一個由=50Hz,=200Hz正弦波組成的信號,給信號加上一個高斯白噪聲。以=1000H

42、z的采樣頻率進行采樣,進行N=2048點的FFT分析。在MATLAB軟件上進行編程仿真,我們可以得到信號的時域波形(如圖3所示)和譜分析曲線(如圖4所示)。</p><p><b>  圖3 時域波形</b></p><p>  圖4 FFT譜分析結(jié)果</p><p>  由圖4可以看出,只有和是有用的信號,其余的是由我們所加上的高斯白噪聲干擾

43、所產(chǎn)生的誤差。由此可以得出,F(xiàn)FT算法是正確的。</p><p>  基于DSP實現(xiàn)FFT變換頻譜分析</p><p>  4.2.1DSP芯片和編程工具CCS 2.0的簡介</p><p>  (1)TMS320C5402簡介</p><p>  TMS320C5402是TI公司為了實現(xiàn)低功耗、高性能而專門設(shè)計的定點DSP芯片。它有如下的特

44、點:具有運算速度快,指令周期可以達10ns以內(nèi);優(yōu)化的CPU結(jié)構(gòu),內(nèi)部有1個40位的算術(shù)邏輯單元,2個40位的累加器,2個40位加法器,1個17×17的乘法器和40位的桶形移位器。有4條內(nèi)部總線和2個地址產(chǎn)生器。先進的DSP結(jié)構(gòu)可以高效快速實現(xiàn)數(shù)字信號處理中的各種算法的運算。它不僅具有標(biāo)準(zhǔn)的串行口和時分復(fù)用(TDM)串行口,還提供了自動緩沖串行DBSP和與外部處理器通信的HPI的主機接口。HPI可以與外部標(biāo)準(zhǔn)的微處理器直接接口

45、。</p><p>  (2)CCS2.0簡介</p><p>  DSP編程工具CCS是繼“一體化的DSP解決方案"后,TI公司為了鞏固其在DSP業(yè)界的地位而在開發(fā)工具方面的一次重拳出擊。CCS集成了開發(fā)環(huán)境,使得DSP代碼開發(fā)過程從編程、編譯到調(diào)試代碼的性能測試都集成在一個環(huán)境下進行,而且各項功能都有了一定程度的提升,簡化了開發(fā)過程,該工具主要集成了以下幾個軟件工具:<

46、/p><p>  (1)DSP代碼產(chǎn)生工具(包括C編譯器、匯編優(yōu)化器、匯編器和連接器)。CCS不僅支持高級語言C編程、匯編語言編程,還支持高級語言C匯編語言混合模式編程,降低了代碼開發(fā)難度;</p><p>  (2)軟件模擬器(SIMULATOR)。模擬整個硬件的開發(fā)過程,使得系統(tǒng)的實現(xiàn)更加可靠;</p><p>  (3)實時基礎(chǔ)軟件。DSP/BIOS和主機目標(biāo)機之

47、間的實時數(shù)據(jù)交換軟件RTDX,它們所提供的實時分析功能為目標(biāo)系統(tǒng)提供了一個實時窗口,不僅可以直接實時顯示原始數(shù)據(jù),還可以對原始數(shù)據(jù)進行處理。在傳統(tǒng)的主機調(diào)試器必須通過在應(yīng)用程序中插入斷點,中斷應(yīng)用程序運行才能與目標(biāo)系統(tǒng)交換數(shù)據(jù),這種方法不僅麻煩,而且所得到的數(shù)據(jù)只是應(yīng)用程序在高速運行中的一個側(cè)面,為故障診斷和系統(tǒng)性能評測等帶來了許多不便。利用RTDX技術(shù),就可以在不中斷應(yīng)用程序的前提下完成主機與目標(biāo)機之間的實時數(shù)據(jù)交換,另外RTDX完成

48、主機與目標(biāo)機數(shù)據(jù)交換所使用的是DSP內(nèi)部的仿真邏輯和JTAG接口,它不占用DSP系統(tǒng)的總線、串口等I/O資源,所以可以在應(yīng)用程序背景下運行對DSP系統(tǒng)的影響很小[7-8]。</p><p>  4.2.2利用DSP中的FFT函數(shù)進行頻譜分析</p><p>  啟動CCS 2.0,用Project/Open打開 “ExpFFTAD50.pjt”工程文件;雙擊“expFFTAD50.pjt”

49、及“Source”可查看各源程序;加載“exp FFTAD50.out”;在主程序中,K++設(shè)置斷點;單擊“Run”運行程序,程序?qū)⑦\行至斷點處停止,如圖5所示。</p><p><b>  圖5 設(shè)置斷點</b></p><p>  用View/Graph/Time/Frequency打開一個圖形觀察窗口;設(shè)置該圖形窗口變量及參數(shù),如圖6所示。</p>

50、<p>  采用雙蹤觀察在啟動地址分別為0x3000H和0x3080H,長度為128的單元中數(shù)值的變化,數(shù)值類型為16位有符號整型變量,這兩段存儲單元中分別存放的是經(jīng)A/D轉(zhuǎn)換后的語音信號和對該信號進行FFT變換的結(jié)果。</p><p><b>  圖6 參數(shù)設(shè)置</b></p><p>  單擊“Animate”(或按F10)運行程序;調(diào)整觀察窗口并觀察

51、輸入信號波形及其FFT變換結(jié)果;單擊“Halt”暫停程序運行,可以得到語音信號的時域波形和對該信號進行FFT變換譜分析的靜態(tài)圖像,如圖7、圖8所示。</p><p>  圖7 頻譜分析結(jié)果(一)</p><p>  圖8 頻譜分析結(jié)果(二)</p><p>  圖7和圖8分別為輸入語音信號頻率大小不同情況下的結(jié)果;其中中上面的波形為語音信號的時域波形,下面的波形為對

52、該信號進行FFT變換后的譜分析結(jié)果。</p><p>  由此我們可以得出:數(shù)字信號處理(DSP)能夠?qū)π盘栠M行實時分析,以便我們對各種信息能夠更及時的了解,這也是它的優(yōu)越性所在,使得他在我們的生活生產(chǎn)中有著更廣泛的應(yīng)用。</p><p><b>  附錄</b></p><p>  EXPFFTAD50.C</p><p&

53、gt;  extern void InitC5402(void);</p><p>  extern void OpenMcBSP(void);</p><p>  extern void CloseMcBSP(void);</p><p>  extern void READAD50(void);</p><p>  extern void

54、 WRITEAD50(void);</p><p>  /***********************************************************************</p><p>  ** Main Function Program</p><p>  **************************************

55、*********************************/</p><p>  #include "stdio.h"</p><p>  #include "math.h"</p><p>  void kfft(pr,pi,n,k,fr,fi,l,il)</p><p>  int n,k,

56、l,il;</p><p>  double pr[],pi[],fr[],fi[];</p><p>  { int it,m,is,i,j,nv,l0;</p><p>  double p,q,s,vr,vi,poddr,poddi;</p><p>  for (it=0; it<=n-1; it++)</p>&

57、lt;p>  { m=it; is=0;</p><p>  for (i=0; i<=k-1; i++)</p><p>  { j=m/2; is=2*is+(m-2*j); m=j;}</p><p>  fr[it]=pr[is]; fi[it]=pi[is];</p><p><b>  }</b>

58、</p><p>  pr[0]=1.0; pi[0]=0.0;</p><p>  p=6.283185306/(1.0*n);</p><p>  pr[1]=cos(p); pi[1]=-sin(p);</p><p>  if (l!=0) pi[1]=-pi[1];</p><p>  for (i=2; i

59、<=n-1; i++)</p><p>  { p=pr[i-1]*pr[1]; q=pi[i-1]*pi[1];</p><p>  s=(pr[i-1]+pi[i-1])*(pr[1]+pi[1]);</p><p>  pr[i]=p-q; pi[i]=s-p-q;</p><p><b>  }</b>&l

60、t;/p><p>  for (it=0; it<=n-2; it=it+2)</p><p>  { vr=fr[it]; vi=fi[it];</p><p>  fr[it]=vr+fr[it+1]; fi[it]=vi+fi[it+1];</p><p>  fr[it+1]=vr-fr[it+1]; fi[it+1]=vi-fi[

61、it+1];</p><p><b>  }</b></p><p>  m=n/2; nv=2;</p><p>  for (l0=k-2; l0>=0; l0--)</p><p>  { m=m/2; nv=2*nv;</p><p>  for (it=0; it<=(m-1

62、)*nv; it=it+nv)</p><p>  for (j=0; j<=(nv/2)-1; j++)</p><p>  { p=pr[m*j]*fr[it+j+nv/2];</p><p>  q=pi[m*j]*fi[it+j+nv/2];</p><p>  s=pr[m*j]+pi[m*j];</p><

63、;p>  s=s*(fr[it+j+nv/2]+fi[it+j+nv/2]);</p><p>  poddr=p-q; poddi=s-p-q;</p><p>  fr[it+j+nv/2]=fr[it+j]-poddr;</p><p>  fi[it+j+nv/2]=fi[it+j]-poddi;</p><p>  fr[it

64、+j]=fr[it+j]+poddr;</p><p>  fi[it+j]=fi[it+j]+poddi;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if (l!=0)</b></p><p

65、>  for (i=0; i<=n-1; i++)</p><p>  { fr[i]=fr[i]/(1.0*n);</p><p>  fi[i]=fi[i]/(1.0*n);</p><p><b>  }</b></p><p>  if (il!=0)</p><p>  fo

66、r (i=0; i<=n-1; i++)</p><p>  { pr[i]=sqrt(fr[i]*fr[i]+fi[i]*fi[i]);</p><p>  if (fabs(fr[i])<0.000001*fabs(fi[i]))</p><p>  { if ((fi[i]*fr[i])>0) pi[i]=90.0;</p>&

67、lt;p>  else pi[i]=-90.0;</p><p><b>  }</b></p><p><b>  else</b></p><p>  pi[i]=atan(fi[i]/fr[i])*360.0/6.283185306;</p><p><b>  }</b

68、></p><p><b>  }</b></p><p>  void main(void)</p><p><b>  {</b></p><p>  int i,n,k=0;</p><p>  double x[128],pr[128],pi[128],fr

69、[128],fi[128],mo[128];</p><p>  int xm,zm;</p><p>  int *px = (int*)0x3000;</p><p>  int *pz = (int*)0x3080;</p><p><b>  n=128;</b></p><p>  In

70、itC5402(); /* initialize C5402 DSP */</p><p>  OpenMcBSP();</p><p><b>  for (;;)</b></p><p><b>  {</b></p><p>  READAD50();</p><p>

71、;  px = (int*)0x3000;</p><p>  for (i=0; i<=n-1; i++)</p><p><b>  {</b></p><p><b>  xm=*px;</b></p><p>  x[i]=xm/32768.0;</p><p>

72、;  pr[i]=x[i];</p><p><b>  pi[i]=0;</b></p><p><b>  px++;</b></p><p><b>  }</b></p><p>  kfft(pr,pi,128,7,fr,fi,0,1);</p>&

73、lt;p>  pz = (int*)0x3080;</p><p>  for (i=0;i<=n-1;i++)</p><p><b>  {</b></p><p>  mo[i] = sqrt(fr[i]*fr[i]+fi[i]*fi[i]);</p><p>  zm = (int)(mo[i]*10

74、00.0);</p><p><b>  *pz = zm;</b></p><p><b>  pz++;</b></p><p><b>  }</b></p><p><b>  k++;</b></p><p><b&

75、gt;  }</b></p><p><b>  }</b></p><p>  /***********************************************************************</p><p>  ** End of File –– ExpFFTAD50.c</p>

76、<p>  ***********************************************************************/</p><p><b>  結(jié)論</b></p><p>  本論文學(xué)習(xí)和研究了離散傅里葉變換(DFT)和快速傅里葉變換(FFT)的算法,把重點放在了時間抽取法基-2FFT算法上。以及在DSP基礎(chǔ)上

77、用FFT變換對信號進行頻譜分析。明確了FFT在DSP芯片上的實現(xiàn)的關(guān)鍵?;贒SP的快速傅里葉變換頻譜分析的研究使FFT能夠有效的在DSP芯片上實現(xiàn),有助于我們能夠更及時的了解信息,對我們的生活生產(chǎn)以及科技研究有很大的幫助。</p><p>  自從快速傅里葉變換(FFT)出現(xiàn)以后,頻譜分析技術(shù)便很快的發(fā)展起來,而且越來越貼近我們的生活生產(chǎn),如醫(yī)療器械,無線電通信等等。但是我們對頻譜分析技術(shù)的研究并未達到最高的層

78、次,未來發(fā)展具有很廣闊的空間。</p><p><b>  參考文獻</b></p><p>  [1]方勇.數(shù)字信號處理—原理與實踐[M].北京:清華大學(xué)出版社.2006.</p><p>  [2]丁康,張曉飛.頻譜校正理論的發(fā)展[J].振動工程學(xué)報.2000 </p><p>  [3]高西全,丁玉美. 數(shù)字信號處

79、理[M].西安:西安電子科技大學(xué)出版社. 2008</p><p>  [4]孫仲康.快速傅里葉變換及其應(yīng)用[M]. 北京:人民郵電出版社.1982.</p><p>  [5]鄭阿奇.MATLAB實用教程[M].北京:電子工業(yè)出版社.2009.</p><p>  [6]郭仕劍,王寶順,賀志國,楊可心.MATLAB7.X數(shù)字信號處理[M]。北京:中國郵電出版社.2

80、006 </p><p>  [7]趙桂芳等.基于DSP的快速傅立葉變換的實現(xiàn)[J].黃石理工學(xué)院學(xué)報.2007</p><p>  [8]喬瑞萍,崔濤,張芳娟.TMS32054xDSP原理及應(yīng)用[M].西安:西安電子科技大學(xué)出版社.2005:</p><p>  [9]楊宇,葉宇風(fēng),王洪.基于DSP的實時信號頻譜分析模塊設(shè)計[J].電子測量技術(shù).2006年4月第二

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論