武漢理工基于fir的高通濾波器DSP綜合報(bào)告.doc
《武漢理工基于fir的高通濾波器DSP綜合報(bào)告.doc》由會員分享,可在線閱讀,更多相關(guān)《武漢理工基于fir的高通濾波器DSP綜合報(bào)告.doc(20頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
摘 要 DSP 技術(shù)一般指將 DSP 處理器用于完成數(shù)字信號處理的方法與技術(shù) 目前的 DSP 芯片 以其強(qiáng)大的數(shù)據(jù)處理功能在通信和其他信號處理領(lǐng)域得到廣泛注意并已成為開發(fā)應(yīng)用的熱 點(diǎn)技術(shù) 主要應(yīng)用是實(shí)時(shí)快速的實(shí)現(xiàn)各種數(shù)字信號處理算法 如卷積及各種變換等 其中 利用 DSP 來實(shí)現(xiàn)數(shù)字濾波器就是很重要的一種應(yīng)用 本文深入研究 DSP 芯片的濾波器系統(tǒng) 軟件實(shí)現(xiàn)方法 用窗口設(shè)計(jì)法實(shí)現(xiàn) FIR 濾波器 實(shí)驗(yàn)結(jié)果表明濾波結(jié)果效果良好 達(dá)到了 預(yù)期的性能指標(biāo) 一 實(shí)驗(yàn)?zāi)康?1 掌握 FIR 數(shù)字濾波器的原理 2 掌握 FIR 數(shù)字濾波器的 DSP 實(shí)現(xiàn)方法 二 實(shí)驗(yàn)原理 數(shù)字濾波器一直以來就是數(shù)字信號處理器最廣為人知的應(yīng)用 數(shù)字濾波器有別于模擬 濾波器的優(yōu)點(diǎn)是 1 可重復(fù)設(shè)計(jì) 不需更改任何硬件電路的設(shè)計(jì) 就可以將一個(gè)低通濾 波器重新設(shè)計(jì)成一個(gè)高通濾波器 2 執(zhí)行階段可以直接更新濾波器的系數(shù) 形成適應(yīng)性 濾波器 濾波器分成兩種形態(tài) 有限長度脈沖響應(yīng) FIR 濾波器 FIR 指的是單一采樣 響應(yīng)的期間是有限長的 IIR 指的是單一采樣響應(yīng)的期間是無限長的 FIR 濾波器的特性 可以用一個(gè)差分方程來描述 2 1 0 nxhnxhny 其中 是濾波器的系數(shù) 21a 常用的濾波器有 低通 高通 帶通及帶阻濾波器 濾波器特性可以由很多的參數(shù)來決定 這些參數(shù)包括帶通漣波 帶阻漣波 帶通截止頻率及帶阻截止頻率 在設(shè)計(jì) FIR 濾波器 時(shí) 必須根據(jù)這些參數(shù)來確定 FIR 濾波器的系數(shù)及階數(shù) 這個(gè)過程可以通過幾種方法來完成 一是通過 Matlab 軟件來 完成 二是通過專門的數(shù)字濾波器設(shè)計(jì)的軟件包來完成 這一過程本實(shí)驗(yàn)不詳述 本實(shí)驗(yàn) 假定該過程已經(jīng)完成 并得到了濾波器的階數(shù)及系數(shù) 本設(shè)計(jì)是基于 FIR 算法的 dsp 高通濾波器的設(shè)計(jì) 采用 DSP 芯片 其中采樣頻率為 64000HZ 高通濾波器的邊界頻率為 2000HZ 階數(shù)為 101 階 三 算法設(shè)計(jì) 1 采用 MATLAB 設(shè)計(jì) FIR 數(shù)字濾波器 采用 MATLAB 設(shè)計(jì) FIR 數(shù)字濾波器的方法有多種 本實(shí)驗(yàn)采用 fir1 函數(shù) 使用方法簡介如下 設(shè)計(jì)高通濾波器 格式為 b fir1 N Wn high 其中 N 1 為濾波器階數(shù) b 為返回的長度為 N 1 的系數(shù)向量 Wn 為歸一化邊界頻率 0 Wn DARAM text DARAM stack DARAM sysstack DARAM cinit DARAM2 pinit DARAM2 bss DARAM2 const DARAM2 firhigh cmd fir asm 該程序用于實(shí)現(xiàn) FIR 濾波器 可被 C 語言程序調(diào)用 int fir int int unsigned int int 參數(shù) 0 AR0 輸入信號緩沖區(qū)指針 參數(shù) 1 AR1 FIR 濾波器系數(shù)向量指針 參數(shù) 2 T0 FIR 濾波器的階數(shù) L 參數(shù) 3 T1 輸入信號當(dāng)前值在循環(huán)緩沖區(qū)的序數(shù) 返回值 T0 輸出信號當(dāng)前值 global fir def fir fir pshm ST1 55 現(xiàn)場 ST1 ST2 和 ST3 入棧 pshm ST2 55 pshm ST3 55 or 0 x340 mmap ST1 55 設(shè)置 FRCT SXMD SATD bset SMUL 置位 SMUL mov mmap AR0 BSA01 AR0 輸入信號循環(huán)緩沖區(qū)的起始地址 mov mmap AR1 BSA23 AR1 濾波器系數(shù)循環(huán)緩沖區(qū)的起始地址 mov mmap T0 BK03 設(shè)置循環(huán)緩沖區(qū)大小 or 0 x5 mmap ST2 55 AR0 和 AR2 為循環(huán)緩沖區(qū)指針 mov T1 AR0 AR0 從 index 偏移量開始 mov 0 AR2 AR2 從 0 偏移量開始 sub 2 T0 T0 L 2 mov T0 CSR 設(shè)置外部循環(huán)次數(shù)為 L 1 mpym AR0 AR2 AC0 執(zhí)行第一次運(yùn)算 rpt CSR 啟動循環(huán) macm AR0 AR2 AC0 mov hi AC0 T0 用 Q15 格式存放結(jié)果 popm ST3 55 恢復(fù) ST1 ST2 和 ST3 popm ST2 55 popm ST1 55 ret end main c include math h define Fs 64000 采樣頻率 define T 1 Fs 采樣時(shí)間 define f1 500 正弦信號 1 頻率 define f2 2500 正弦信號 2 頻率 define f3 3300 正弦信號 3 頻率 define PI 3 1415926 define w1 2 PI f1 T 正弦信號 1 數(shù)字頻率 2 pi f1 Fs define w2 2 PI f2 T 正弦信號 2 數(shù)字頻率 2 pi f2 Fs define w3 2 PI f3 T 正弦信號 3 數(shù)字頻率 2 pi f3 Fs define a1 0 333 正弦信號 1 幅度 define a2 0 30 正弦信號 2 幅度 define a3 0 30 正弦信號 3 幅度 extern int fir int int unsigned int int Low pass FIR filter coefficients int coeff 101 6 3 0 4 8 13 19 25 31 38 44 49 52 53 51 45 34 20 0 24 53 85 120 155 189 221 247 266 274 270 251 216 163 91 0 110 238 381 538 705 879 1055 1229 1397 1554 1695 1817 1915 1988 2033 30713 2033 1988 1915 1817 1695 1554 1397 1229 1055 879 705 538 381 238 110 0 91 163 216 251 270 274 266 247 221 189 155 120 85 53 24 0 20 34 45 51 53 52 49 44 38 31 25 19 13 8 4 0 3 6 int in 101 input buffer int out 101 Output buffer main unsigned int L 101 unsigned int i float signal unsigned int n 0 int index 0 for i 0 i2 以后 y k 能用 y k 1 和 y k 2 算出 這是一個(gè)遞歸的差分方程 式中 2cos sTf 1B iisC fs 為采樣頻率 f 為正弦波頻率 A 為正弦波幅度 可見用數(shù)字頻率振蕩器產(chǎn)生正弦波的實(shí)質(zhì)就 是用程序?qū)崿F(xiàn)上述的遞歸差分方程 如要產(chǎn)生振蕩器的頻率為 2kHz 正弦波 設(shè)采樣速率為 40k 通過定時(shí)器設(shè)置 每隔 25us 中斷一 次 即產(chǎn)生一個(gè) y n 則遞歸差分方程系數(shù)為 2cos 2 sTf co 2 0 4 2 0 9516 B 1 sini 2 sin 2 0 4 30916CTf 為了便于定點(diǎn) DSP 處理 將所有系數(shù)除以 2 然后用 16 位定點(diǎn)格式表示為 A 79bcH B C000H C 13c7H 這便是產(chǎn)生 2kHz 正弦信號的三個(gè)系數(shù) 主程序初始化時(shí)先計(jì)算出 y 1 和 y 2 然后開放定時(shí)器中斷 以后每次進(jìn)入定時(shí)器中斷服務(wù)程序 時(shí) 利用前面計(jì)算出的 y 1 和 y 2 計(jì)算出新的 y 初始化 y 1 和 y 2 SSBX FRCT 置 FRCT 1 準(zhǔn)備進(jìn)行小數(shù)乘法運(yùn)算 ST 0 x79BC AA 將常數(shù)裝入變量 AA ST 0 xC000H BB 將常數(shù)裝入變量 BB ST 0 x13C7H CC 將常數(shù)裝入變量 CC PSHD CC 將 CC 壓入堆棧 POPD Y2 初始化 Y2 CC LD AA T 將 AA 裝到 T 寄存器 MPY Y2 A Y2 乘以系數(shù) A 結(jié)果放入 A 寄存器 STH A Y1 將 A 寄存器的高 16 位存入變量 Y1 中斷服務(wù)程序段 LD BB T 將系數(shù) B 裝入 T 寄存器 MPY Y2 A Y2 乘系數(shù) B 結(jié)果放入 A 寄存器 LTD Y1 將 Y1 裝入 T 寄存器 同時(shí)復(fù)制到 Y2 MAC AA A 完成新正弦數(shù)據(jù)計(jì)算 A 寄存器 中為 Y1 AA Y2 BB STH A 1 Y1 將新數(shù)據(jù)存入 Y1 因所有系數(shù)都 除過 2 在保存結(jié)果時(shí)轉(zhuǎn)移一位 恢復(fù)數(shù)據(jù)正常大小 STH A 1 Y0 將新正弦數(shù)據(jù)存入 Y0 VC5402 的片內(nèi)定時(shí)器利用 CLKOUT 時(shí)鐘計(jì)數(shù) 用三個(gè)寄存器 TIM PRD TCR 來控制定時(shí)器 到 定時(shí)器實(shí)際上可以有 20 個(gè)比特的周期寄存器 它對 CLKOUT 信號計(jì)數(shù) 先將 PSC 減 1 直到 PSC 為 0 然后用 TDDR 重新裝入 PSC 同時(shí)將 TIM 減 1 直到 TIM 減為 0 這時(shí) CPU 發(fā)出 TINT 中斷 同時(shí)在 TOUT 引腳輸出一個(gè)脈沖信號 脈沖寬度為 CLKOUT 一致 然后用 PRD 重新裝入 TIM 重復(fù)下去直到系 統(tǒng)或定時(shí)器復(fù)位 因而定時(shí)器中斷的頻率由下面的公式?jīng)Q定 TINT 的頻率 其中 tc表示 CLKOUT 的周期 設(shè)置 PRD 寄存器值為 1 PRDTtc 12499 TINT 中斷頻率為 40kHz 定時(shí)器初始化程序段為 STM 10H TCR 停止定時(shí)器 STM 2499H PRD 設(shè)置PRD 寄存器值為2499 TINT 中斷頻率為Foutclk 2499 1 100MHz 2500 40 kHz STM 20H TCR 重新裝入TIM 和PSC 然后 啟動定時(shí)器 在開放中斷屏蔽寄存器IMR后 就可以產(chǎn)生頻率為2000Hz的正弦波 三 實(shí)驗(yàn)內(nèi)容與步驟 使用 C54x 匯編語言實(shí)現(xiàn)數(shù)字振蕩器 并通過 CCS 提供的顯示窗口觀察輸出信號波形以及頻譜 根據(jù)確定數(shù)字振蕩器的頻率 確定系數(shù) 數(shù)字振蕩器系數(shù)的確定在前面已經(jīng)說明 3 啟動 CCS 新建工程文件 如文件名為sinewave pjt 并建立如下文件 匯編源程序exer3 asm title for test INT service program 25 us mmregs global c int00 tint vector OFF INTIMER set 04Ch vector of INTtimer at VECTOR OFF INTIMER INIT A set 079bch A 2 0 9510498 INIT B set 0c000h B 2 0 5 INIT C set 013c7h C 2 0 1545105 bss y0 1 bss y1 1 bss y2 1 bss temp 1 bss AA 1 bss BB 1 bss CC 1 text c int00 ld 0 dp ssbx intm disable all interrupt st 1fffh sp ld vector a get vector table address and 0FF80h a andm 007Fh pmst or pmst a stlm a pmst 設(shè)置IPTR stm 10h TCR init TIMER stm 2499 PRD f 100M 2499 1 40kHz stm 20h TCR reset TIMER ldm IMR a read back IMR or 08h a enable TIMER interrupt stlm a IMR set IMR ld temp dp set DP ssbx FRCT prepare for fraction mpy st INIT A AA init AA BB CC st INIT B BB st INIT C CC pshd CC popd y2 init y2 y2 CC ld AA T T AA mpy y2 a y2 AA a sth a y1 y2 AA y1 stm 0h TCR enable TIMER nop rsbx intm enable all int again nop b again nop nop nop nop nop nop interrupt for INT TIMER tint ld BB DP ld BB T T BB mpy y2 a a y2 BB ltd y1 T y1 y2 y1 mac AA a a a y1 AA sth a 1 y1 new cos data y1 sth a 1 y0 new cos data y0 nop set breakpoint in CCS int1 end nop rete end vec table asm文件 mmregs ref ret ref c int00 ref tint global vector sect int table interrupte vector table vector rs b c int00 nop nop nmi b ret nop nop sint17 b ret nop nop sint18 b ret nop nop sint19 b ret nop nop sint20 b ret word 0 0 sint21 b ret word 0 0 sint22 word 01000h word 0 0 0 sint23 word 0ff80h word 0 0 0 sint24 word 01000h word 0 0 0 sint25 word 0ff80h word 0 0 0 sint26 word 01000h word 0 0 0 sint27 word 0ff80h word 0 0 0 sint28 word 01000h word 0 0 0 sint29 word 0ff80h word 0 0 0 sint30 word 01000h word 0 0 0 int0 b ret nop nop int1 b ret nop nop int2 b ret nop nop tint b tint nop nop brint0 b ret nop nop bxint0 b ret nop nop trint b ret nop nop dmac1 b ret nop nop int3 b ret nop nop hpint b ret nop nop q26 word 0ff80h word 0 0 0 q27 word 01000h word 0 0 0 dmac4 b ret nop nop dmac5 b ret nop nop q30 word 0ff80h word 0 0 0 q31 word 01000h word 0 0 0 end of interrupte vector table ret rete 鏈接定位sinewave cmd MEMORY PAGE 1 INT D ORIGIN 80h LENGTH 1F80h PAGE 0 EXT P ORIGIN 2000h LENGTH 2000h SECTIONS text EXT P PAGE 0 int table EXT P ALIGN 128 PAGE 0 data INT D PAGE 1 選擇Project 菜單中的Add File to Project 選項(xiàng) 將匯編源程序exer3 asm vec table asm 和連接 定位sinewave cmd文件依次添加到工程文件中 注意 你可以在添加文件對話框中選擇顯示不同的文 件類型來加快文件選擇速度 你也可以使用鼠標(biāo)右鍵單擊工程文件名 如sinewave pjt 并選擇Add Files 項(xiàng)來添加需要的文件 其中 exer3 asm 包括初始化代碼和中斷服務(wù)程序 而vec talbe asm 包含中斷向量表 4 完成編譯 連接 正確生成OUT文件 然后使用File 菜單的 Load Program 選項(xiàng) 將生成的OUT 文件裝入DSP 的片內(nèi)存儲器 這時(shí)CCS 將顯示程序的啟始地址 c int00 5 選 View Graph Time Frequency 打開圖形顯示設(shè)置窗口 在彈出的對話框中按圖4 1設(shè)置 圖4 1 圖形屬性設(shè)置 主要修改 Start Address 為y0 y0為生成的正弦波輸出變量 Acquisition Buffer Size 為1 DSP Data Type 為 16 bit signed integer 6 在匯編源程序的中斷服務(wù)程序 tint 中的 nop 語句處設(shè)置斷點(diǎn) 選擇Debug Animate 運(yùn)行 程序 觀察輸出波形 數(shù)一數(shù)一個(gè)周期的正弦波有多少個(gè)點(diǎn) 算算頻率是否是2kHz 另外 想想Run 和Animate 兩種運(yùn)行方式的區(qū)別 7 用右鍵單擊圖形顯示窗口 并選擇 Proporties 項(xiàng)以便修改顯示屬性 將 DisplayType 項(xiàng)改 為 FFT Magnitude 以便顯示信號頻譜 修改 Sampling Rate Hz 項(xiàng)為40000 然后退出 注意觀 察生成的正弦波頻率 四 實(shí)驗(yàn)報(bào)告要求 1 簡述實(shí)驗(yàn)?zāi)康?2 簡述 DSP 定時(shí)器的基本工作原理 3 調(diào)試實(shí)驗(yàn)內(nèi)容 得到相應(yīng)結(jié)果 分析在調(diào)試過程中出現(xiàn)的問題 并如何解決問題 五 思考題 本實(shí)驗(yàn)程序產(chǎn)生了一個(gè) 2kHz 的正弦信號 請修改程序 產(chǎn)生一個(gè)頻率相同的余弦信號 為了 驗(yàn)證產(chǎn)生的COS 信號 可以同時(shí)生成SIN 和COS 信號 然后在兩個(gè)圖形窗口中顯示波形 它們應(yīng)該正 好相差 2 相位 2 重新設(shè)計(jì)和實(shí)現(xiàn)一個(gè)數(shù)字振蕩器 采樣頻率改為為 20KHz 輸出正弦信號的頻率為 4KHz- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 武漢理工 基于 fir 濾波器 DSP 綜合 報(bào)告
鏈接地址:http://m.kudomayuko.com/p-9020354.html