DSP實驗六 FIR 數字濾波器的實驗報告.doc_第1頁
DSP實驗六 FIR 數字濾波器的實驗報告.doc_第2頁
DSP實驗六 FIR 數字濾波器的實驗報告.doc_第3頁
DSP實驗六 FIR 數字濾波器的實驗報告.doc_第4頁
DSP實驗六 FIR 數字濾波器的實驗報告.doc_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

實驗六 FIR 數字濾波器6.1 實驗目的數字濾波的作用是濾除信號中某一部分頻率分量。信號經過濾波處理,就相當于信號頻譜與濾波器的頻率響應相乘的結果。從時域來看,就是輸入信號與濾波器的沖激響應作卷積和。數字濾波器在各種領域由廣泛的應用,例如數字音響、音樂和語音合成、躁聲消除、數據壓縮、頻率合成、諧波消除、過載檢測、相關檢測等。本實驗主要學習數字濾波器的DSP 實現原理和C54X 編程技巧,并通過CCS 的圖形顯示工具觀察輸入/輸出信號波形以及頻譜的變化。該實驗應該安排在串口和定時器操作實驗之后進行。6.2 實驗要求該實驗涉及到 DSP 的串口、中斷響應等復雜操作,應該在完成前面的串口和定時器實驗后完成。本實驗重點研究FIR 濾波器的DSP 實驗方法,沒有討論FIR 濾波器的設計原理和方法。你可以使用數字濾波器輔助設計軟件包或自行計算FIR 濾波器的系數。本實驗例子利用DES320PPU 評估板的模擬信號輸出通道產生一個1KHz 的方波,然后利用信號輸入通道對產生的方波進行低通濾波,得到一個1KHz 的正弦信號,并使用CCS 的圖形顯示工具顯示輸入和輸出的波形。這里我們使用的是一個38 階的對稱結構的FIR 低通濾波器,其采樣頻率Fs 為25KHZ,通帶截止頻率 1.2KHZ,阻帶截止頻率為2.8KHZ,阻帶衰減為-40dB。6.3 實驗原理1) FIR 濾波器的實現如果 FIR 濾波器的沖激響應為h(0),h(1),.,h(N-1)。X(n)表示濾波器在n 時刻的輸入,則n 時刻的輸出為:y(n) = h(0)x(n) + h(1)x(n-1)+ . + h(N-1)xn-(N-1)DES320PP-U 數字信號處理仿真/教學實驗系統(tǒng)使用與實驗指導 73使用MAC 或FIRS 指令可以方便地實現上面的計算。圖 6-1 說明了使用循環(huán)尋址實現FIR 濾波器的方法。為了能正確使用循環(huán)尋址,必須先初始化BK,塊長為N。同時,數據緩沖區(qū)和沖激響應(FIR 濾波器的系數)的開始地址必須是大于N 的2 的最小冪的倍數。例如,N=11,大于N 的最小2 的冪為16,那么數據緩沖區(qū)的第一個地址應是16 的倍數,因此循環(huán)緩沖區(qū)起始地址的最低4 位必須是0。圖6-1 FIR 濾波器存儲器里的數據存儲方式在圖6-1 中,濾波系數指針初始化時指向h(N-1),經過一次FIR 濾波計算后,在循環(huán)尋址的作用下,仍然指向h(N-1)。而數據緩沖區(qū)指針指向的是需要更新的數據,如x(n)。在寫入新數據并完成FIR 運算后,該指針指向x(n-(N-1)。所以,使用循環(huán)尋址可以方便地完成濾波窗口數據的自動更新.使用帶 MAC 指令的循環(huán)尋址模式實現FIR 濾波器,程序片段如下:(輸入數據在AL 中,濾波結果在AH 中)STM #1,AR0 ;AR0=1STM #N,BK ;BK=N,循環(huán)尋址BUFFER 大小為NSTL A,*FIR_DATA_P+% ;更新濾波窗口中的采樣數據RPTZ A,#(N-1) ;重復MAC 指令N 次,先將A 清零MAC *FIR_DATA_P+0%,*FIR_COFF_P+0%,A ;完成濾波計算。注意FIR 濾波系數存放在;數據存儲區(qū)另一種方法是利用 C54x 系列芯片的提供的FIRS 指令來實現FIR 濾波器。圖6-2為一種有限單位沖激響應呈現對中心點對稱的FIR 濾波器。長度為N 的線性相位FIR濾波器的輸出表達式為:= + / 2 10( ) ( ) ( ) ( ( 1 )Nky n h k x n k x n N k圖6-2 N 階均衡FIR 濾波器框圖要利用FIRS 指令,需要將輸入數據緩沖分成兩個,循環(huán)緩沖區(qū)大小寄存器的值設為N/2。圖6-3 顯示了輸入序列在兩個循環(huán)緩沖器里的存儲情況。設輔助寄存器AR2 指到緩沖區(qū)1(Buffer1)的頂部,AR3 指到緩沖區(qū)2(Buffer2)的底部。每次進行濾波之前,應先將緩沖區(qū)1 頂部的數據移到緩沖區(qū)2 的底部,新來的一個樣本存儲到緩沖區(qū)1 中時,并對緩沖區(qū)1 指針AR2 加1(使用循環(huán)尋址)。處理器然后使用FIRS 指令進行乘加運算,即h(0)x(0)+x(-N+1)。當然,在使用FIRS 指令前,需要預先計算一次求和,以初始化A 。在RPTZ 重復指令和循環(huán)尋址的配合下,完成FIR 濾波.濾波完成后,需要對兩個數據緩沖的指針進行修正,以便對下一個點進行處理。將Buffer1 的指針減1 和Buffer2 的指針減2,使他們指向各自緩沖的數據隊列的最后。圖6-3 16 點FIRS 濾波數據存放使用帶FIRS 指令的循環(huán)尋址模式實現FIR 濾波器,程序片段如下:(輸入數據在AL 中,濾波結果在B 中)STM #1,AR0 ; AR0=1STM #(N/2),BK ; BK=N/2,循環(huán)尋址BUFFER 大小為NMVDD *ar2, *ar3 ; 更新 Buffer2STL A, *ar2+% ; 更新濾波窗口中的采樣數據ADD *ar2+0% , *ar3+0% ; 初始化ARPTZ B, #(N/2-1) ; 重復FIRS 指令N/2 次,先將B 清零DES320PP-U 數字信號處理仿真/教學實驗系統(tǒng)使用與實驗指導 76FIRS *ar2+0%, *ar3+0%,filter_coff+N/2 ;完成濾波計算。注意FIR 濾波系數存放在程序;存貯區(qū),filter_coff 為系數起始地址MAR *ar2-% ; 修改Buffer1 指針MAR *+ar3(-2)% ; 修改Buffer2 指針2) AC01 的初始化DSE320PP-U 使用AC01 作為模擬信號接口。AC01 提供一個14bit 的D/A 和一個14bit的A/D 通道。AC01 與VC5402 通過串口0 連接。DSP 通過串口可以控制AC01 的采樣頻率、增益、低通/高通濾波器的截止頻率等參數。這一步是通過讀寫AC01 的寄存器來實現的。下面是初始化AC01 的代碼,有關AC01 的詳細介紹請參考AC01 的技術手冊。;-; The following codes are initalized AC01, ALL AC01 setup same !;-idle 1 ;初始化AC01 時僅僅打開串口0 的發(fā)送中斷,而且中斷服務idle 1 ;程序中簡單地將A 寄存器的值寫入到串口0 發(fā)送寄存器。idle 1 ;開始初始化時,將A 寄存器設置為0 !idle 1ld #600h,aidle 1 ;wait for int .ld #3,aidle 1 ;send #3,AC01 的1 號寄存器為采樣率控制寄存器ld #00105h,a ;fs=10M/2/A/B= 25k,采樣率設置為25KHz;flp=10M/2/40/A= 25k (all pass);fhp=fs/200= 125Hz (not use !);A=05,B=40(0x28)idle 1 ;send 1th regs - 05hld #3,aidle 1 ;send #3ld #00228h,aidle 1 ;send 2th regs - 28hld #3,aidle 1 ;send #3ld #00300h,aidle 1 ;send 3th regs - 00hld #3,aidle 1 ;send #3ld #00405h,aidle 1 ;send 4th regs - 05h (AD & DA 0 dB)ld #3,aidle 1 ;send #3ld #00505h,aidle 1 ;send 5th regs - 05h (highpass filter disable)ld #3,aidle 1 ;send #3ld #00600h,aidle 1 ;send 6th regs - 00hld #3,aidle 1 ;send #3ld #00700h,aidle 1 ;send 7th regs - 0ld #3,aidle 1 ;send #3ld #800h,aidle 1 ;send 8th regs - 0ld #0h,a;-; 初始化 AC01 完成!利用 AC01 的D/A 通道產生一個1KHz 的方波,作為FIR 濾波器的輸入信號。由于串口發(fā)送中斷將每0.04ms(25KHz)產生一次,所以我們將一個周期的方波信號分25次送出,這樣經D/A 變化后便可得到1KHz 的方波。產生方波的數據參見如下:;*; The following data is used by make wave ! when using, must copy to wave buffer;*wave_data: ;freq about 1k Hz.word 03ffch ;+2 volt.word 03ffch.word 03ffch.word 03ffch.word 03ffch.word 03ffch.word 03ffch.word 03ffch.word 03ffch.word 03ffch.word 03ffch.word 03ffch.word 03ffch.word 0c000h ;-2 volt.word 0c000h.word 0c000h.word 0c000h.word 0c000h.word 0c000h.word 0c000h.word 0c000h.word 0c000h.word 0c000h.word 0c000h.word 0c000h4) 串口的初始化和串口中斷服務程序本實驗通過 DSP 的串口0 輸入/輸出數據。在串口通訊中,數據時鐘和幀同步信號都由AC01 產生,所以VC5402 將使用外部時鐘和幀同步信號。串口設置代碼如下,詳細介紹請參見串口操作實驗:;*; The following codes are used to initalize McBSP0 !;*stm #0,spsa0 ;choose SPCR10stm #2000h,spcr10 ; receive sign_extend in DRRstm #1,spsa0 ; choose SPCR20stm #0c0h,spcr20 ; fs - int !stm #2,spsa0 ; choose RCR10stm #40h,39hstm #3,spsa0 ; choose RCR20stm #0,39hstm #4,spsa0 ;choose XCR10stm #40h,xcr10stm #5,spsa0 ; choose XCR20stm #0,39hstm #0eh,spsa0 ; choose PCR0stm #0dh,pcr0 ; fs is low active, rise edge of clkx, falling edge; of clkrstm #7h,spsa0stm #8000h,39hrpt #0ffffhnopstm #00h,dxr10ldm 22h,astm #1,38hstm #0c1h,39h ; start McBSP0 send !完成串口設置后,還需要修改中斷向量表以便正確響應串口0 的接收和發(fā)送中斷請求。本實驗中使用發(fā)送中斷產生方波信號和完成對AC01 的初始化;使用接收中斷存貯輸入的數據,并設置新數據到達標志。主循環(huán)在檢測到該標志后,調用FIR 濾波程序,完成對輸入數據的處理。另外,為了方便觀察,我們還使用了一個定時器,交替使XF為高和低。所以,在濾波程序正常運行時,你會看到D2 在不停地閃爍。6.4 實驗內容本實驗需要使用C54X 匯編語言實現FIR 濾波器,并通過CCS 的圖形顯示工具觀察輸入/輸出信號波形以及頻譜的變化。實驗分以下幾步完成:1) 短接 JP12,使得DES320PP-U 的模擬信號輸出通道與模擬信號輸入通道相連。2) 啟動 CCS,在Project 選項中打開fir5402.pjt 文件。3) 使用 Build 選項完成編譯、連接,然后使用File 菜單中的Load Program 將OUT 文件裝入。按F5 鍵啟動程序運行,若有示波器,可以觀察DSE320PP-U 板上的JP12的引腳輸出的1KHz 的方波。DES320PP-U 數字信號處理仿真/教學實驗系統(tǒng)使用與實驗指導 81圖 6-4 圖形顯示窗口4) 請使用 Debug - Halt 暫停程序的執(zhí)行。在Project 管理欄中打開fir5402.asm 文件,并在ccs_show(在fir 子程序中)行后的nop 語句處上增加一個斷點。添加斷點的方法是先用鼠標單擊某行,將光標移動到需要增加斷點的行上,然后選擇工具欄的手狀圖標。當該行被設置了一個斷點后,可以看到紅色的圓點。5) 選擇 View - Graph - Time/Frequency 菜單打開一個圖形顯示窗口,參見圖6-4。將“Start Address”項改為地址0x1800,將“Display Data Size”項設置為128,將“DSPData Type”改為“16-bit signed integer”。這樣,將在圖形顯示窗口中顯示從0x1800(信號輸入緩沖)開始的128 個點的16 位有符號整數。再打開一個圖形窗口,顯示從地址0x1020(濾波信號輸出緩沖)開始的128 點的16 位有符號整數。6) 選擇 Debug - Animate 項運行程序。Animate 運行和Run 運行基本一致,只是使用Run 運行時,若遇到斷點,將停下來,直到用戶再次使用Run 命令才恢復運行。而使用Animate 運行時,若遇到斷點,CCS 刷新所有的顯示窗口,如寄存器、CPU、MEM、圖形顯示等,然后自動恢復運行。所以,你能看到連續(xù)更新的濾波輸出。6.5 思考題1) 請說明下面的輔助寄存器的操作意義:*ar0(#0100), *ar3+%, *ar3+0%, *ar2-%, *+ar3(-2)%答:8個輔助寄存器(AR0-AR7),由一個輔助寄存器指針(ARP 3-bit)來指定一個輔助寄存器算術單元(ARAU)作16-bit無符號數運算,決定一

溫馨提示

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

評論

0/150

提交評論