DSP原理及應(yīng)用課程設(shè)計(jì)—FFT基于DSP的實(shí)現(xiàn)_第1頁(yè)
DSP原理及應(yīng)用課程設(shè)計(jì)—FFT基于DSP的實(shí)現(xiàn)_第2頁(yè)
DSP原理及應(yīng)用課程設(shè)計(jì)—FFT基于DSP的實(shí)現(xiàn)_第3頁(yè)
DSP原理及應(yīng)用課程設(shè)計(jì)—FFT基于DSP的實(shí)現(xiàn)_第4頁(yè)
DSP原理及應(yīng)用課程設(shè)計(jì)—FFT基于DSP的實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、贊次應(yīng)打下次舉現(xiàn)代科技學(xué)限POLYTECHNICINSTITUTETAIYUANUNIVERSITYOFTECHNOLOGYDSP原理及應(yīng)用課程設(shè)計(jì)FFT基于DSP的實(shí)現(xiàn)班級(jí):姓名;學(xué)號(hào):FFT的DSP實(shí)現(xiàn)實(shí)驗(yàn)?zāi)康?了解FFT的TMS320C54炊現(xiàn)的編程方法2掌握8-1024復(fù)數(shù)點(diǎn)FFT的TMS320C54相序的使用方法.3用FFT的TMS320C54相序分析方波和正弦波的功率譜.4加深對(duì)DFT算法原理和基本性質(zhì)的理解;5熟悉FFT的算法原理和FFT子程序的算法流程和應(yīng)用;6學(xué)習(xí)用FFT對(duì)連續(xù)信號(hào)和時(shí)域信號(hào)進(jìn)行頻譜分析的方法;7學(xué)習(xí)DSP中FFT的設(shè)計(jì)和編程思想;8學(xué)習(xí)使用CCS勺波形觀(guān)察器

2、觀(guān)察波形和頻譜情況實(shí)驗(yàn)條件1 8-1024復(fù)數(shù)點(diǎn)TMS320C54礴程序fft.asm.2 8-1024復(fù)數(shù)點(diǎn)TMS320C54姆接命令文件fft.cmd.3 正弦、余弦系數(shù)表coeff.inc.4 產(chǎn)生正弦波信號(hào)數(shù)據(jù)文件的高級(jí)語(yǔ)言程序,程序名為sin_fft.exe,5 向量文件vectors.asm.設(shè)計(jì)內(nèi)容用DSPT編語(yǔ)言及C語(yǔ)言進(jìn)行編程,實(shí)現(xiàn)FFT運(yùn)算、對(duì)輸入信號(hào)進(jìn)行頻譜分析。四設(shè)計(jì)原理快速傅里葉變換FFT快速傅里口t變換(FFT)是一種高效實(shí)現(xiàn)離散傅里葉變換(DFT)的快速算法,是數(shù)字信號(hào)處理中最為重要的工具之一,它在聲學(xué),語(yǔ)音,電信和信號(hào)處理等領(lǐng)域有著廣泛的應(yīng)用。1 離散傅里葉變換

3、DFT對(duì)于長(zhǎng)度為N的有限長(zhǎng)序列x(n),它的離散傅里葉變換(DFT)為n11)X(k)x(n)WNnk,k0,1,N1n0j2/N式中,WNe,稱(chēng)為旋轉(zhuǎn)因子或蝶形因子。從DFT的定義可以看出,在x(n)為復(fù)數(shù)序列的情況下,對(duì)某個(gè)k值,直接按(1)式計(jì)算X(k)只需要N次復(fù)數(shù)乘法和(N-1)次復(fù)數(shù)加法。因此,對(duì)所有N個(gè)k值,共需要N2次復(fù)數(shù)乘法和N(N-1)次復(fù)數(shù)加法。對(duì)于一些相當(dāng)大有N值(如1024點(diǎn))來(lái)說(shuō),直接計(jì)算它的DFT所需要的計(jì)算量是很大的,因此DFT運(yùn)算的應(yīng)用受到了很大的限制。2 快速傅里葉變換FFT旋轉(zhuǎn)因子WN有如下的特性。對(duì)稱(chēng)性:WNkWNkN/2。周期性:WNkWNkNDFT分

4、解成幾個(gè)利用這些特性,既可以使DFT中有些項(xiàng)合并,減少了乘法積項(xiàng),又可以將長(zhǎng)序列的短序列的DFT。FFT就是利用了旋轉(zhuǎn)因子的對(duì)稱(chēng)性和周期性來(lái)減少運(yùn)算量的。FFT的算法是將長(zhǎng)序列的DFT分解成短序列的DFT。例如:N為偶數(shù)時(shí),先將N點(diǎn)的DFT分解為兩個(gè)N/2點(diǎn)的DFT,使復(fù)數(shù)乘法減少一半:再將每個(gè)N/2點(diǎn)的DFT分解成N/4點(diǎn)的DFT使復(fù)數(shù)乘又減少一半,繼續(xù)進(jìn)行分解可以大大減少計(jì)算量。最小變換的點(diǎn)數(shù)稱(chēng)為基數(shù),對(duì)于基數(shù)為2的FFT算法,它的最小變換是2點(diǎn)DFT。一般而言,F(xiàn)FT算法分為按時(shí)間抽取的FFT(DITFFT)和按頻率抽取的FFT(DIFFFT)兩大類(lèi)。DIFFFT算法是在時(shí)域內(nèi)將每一級(jí)輸

5、入序列依次按奇/偶分成2個(gè)短序列進(jìn)行計(jì)算。而DIFFFT算法是在頻域內(nèi)將每一級(jí)輸入序列依次奇/偶分成2個(gè)短序列進(jìn)行計(jì)算。兩者的區(qū)別是旋轉(zhuǎn)因子出現(xiàn)的位置不同,得算法是一樣的。在DIFFFT算法中,旋轉(zhuǎn)因子WN出現(xiàn)在輸入端,而在DIFFFT算法中它出現(xiàn)在輸入端。假定序列x(n)的點(diǎn)數(shù)N是2的哥,按照DIFFFT算法可將其分為偶序列和奇序歹U。偶序列:x(0),x(2),x(4),x(N-2),IPx1x(2r),r0,1,N/21奇序列:x(1),x(3),x(5),x(N-1),即x2x(2r1),r0,1,N/2x(n)的DFT表示為N1N1X(k)x(n)WNnkx(n)WNnkn0n0n為

6、偶數(shù)n為奇數(shù)N/2 1x(2r)WN2rkr0N/2 1x1 (r)WN2rkr0N/21x(2r1)WN(2r1)kr0N/21WNkx2(r)WN2rk2WNX(k)j(2 /N) 2eN/2 1x1(r)WNrk/2r0e j 2 /( N / 2)N/2 1WNkx2 (r)WNrk/2r0WN / 2 ,則(3)式可表示為1則(2)r0k(3)X1(k)WNkX2(k)k0,1,N/21式中,X1(k)和X2(k)分別為x1(n)和x2(n)的N/2的DFT。由于對(duì)稱(chēng)性,WNkN/2WnK,則X(kN/2)X1(k)W;X2(k)。因此,N點(diǎn)X(k)可分為兩部分:前半部分:X(k)X

7、1(k)WNkX2(k)k0,1,N/21(4)后半部分:X(kN/2)X1(k)WNkX2(k)k0,1,N/21(5)從式(4)和式(5)可以看出,只要求出0N/2-1區(qū)間X1(k)和X2(k)的值,就可求出0N-1區(qū)間X(k)的N點(diǎn)值。以同樣的方式進(jìn)行抽取,可以求得N/4點(diǎn)的DFT重復(fù)抽取過(guò)程,就可以使N點(diǎn)的DFT用上組2點(diǎn)的DFT來(lái)計(jì)算,這樣就可以大減少運(yùn)算量?;?DIFFFT的蝶形運(yùn)算如圖(a)所示。設(shè)蝶形輸入為xm1(p)和xm1(q),輸出為xm(p諄Dxm(q),則有kxm(p)xm1(p)xm1(q)WN(6)kxm(q)xm1(p)xm1(q)WN(7)在基數(shù)為2的FFT中

8、,設(shè)N=4共有M級(jí)運(yùn)算,每級(jí)有N/2個(gè)2點(diǎn)FFT蝶形運(yùn)算,因此,N點(diǎn)FFT總共有(N/2)log2N個(gè)蝶形運(yùn)算。Xm i(q)Xm 1 (q)-1圖(a)基2 DIF FFT的蝶形運(yùn)算xmrtP)xm(q)例如:基數(shù)為2的FFT,當(dāng)N=8時(shí),共需要3級(jí),12個(gè)基2DITFFT的蝶形運(yùn)算。其信號(hào)流程如圖(b)所示。圖(b) 8 點(diǎn)基2 DIF FFT蝶形運(yùn)算從圖(b)可以看出,輸入是經(jīng)過(guò)比特反轉(zhuǎn)的倒位序列,稱(chēng)為位碼倒置,其排列順序?yàn)閤(0),x(4),x(2),x(6),x(1),x(5),x(3),x(7)。輸出是按自然順序排列,其順序?yàn)閤(0),x(1),x(6),x(7)。五總體方案設(shè)計(jì):

9、(1)在CCS中建立一個(gè)工程文件projectnewFFT,往工程文件里添加程序filenewsourcefile.建立C源文件和一個(gè)命令文件,并將這兩個(gè)文件添加到工程,再編譯并裝載程序:閱讀Dsp原理及應(yīng)用中fft用dsp實(shí)現(xiàn)的有關(guān)程序。SitupCCS2CC50005快捷方式雙擊啟動(dòng)CCS勺仿真平臺(tái)的配著選項(xiàng)。選才CC5402Simulator。Add加到mysystem,按下save(2)點(diǎn)擊project菜單欄的new選項(xiàng),新建一個(gè)fft64的工程注意存儲(chǔ)的路徑。1,把下圖中用到的文件拷到工程文件目錄的文件路徑下?;谾FT.Cfflr2.在ccs平臺(tái)中將用到的程序?qū)氲狡脚_(tái)中,點(diǎn)擊pr

10、oject口SIM_FFT-EXEaddfiletoprojectDFVECTORS.ASM。選擇多個(gè)文件時(shí),可以按住ctrl鍵。&J紇給國(guó)rXJ:月COBFF,工酢E七64pnEISI:Eft.Gqi?jt1VECTOB5-ASFfFFT.AsmTFT.ClflEi1MIsiuEJT1.JS.X.JL文牛:占/.1VHCTORSASMFFTASMI”FFT.CMDir3.將所有的程序段中的start改為_(kāi)main,將fft.Asm中的K_FFT_SIZEK_LOGN改為K_FFT_SIZEKLOGN.set.set.set.set4,對(duì)源文件進(jìn)行編譯行鏈接32;N5;LOG(N)64;N6;

11、LOG(N)(注意先對(duì)每個(gè).asm文件先進(jìn)行編譯,以防止程序有錯(cuò)誤),沒(méi)有錯(cuò)誤時(shí)進(jìn)OIriI口門(mén)IUCOGTIj4F4l_piVlx:.UdISTTCE:.ubaceRnKTA._ircKIEtt_3-七-*aiMB-1flipT,.二口州口I,_autBLb4L網(wǎng)Fwr1Ml,3二二:7BK_tiAIA_CliX_3KTrtEB-rnrracTirK_twjj)ICM3Krl/.1-.r-T.i-*LF-r-p5.點(diǎn)擊菜單fileloadprogram。裝載.out文件m,x1生:kb咕國(guó)0:|fE1B4:fi:件名QP;交“義mCLJ向一曲曲6.在FFT.ASM文件的PORTR旨令處加載探

12、針7.在PORT嘴令下加入斷點(diǎn)則,(在調(diào)試程序時(shí)我們可以加入斷點(diǎn)進(jìn)行調(diào)試)Q J.IRRFTPORTWITIrLL_MUL*K_FFT_STZE-1*AR4+,PA08 .生成FFT用的正弦波輸入數(shù)據(jù)文件in.dat.程序名sin_fft.exe,執(zhí)行此程序,鍵盤(pán)輸入:N-fft的點(diǎn)數(shù)64f-正弦波信號(hào)頻率100-200之間,選擇150fs-采樣頻率大于5倍以上1000結(jié)果形成in.dat(64個(gè)復(fù)數(shù)數(shù)據(jù))9 .將in。dat數(shù)據(jù)文件用記事本打開(kāi),在數(shù)據(jù)文件第一行添加165128000180注:1651固定數(shù)據(jù)格式,2數(shù)據(jù)類(lèi)型(1十六進(jìn)制、2整型、3長(zhǎng)整型、4浮點(diǎn)型),2000起始地址,1數(shù)據(jù)

13、頁(yè)面(0程序;1數(shù)據(jù);3I/O),80長(zhǎng)度(16進(jìn)制)。因?yàn)?4個(gè)數(shù)據(jù)中包含實(shí)部和虛部故有128個(gè)數(shù)據(jù),16進(jìn)制的t就是80。10 .點(diǎn)擊菜單filefileI/O。點(diǎn)擊AddFile,添加in。dat。地址和數(shù)據(jù)長(zhǎng)度見(jiàn)下圖,記住將WrapAround選上。點(diǎn)擊AddProbepoint。! :BIT選擇,probepoint下的探針點(diǎn),點(diǎn)擊connect下拉菜單,然后點(diǎn)擊replace,使相關(guān)聯(lián)然后選擇確定11.打開(kāi)寄存器和內(nèi)存觀(guān)察窗口國(guó)口。點(diǎn)擊運(yùn)行任到斷點(diǎn)處觀(guān)察寄存器和內(nèi)存的變化。E-+%HW-J.-j*liL*口,口UY口Fr耳-_J1ELEll”金6皿3-E_jFrvjecI=3*nn

14、|jXpAbdAltairrJIEFC減,_j|GhwLFlJ&11*IF-ri產(chǎn),不停的戊由以行用際.跖行賓1鼻麻打觸.ARJM40Zj口就與口口正-口網(wǎng)中口。4:-190U&nwciciR-M90CA.OwOOC:3i?0i0E.ON-HLiI.UgqqLF-JkJUijQmDQQQmmoosIminn7口乂口口三出比n:ifh口乂口口口口Ll:JU07n1nriiUMODcra門(mén)吼口口口口OhOOOA.。門(mén):弓CKDDC3OwQOCCinEonon4g1*4i*l*iXbll9 f - EhiMJ /ILlJLI _lJ43G口口II月譏Ivsrn.1ng*foijtrvpoiinf:D

15、i:hwttHml1dComr1t,_卜uur-fi.tlmaj二|注意,不停得點(diǎn)擊,使運(yùn)行到here的斷點(diǎn)處,使AR4=9040.12.點(diǎn)擊菜單filedataloda,將in.dat輸入數(shù)據(jù)文件加載進(jìn)去。Loafl.a13.觀(guān)察輸入數(shù)據(jù)文件的fft變換,點(diǎn)擊菜單view-graph-time/frequency14.觀(guān)察輸出文件,同樣的方法,將地址修改。15.將輸入與輸出比較,在波峰處都能體現(xiàn)出頻譜。17.改變信號(hào)的頻率可以再做次實(shí)驗(yàn)。也可作128點(diǎn)或更多點(diǎn)的FFT六.源程序:CmdW文件代碼:-f0-w-stack500-sysstack500-lrts55.libMEMORYDARAM

16、:o=0x100,l=0x7f00VECT:o=0x8000,l=0x100DARAM2:o=0x8100,l=0x7f00SARAM:0=0x10000,1=0x30000SDRAM:o=0x40000,l=0x3e0000SECTIONS.text:DARAM.vectors:VECT.trcinit:DARAM.gblinit:DARAM.frt:DARAM.cinit:DARAM.pinit:DARAM.sysinit:DARAM2.far:DARAM2.const:DARAM2.switch:DARAM2.sysmem:DARAM2.cio:DARAM2.MEM$obj:DARAM2

17、.sysheap:DARAM2.sysstack:DARAM2.stack:DARAM2.input:DARAM2.fftcode:DARAM2C文件源碼:#includemath.h#definesample_1256#definesignal_1_f60#definesignal_2_f200#definesignal_sample_f512#definepi3.1415926intinputsample_1;floatfwaversample_1,fwaveisample_1,wsample_1;floatsin_tabsample_1;floatcos_tabsample_1;void

18、init_fft_tab();voidinput_data();voidfft(floatdatarsample_1,floatdataisample_1);voidmain()inti;init_fft_tab();input_data();for(i=0;isample_1;i+)fwaveri=inputi;fwaveii=0.0f;wi=0.0f;fft(fwaver,fwavei);while(1);voidinit_fft_tab()floatwt1;floatwt2;inti;for(i=0;isample_1;i+)wt1=2*pi*i*signal_1_f;wt1=wt1/s

19、ignal_sample_f;wt2=2*pi*i*signal_2_f;wt2=wt2/signal_sample_f;inputi=(cos(wt1)+cos(wt2)/2*32768;voidinput_data()inti;for(i=0;isample_1;i+)sin_tabi=sin(2*pi*i/sample_1);cos_tabi=cos(2*pi*i/sample_1);voidfft(floatdatarsample_1,floatdataisample_1)intx0,x1,x2,x3,x4,x5,x6,x7,xx;inti,j,k,b,p,L;floatTR,TI,t

20、emp;for(i=0;isample_1;i+)x0=x1=x2=x3=x4=x5=x6=0;x0=i&0x01;x1=(i/2)&0x01;x2=(i/4)&0x01;x3=(i/8)&0x01;x4=(i/16)&0x01;x5=(i/32)&0x01;x6=(i/64)&0x01;x7=(i/128)&0x01;xx=x0*128+x1*64+x2*32+x3*16+x4*8+x5*4+x6*2+x7;dataixx=datari;for(i=0;isample_1;i+)datari=dataii;dataii=0;for(L=1;L0)b=b*2;i-;for(j=0;j0)p=p*2;i-;p=p*j;for(k=j;k256;k=k+2*b)TR=datark;TI=dataik;temp=datark+b;datark=datark+datark+b*cos_tabp+dataik+b*sin

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論