DSP與matlab聯合設計FIR濾波器2_第1頁
DSP與matlab聯合設計FIR濾波器2_第2頁
DSP與matlab聯合設計FIR濾波器2_第3頁
DSP與matlab聯合設計FIR濾波器2_第4頁
DSP與matlab聯合設計FIR濾波器2_第5頁
已閱讀5頁,還剩7頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

設計FIR濾波器作業報告學號:姓名:設計FIR濾波器作業報告本設計主要內容是利用MATLAB驗證設計思路并用CCS3.3仿真環境設計一個FIR濾波器,要求濾除給定的疊加正弦波的兩個較高頻分量。給定波形函數為:y=sin(2*pi*100*t)+sin(2*pi*250*t)+sin(2*pi*270*t)。設計思路:輸入信號是頻率為100Hz、250HZ、270Hz的合成正弦等幅信號,由于給定的諧波分量最高為270Hz,根據奈奎斯特準則,采樣頻率應大于最高頻率分量的2倍,即大于2*270,故可以以600Hz的采樣頻率進行采樣,即fs=600Hz。設計了一個截止頻率為200Hz的低通濾波器,目的是通過所設計的低通bartlett濾波器將信號源中頻率為200Hz以上的信號濾掉,留下頻率為100Hz的信號,達到濾波的效果。利用MATLAB設計合適的濾波器實現濾波,然后得到其濾波器系數在CCS的simulator方式下編寫濾波程序,調用波形數據,實現濾波,并觀看濾波前后的信號波形圖、頻譜圖,觀察濾波達到預期效果。設計過程在MATLAB中進行算法驗證MATLAB語言由于具有數值計算功能、符號計算功能、數據可視化功能、建模仿真可視化功能,使得MATLAB在命題構思、模型建立、仿真研究、假想驗證、數據源可視化各環節起著強大的作用。因此在設計中必須先在MATLAB語言中設計一個FIR濾波器。本設計采用的是bartlett窗函數。下面是在MATLAB中設計的27階FIR型bartlett濾波器程序:clearall; %請寄存器clf; %清屏N=256; %清數據點fs=600; %采樣頻率dt=1/fs; %采樣時間間隔fort=1:Nf1=250;f2=100;f3=270;y(t)=(sin(2*pi*f1*t*dt)+sin(2*pi*f2*t*dt)+sin(2*pi*f3*t*dt));%產生合成信號x(t)=round(10000*y(t)); %為DSP匯編程序做數據轉換endfigure(1)plot(y),title('濾波前的波形圖像');fp=200fst=250NL=26f1=200;w1=2*pi*f1/fswindow=bartlett(NL+1) %窗函數n=1:NL+1hd=sin(w1*(n-NL/2))./(pi*(n-NL/2));hd(NL/2)=0.67;h=hd.*rot90(window)h1=h*32768;h2=fft(h,N); %將信號做FFT變換pyy=h2.*conj(h2); %做功率譜分析f=(0:(N/2-1));fori=1:N/2-1f(i)=f(i)*fs/N;endfigure(2)plot(f,pyy(1:N/2)),title('濾波器的頻譜圖像');yy1=filter(h,1,y); %濾波figure(3)plot(yy1),title('濾波后的波形圖像');y=fft(y,N);pyy=y.*conj(y);f=(0:(N/2-1));fori=1:N/2-1f(i)=f(i)*fs/N;endfigure(4)subplot(1,2,1),plot(f,pyy(1:N/2)),title('濾波前的波形頻譜圖像');y=fft(yy1,N);pyy=y.*conj(y);f=(0:(N/2-1));fori=1:N/2-1f(i)=f(i)*fs/N;endsubplot(1,2,2),plot(f,pyy(1:N/2)),title('濾波后的波形頻譜圖像')其中采樣點為256個,采樣頻率為600Hz,輸入信號為100Hz、250Hz、270Hz的合成信號,設定的截止頻率為200Hz,通過FIR濾波器后,期望保留的信號是100Hz的信號,200Hz以上的頻率基本被濾掉。圖1是濾波前的圖形,圖2是濾波后的圖形,圖3為濾波器頻譜圖像,圖4濾波前后的波形頻譜圖像。從這四個圖中可以看住原始信號中的頻率有100Hz、250Hz、270Hz,經過濾波后200Hz以上的信號成分基本上被濾掉。只留下100Hz的信號。圖1濾波前波形圖像圖2濾波后波形圖像圖3濾波器的頻譜圖像圖4.濾波前后的波形頻譜圖像在CCS環境的仿真首先配置處理器項,進入CCStudiov3.3中,編寫程序,程序如下: .mmregs.reffilter_start.def_c_int00K_DATA_SIZE.set256K_BUFFER_SIZE.set32K_STACK_SIZE.set256K_B.set27K_CIR.setK_BUFFER_SIZESTACK.usect"stack",K_STACK_SIZESYSTEM_STACK.setK_STACK_SIZE+STACKDATA_DP.usect"filter_vars",0filterdata.usect"filter_vars",K_DATA_SIZEbufferdatay.usect"filter_vars",K_BUFFER_SIZE*2bufferdatax.usect"filter_vars",K_BUFFER_SIZE*2.data.globalinputdatainputdata.WORD16750,-5878,18090,-26831,6340,-9511,11750,11443.WORD-6910,0,-16750,5878,5570,9511,0,-7810.WORD-11750,5878,570,17321,-6910,-5878,-5570,-9511.WORD23660,-9511,18090,-23198,-570,0,570,23198,-18090.WORD9511,-23660,9511,5570,5878,6910,-17321,-570.WORD-5878,11750,7810,0,-9511,-5570,-5878,16750.WORD0,6910,-11443,-11750,9511,-6340,26831,-18090.WORD5878,-16750,0,16750,-5878,18090,-26831,6340.WORD-9511,11750,11443,-6910,0,-16750,5878,5570.WORD9511,0,-7810,-11750,5878,570,17321,-6910.WORD-5878,-5570,-9511,23660,-9511,18090,-23198,-570.WORD0,570,23198,-18090,9511,-23660,9511,5570.WORD5878,6910,-17321,-570,-5878,11750,7810,0.WORD-9511,-5570,-5878,16750,0,6910,-11443,-11750.WORD9511,-6340,26831,-18090,5878,-16750,0,16750.WORD-5878,18090,-26831,6340,-9511,11750,11443,-6910.WORD0,-16750,5878,5570,9511,0,-7810,-11750.WORD5878,570,17321,-6910,-5878,-5570,-9511,23660.WORD-9511,18090,-23198,-570,0,570,23198,-18090.WORD9511,-23660,9511,5570,5878,6910,-17321,-570.WORD-5878,11750,7810,0,-9511,-5570,-5878,16750.WORD0,6910,-11443,-11750,9511,-6340,26831,-18090.WORD5878,-16750,0,16750,-5878,18090,-26831,6340.WORD-9511,11750,11443,-6910,0,-16750,5878,5570.WORD9511,0,-7810,-11750,5878,570,17321,-6910.WORD-5878,-5570,-9511,23660,-9511,18090,-23198,-570.WORD0,570,23198,-18090,9511,-23660,9511,5570.WORD5878,6910,-17321,-570,-5878,11750,7810,0.WORD-9511,-5570,-5878,16750,0,6910,-11443,-11750.WORD9511,-6340,26831,-18090,5878,-16750,0,16750.WORD-5878,18090,-26831,6340,-9511,11750,11443,-6910.WORD0,-16750,5878,5570,9511,0,-7810.text_c_int00:.asgAR2,ORIGIN.asgAR3,INPUT.asgAR4,FILTER.asgAR5,OUTPUTSTART:SSBXFRCTSSBXINTMLD#DATA_DP,DPSTM#STACK,SPCALLfilter_startNOPNOPNOPLOOPBLOOP.defh0,h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13,h14,h15,h16,h17,h18,h19,h20,h21,h22,h23,h24,h25,h26.deffilter_starth0 .set0000Hh1 .set-003FHh2 .set008AHh3 .set0000Hh4 .set-015BHh5 .set01F0Hh6 .set0000Hh7 .set-03CDHh8 .set056EHh9 .set0000Hh10 .set-0D92Hh11 .set1DDBHh12 .set4F2AHh13 .set2349Hh14 .set-1049Hh15 .set0000Hh16 .set06C9Hh17 .set-04E3Hh18 .set0000Hh19 .set02B7Hh20 .set-0209Hh21 .set0000Hh22 .set0116Hh23 .set-00BEHh24 .set0000Hh25 .set0035Hh26 .set0000H.textfilter_start:STM#K_CIR,BKSTM#1,AR0 ;設置循環緩沖區的大小和步長STM#inputdata,ORIGINSTM#bufferdatax,INPUT;STM#bufferdatay,FILTERSTM#filterdata,OUTPUT STM#K_DATA_SIZE-1,BRC ;設置快循環計數器RPTBfilter_end-1MVDD*ORIGIN+,*INPUTRPT#K_B-1-1MAR*INPUT-0%MPY *INPUT+0%,#h26,B LD B,A MPY *INPUT+0%,#h25,B ADD B,A MPY *INPUT+0%,#h24,B ADD B,A MPY *INPUT+0%,#h23,B ADD B,A MPY *INPUT+0%,#h22,B ADD B,A MPY *INPUT+0%,#h21,B ADD B,A MPY *INPUT+0%,#h20,B ADD B,A MPY *INPUT+0%,#h19,B ADD B,A MPY *INPUT+0%,#h18,B ADD B,A MPY *INPUT+0%,#h17,B ADD B,A MPY *INPUT+0%,#h16,B ADD B,A MPY *INPUT+0%,#h15,B ADD B,A MPY *INPUT+0%,#h14,B ADD B,A MPY *INPUT+0%,#h13,B ADD B,A MPY *INPUT+0%,#h12,B ADD B,A MPY *INPUT+0%,#h11,B ADD B,A MPY *INPUT+0%,#h10,B ADD B,A MPY *INPUT+0%,#h9,B ADD B,A MPY *INPUT+0%,#h8,B ADD B,A MPY *

溫馨提示

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

評論

0/150

提交評論