




已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實驗六 FIR 數(shù)字濾波器6.1 實驗?zāi)康臄?shù)字濾波的作用是濾除信號中某一部分頻率分量。信號經(jīng)過濾波處理,就相當(dāng)于信號頻譜與濾波器的頻率響應(yīng)相乘的結(jié)果。從時域來看,就是輸入信號與濾波器的沖激響應(yīng)作卷積和。數(shù)字濾波器在各種領(lǐng)域由廣泛的應(yīng)用,例如數(shù)字音響、音樂和語音合成、躁聲消除、數(shù)據(jù)壓縮、頻率合成、諧波消除、過載檢測、相關(guān)檢測等。本實驗主要學(xué)習(xí)數(shù)字濾波器的DSP 實現(xiàn)原理和C54X 編程技巧,并通過CCS 的圖形顯示工具觀察輸入/輸出信號波形以及頻譜的變化。該實驗應(yīng)該安排在串口和定時器操作實驗之后進行。6.2 實驗要求該實驗涉及到 DSP 的串口、中斷響應(yīng)等復(fù)雜操作,應(yīng)該在完成前面的串口和定時器實驗后完成。本實驗重點研究FIR 濾波器的DSP 實驗方法,沒有討論FIR 濾波器的設(shè)計原理和方法。你可以使用數(shù)字濾波器輔助設(shè)計軟件包或自行計算FIR 濾波器的系數(shù)。本實驗例子利用DES320PPU 評估板的模擬信號輸出通道產(chǎn)生一個1KHz 的方波,然后利用信號輸入通道對產(chǎn)生的方波進行低通濾波,得到一個1KHz 的正弦信號,并使用CCS 的圖形顯示工具顯示輸入和輸出的波形。這里我們使用的是一個38 階的對稱結(jié)構(gòu)的FIR 低通濾波器,其采樣頻率Fs 為25KHZ,通帶截止頻率 1.2KHZ,阻帶截止頻率為2.8KHZ,阻帶衰減為-40dB。6.3 實驗原理1) FIR 濾波器的實現(xiàn)如果 FIR 濾波器的沖激響應(yīng)為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 數(shù)字信號處理仿真/教學(xué)實驗系統(tǒng)使用與實驗指導(dǎo) 73使用MAC 或FIRS 指令可以方便地實現(xiàn)上面的計算。圖 6-1 說明了使用循環(huán)尋址實現(xiàn)FIR 濾波器的方法。為了能正確使用循環(huán)尋址,必須先初始化BK,塊長為N。同時,數(shù)據(jù)緩沖區(qū)和沖激響應(yīng)(FIR 濾波器的系數(shù))的開始地址必須是大于N 的2 的最小冪的倍數(shù)。例如,N=11,大于N 的最小2 的冪為16,那么數(shù)據(jù)緩沖區(qū)的第一個地址應(yīng)是16 的倍數(shù),因此循環(huán)緩沖區(qū)起始地址的最低4 位必須是0。圖6-1 FIR 濾波器存儲器里的數(shù)據(jù)存儲方式在圖6-1 中,濾波系數(shù)指針初始化時指向h(N-1),經(jīng)過一次FIR 濾波計算后,在循環(huán)尋址的作用下,仍然指向h(N-1)。而數(shù)據(jù)緩沖區(qū)指針指向的是需要更新的數(shù)據(jù),如x(n)。在寫入新數(shù)據(jù)并完成FIR 運算后,該指針指向x(n-(N-1)。所以,使用循環(huán)尋址可以方便地完成濾波窗口數(shù)據(jù)的自動更新.使用帶 MAC 指令的循環(huán)尋址模式實現(xiàn)FIR 濾波器,程序片段如下:(輸入數(shù)據(jù)在AL 中,濾波結(jié)果在AH 中)STM #1,AR0 ;AR0=1STM #N,BK ;BK=N,循環(huán)尋址BUFFER 大小為NSTL A,*FIR_DATA_P+% ;更新濾波窗口中的采樣數(shù)據(jù)RPTZ A,#(N-1) ;重復(fù)MAC 指令N 次,先將A 清零MAC *FIR_DATA_P+0%,*FIR_COFF_P+0%,A ;完成濾波計算。注意FIR 濾波系數(shù)存放在;數(shù)據(jù)存儲區(qū)另一種方法是利用 C54x 系列芯片的提供的FIRS 指令來實現(xiàn)FIR 濾波器。圖6-2為一種有限單位沖激響應(yīng)呈現(xiàn)對中心點對稱的FIR 濾波器。長度為N 的線性相位FIR濾波器的輸出表達式為:= + / 2 10( ) ( ) ( ) ( ( 1 )Nky n h k x n k x n N k圖6-2 N 階均衡FIR 濾波器框圖要利用FIRS 指令,需要將輸入數(shù)據(jù)緩沖分成兩個,循環(huán)緩沖區(qū)大小寄存器的值設(shè)為N/2。圖6-3 顯示了輸入序列在兩個循環(huán)緩沖器里的存儲情況。設(shè)輔助寄存器AR2 指到緩沖區(qū)1(Buffer1)的頂部,AR3 指到緩沖區(qū)2(Buffer2)的底部。每次進行濾波之前,應(yīng)先將緩沖區(qū)1 頂部的數(shù)據(jù)移到緩沖區(qū)2 的底部,新來的一個樣本存儲到緩沖區(qū)1 中時,并對緩沖區(qū)1 指針AR2 加1(使用循環(huán)尋址)。處理器然后使用FIRS 指令進行乘加運算,即h(0)x(0)+x(-N+1)。當(dāng)然,在使用FIRS 指令前,需要預(yù)先計算一次求和,以初始化A 。在RPTZ 重復(fù)指令和循環(huán)尋址的配合下,完成FIR 濾波.濾波完成后,需要對兩個數(shù)據(jù)緩沖的指針進行修正,以便對下一個點進行處理。將Buffer1 的指針減1 和Buffer2 的指針減2,使他們指向各自緩沖的數(shù)據(jù)隊列的最后。圖6-3 16 點FIRS 濾波數(shù)據(jù)存放使用帶FIRS 指令的循環(huán)尋址模式實現(xiàn)FIR 濾波器,程序片段如下:(輸入數(shù)據(jù)在AL 中,濾波結(jié)果在B 中)STM #1,AR0 ; AR0=1STM #(N/2),BK ; BK=N/2,循環(huán)尋址BUFFER 大小為NMVDD *ar2, *ar3 ; 更新 Buffer2STL A, *ar2+% ; 更新濾波窗口中的采樣數(shù)據(jù)ADD *ar2+0% , *ar3+0% ; 初始化ARPTZ B, #(N/2-1) ; 重復(fù)FIRS 指令N/2 次,先將B 清零DES320PP-U 數(shù)字信號處理仿真/教學(xué)實驗系統(tǒng)使用與實驗指導(dǎo) 76FIRS *ar2+0%, *ar3+0%,filter_coff+N/2 ;完成濾波計算。注意FIR 濾波系數(shù)存放在程序;存貯區(qū),filter_coff 為系數(shù)起始地址MAR *ar2-% ; 修改Buffer1 指針MAR *+ar3(-2)% ; 修改Buffer2 指針2) AC01 的初始化DSE320PP-U 使用AC01 作為模擬信號接口。AC01 提供一個14bit 的D/A 和一個14bit的A/D 通道。AC01 與VC5402 通過串口0 連接。DSP 通過串口可以控制AC01 的采樣頻率、增益、低通/高通濾波器的截止頻率等參數(shù)。這一步是通過讀寫AC01 的寄存器來實現(xiàn)的。下面是初始化AC01 的代碼,有關(guān)AC01 的詳細介紹請參考AC01 的技術(shù)手冊。;-; The following codes are initalized AC01, ALL AC01 setup same !;-idle 1 ;初始化AC01 時僅僅打開串口0 的發(fā)送中斷,而且中斷服務(wù)idle 1 ;程序中簡單地將A 寄存器的值寫入到串口0 發(fā)送寄存器。idle 1 ;開始初始化時,將A 寄存器設(shè)置為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,采樣率設(shè)置為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 通道產(chǎn)生一個1KHz 的方波,作為FIR 濾波器的輸入信號。由于串口發(fā)送中斷將每0.04ms(25KHz)產(chǎn)生一次,所以我們將一個周期的方波信號分25次送出,這樣經(jīng)D/A 變化后便可得到1KHz 的方波。產(chǎn)生方波的數(shù)據(jù)參見如下:;*; 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) 串口的初始化和串口中斷服務(wù)程序本實驗通過 DSP 的串口0 輸入/輸出數(shù)據(jù)。在串口通訊中,數(shù)據(jù)時鐘和幀同步信號都由AC01 產(chǎn)生,所以VC5402 將使用外部時鐘和幀同步信號。串口設(shè)置代碼如下,詳細介紹請參見串口操作實驗:;*; 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 !完成串口設(shè)置后,還需要修改中斷向量表以便正確響應(yīng)串口0 的接收和發(fā)送中斷請求。本實驗中使用發(fā)送中斷產(chǎn)生方波信號和完成對AC01 的初始化;使用接收中斷存貯輸入的數(shù)據(jù),并設(shè)置新數(shù)據(jù)到達標志。主循環(huán)在檢測到該標志后,調(diào)用FIR 濾波程序,完成對輸入數(shù)據(jù)的處理。另外,為了方便觀察,我們還使用了一個定時器,交替使XF為高和低。所以,在濾波程序正常運行時,你會看到D2 在不停地閃爍。6.4 實驗內(nèi)容本實驗需要使用C54X 匯編語言實現(xiàn)FIR 濾波器,并通過CCS 的圖形顯示工具觀察輸入/輸出信號波形以及頻譜的變化。實驗分以下幾步完成:1) 短接 JP12,使得DES320PP-U 的模擬信號輸出通道與模擬信號輸入通道相連。2) 啟動 CCS,在Project 選項中打開fir5402.pjt 文件。3) 使用 Build 選項完成編譯、連接,然后使用File 菜單中的Load Program 將OUT 文件裝入。按F5 鍵啟動程序運行,若有示波器,可以觀察DSE320PP-U 板上的JP12的引腳輸出的1KHz 的方波。DES320PP-U 數(shù)字信號處理仿真/教學(xué)實驗系統(tǒng)使用與實驗指導(dǎo) 81圖 6-4 圖形顯示窗口4) 請使用 Debug - Halt 暫停程序的執(zhí)行。在Project 管理欄中打開fir5402.asm 文件,并在ccs_show(在fir 子程序中)行后的nop 語句處上增加一個斷點。添加斷點的方法是先用鼠標單擊某行,將光標移動到需要增加斷點的行上,然后選擇工具欄的手狀圖標。當(dāng)該行被設(shè)置了一個斷點后,可以看到紅色的圓點。5) 選擇 View - Graph - Time/Frequency 菜單打開一個圖形顯示窗口,參見圖6-4。將“Start Address”項改為地址0x1800,將“Display Data Size”項設(shè)置為128,將“DSPData Type”改為“16-bit signed integer”。這樣,將在圖形顯示窗口中顯示從0x1800(信號輸入緩沖)開始的128 個點的16 位有符號整數(shù)。再打開一個圖形窗口,顯示從地址0x1020(濾波信號輸出緩沖)開始的128 點的16 位有符號整數(shù)。6) 選擇 Debug - Animate 項運行程序。Animate 運行和Run 運行基本一致,只是使用Run 運行時,若遇到斷點,將停下來,直到用戶再次使用Run 命令才恢復(fù)運行。而使用Animate 運行時,若遇到斷點,CCS 刷新所有的顯示窗口,如寄存器、CPU、MEM、圖形顯示等,然后自動恢復(fù)運行。所以,你能看到連續(xù)更新的濾波輸出。6.5 思考題1) 請說明下面的輔助寄存器的操作意義:*ar0(#0100), *ar3+%, *ar3+0%, *ar2-%, *+ar3(-2)%答:8個輔助寄存器(AR0-AR7),由一個輔助寄存器指針(ARP 3-bit)來指定一個輔助寄存器算術(shù)單元(ARAU)作16-bit無符號數(shù)運算,決定一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 在線購物平臺用戶使用協(xié)議修改
- 智能硬件產(chǎn)品委托生產(chǎn)與供貨協(xié)議
- 不規(guī)則動詞的過去式變化規(guī)則:英語基礎(chǔ)知識梳理
- 我的暑假生活周記400字初中12篇
- 零售業(yè)商品品類分類表
- 在職員工信息與職位證明(6篇)
- 人才招聘與選拔知識梳理與測試卷
- 環(huán)保森林面試題及答案
- 阿里巴巴java面試題及答案過了就錄取你
- java面試題及答案分值分析
- 工模外發(fā)管理流程模板
- 部編版高一上冊語文第三課《百合花》課文原文教案及知識點
- 北京理工附中小升初分班考試真題
- 膀胱鏡檢查記錄
- 英語社團活動課件
- 學(xué)前兒童發(fā)展心理學(xué)-情感
- 二年級下冊數(shù)學(xué)教案 《生活中的大數(shù)》練習(xí)課 北師大版
- GB∕T 16762-2020 一般用途鋼絲繩吊索特性和技術(shù)條件
- 電網(wǎng)施工作業(yè)票模板
- T∕CAEPI 31-2021 旋轉(zhuǎn)式沸石吸附濃縮裝置技術(shù)要求
- 國家級高技能人才培訓(xùn)基地建設(shè)項目實施管理辦法
評論
0/150
提交評論