基于TMS320F2812 DSP處理器的FIR濾波器的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于TMS320F2812 DSP處理器的FIR濾波器的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于TMS320F2812 DSP處理器的FIR濾波器的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于TMS320F2812 DSP處理器的FIR濾波器的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于TMS320F2812 DSP處理器的FIR濾波器的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、鄭州航空工業(yè)管理學(xué)院電子通信工程系DSP原理及應(yīng)用課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目:基于TMS320F2812 DSP處理器的FIR濾波器的設(shè)計(jì)與實(shí)現(xiàn)學(xué) 號(hào): 姓 名: 專 業(yè): 物聯(lián)網(wǎng)工程 設(shè)計(jì)日期: 指導(dǎo)老師:趙成 劉亞 王超梁 目 錄1、 引言 在當(dāng)今信息時(shí)代數(shù)字信號(hào)處理已成為一門極其重要的學(xué)科。數(shù)字信號(hào)處理在通信、語音、圖像等眾多相關(guān)領(lǐng)域得到了廣泛的應(yīng)用。數(shù)字信號(hào)處理(DSP)包括兩重含義:數(shù)字信號(hào)處理技術(shù)(Digital Signal Processing)和數(shù)字信號(hào)處理器(Digital Signal Processor)。數(shù)字信號(hào)處理(DSP)是利用計(jì)

2、算機(jī)或?qū)S锰幚碓O(shè)備,以數(shù)值計(jì)算的方法、對(duì)信號(hào)進(jìn)行采集、濾波、增強(qiáng)、壓縮、估值和識(shí)別等加工處理,借以達(dá)到提取信息和便于應(yīng)用的目的,其應(yīng)用范圍涉及幾乎所有的工程技術(shù)領(lǐng)域。 2、 在數(shù)字信號(hào)處理的應(yīng)用中,數(shù)字濾波器很重要而且得到了廣泛的應(yīng)用。按照數(shù)字濾波器的特性,它可以被分為線性與非線性、因果與非因果、無限長(zhǎng)沖擊響應(yīng)(IIR)與有限長(zhǎng)沖擊響應(yīng)(FIR)等等。其中,線性時(shí)不變的數(shù)字濾波器是最基本的類型;IIR 濾波器的特征是具有無限持續(xù)時(shí)間沖激響應(yīng),而FIR濾波器的沖激響應(yīng)只能延續(xù)一定時(shí)間,在工程實(shí)際中可以采用遞歸的方式實(shí)現(xiàn)也可以采用非遞歸的方式實(shí)現(xiàn)。 3、 目前FIR濾

3、波器的實(shí)現(xiàn)方法大致可分為三種:利用單片通用數(shù)字濾波器集成電路、DSP器件或者可編程邏輯器件實(shí)現(xiàn)。其中以使用通用DSP芯片實(shí)現(xiàn)方式較為簡(jiǎn)單,是一種實(shí)時(shí)、快速、特別適合于實(shí)現(xiàn)各種數(shù)字信號(hào)處理運(yùn)算的微處理器,借助于通用數(shù)字計(jì)算機(jī)按濾波器的設(shè)計(jì)算法編出程序進(jìn)行數(shù)字濾波計(jì)算。由于它具有豐富的硬件資源、改進(jìn)的哈佛結(jié)構(gòu)、高速數(shù)據(jù)處理能力和強(qiáng)大的指令系統(tǒng)而在通信、航空、航天、雷達(dá)、工業(yè)控制、網(wǎng)絡(luò)及家用電器等各個(gè)領(lǐng)域得到廣泛應(yīng)用 。2、 設(shè)計(jì)目的(1)掌握用窗函數(shù)法設(shè)計(jì)FIR濾波器的原理及方法,熟悉線性纖維FIR濾波器的 幅頻特性和相頻特性,熟悉不同的窗函數(shù)對(duì)濾波器性能的影響。 (

4、2)掌握使用matlab編程的基本方法,學(xué)會(huì)利用fdatool 工具來快速設(shè)計(jì)滿足需要的濾波器。 (3)掌握TMS320F2812 DSP處理器開發(fā)的程序框架結(jié)構(gòu),學(xué)習(xí)驅(qū)動(dòng)TMS320F2812 DSP處理器程序編寫并能使其正常工作。實(shí)習(xí)驅(qū)動(dòng)ADC模塊實(shí)現(xiàn)信號(hào)的實(shí)時(shí)采集與模數(shù)轉(zhuǎn)換。 (4)掌握使用TMS320F2812 DSP處理器實(shí)現(xiàn)FIR數(shù)字低通濾波器的設(shè)計(jì)方法,并能夠?qū)崟r(shí)采集輸入信號(hào)并濾除高頻信號(hào)再通過SCI串口傳輸?shù)接?jì)算機(jī)顯示。三、設(shè)計(jì)要求 1、利用Matlab軟件的FDATool工具設(shè)計(jì)FIR濾波器,并提取濾波器參

5、數(shù); 2、在CCS集成開發(fā)環(huán)境下,利用第1步得到的濾波器參數(shù),利用窗函數(shù)法設(shè)計(jì)FIR濾波器程序,觀察輸入信號(hào)及濾波后得到的輸出信號(hào)的時(shí)域波形及FFT Magnitude波形; 3、利用TMS320F2812的ADC片內(nèi)外設(shè)的外圍電路實(shí)時(shí)采集的混頻信號(hào)數(shù)據(jù),使用1個(gè)51階的FIR低通濾波器,在CCS中設(shè)計(jì)FIR濾波器程序?qū)崿F(xiàn)濾波,觀察相關(guān)波形及濾波效果,通過SCI接口將數(shù)據(jù)傳送到計(jì)算機(jī)上; 4、(選做)利用TI公司的TLV320AIC23高性能立體聲音頻Codec芯片,通過MIC或音頻接口采樣音頻信號(hào),對(duì)采樣的音頻信號(hào)做濾波運(yùn)算,進(jìn)行低音加重處理,再將運(yùn)算

6、過的音頻數(shù)據(jù)通過揚(yáng)聲器播放出來四、總體設(shè)計(jì) 4.1利用Matlab軟件的FDATool工具設(shè)計(jì)FIR濾波器4.1.1有限沖擊響應(yīng)數(shù)字濾波器的基礎(chǔ)理論濾波器就是在時(shí)間域或頻域內(nèi),對(duì)已知激勵(lì)產(chǎn)生規(guī)定響應(yīng)的網(wǎng)絡(luò),使其能夠從信號(hào)中提取有用的信號(hào),抑制并衰減不需要的信號(hào)。濾波器的設(shè)計(jì)實(shí)質(zhì)上就是對(duì)提出的要求給出相應(yīng)的性能指標(biāo),再通過計(jì)算,使物理可實(shí)現(xiàn)的實(shí)際濾波器頻率響應(yīng)特性逼近給出的頻率響應(yīng)特性。FIR 數(shù)字濾波器系統(tǒng)的傳遞函數(shù)為:              

7、;           å-=-=10)()()(H(z)NnnznbzXzY  (1) 由此得到系統(tǒng)的差分方程:       )1()1()1()1()()0()(-*-+××××××+-*+*=NnxNbnxbnxbny(2) 若FIR 數(shù)字濾波器的單位沖激響應(yīng)序列為h(n),它就是濾波器系數(shù)向

8、量b(n)。傳統(tǒng)的濾波器分析與設(shè)計(jì)均使用繁瑣的公式計(jì)算,改變參數(shù)后需要重新運(yùn)算,從而在分析與設(shè)計(jì)濾波器尤其是高階濾波器時(shí)工作量特別大。這里應(yīng)用MATLAB 設(shè)計(jì)FIR濾波器,根據(jù)給定的性能指標(biāo)設(shè)計(jì)一個(gè)H(z),使其逼近這一指標(biāo),進(jìn)而計(jì)算并確定濾波器的系數(shù)b(n),再將所設(shè)計(jì)濾波器的幅頻響應(yīng)、相頻響應(yīng)曲線作為輸出,與設(shè)計(jì)要求進(jìn)行比較,對(duì)設(shè)計(jì)的濾波器進(jìn)行優(yōu)化。設(shè)計(jì)完成之后將得到FIR濾波器的單位沖激響應(yīng)序列h(n)的各個(gè)參數(shù)值。4.1.2 利用Matlab軟件的FDATool設(shè)計(jì)FIR濾波器()  首先在命令窗口鍵入FDAtool命令,啟動(dòng)濾波器設(shè)計(jì)分析器,調(diào)出FDAtool界

9、面,如下圖所示。 FDATool界面() 在Filter Type選項(xiàng)中選Lowpass,在Design Method中選擇FIR濾波器,接著在FIR中選擇Window (窗函數(shù)) 法。 () 然后在Filter Order 中選擇Specify Order (為指定階數(shù)),輸入數(shù)值為“24”;在Opitions框中選中“Scale Passband”;在窗類型(Window:)下拉框選擇“Blackman”。 () 在Frenquency Sp

10、ecification選項(xiàng)中,將fs(為采樣頻率)、fc (為通帶截止頻率)中分別鍵入30000 Hz和9600 Hz。 () 點(diǎn)擊“Design Filter”按鈕,完成濾波器的設(shè)計(jì)。具體參數(shù)及設(shè)計(jì)成功后的結(jié)果如下圖所示。                     FIR低通濾波器設(shè)計(jì) () 通過菜單選項(xiàng)Analysis 來分析濾波器的幅

11、頻響應(yīng)和相頻響應(yīng)特性。點(diǎn)擊Analysis 中的Magnitude Response和Phase Response 對(duì)幅頻和相頻響應(yīng)進(jìn)行分析。如下圖所示          幅頻和相頻響應(yīng)進(jìn)行分析() 在FDATool 中,選擇Targets -> Generate C Header.,單擊Generate按鈕,選擇路徑,即可輸出前一步設(shè)計(jì)出的 FIR濾波器的系數(shù)表。(默認(rèn)的系數(shù)表文件為fda

12、coefs.h。如下圖所示。 導(dǎo)出濾波器系數(shù) ()  在Matlab中打開得到的fdacoefs.h的文件,如下圖所示           從Matlab中打開的fdacoefs.h文件4.1.3提取濾波器參數(shù)取系數(shù)表中的數(shù)據(jù)小數(shù)點(diǎn)后3位有效值,得到如下內(nèi)容:  Const float   B25=   0.0,0.0,0.001,-0.002,-0.002,0.01,-0.009,&#

13、160; -0.018,0.049,-0.02,-0.11,0.28,0.64,0.28,  -0.11,-0.02,0.049,-0.018,-0.009,0.01,  -0.002,-0.002,0.001,0.0,0.0       4.2 CCS環(huán)境下FIR濾波器的設(shè)計(jì)及軟件仿真4.2.1 程序流程圖 4.2.2 在CCS集成開發(fā)環(huán)境下新建FIR濾波器工程() 實(shí)驗(yàn)準(zhǔn)備 設(shè)置軟件仿真模式,啟動(dòng)CCS。 () 建立工程 建立一個(gè)文件夾,存放

14、在D:FIR,將D:課程設(shè)計(jì)FIR濾波器Fir源程序文件夾下的工程全部復(fù)制到D:FIR,在CCS中打開D:FIRfirfir.pjt工程,打開的CCS集成開發(fā)環(huán)境如下圖所示。   在CCS集成開發(fā)環(huán)境中打開工程4.2.3觀察濾波前后的信號(hào)的時(shí)域波形及FFT Magnitude波形(1)編譯工程文件生成fir.out文件,并通過File->Load Program裝載該文件。 (2)設(shè)置波形時(shí)域觀察窗口。  選擇菜單ViewGraphTime/Frequency ,分別進(jìn)行如下圖所示進(jìn)行設(shè)置以便觀察輸入/輸出時(shí)域波形。輸

15、入數(shù)據(jù)頻域波形觀察                       輸出數(shù)據(jù)頻域波形觀察 (3)設(shè)置斷點(diǎn)。 在程序fir.c中,有注釋斷點(diǎn)的語句上設(shè)置軟件斷點(diǎn)。 (4)運(yùn)行并觀察結(jié)果。 選擇Debug菜單的Run項(xiàng),或按F5鍵運(yùn)行程序。觀察到的圖形如下圖所示。 濾波前后的數(shù)據(jù)波形及FFT分析的對(duì)比圖4.2.4 程序清單fir.c&#

16、160;程序 /#include "DSP281x_Device.h"     / DSP281x Headerfile Include File /#include "DSP281x_Examples.h"   / DSP281x Examples Include File /#include "f2812a.h"&

17、#160;#include"math.h" #define FIRNUMBER 25 /#define SIGNAL1F 1000 /#define SIGNAL2F 4500 /#define SAMPLEF  10000 #define PI 3.1415926 float InputWave(); float FIR(); float fHnFIRNU

18、MBER= 0.0,0.0,0.001,-0.002,-0.002,0.01,-0.009, -0.018,0.049,-0.02,-0.11,0.28,0.64,0.28, -0.11,-0.02,0.049,-0.018,-0.009,0.01, -0.002,-0.002,0.001,0.0,0.0                     &

19、#160; float fXnFIRNUMBER= 0.0  float fInput,fOutput; float fSignal1,fSignal2; float fStepSignal1,fStepSignal2; float f2PI; int i; float fIn256,fOut256; int nIn,nOut; main(void)     

20、;nIn=0; nOut=0;  f2PI=2*PI;  fSignal1=0.0;  fSignal2=PI*0.1;  fStepSignal1=2*PI/30;  fStepSignal2=2*PI*1.4;While   fInput=InputWave();   fInnIn=fInput;   nIn+; nIn%=256;   fOutput=

21、FIR();   fOutnOut=fOutput;   nOut+;   if ( nOut>=256 )       nOut=0;  /* 請(qǐng)?jiān)诖司渖显O(shè)置軟件斷點(diǎn) */         float InputWave()  for

22、0;( i=FIRNUMBER-1;i>0;i- )  fXni=fXni-1;  fXn0=sin(fSignal1)+cos(fSignal2)/6.0;  fSignal1+=fStepSignal1;   if ( fSignal1>=f2PI ) fSignal1-=f2PI;  fSignal2+=fStepSignal2;  if ( fSignal2>=

23、f2PI ) fSignal2-=f2PI;  return(fXn0);  float FIR()   float fSum;  fSum=0;  for ( i=0;i<FIRNUMBER;i+ )     fSum+=(fXni*fHni);    return(fSum);  fir.cmd&#

24、160; 程序 -l rts2800_ml.lib-stack 400h -heap 100 MEMORY     PAGE 0 : PROG(R)     : origin = 0x80000, length = 0x10000    PAGE 0 : BOOT(R)

25、     : origin = 0x3FF000, length = 0xFC0       PAGE 0 : RESET(R)    : origin = 0x3FFFC0, length = 0x2  /*PAGE 0 : VECTOR

26、S(R)  : origin = 0x3FFFC2, length = 0x3E*/    PAGE 1 : M0RAM(RW)   : origin = 0x000000, length = 0x400    PAGE 1 : M1RAM(RW)   :&#

27、160;origin = 0x000400, length = 0x400    PAGE 1 : L0L1RAM(RW) : origin = 0x008000, length = 0x2000    PAGE 1 : H0RAM(RW)   : origin = 0x3F80

28、00, length = 0x2000  SECTIONS     /* 22-bit program sections */    .reset   : > RESET,   PAGE = 0     /*vectors : >

29、0;VECTORS, PAGE = 0*/    .pinit   : > PROG,    PAGE = 0    .cinit   : > PROG,    PAGE = 0    .text  

30、;  : > PROG,    PAGE = 0    /* 16-Bit data sections */    .const   : > L0L1RAM, PAGE = 1    .bss    

31、0;: > L0L1RAM, PAGE = 1    .stack   : > M1RAM, PAGE = 1    .sysmem  : > M0RAM, PAGE = 1    /* 32-bit data sections&#

32、160;*/    .ebss    : > H0RAM, PAGE = 1    .econst  : > H0RAM, PAGE = 1    .esysmem : > H0RAM, PAGE = 1 4.3 對(duì)實(shí)時(shí)采樣信號(hào)進(jìn)行

33、濾波的FIR濾波器的實(shí)現(xiàn)4.3.1 程序清單#include "DSP281x_Device.h" / DSP281x Headerfile Include File #include "DSP281x_Examples.h" / DSP281x Examples Include File #include <math.h> #define pi 3.1415927

34、 int px256; int py256; double npass,h51, x, y, xmid51; int m=50; int n=256; / Prototype statements for functions found within this file. interrupt void adc_isr(void); /&#

35、160;Global variables used in this example: Uint16 LoopCount; Uint16 ConversionCount; void firdes(int m, double npass)       int t; for (t=0; t<=m; t+)   

36、;      ht = sin(t-m/2.0)*npass*pi)/(pi*(t-m/2.0);        if (t=m/2) ht=npass;    void main(void)       int xm,ym;    double&#

37、160;fs,fstop,r,rm;    int i,j,p,k; / PLL, WatchDog, enable Peripheral Clocks / This example function is found in the DSP281x_SysCtrl.c file.    InitSysCtrl(); / For&

38、#160;this example, set HSPCLK to SYSCLKOUT / 6 (25Mhz assuming 150Mhz SYSCLKOUT)    EALLOW; for (t=0; t<=m; t+)         ht = sin(t-m/2.0)*npass*pi)

39、/(pi*(t-m/2.0);        if (t=m/2) ht=npass;    void main(void)       int xm,ym;    double fs,fstop,r,rm;    int i,j,p,k; / PLL, WatchDog, enable Peripheral Clocks /&#

溫馨提示

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

評(píng)論

0/150

提交評(píng)論