版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
/科信學(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日項目設(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的波形觀察窗口觀察輸入/輸出信號波形和頻譜變化情況。項目設(shè)計正文2.1硬件設(shè)計方案設(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濾波器各項指標進評價。2.1.2CCS開發(fā)環(huán)境配置CCS可以工作在純軟件仿真環(huán)境中,就是由軟件在PC機內(nèi)存中構(gòu)造一個虛擬的DSP環(huán)境,可以調(diào)試、運行程序。但一般軟件無法構(gòu)造DSP中的外設(shè),所以軟件仿真通常用于調(diào)試純軟件的算法和進行效率分析等,本次設(shè)計將使用硬件仿真<Emulator>。在使用軟件仿真方式工作時,無需連接板卡和仿真器等硬件。⑴雙擊桌面上圖標:進入CCS設(shè)置窗口。⑵在出現(xiàn)的窗口中按標號順序進行如下設(shè)置:圖2-1Emulator選項圖⑶接著在下面的窗口中按標號順序進行如下選擇:圖2-2Emulator配置圖⑷在出現(xiàn)的窗口中按標號順序進行如下設(shè)置:圖2-3Emulator配置完成圖⑸在出現(xiàn)的窗口中按標號順序進行如下設(shè)置:圖2-4配置完成圖以上設(shè)置完成后,CCS已經(jīng)被設(shè)置成Emulator的方式<用仿真器連接硬件板卡的方式>,并且指定通過ICETEK-5100USB仿真器連接ICETEK-VC5509-A2.1.3語音編解碼芯片TLV320AIC23原理ICETEK-VC5509-A評估板上有一個語音編解碼芯片TLV320AIC23。TLV320AIC23內(nèi)置耳機輸出放大器,支持MIC和LINEIN兩種輸入方式〔二選一,且對輸入和輸出都具有可編程增益調(diào)節(jié)。AIC23的模數(shù)轉(zhuǎn)換〔ADCs和數(shù)模轉(zhuǎn)換〔DACs部件高度集成在芯片內(nèi)部,采用了先進的Sigma-delta過采樣技術(shù),可以在8K到96K的頻率范圍內(nèi)提供16bit、20bit、24bit和32bit的采樣,ADC和DAC的輸出信噪比分別可以達到90dB和100dB。圖2-5TMS320VC5509與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的幀同步信號LRCIN、LRCOUT啟動串口數(shù)據(jù)傳輸。DX0和DR0分別與AIC23的DIN和DOUT相連,從而完成VC5509與AIC23間的數(shù)字信號通信。2.1.4FIR濾波器原理對于一個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的Start菜單中選擇Toolboxes->FilterDesign->FilterDesign&AnalysisTools<fdatool>,或者在命令行中輸入fdatool來啟動濾波器設(shè)計分析器。啟動成功后界面如圖所示。圖2-6fdatool界面圖在選項中選擇或輸入濾波器參數(shù),然后點擊"DesignFilter"按鈕,完成濾波器的設(shè)計。具體參數(shù)及設(shè)計成功后的結(jié)果如圖圖2-7濾波器圖從Matlab中導(dǎo)出FIR濾波器系數(shù)。在Fdatool中,選擇Targets->CodeComposerStudio<tm>IDE,在出現(xiàn)的對話框中選擇輸出文件類型為Cheaderfile,輸出系數(shù)類型為signed16-bitinteger,如圖所示。點擊Generate按鈕,選擇路徑,即可輸出前一步設(shè)計出的FIR濾波器的系數(shù)表。圖2-8系數(shù)生成圖2.1.5FIR濾波器的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ū)滑窗用來存放最新的N個輸入樣本。<2>從最新樣本開始取數(shù)<3>讀完最后一個樣本最老樣本后,輸入最新樣本來代替最老樣本而其他數(shù)據(jù)位置不變。圖2-9FIR濾波器循環(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ū)和工作變量開始初始化語音緩沖區(qū)和工作變量等待McBSP通道0傳送結(jié)束讀取語音數(shù)據(jù)保存于左聲道緩沖區(qū)調(diào)用fir2計算FIR濾波輸出濾波結(jié)果保存于右聲道緩沖區(qū)原聲音送左聲道,濾波后送右聲道輸出主程序流程圖:開始開始初始化:EMIF、CPU頻率、AIC23調(diào)用AIC23_Mixer子程序處理音頻數(shù)據(jù)輸入/輸出2.2.2實現(xiàn)代碼主程序://測試時音頻插孔J5接音源,J7接揚聲器。#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ù)據(jù)溢出 r[NX-1]=lowpassfir<>; <*pr>=r[NX-1]; //數(shù)組r的最后一個單元為當前輸出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ù)據(jù)溢出fir2<in,h,out,db,NX,NH>; //調(diào)用濾波程序計算當前輸出<*prr>=out[NX-1]; //數(shù)組r的最后一個單元為當前輸出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框。將顯示類型,圖形名稱,起始地址,抽樣點數(shù),數(shù)據(jù)類型等分別進行設(shè)置,輸出各種波形。輸出濾波前的信號時域波形語音輸入波形圖:圖2-10語音輸入<時域>圖2-11語音輸入<頻域>圖2-12濾波語音輸出<時域>圖2-13濾波語音輸出<頻域>圖2-14濾波器<時域>圖2-15濾波器<頻域>圖2-16庫函數(shù)濾波語音輸出<時域>圖2-17庫函數(shù)濾波語音輸出<時域>圖2-18
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 互聯(lián)網(wǎng)接入服務(wù)合同:聯(lián)通電信合作
- 中海地產(chǎn)銷售合同范本
- 人事代理委托合同書及細則
- 合伙人合同協(xié)議書范本
- 個人獨資企業(yè)股權(quán)轉(zhuǎn)讓合同范本
- 交通事故賠償協(xié)商合同協(xié)議
- 個人土地轉(zhuǎn)讓合同書模板
- 專利維權(quán)訴訟代理合同書格式
- 個人與銀行質(zhì)押合同樣本
- 業(yè)務(wù)經(jīng)理任職合同范本
- 蛋白質(zhì)自動測序儀
- 稅收流失論文-我國個人所得稅稅收流失問題及對策研究
- 長榮股份:投資性房地產(chǎn)公允價值評估報告
- 2022年菏澤醫(yī)學(xué)??茖W(xué)校單招綜合素質(zhì)試題及答案解析
- 銀行內(nèi)部舉報管理規(guī)定
- 平面幾何強化訓(xùn)練題集:初中分冊數(shù)學(xué)練習(xí)題
- 項目獎金分配獎勵制度和方案完整版
- 支氣管鏡試題
- 陰道鏡幻燈課件
- 現(xiàn)代漢語詞匯學(xué)精選課件
- PCB行業(yè)安全生產(chǎn)常見隱患及防范措施課件
評論
0/150
提交評論