




免費預覽已結束,剩余2頁可下載查看
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于DSP的FFT算法實現1、 FFT的原理快速傅氏變換(FFT)是離散傅氏變換的快速算法,它是根據離散傅氏變換的奇、偶、虛、實等特性,對離散傅立葉變換的算法進行改進獲得的。它對傅氏變換的理論并沒有新的發現,但是對于在計算機系統或者說數字系統中應用離散傅立葉變換,可以說是進了一大步。 設x(n)為N項的復數序列,由DFT變換,任一X(m)的計算都需要N次復數乘法和N-1次復數加法,而一次復數乘法等于四次實數乘法和兩次實數加法,一次復數加法等于兩次實數加法,即使把一次復數乘法和一次復數加法定義成一次“運算”(四次實數乘法和四次實數加法),那么求出N項復數序列的X(m),即N點DFT變換大約就需要N2次運算。當N=1024點甚至更多的時候,需要N2=1048576次運算,在FFT中,利用WN的周期性和對稱性,把一個N項序列(設N=2k,k為正整數),分為兩個N/2項的子序列,每個N/2點DFT變換需要(N/2)2次運算,再用N次運算把兩個N/2點的DFT變換組合成一個N點的DFT變換。這樣變換以后,總的運算次數就變成N+2(N/2)2=N+N2/2。繼續上面的例子,N=1024時,總的運算次數就變成了525312次,節省了大約50%的運算量。而如果我們將這種“一分為二”的思想不斷進行下去,直到分成兩兩一組的DFT運算單元,那么N點的DFT變換就只需要Nlog2N次的運算,N在1024點時,運算量僅有10240次,是先前的直接算法的1%,點數越多,運算量的節約就越大,這就是FFT的優越性。數字信號處理器(DSP)是一種可編程的高性能處理器,近年來發展很快它不僅適用于數字信號處理,而且在圖像處理、語音處理、通信等領域得到了廣泛的應用通用的微處理器在運算速度上很難適應信號實時處理的要求聯滬處理器中集成有高速的乘法器硬件,能快速地進行大量數據的乘法和加法運算。快速傅里葉變換(FFT)的出現使得DFr在實際應用中得到了廣泛的應用2、 基于DSP的FFT算法實現 用C語言實現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的實驗板調試步驟1實驗準備(1)連接實驗設備: (2)準備信號源進行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。設置信號源I:-調整撥動開關“頻率選擇”(圖10-1 中的5)撥到“100Hz1KHz”檔(圖10-1中10)。-將“頻率微調”(圖10-1 中的6)順時針調到頭(最大)。-調整撥動開關“波形選擇”(圖10-1 中的7)撥到“三角波”檔(圖10-1 中的11)。-將“幅值微調”(圖10-1 中的8)順時針調到頭(最大)。設置信號源II:-調整撥動開關“頻率選擇”(圖10-1 中的e)撥到“100Hz1KHz”檔(圖10-1 中的j)。-將“頻率微調”(圖10-1 中的f)順時針調到頭(最大)。-調整撥動開關“波形選擇”(圖10-1 中的g)撥到“正弦波”檔(圖10-1 中的k)。-將“幅值微調”(圖10-1 中的h)順時針調到頭(最大)。將兩個信號源的電源開關(圖10-1 中的2和b)撥到“開”的位置。2設置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 文件,瀏覽該文件的內容,理解各語句作用。5編譯、下載程序。6打開觀察窗口-選擇菜單“View”、“Graph”、“Time/Frequency”做如下設置,然后單擊“OK”按鈕;-選擇菜單“View”、“Graph”、“Time/Frequency”做如下設置(圖10-3),然后單擊“OK”按鈕;-在彈出的圖形窗口中單擊鼠標右鍵,選擇“Clear Display”。通過設置,我們打開了兩個圖形窗口觀察兩個通道模數轉換的結果。7 設置信號源由于模數輸入信號未經任何轉換就進入DSP,所以必須保證輸入的模擬信號的幅度在0-3V之間。必須用示波器檢測信號范圍,保證最小值0V最大值3 V,否則容易損壞DSP芯片的模數采集模塊。8運行程序觀察結果-單擊“Debug”菜單,“Run”項,運行程序;-停止運行,觀察“ADCIN0”、“ADCIN1”窗口中的圖形顯示;-適當改變信號源,按F5 健再次運行,停止后觀察圖形窗口中的顯示。注意:輸入信號的頻率不能大于10KHz,否則會引起混疊失真,而無法觀察到波形,如果有興趣,可以試著做一下,觀察采樣失真后的圖形。9選擇菜單Fileworkspacesave workspacs As,輸入文件名SY.wks 。10退出CCS4、DSP板調試結果之波形及波形分析DSP板有多種調試方法,下面使用的一種為觀測其示波器波形的方法,通過波形,我們可以看出此板子的性能。使用通用定時器Timer1/2/3/4產生PWM,選擇連續計數模式可以產生如下圖所示的非對稱PWM波形選擇連續增/減計數模式可以產生中心或對稱PWM波形,如下圖所示(2)同樣,采用連續增計數模式可以產生一對帶有死區的互補的非對稱PWM波形采用連續增/減計數模式可以產生一對帶有死區的互補的對稱PWM波形實現的方法如下:(1) 采用通用定時器Timer1和Timer2產生兩路PWM波形;(2) 為了產生對稱波形,使兩個定時器都工作于連續增/減計數模式;(3) 從上圖可以看出,S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論