基于DSP的FFT算法實現(xiàn).doc_第1頁
基于DSP的FFT算法實現(xiàn).doc_第2頁
基于DSP的FFT算法實現(xiàn).doc_第3頁
基于DSP的FFT算法實現(xiàn).doc_第4頁
基于DSP的FFT算法實現(xiàn).doc_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于DSP的FFT算法實現(xiàn)1、 FFT的原理快速傅氏變換(FFT)是離散傅氏變換的快速算法,它是根據(jù)離散傅氏變換的奇、偶、虛、實等特性,對離散傅立葉變換的算法進行改進獲得的。它對傅氏變換的理論并沒有新的發(fā)現(xiàn),但是對于在計算機系統(tǒng)或者說數(shù)字系統(tǒng)中應(yīng)用離散傅立葉變換,可以說是進了一大步。 設(shè)x(n)為N項的復(fù)數(shù)序列,由DFT變換,任一X(m)的計算都需要N次復(fù)數(shù)乘法和N-1次復(fù)數(shù)加法,而一次復(fù)數(shù)乘法等于四次實數(shù)乘法和兩次實數(shù)加法,一次復(fù)數(shù)加法等于兩次實數(shù)加法,即使把一次復(fù)數(shù)乘法和一次復(fù)數(shù)加法定義成一次“運算”(四次實數(shù)乘法和四次實數(shù)加法),那么求出N項復(fù)數(shù)序列的X(m),即N點DFT變換大約就需要N2次運算。當(dāng)N=1024點甚至更多的時候,需要N2=1048576次運算,在FFT中,利用WN的周期性和對稱性,把一個N項序列(設(shè)N=2k,k為正整數(shù)),分為兩個N/2項的子序列,每個N/2點DFT變換需要(N/2)2次運算,再用N次運算把兩個N/2點的DFT變換組合成一個N點的DFT變換。這樣變換以后,總的運算次數(shù)就變成N+2(N/2)2=N+N2/2。繼續(xù)上面的例子,N=1024時,總的運算次數(shù)就變成了525312次,節(jié)省了大約50%的運算量。而如果我們將這種“一分為二”的思想不斷進行下去,直到分成兩兩一組的DFT運算單元,那么N點的DFT變換就只需要Nlog2N次的運算,N在1024點時,運算量僅有10240次,是先前的直接算法的1%,點數(shù)越多,運算量的節(jié)約就越大,這就是FFT的優(yōu)越性。數(shù)字信號處理器(DSP)是一種可編程的高性能處理器,近年來發(fā)展很快它不僅適用于數(shù)字信號處理,而且在圖像處理、語音處理、通信等領(lǐng)域得到了廣泛的應(yīng)用通用的微處理器在運算速度上很難適應(yīng)信號實時處理的要求聯(lián)滬處理器中集成有高速的乘法器硬件,能快速地進行大量數(shù)據(jù)的乘法和加法運算??焖俑道锶~變換(FFT)的出現(xiàn)使得DFr在實際應(yīng)用中得到了廣泛的應(yīng)用2、 基于DSP的FFT算法實現(xiàn) 用C語言實現(xiàn)FFT算法/*fft programe*/#include typedef.h #include math.h struct compx EE(struct compx b1,struct compx b2) struct compx b3 ; b3.real=b1.real*b2.real-b1.imag*b2.imag ; b3.imag=b1.real*b2.imag+b1.imag*b2.real ; return(b3);void FFT(struct compx*xin,int N) int f,m,nv2,nm1,i,k,j=1,l ; /*int f,m,nv2,nm1,i,k,j=N/2,l;*/ struct compx v,w,t ; nv2=N/2 ; f=N ; for(m=1;(f=f/2)!=1;m+) ; nm1=N-1 ; /*變址運算*/ for(i=1;i=nm1;i+) if(ij) t=xinj; xinj=xini; xini=t ; k=nv2 ; while(kj) j=j-k ; k=k/2 ; j=j+k ; int le,lei,ip ; float pi ; for(l=1;l=m;l+) le=pow(2,l); / 這里用的是L而不是1 lei=le/2 ; pi=3.14159 ; v.real=1.0 ; v.imag=0.0 ; w.real=cos(pi/lei); w.imag=-sin(pi/lei); for(j=1;j=lei;j+) /*double p=pow(2,m-l)*j; double ps=2*pi/N*p; w.real=cos(ps); w.imag=-sin(ps);*/ for(i=j;i=N;i=i+le) /* w.real=cos(ps); w.imag=-sin(ps);*/ ip=i+lei ; t=EE(xinip,v); xinip.real=xini.real-t.real ; xinip.imag=xini.imag-t.imag ; xini.real=xini.real+t.real ; xini.imag=xini.imag+t.imag ; v=EE(v,w); return ;/*main programe*/#include#include#include#include typedef.h float result257;struct compx s257;int Num=256 ;const float pp=3.14159 ;main() int i=1 ; for(;i0x101;i+) si.real=sin(pp*i/32); si.imag=0 ; FFT(s,Num); for(i=1;i0x101;i+) resulti=sqrt(pow(si.real,2)+pow(si.imag,2); 3、ICETEK-F2812-A的實驗板調(diào)試步驟1實驗準(zhǔn)備(1)連接實驗設(shè)備: (2)準(zhǔn)備信號源進行AD 輸入。取出2 根實驗箱附帶的信號線(如右圖,兩端均為單聲道語音插頭)。用1 根信號線連接實驗箱底板上信號源I模塊(圖10-1 中單實線框中部分)的“波形輸出”插座(圖10-1中的3 或4)和“A/D 輸入”模塊(圖10-1中虛線框中部分)的“ADCIN0”插座(圖10-1 中的A),注意插頭要插牢、到底。這樣,信號源I的輸出波形即可送到ICETEK-F2812-A評估板的AD 輸入通道0。用1 根信號線連接實驗箱底板上信號源II模塊(圖10-1中雙實線框中部分)的“波形輸出”插座(圖10-1 中的c或d)和“A/D 輸入”模塊的“ADCIN1”插座(圖10-1中的B),注意插頭要插牢、到底。這樣,信號源II的輸出波形即可送到ICETEK-F2812-A評估板的AD 輸入通道1。設(shè)置信號源I:-調(diào)整撥動開關(guān)“頻率選擇”(圖10-1 中的5)撥到“100Hz1KHz”檔(圖10-1中10)。-將“頻率微調(diào)”(圖10-1 中的6)順時針調(diào)到頭(最大)。-調(diào)整撥動開關(guān)“波形選擇”(圖10-1 中的7)撥到“三角波”檔(圖10-1 中的11)。-將“幅值微調(diào)”(圖10-1 中的8)順時針調(diào)到頭(最大)。設(shè)置信號源II:-調(diào)整撥動開關(guān)“頻率選擇”(圖10-1 中的e)撥到“100Hz1KHz”檔(圖10-1 中的j)。-將“頻率微調(diào)”(圖10-1 中的f)順時針調(diào)到頭(最大)。-調(diào)整撥動開關(guān)“波形選擇”(圖10-1 中的g)撥到“正弦波”檔(圖10-1 中的k)。-將“幅值微調(diào)”(圖10-1 中的h)順時針調(diào)到頭(最大)。將兩個信號源的電源開關(guān)(圖10-1 中的2和b)撥到“開”的位置。2設(shè)置Code Composer Studio 2.21在硬件仿真(Emulator)方式下運行請參看本書第一部分、四、2。3啟動Code Composer Studio 2.21請參看本書第一部分、五、2。選擇菜單DebugReset CPU。4打開工程文件-工程目錄:C:ICETEK-F2812-A-EDUlabDSP281x_examplesLab0305-AD ADC.pjt。-在項目瀏覽器中,雙擊adc.c,打開adc.c 文件,瀏覽該文件的內(nèi)容,理解各語句作用。5編譯、下載程序。6打開觀察窗口-選擇菜單“View”、“Graph”、“Time/Frequency”做如下設(shè)置,然后單擊“OK”按鈕;-選擇菜單“View”、“Graph”、“Time/Frequency”做如下設(shè)置(圖10-3),然后單擊“OK”按鈕;-在彈出的圖形窗口中單擊鼠標(biāo)右鍵,選擇“Clear Display”。通過設(shè)置,我們打開了兩個圖形窗口觀察兩個通道模數(shù)轉(zhuǎn)換的結(jié)果。7 設(shè)置信號源由于模數(shù)輸入信號未經(jīng)任何轉(zhuǎn)換就進入DSP,所以必須保證輸入的模擬信號的幅度在0-3V之間。必須用示波器檢測信號范圍,保證最小值0V最大值3 V,否則容易損壞DSP芯片的模數(shù)采集模塊。8運行程序觀察結(jié)果-單擊“Debug”菜單,“Run”項,運行程序;-停止運行,觀察“ADCIN0”、“ADCIN1”窗口中的圖形顯示;-適當(dāng)改變信號源,按F5 健再次運行,停止后觀察圖形窗口中的顯示。注意:輸入信號的頻率不能大于10KHz,否則會引起混疊失真,而無法觀察到波形,如果有興趣,可以試著做一下,觀察采樣失真后的圖形。9選擇菜單Fileworkspacesave workspacs As,輸入文件名SY.wks 。10退出CCS4、DSP板調(diào)試結(jié)果之波形及波形分析DSP板有多種調(diào)試方法,下面使用的一種為觀測其示波器波形的方法,通過波形,我們可以看出此板子的性能。使用通用定時器Timer1/2/3/4產(chǎn)生PWM,選擇連續(xù)計數(shù)模式可以產(chǎn)生如下圖所示的非對稱PWM波形選擇連續(xù)增/減計數(shù)模式可以產(chǎn)生中心或?qū)ΨQPWM波形,如下圖所示(2)同樣,采用連續(xù)增計數(shù)模式可以產(chǎn)生一對帶有死區(qū)的互補的非對稱PWM波形采用連續(xù)增/減計數(shù)模式可以產(chǎn)生一對帶有死區(qū)的互補的對稱PWM波形實現(xiàn)的方法如下:(1) 采用通用定時器Timer1和Timer2產(chǎn)生兩路PWM波形;(2) 為了產(chǎn)生對稱波形,使兩個定時器都工作于連續(xù)增/減計數(shù)模式;(3) 從上圖可以看出,S

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論