dsp課程設計-fir高通濾波器設計_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  FIR高通濾波器設計</p><p><b>  摘要</b></p><p>  從實現方法方面考慮,將濾波器分為兩種,一種是IIR濾波器,另一種是FIR濾波器。</p><p>  FIRDF的最大優(yōu)點是可以實現線性相位濾波。而IIRDF主要對幅頻特性進行逼近,相頻特性會存在不同程度的非線性。我們知道,無失真?zhèn)鬏斉c濾波

2、處理的條件是,在信號的有效頻譜范圍內系統(tǒng)幅頻響應應為常數,相頻響應為頻率的線性函數。另外,FIR是全零點濾波器,硬件和軟件實現結構簡單,不用考慮穩(wěn)定性問題。所以,FIRDF是一種很重要的濾波器,在數字信號處理領域得到廣泛應用。</p><p>  FIRDF設計方法主要分為兩類:第一類是基于逼近理想濾波器特性的方法,包括窗函數法、頻率采樣法和等波紋最佳逼近法;第二類是最優(yōu)設計法。其中窗函數計法的基本思想是用FIR

3、DF逼近希望的濾波特性。本次設計主要采用窗函數設計法,對理想濾波器進行逼近,從而實現高通濾波器的設計。</p><p>  在MATLAB軟件中,有一系列函數用于設計濾波器,應用時十分方便。因此,在本次設計中,濾波器的設計主要采用MATLAB軟件,編寫適當的程序,得到濾波器的單位脈沖響應。</p><p>  本設計對濾波器的硬件仿真主要使用CCS軟件,通過對濾波器的硬件仿真,可以較為真實

4、的看出濾波器的濾波效果。</p><p>  關鍵字:高通、FIRDF、線性相位、Hanning窗、MATLAB、CCS</p><p><b>  正文</b></p><p><b>  設計目標</b></p><p>  產生一個多頻信號,設計一個高通濾波器消除其中的低頻成分,通過CCS的g

5、raph view波形和頻譜顯示,并和MATLAB計算結果比較</p><p><b>  設計原理</b></p><p><b>  數字濾波器</b></p><p>  數字濾波器(digital filter)是由數字乘法器、加法器和延時單元組成的一種裝置。其功能是對輸入離散信號的數字代碼進行運算處理,以達到改變

6、信號頻譜的目的。由于電子計算機技術和大規(guī)模集成電路的發(fā)展,數字濾波器已可用計算機軟件實現,也可用大規(guī)模集成數字硬件實時實現。數字濾波器廣泛用于數字信號處理中,如電視、VCD、音響等。</p><p>  按照濾波電路的工作頻帶為其命名:設截止頻率為fp,頻率低于fp的信號可以通過,高于fp的信號被衰減的電路稱為低通濾波器,頻率高于fp的信號可以通過,低于fp的信號被衰減的電路稱為高通濾波器;而帶通嗎,就是頻率介于

7、低頻段截止頻率和高頻段截止頻率的信號可以通過的電路。</p><p><b>  高通濾波器</b></p><p>  高通濾波器是容許高頻信號通過、但減弱(或減少)頻率低于截止頻率信號通過的濾波器。對于不同濾波器而言,每個頻率的信號的減弱程度不同。它有時被稱為低頻剪切濾波器;在音頻應用中也使用低音消除濾波器或者噪聲濾波器。高通濾波器與低通濾波器特性恰恰相反。這樣的

8、濾波器能夠把高頻率的聲音引導至專用高音喇叭(tweeter),并阻止可能干擾或者損害喇叭的低音信號。使用線圈而不是電容的低通濾波器也可以同時把低頻信號引導至低音喇叭(woofer)。高通和低通濾波器也用于數字圖像處理中在頻域中進行變換。</p><p><b>  高通濾波器的分析</b></p><p>  高通濾波器的時域分析</p><p&g

9、t;  在時域,信號經過系統(tǒng)的響應y (n)體現為激勵x(n)跟系統(tǒng)單位抽樣響應h(n)的卷積和y(n)=(n)×h(n)=ΣN–1m=0h(m)x(n-m)[223] 。對于長度為N 的FIR系統(tǒng), h(n)可以看成一個長度為N 點的固定窗口,而x(n)則看成一個隊列以齊步走的方式穿過h(n)窗口,每走一步,位于窗口中的x(n)部分的點跟h(n)的對應點的值相乘(即加權)再求和,所得結果構成此時系統(tǒng)的響應值y(n), x(n

10、)隊列每走一步就得到一個響應值y(n),即y(n)是h(n)對位于其窗口中的x(n)的加權求和。高通濾波要求h(n)窗口具有波形銳化作用,即利用h(n)窗口加權和使得變化快的(即高頻)正弦分量保留(理想高通)或衰減幅度小(實際高通) ,而變化緩慢(即低頻)的正弦分量正負抵消(理想高通)或衰減幅度大(實際高通) 。</p><p><b>  設</b></p><p>

11、;  其中N 必須取奇數,</p><p>  其中: fs = 11kHz, n為整數,即x ( n)由100Hz的</p><p>  x1(n)和1kHz的x2(n)兩種頻率的信號組成。高通濾波的目的就是要盡可能地去掉x(n)中的低頻分量x1(n) ,同時盡可能地保留x(n)中的高頻分量x2(n)。</p><p>  高通濾波器的頻域分析</p>

12、<p>  在頻域,信號經過系統(tǒng)的響應y(n)的頻譜Y(ejω)體現為激勵x(n)的頻譜X (ejω)跟系統(tǒng)單位抽樣響應h(n)的頻譜H(ejω)(即系統(tǒng)的頻譜)的乘積Y(ejω)=|H(ejω)|×|X(ejω)|×ejφH+φx,即響應的頻譜Y(ejω)的幅值由系統(tǒng)頻譜H(ejω)的幅值對激勵頻譜X(ejω)的幅值相乘(加權)得到,響應的頻譜Y(ejω)的幅角由系統(tǒng)的頻譜H(ejω)的幅角跟激勵頻譜

13、X(ejω)的幅角相加(移相)得到[122 ]。高通濾波要求系統(tǒng)幅度函數|H(jf)|對需要保留的高頻信號頻譜加權權重較大(理想時為1) ,對需要濾除的低頻信號頻譜加權權重較小(理想時為0) 。</p><p>  其中L為x(n)的長度(L=100), 0≤k≤L- 1,N為h(n)的有值長度,m、k均為整數,跟數字頻率k相對應的模擬頻率為f=fs×k/L (Hz)。h(n)在不同N值時的頻譜如圖2所

14、示(橫軸單位為kHz),當N=11時,在f=m(kHz)即f=1kHz、2kHz、3kHz等處為1,而在f=(2m-0.5)(kHz)即f=1.5kHz、3.5kHz等處幅度最大。而在f=(2m+0.5)(kHz)即f=2.5kHz、4.5kHz等處幅度最小,如圖2(b);當N=5時, 在f=mfs/5處為1,即f=2.2kHz、3.3kHz等處為1,在f=(4m-1)fs/10即f=3.3kHz處幅度最大。而在f=(4m+1)fs/1

15、0即f=5.5kHz處幅度最小,如圖2(c);當N=21時,在f=mfs/21即f=524Hz、1047Hz等處為1, 在f=(4m-1)fs/42處幅度最大,而在f=(4m+1)fs/42處幅度最小,如圖1</p><p><b>  圖1</b></p><p>  用不同寬度的h(n)對x(n)的濾波在頻域上表現如圖2.2.1所示,圖2.2.1(a)為x(n)的

16、頻譜|X(jf)| ,從圖2中可以看出x(n)中含有100Hz和1kHz兩種頻率的信號,圖1(b)~(d)為不同長度的h(n)對同一x(n)的濾波情況,這跟在時域中分析的結論是一致的。</p><p><b>  FIR濾波器</b></p><p>  從實現方法方面考慮,將濾波器分為兩種,一種是IIR濾波器,另一種是FIR濾波器。</p><p

17、>  IIR濾波器保留了模擬濾波器較好的幅度特性,設計簡單有效。但這些特性是以犧牲相位特性為代價而獲得的,然而現在許多數據傳輸,圖像處理系統(tǒng)都越來越多的要求系統(tǒng)具有線性相位特性。</p><p>  FIRDF的最大優(yōu)點是可以實現線性相位濾波。而IIRDF主要對幅頻特性進行逼近,相頻特性會存在不同程度的非線性。我們知道,無失真?zhèn)鬏斉c濾波處理的條件是,在信號的有效頻譜范圍內系統(tǒng)幅頻響應應為常數,相頻響應為頻率

18、的線性函數。另外,FIR是全零點濾波器,硬件和軟件實現結構簡單,不用考慮穩(wěn)定性問題。所以,FIRDF是一種很重要的濾波器,在數字信號處理領域得到廣泛應用。</p><p>  FIRDF設計方法主要分為兩類:第一類是基于逼近理想濾波器特性的方法,包括窗函數法、頻率采樣法和等波紋最佳逼近法;第二類是最優(yōu)設計法。其中窗函數計法的基本思想是用FIRDF逼近希望的濾波特性。</p><p>  本

19、次設計主要采用窗函數設計法,對理想濾波器進行逼近,從而實現高通濾波器的設計。</p><p><b>  各種窗函數參數</b></p><p>  各種窗函數的基本參數</p><p>  Hanning(漢寧)窗的窗函數為:</p><p><b>  圖2 漢寧窗</b></p>

20、<p><b>  設計流程</b></p><p>  應用MATLAB設計濾波器:</p><p>  為了滿足高通濾波的效果,設置線性相位高通FIR的參數為:通帶截止頻率,阻帶截止頻率,通帶最大衰減,阻帶最小衰減。</p><p>  由以上參數,通過查表可得,hanning窗和haming窗都滿足條件,我們選擇hanning

21、窗。過渡帶寬,hanning窗的精確過渡帶寬為=6.2π/N,所以要求,解之得N=25。</p><p><b>  輸入程序:</b></p><p>  從而得到滿足條件的高通FIRDF:</p><p>  h(n)=[-0.0004,-0.0006,0.0028,0.0071,-0.0000,-0.0185,-0.0210,0.0165

22、,0.0624, </p><p>  0.0355,-0.1061,-0.2898,0.6249,-0.2898,-0.1061,0.0355,0.0624,0.0165,</p><p>  -0.0210,0.0185,-0.0000,0.0071,0.0028,-0.0006,-0.0004]</p><p>  其波形如圖3所示,頻譜如圖4,其幅頻特性和相

23、頻特性如圖5。</p><p>  圖3 圖4</p><p><b>  圖5</b></p><p>  用CCS對高通濾波器進行仿真</p><p>  設置輸入信號fIn=sin(2πn/30)/2+cos(2πn*1.6),使用MATLAB運算得到

24、的高通FIR濾波器進行濾波,濾去低頻分量。</p><p>  選擇“Debug”菜單的“RUN”項,或按F12 鍵運行程序。</p><p>  觀察“fin”、“fout”窗口中時域圖形;觀察濾波效果。</p><p>  鼠標右鍵單擊“Input”和“Output”窗口,選擇“Properties…”項,設置“Display Type”為“FFT Magitu

25、de”,再單擊“OK”按鈕結束設置。</p><p>  觀察“Input”、“Output”窗口中頻域圖形;理解濾波效果。</p><p><b>  仿真波形</b></p><p>  MATLAB對高通FIRDF的設計</p><p>  CCS對高通FIRDF的應用仿真</p><p>

26、<b>  設計結果</b></p><p>  由MATLAB和CCS的仿真結果可以看出,此高通FIRDF可以實現高通濾波的功能,在輸入為fIn=sin(2πn/30)/2+cos(2πn*1.6)時,輸出波形中已不含w= 1/30的低頻分量,濾波效果良好,輸出頻譜中低頻部分基本沒有信號。</p><p><b>  心得</b></p&

27、gt;<p>  通過這次課程設計,使我掌握了課程設計的基本思路和方法,掌握了課程設計說明書的基本撰寫方法,了解了基本的設計思想和設計方法。同時此次課程設計使我課程的基礎知識和基本理論有了更深的理解和掌握,鍛煉了我們綜合運用所學知識的能力,并在理論分析設計、計算制圖運用標準和規(guī)范查閱設計手冊與資料以及計算機應用能了等方面得到了初步的訓練和提高,培養(yǎng)了我們嚴謹求實的科學態(tài)度。</p><p>  這次

28、課程設計使我進一步熟悉了計算工具軟件---MATLAB.并進一步掌握了MATLAB的使用方法.對MATLAB語言的發(fā)展和特點有了更深的了解,熟悉其工作環(huán)境,在其應用方面也有了更深的了解,了解了MATLAB程序書寫的一般思路及一般步驟,學會了用MATLAB解決復雜信號處理等問題的方法。</p><p>  在課程設計的這段時間里,我認為收獲還是很多的,不但進一步掌握了數字信號處理的基礎知識及一門專業(yè)仿真軟件的基本操

29、作,還提高了自己的設計能力及動手能力,同時對于模擬濾波器來了個系統(tǒng)的總結。更多的是讓我看清了自己,明白了凡事需要耐心,實踐是檢驗學習的唯一標準。理論知識的不足在這次課設中表現的很明顯。這將有助于我今后的學習,端正自己的學習態(tài)度,從而更加努力的學習。</p><p><b>  參考文獻</b></p><p>  1劉泉 闕大順主編. 數字信號處理原理與實現. 北京:

30、電子工業(yè)出版社,2005</p><p>  2程佩青. 數字信號處理教程(第二版). 北京:清華大學出版社,2001</p><p>  3 高西全 數字信號處理-原理、實現及應用. 北京:電子工業(yè)出版社,2010</p><p><b>  附錄</b></p><p>  MATLAB程序------生成高通FIR

31、DF</p><p>  wp=pi/2;ws=pi/4;</p><p><b>  DB=wp-ws;</b></p><p>  N0=ceil(6.2*pi/DB);</p><p>  N=N0+mod(N0+1,2);</p><p><b>  m=1:N;</b&g

32、t;</p><p>  wc=(wp+ws)/2/pi;</p><p>  hn=fir1(N-1,wc,'high',hanning(N));</p><p>  fw=abs(fft(hn));</p><p><b>  figure(1)</b></p><p>  s

33、ubplot(1,2,1)</p><p>  plot(m,hn);grid;</p><p>  subplot(1,2,2)</p><p>  plot(m,fw);grid;</p><p><b>  figure(2)</b></p><p>  freqz(hn) </p

34、><p>  xlabel('\omega^pi')</p><p>  ylabel('|H(e^j\omega|dB)')</p><p>  subplot(2,1,2)</p><p>  xlabel('\omega^pi')</p><p><b>  

35、CCS程序</b></p><p>  #include "DSP281x_Device.h" // DSP281x Headerfile Include File</p><p>  #include "DSP281x_Examples.h" // DSP281x Examples Include File</p>

36、;<p>  #include "f2812a.h"</p><p>  #include"math.h"</p><p>  #define FIRNUMBER 25</p><p>  #define SIGNAL1F 1000</p><p>  #define SIGNAL2F 4

37、500</p><p>  #define SAMPLEF 10000</p><p>  #define PI 3.1415926</p><p>  float InputWave();</p><p>  float FIR();</p><p>  float fHn[FIRNUMBER]={ -0.0004

38、,-0.0006,0.0028,0.0071,-0.0000,-0.0185,-0.0210,0.0165,0.0624,</p><p>  0.0355,-0.1061,-0.2898,0.6249,-0.2898,-0.1061,0.0355,0.0624,0.0165,</p><p>  -0.0210,0.0185,-0.0000,0.0071,0.0028,-0.0006,-

39、0.0004</p><p><b>  };</b></p><p>  float fXn[FIRNUMBER]={ 0.0 };</p><p>  float fInput,fOutput;</p><p>  float fSignal1,fSignal2;</p><p>  floa

40、t fStepSignal1,fStepSignal2;</p><p>  float f2PI;</p><p><b>  int i;</b></p><p>  float fIn[256],fOut[256];</p><p>  int nIn,nOut;</p><p>  mai

41、n(void)</p><p><b>  {</b></p><p>  nIn=0; nOut=0;</p><p>  f2PI=2*PI;</p><p>  fSignal1=0.0;</p><p>  fSignal2=PI*0.1;</p><p>  fS

42、tepSignal1=2*PI/30;</p><p>  fStepSignal2=2*PI*1.6;</p><p>  while ( 1 )</p><p><b>  {</b></p><p>  fInput=InputWave();</p><p>  fIn[nIn]=fInpu

43、t;</p><p>  nIn++; nIn%=256;</p><p>  fOutput=FIR();</p><p>  fOut[nOut]=fOutput;</p><p><b>  nOut++;</b></p><p>  if ( nOut>=256 )</p>

44、;<p><b>  {</b></p><p>  nOut=0;/* 請在此句上設置軟件斷點 */</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p

45、><p>  float InputWave()</p><p><b>  {</b></p><p>  for ( i=FIRNUMBER-1;i>0;i-- )</p><p>  fXn[i]=fXn[i-1];</p><p>  fXn[0]=sin(fSignal1)/2.0+c

46、os(fSignal2);</p><p>  fSignal1+=fStepSignal1; </p><p>  if ( fSignal1>=f2PI )fSignal1-=f2PI;</p><p>  fSignal2+=fStepSignal2;</p><p>  if ( fSignal2>=f2PI )fSi

47、gnal2-=f2PI;</p><p>  return(fXn[0]);</p><p><b>  }</b></p><p>  float FIR()</p><p><b>  {</b></p><p>  float fSum;</p><

48、p><b>  fSum=0;</b></p><p>  for ( i=0;i<FIRNUMBER;i++ )</p><p><b>  {</b></p><p>  fSum+=(fXn[i]*fHn[i]);</p><p><b>  }</b><

溫馨提示

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

評論

0/150

提交評論