基于DSP的語音信號FIR低通濾波器設(shè)計_第1頁
基于DSP的語音信號FIR低通濾波器設(shè)計_第2頁
基于DSP的語音信號FIR低通濾波器設(shè)計_第3頁
基于DSP的語音信號FIR低通濾波器設(shè)計_第4頁
基于DSP的語音信號FIR低通濾波器設(shè)計_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、科信學(xué)院DSP應(yīng)用系統(tǒng)(三級項目)(2014/2015學(xué)年第二學(xué)期) 課程名稱 : DSP原理與應(yīng)用 題 目 :基于DSP的語音信號FIR低通濾波器設(shè)計 專業(yè)班級 : 信息1221 學(xué) 號 : 學(xué)生姓名 : Liu 指導(dǎo)教師 : 設(shè)計成績 : 2015年 7 月 10 日1、 項目設(shè)計目的通過課程設(shè)計,加深對DSP芯片TMS320C54x的結(jié)構(gòu)、工作原理的理解,獲得DSP應(yīng)用技術(shù)的實際訓(xùn)練,掌握設(shè)計較復(fù)雜DSP系統(tǒng)的基本方法、數(shù)字濾波器的設(shè)計過程,了解FIR的原理和特性,熟悉設(shè)計FIR數(shù)字濾波器的原理,學(xué)習(xí)FIR濾波器的DSP的實現(xiàn)原理,學(xué)習(xí)使用CCS的波形觀察窗口觀察輸入/輸出信號波形和頻譜

2、變化情況。2、 項目設(shè)計正文2.1硬件設(shè)計2.1.1方案設(shè)計本次設(shè)計基于ccs3.3運行環(huán)境下,使用ICETEK-VC5509-EDU實驗箱(包括仿真器)、麥克風(fēng)輸入設(shè)備、耳機輸出相關(guān)設(shè)備等完成此次設(shè)計。主要是通過實驗箱上AIC23芯片實時采集語音信號,進行FIR低通濾波,使用MATLAB環(huán)境下的FDAtool工具來產(chǎn)生低通濾波器系數(shù),用DSP匯編語言或C語言進行編程實現(xiàn)FIR運算對語音信號進行濾波處理,并且與CCS 算法庫中的dsplib中的算法相比較,對所設(shè)計的FIR濾波器各項指標(biāo)進評價。2.1.2 CCS開發(fā)環(huán)境配置CCS可以工作在純軟件仿真環(huán)境中,就是由軟件在PC機內(nèi)存中構(gòu)造一個虛擬的

3、DSP環(huán)境,可以調(diào)試、運行程序。但一般軟件無法構(gòu)造DSP中的外設(shè),所以軟件仿真通常用于調(diào)試純軟件的算法和進行效率分析等,本次設(shè)計將使用硬件仿真(Emulator)。在使用軟件仿真方式工作時,無需連接板卡和仿真器等硬件。雙擊桌面上圖標(biāo):進入CCS設(shè)置窗口。在出現(xiàn)的窗口中按標(biāo)號順序進行如下設(shè)置:圖 2-1 Emulator選項圖接著在下面的窗口中按標(biāo)號順序進行如下選擇: 圖 2-2 Emulator配置圖在出現(xiàn)的窗口中按標(biāo)號順序進行如下設(shè)置: 圖 2-3 Emulator配置完成圖在出現(xiàn)的窗口中按標(biāo)號順序進行如下設(shè)置: 圖 2-4 配置完成圖以上設(shè)置完成后,CCS已經(jīng)被設(shè)置成Emulator的方式

4、(用仿真器連接硬件板卡的方式),并且指定通過ICETEK-5100USB 仿真器連接ICETEK-VC5509-A 2.1.3 語音編解碼芯片TLV320AIC23原理ICETEK-VC5509-A 評估板上有一個語音編解碼芯片 TLV320AIC23。TLV320AIC23內(nèi)置耳機輸出放大器,支持MIC和LINE IN兩種輸入方式(二選一),且對輸入和輸出都具有可編程增益調(diào)節(jié)。AIC23的模數(shù)轉(zhuǎn)換(ADCs)和數(shù)模轉(zhuǎn)換(DACs)部件高度集成在芯片內(nèi)部,采用了先進的Sigmadelta過采樣技術(shù),可以在8K到96K的頻率范圍內(nèi)提供16bit、20bit、24bit和32bit的采樣,ADC和

5、DAC的輸出信噪比分別可以達到90dB和100dB。圖 2-5 TMS320VC5509與TLV320AIC23的連接示意圖 系統(tǒng)中AIC23的主時鐘12MHz直接由外部的晶振提供。MODE接數(shù)字地,表示利用I2C控制接口對AIC23傳輸控制數(shù)據(jù)。CS接數(shù)字地,定義了I2C總線上AIC23的外設(shè)地址,通過將CS接到高電平或低電平,可以選擇AIC23作為從設(shè)備在I2C總線上的地址。SCLK和SDIN是AIC23控制端口的移位時鐘和配置數(shù)據(jù)輸入端,分別與VC5509的I2C模塊端口SCL和SDA相連。收發(fā)時鐘信號CLKX1和CLKR1由AIC23的串行數(shù)據(jù)輸入時鐘BCLK提供,并由AIC23的幀同

6、步信號LRCIN、LRCOUT啟動串口數(shù)據(jù)傳輸。DX0和DR0分別與AIC23的DIN和DOUT相連,從而完成VC5509與AIC23間的數(shù)字信號通信。2.1.4 FIR濾波器原理 對于一個FIR濾波器系統(tǒng),它的沖擊響應(yīng)總是又限長的,其系統(tǒng)函數(shù)可記為: (2-a)其中N-1是FIR的濾波器的階數(shù),為延時結(jié),h(n)為端口信號函數(shù)。最基本的FIR濾波器可用下式表示: (2-b)其中x(n-k)輸入采樣序列,h(k)是濾波器系數(shù),N是濾波器的階數(shù)Y(N)表示濾波器的輸出序列,也可以用卷積來表示輸出序列y(n)與x(n)、h(n)的關(guān)系,如下: (2-c)2.1.5 濾波器系數(shù)的生成在Matlab的

7、Start菜單中選擇Toolboxes - Filter Design - Filter Design & Analysis Tools(fdatool),或者在命令行中輸入fdatool來啟動濾波器設(shè)計分析器。啟動成功后界面如圖所示。圖 2-6 fdatool界面圖 在選項中選擇或輸入濾波器參數(shù),然后點擊“Design Filter”按鈕,完成濾波器的設(shè)計。具體參數(shù)及設(shè)計成功后的結(jié)果如圖圖 2-7 濾波器圖從Matlab中導(dǎo)出FIR濾波器系數(shù)。在Fdatool中,選擇Targets - Code Composer Studio (tm) IDE,在出現(xiàn)的對話框中選擇輸出文件類型為C head

8、er file,輸出系數(shù)類型為signed 16-bit integer,如圖所示。點擊Generate按鈕,選擇路徑,即可輸出前一步設(shè)計出的FIR濾波器的系數(shù)表。圖 2-8 系數(shù)生成圖2.1.5 FIR濾波器的DSP實現(xiàn) FIR濾波器的輸出表達式為 (2-d)式中為濾波器系數(shù)x(n)表示濾波器在n時刻的輸入y(n)為n時刻的輸出。它的基本算法是一種乘法-累加運算即不斷地輸入樣本x(n)經(jīng)過延時后,再進行乘法-累加,最后輸出濾波結(jié)果y(n)。 該次設(shè)計中采用的是循環(huán)緩沖法設(shè)計FIR低通濾波器,循環(huán)緩沖區(qū)法的特點如下: (1)對于N級FIR濾波器在數(shù)據(jù)存儲器中開辟一個N單元的緩沖區(qū)

9、滑窗用來存放最新的N個輸入樣本。 (2)從最新樣本開始取數(shù)(3)讀完最后一個樣本最老樣本后,輸入最新樣本來代替最老樣本而其他數(shù)據(jù)位置不變。 圖 2-9 FIR濾波器循環(huán)緩沖示意圖2.2軟件設(shè)計2.2.1系統(tǒng)分析通過麥克風(fēng)利用芯片AIC23進行帶噪聲的語音信號采集,由于AIC本身自帶A/D轉(zhuǎn)化,采集得到的數(shù)據(jù)傳輸保存于MCBSP數(shù)據(jù)接收寄存器DDR。DSP對MCBSP中的數(shù)據(jù)進行FIR濾波,并送給MCBSP中的數(shù)據(jù)發(fā)送寄存器DXR。DXR中數(shù)據(jù)回傳給AIC23,并利用它帶的D/A轉(zhuǎn)換進行輸出,從而能聽到濾波后的信號。開始初始化語音緩沖區(qū)和工作變量等待 McBSP通道 0 傳送結(jié)束讀取語音數(shù)據(jù)保存

10、于左聲道緩沖區(qū)調(diào)用 fir2計算 FIR 濾波輸出濾波結(jié)果保存于右聲道緩沖區(qū)原聲音送左聲道,濾波后送右聲道輸出2.2.2系統(tǒng)流程圖主程序流程圖:開始初始化:EMIF、CPU頻率、AIC23調(diào)用AIC23_Mixer子程序處理音頻數(shù)據(jù)輸入/輸出2.2.2 實現(xiàn)代碼主程序:/ 測試時音頻插孔J5接音源,J7接揚聲器。#include 5509.h#include util.hvoid wait( unsigned int cycles );void EnableAPLL( );extern int fir(int *,int *,unsigned int,int );void main() SDR

11、AM_init(); EnableAPLL(); PLL_Init(40); AIC23_Init(); PLL_Init(120); for(;) AIC23_Mixer(); AIC2323_Mixer(); void wait( unsigned int cycles ) int i; for ( i = 0 ; i cycles ; i+ ) void EnableAPLL( ) /* Enusre DPLL is running */ *( ioport volatile unsigned short* )0x1f00 = 4; wait( 25 ); *( ioport volat

12、ile unsigned short* )0x1f00 = 0; / MULITPLY *( ioport volatile unsigned short* )0x1f00 = 0x3000; / COUNT *( ioport volatile unsigned short* )0x1f00 |= 0x4F8; wait( 25 ); /*( ioport volatile unsigned short* )0x1f00 |= 0x800 / MODE *( ioport volatile unsigned short* )0x1f00 |= 2; wait( 30000 ); / APLL

13、 Select *( ioport volatile unsigned short* )0x1e80 = 1; / DELAY wait( 60000 );子程序1:#define AUTIODATALEFT 0x0d000#define AUTIODATARIGHT 0x17000int *pAudioLeft,*pAudioRight;int www=0;int left, right; int *pLeft,*pRight;int lft, rgt; void AIC23_Mixer() PC55XX_MCSP pMCBSP0 = (PC55XX_MCSP)C55XX_MSP0_ADDR

14、; int *pl,*pr,nAudioCount; int i;pAudioLeft=pl=(int *)AUTIODATALEFT;pAudioRight=pr=(int *)AUTIODATARIGHT;nAudioCount=0; for ( i=0;iNX;i+) xi=0; for ( i=0;i spcr2, SPCR2_XRDY);/等待數(shù)據(jù)傳輸完成 left=(*pl)= Read(pMCBSP0 - ddr1);/ 讀入左聲道數(shù)據(jù) right = Read(pMCBSP0 - ddr2);/ 讀入右聲道數(shù)據(jù) xNX-1=left/16;/ 防止濾波時數(shù)據(jù)溢出 rNX-1=l

15、owpassfir(); (*pr)=rNX-1;/ 數(shù)組r的最后一個單元為當(dāng)前輸出 Write(pMCBSP0 - dxr1, left);/ 將原始數(shù)據(jù)送左聲道輸出 Write(pMCBSP0 - dxr2, rNX-1);/ 將經(jīng)過濾波后的數(shù)據(jù)送右聲道輸出 nAudioCount+; pl+; pr+;/ 循環(huán)使用緩沖區(qū) if ( nAudioCount=1024 ) nAudioCount=0;/ break point pl=pAudioLeft; pr=pAudioRight; for ( i=0;iNX-1;i+ )/ 重新調(diào)整輸入序列(供fir2使用) xi=xi+1; int

16、 lowpassfir()int i,y_out=0;for(i=0;iNX;i+)y_out+=(xNX-i+hi);return (y_out);子程序2:void AIC2323_Mixer() PC55XX_MCSP pMCBSP0 = (PC55XX_MCSP)C55XX_MSP0_ADDR; int *pll,*prr,nCount,i; pLeft=pll=(int *)AUTIODATALEFT;pRight=prr=(int *)AUTIODATARIGHT;nCount=0;for ( i=0;iNX;i+) ini=0; for ( i=0;i spcr2, SPCR2_

17、XRDY);/等待數(shù)據(jù)傳輸完成 lft=(*pll)= Read(pMCBSP0 - ddr1);/ 讀入左聲道數(shù)據(jù) rgt = Read(pMCBSP0 - ddr2);/ 讀入右聲道數(shù)據(jù) inNX-1=lft/16;/ 防止濾波時數(shù)據(jù)溢出 fir2(in, h, out, db, NX, NH);/ 調(diào)用濾波程序計算當(dāng)前輸出 (*prr)=outNX-1;/ 數(shù)組r的最后一個單元為當(dāng)前輸出 Write(pMCBSP0 - dxr1, lft);/ 將原始數(shù)據(jù)送左聲道輸出 Write(pMCBSP0 - dxr2, outNX-1);/將經(jīng)過濾波后的數(shù)據(jù)送右聲道輸出 nCount+; pll

18、+; prr+;/ 循環(huán)使用緩沖區(qū) if ( nCount=1024 ) nCount=0;/ break point pll=pLeft; prr=pRight; for ( i=0;iNX-1;i+ )/ 重新調(diào)整輸入序列(供fir2使用) ini=ini+1; 2.2.3 仿真結(jié)果在View的Graph中單擊Time/frequency出現(xiàn)graph property dialog框。將顯示類型,圖形名稱,起始地址,抽樣點數(shù),數(shù)據(jù)類型等分別進行設(shè)置,輸出各種波形。輸出濾波前的信號時域波形語音輸入波形圖: 圖 2-10 語音輸入(時域) 圖 2-11 語音輸入(頻域) 圖 2-12 濾波語音輸出(時域) 圖 2-13 濾波語音輸出(頻域) 圖 2-14 濾波器(時域) 圖 2-15 濾波器(頻域) 圖 2-16 庫函數(shù)濾波語音輸出(時域) 圖 2-17 庫函數(shù)濾波語音輸出(時域) 圖 2-18 庫函數(shù)與自編函數(shù)濾波對比圖通過分析仿真圖可知,自己編寫的函數(shù)基本與庫函數(shù)中FIR算法沒有差異,該濾波器性能較好。3、 項目設(shè)計總結(jié)在這次課程設(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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論