基于DSP的語音信號(hào)FIR低通濾波器設(shè)計(jì)說明書_第1頁
基于DSP的語音信號(hào)FIR低通濾波器設(shè)計(jì)說明書_第2頁
基于DSP的語音信號(hào)FIR低通濾波器設(shè)計(jì)說明書_第3頁
基于DSP的語音信號(hào)FIR低通濾波器設(shè)計(jì)說明書_第4頁
基于DSP的語音信號(hào)FIR低通濾波器設(shè)計(jì)說明書_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

/科信學(xué)院DSP應(yīng)用系統(tǒng)〔三級(jí)項(xiàng)目〔2014/2015學(xué)年第二學(xué)期課程名稱:DSP原理與應(yīng)用題目:基于DSP的語音信號(hào)FIR低通濾波器設(shè)計(jì)專業(yè)班級(jí):信息1221學(xué)號(hào):學(xué)生姓名:Liu指導(dǎo)教師:設(shè)計(jì)成績(jī):2015年7月10日項(xiàng)目設(shè)計(jì)目的通過課程設(shè)計(jì),加深對(duì)DSP芯片TMS320C54x的結(jié)構(gòu)、工作原理的理解,獲得DSP應(yīng)用技術(shù)的實(shí)際訓(xùn)練,掌握設(shè)計(jì)較復(fù)雜DSP系統(tǒng)的基本方法、數(shù)字濾波器的設(shè)計(jì)過程,了解FIR的原理和特性,熟悉設(shè)計(jì)FIR數(shù)字濾波器的原理,學(xué)習(xí)FIR濾波器的DSP的實(shí)現(xiàn)原理,學(xué)習(xí)使用CCS的波形觀察窗口觀察輸入/輸出信號(hào)波形和頻譜變化情況。項(xiàng)目設(shè)計(jì)正文2.1硬件設(shè)計(jì)方案設(shè)計(jì)本次設(shè)計(jì)基于ccs3.3運(yùn)行環(huán)境下,使用ICETEK-VC5509-EDU實(shí)驗(yàn)箱〔包括仿真器、麥克風(fēng)輸入設(shè)備、耳機(jī)輸出相關(guān)設(shè)備等完成此次設(shè)計(jì)。主要是通過實(shí)驗(yàn)箱上AIC23芯片實(shí)時(shí)采集語音信號(hào),進(jìn)行FIR低通濾波,使用MATLAB環(huán)境下的FDAtool工具來產(chǎn)生低通濾波器系數(shù),用DSP匯編語言或C語言進(jìn)行編程實(shí)現(xiàn)FIR運(yùn)算對(duì)語音信號(hào)進(jìn)行濾波處理,并且與CCS算法庫中的dsplib中的算法相比較,對(duì)所設(shè)計(jì)的FIR濾波器各項(xiàng)指標(biāo)進(jìn)評(píng)價(jià)。2.1.2CCS開發(fā)環(huán)境配置CCS可以工作在純軟件仿真環(huán)境中,就是由軟件在PC機(jī)內(nèi)存中構(gòu)造一個(gè)虛擬的DSP環(huán)境,可以調(diào)試、運(yùn)行程序。但一般軟件無法構(gòu)造DSP中的外設(shè),所以軟件仿真通常用于調(diào)試純軟件的算法和進(jìn)行效率分析等,本次設(shè)計(jì)將使用硬件仿真<Emulator>。在使用軟件仿真方式工作時(shí),無需連接板卡和仿真器等硬件。⑴雙擊桌面上圖標(biāo):進(jìn)入CCS設(shè)置窗口。⑵在出現(xiàn)的窗口中按標(biāo)號(hào)順序進(jìn)行如下設(shè)置:圖2-1Emulator選項(xiàng)圖⑶接著在下面的窗口中按標(biāo)號(hào)順序進(jìn)行如下選擇:圖2-2Emulator配置圖⑷在出現(xiàn)的窗口中按標(biāo)號(hào)順序進(jìn)行如下設(shè)置:圖2-3Emulator配置完成圖⑸在出現(xiàn)的窗口中按標(biāo)號(hào)順序進(jìn)行如下設(shè)置:圖2-4配置完成圖以上設(shè)置完成后,CCS已經(jīng)被設(shè)置成Emulator的方式<用仿真器連接硬件板卡的方式>,并且指定通過ICETEK-5100USB仿真器連接ICETEK-VC5509-A2.1.3語音編解碼芯片TLV320AIC23原理ICETEK-VC5509-A評(píng)估板上有一個(gè)語音編解碼芯片TLV320AIC23。TLV320AIC23內(nèi)置耳機(jī)輸出放大器,支持MIC和LINEIN兩種輸入方式〔二選一,且對(duì)輸入和輸出都具有可編程增益調(diào)節(jié)。AIC23的模數(shù)轉(zhuǎn)換〔ADCs和數(shù)模轉(zhuǎn)換〔DACs部件高度集成在芯片內(nèi)部,采用了先進(jìn)的Sigma-delta過采樣技術(shù),可以在8K到96K的頻率范圍內(nèi)提供16bit、20bit、24bit和32bit的采樣,ADC和DAC的輸出信噪比分別可以達(dá)到90dB和100dB。圖2-5TMS320VC5509與TLV320AIC23的連接示意圖系統(tǒng)中AIC23的主時(shí)鐘12MHz直接由外部的晶振提供。MODE接數(shù)字地,表示利用I2C控制接口對(duì)AIC23傳輸控制數(shù)據(jù)。CS接數(shù)字地,定義了I2C總線上AIC23的外設(shè)地址,通過將CS接到高電平或低電平,可以選擇AIC23作為從設(shè)備在I2C總線上的地址。SCLK和SDIN是AIC23控制端口的移位時(shí)鐘和配置數(shù)據(jù)輸入端,分別與VC5509的I2C模塊端口SCL和SDA相連。收發(fā)時(shí)鐘信號(hào)CLKX1和CLKR1由AIC23的串行數(shù)據(jù)輸入時(shí)鐘BCLK提供,并由AIC23的幀同步信號(hào)LRCIN、LRCOUT啟動(dòng)串口數(shù)據(jù)傳輸。DX0和DR0分別與AIC23的DIN和DOUT相連,從而完成VC5509與AIC23間的數(shù)字信號(hào)通信。2.1.4FIR濾波器原理對(duì)于一個(gè)FIR濾波器系統(tǒng),它的沖擊響應(yīng)總是又限長(zhǎng)的,其系統(tǒng)函數(shù)可記為:<2-a>其中N-1是FIR的濾波器的階數(shù),為延時(shí)結(jié),h<n>為端口信號(hào)函數(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的Start菜單中選擇Toolboxes->FilterDesign->FilterDesign&AnalysisTools<fdatool>,或者在命令行中輸入fdatool來啟動(dòng)濾波器設(shè)計(jì)分析器。啟動(dòng)成功后界面如圖所示。圖2-6fdatool界面圖在選項(xiàng)中選擇或輸入濾波器參數(shù),然后點(diǎn)擊"DesignFilter"按鈕,完成濾波器的設(shè)計(jì)。具體參數(shù)及設(shè)計(jì)成功后的結(jié)果如圖圖2-7濾波器圖從Matlab中導(dǎo)出FIR濾波器系數(shù)。在Fdatool中,選擇Targets->CodeComposerStudio<tm>IDE,在出現(xiàn)的對(duì)話框中選擇輸出文件類型為Cheaderfile,輸出系數(shù)類型為signed16-bitinteger,如圖所示。點(diǎn)擊Generate按鈕,選擇路徑,即可輸出前一步設(shè)計(jì)出的FIR濾波器的系數(shù)表。圖2-8系數(shù)生成圖2.1.5FIR濾波器的DSP實(shí)現(xiàn)FIR濾波器的輸出表達(dá)式為<2-d>式中為濾波器系數(shù)x<n>表示濾波器在n時(shí)刻的輸入y<n>為n時(shí)刻的輸出。它的基本算法是一種乘法-累加運(yùn)算即不斷地輸入樣本x<n>經(jīng)過延時(shí)后,再進(jìn)行乘法-累加,最后輸出濾波結(jié)果y<n>。該次設(shè)計(jì)中采用的是循環(huán)緩沖法設(shè)計(jì)FIR低通濾波器,循環(huán)緩沖區(qū)法的特點(diǎn)如下:<1>對(duì)于N級(jí)FIR濾波器在數(shù)據(jù)存儲(chǔ)器中開辟一個(gè)N單元的緩沖區(qū)滑窗用來存放最新的N個(gè)輸入樣本。<2>從最新樣本開始取數(shù)<3>讀完最后一個(gè)樣本最老樣本后,輸入最新樣本來代替最老樣本而其他數(shù)據(jù)位置不變。圖2-9FIR濾波器循環(huán)緩沖示意圖2.2軟件設(shè)計(jì)2.2.1系統(tǒng)分析通過麥克風(fēng)利用芯片AIC23進(jìn)行帶噪聲的語音信號(hào)采集,由于AIC本身自帶A/D轉(zhuǎn)化,采集得到的數(shù)據(jù)傳輸保存于MCBSP數(shù)據(jù)接收寄存器DDR。DSP對(duì)MCBSP中的數(shù)據(jù)進(jìn)行FIR濾波,并送給MCBSP中的數(shù)據(jù)發(fā)送寄存器DXR。DXR中數(shù)據(jù)回傳給AIC23,并利用它帶的D/A轉(zhuǎn)換進(jìn)行輸出,從而能聽到濾波后的信號(hào)。開始初始化語音緩沖區(qū)和工作變量開始初始化語音緩沖區(qū)和工作變量等待McBSP通道0傳送結(jié)束讀取語音數(shù)據(jù)保存于左聲道緩沖區(qū)調(diào)用fir2計(jì)算FIR濾波輸出濾波結(jié)果保存于右聲道緩沖區(qū)原聲音送左聲道,濾波后送右聲道輸出主程序流程圖:開始開始初始化:EMIF、CPU頻率、AIC23調(diào)用AIC23_Mixer子程序處理音頻數(shù)據(jù)輸入/輸出2.2.2實(shí)現(xiàn)代碼主程序://測(cè)試時(shí)音頻插孔J5接音源,J7接揚(yáng)聲器。#include"5509.h"#include"util.h"voidwait<unsignedintcycles>;voidEnableAPLL<>;externintfir<int*,int*,unsignedint,int>;voidmain<>{SDRAM_init<>;EnableAPLL<>;PLL_Init<40>;AIC23_Init<>;PLL_Init<120>;for<;;>{AIC23_Mixer<>;AIC2323_Mixer<>;}}voidwait<unsignedintcycles>{inti;for<i=0;i<cycles;i++>{}}voidEnableAPLL<>{/*EnusreDPLLisrunning*/*<ioportvolatileunsignedshort*>0x1f00=4;wait<25>;*<ioportvolatileunsignedshort*>0x1f00=0;//MULITPLY*<ioportvolatileunsignedshort*>0x1f00=0x3000;//COUNT*<ioportvolatileunsignedshort*>0x1f00|=0x4F8;wait<25>;//*<ioportvolatileunsignedshort*>0x1f00|=0x800//MODE*<ioportvolatileunsignedshort*>0x1f00|=2;wait<30000>;//APLLSelect*<ioportvolatileunsignedshort*>0x1e80=1;//DELAYwait<60000>;}子程序1:#defineAUTIODATALEFT0x0d000#defineAUTIODATARIGHT0x17000int*pAudioLeft,*pAudioRight;intwww=0;intleft,right;int*pLeft,*pRight;intlft,rgt;voidAIC23_Mixer<>{PC55XX_MCSPpMCBSP0=<PC55XX_MCSP>C55XX_MSP0_ADDR;int*pl,*pr,nAudioCount;inti; pAudioLeft=pl=<int*>AUTIODATALEFT; pAudioRight=pr=<int*>AUTIODATARIGHT; nAudioCount=0;for<i=0;i<NX;i++>x[i]=0;for<i=0;i<NH+2;i++>db[i]=0;while<1>{while<!ReadMask<pMCBSP0->spcr2,SPCR2_XRDY>>;//等待數(shù)據(jù)傳輸完成left=<*pl>=Read<pMCBSP0->ddr1>; //讀入左聲道數(shù)據(jù)right=Read<pMCBSP0->ddr2>; //讀入右聲道數(shù)據(jù) x[NX-1]=left/16;//防止濾波時(shí)數(shù)據(jù)溢出 r[NX-1]=lowpassfir<>; <*pr>=r[NX-1]; //數(shù)組r的最后一個(gè)單元為當(dāng)前輸出Write<pMCBSP0->dxr1,left>; //將原始數(shù)據(jù)送左聲道輸出Write<pMCBSP0->dxr2,r[NX-1]>; //將經(jīng)過濾波后的數(shù)據(jù)送右聲道輸出nAudioCount++;pl++;pr++; //循環(huán)使用緩沖區(qū)if<nAudioCount>=1024>{ nAudioCount=0; //breakpoint pl=pAudioLeft; pr=pAudioRight;}for<i=0;i<NX-1;i++> //重新調(diào)整輸入序列<供fir2使用>{ x[i]=x[i+1];}}}intlowpassfir<>{ inti,y_out=0; for<i=0;i<NX;i++> { y_out+=<x[NX-i]+h[i]>; } return<y_out>; }子程序2:voidAIC2323_Mixer<>{PC55XX_MCSPpMCBSP0=<PC55XX_MCSP>C55XX_MSP0_ADDR;int*pll,*prr,nCount,i;pLeft=pll=<int*>AUTIODATALEFT; pRight=prr=<int*>AUTIODATARIGHT; nCount=0; for<i=0;i<NX;i++>in[i]=0;for<i=0;i<NH+2;i++>db[i]=0;while<1>{while<!ReadMask<pMCBSP0->spcr2,SPCR2_XRDY>>;//等待數(shù)據(jù)傳輸完成lft=<*pll>=Read<pMCBSP0->ddr1>; //讀入左聲道數(shù)據(jù)rgt=Read<pMCBSP0->ddr2>; //讀入右聲道數(shù)據(jù) in[NX-1]=lft/16;//防止濾波時(shí)數(shù)據(jù)溢出fir2<in,h,out,db,NX,NH>; //調(diào)用濾波程序計(jì)算當(dāng)前輸出<*prr>=out[NX-1]; //數(shù)組r的最后一個(gè)單元為當(dāng)前輸出Write<pMCBSP0->dxr1,lft>; //將原始數(shù)據(jù)送左聲道輸出Write<pMCBSP0->dxr2,out[NX-1]>;//將經(jīng)過濾波后的數(shù)據(jù)送右聲道輸出nCount++;pll++;prr++; //循環(huán)使用緩沖區(qū)if<nCount>=1024>{ nCount=0; //breakpoint pll=pLeft; prr=pRight;}for<i=0;i<NX-1;i++> //重新調(diào)整輸入序列<供fir2使用>{ in[i]=in[i+1];}}}2.2.3仿真結(jié)果在View的Graph中單擊Time/frequency出現(xiàn)graphpropertydialog框。將顯示類型,圖形名稱,起始地址,抽樣點(diǎn)數(shù),數(shù)據(jù)類型等分別進(jìn)行設(shè)置,輸出各種波形。輸出濾波前的信號(hào)時(shí)域波形語音輸入波形圖:圖2-10語音輸入<時(shí)域>圖2-11語音輸入<頻域>圖2-12濾波語音輸出<時(shí)域>圖2-13濾波語音輸出<頻域>圖2-14濾波器<時(shí)域>圖2-15濾波器<頻域>圖2-16庫函數(shù)濾波語音輸出<時(shí)域>圖2-17庫函數(shù)濾波語音輸出<時(shí)域>圖2-18

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論