版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、DSP課程設(shè)計實驗報告語音噪聲濾波院(系):電子信息工程學(xué)院小組成員:通信0707班 高礫琦07211201通信0708班 李淼07281156指導(dǎo)教師:高海林DSP設(shè)計實驗報告語音噪聲濾波通信0707班高礫琦通信0708班李淼目錄一、設(shè)計任務(wù) 3二、設(shè)計內(nèi)容 4三、設(shè)計思路5四、算法原理61、FIR濾波器算法62、直接存儲器訪問DMA 73、A/D和D/A轉(zhuǎn)換器 94、LMS 算法9五、主要函數(shù)介紹 14六、程序設(shè)計、調(diào)試 19七、實驗結(jié)果分析 371、低通濾波器的對比 372、語音自適應(yīng)濾波效果 49八、實驗心得與體會 5367亠、設(shè)計任務(wù)語音通信的目的是傳遞聲音信息。位于甲地的通信者發(fā)出
2、的聲音經(jīng)語音傳感 器變換成為電信號,經(jīng)發(fā)送端設(shè)備變換為適合傳輸?shù)男问剑?通過傳輸信道傳輸?shù)?乙地。在乙地經(jīng)接收端設(shè)備恢復(fù)出原來的語音信號, 經(jīng)耳機或者喇叭轉(zhuǎn)換為接收 者可以聽到的聲音信號。這就是最基本的語音通信系統(tǒng),但是由于周圍環(huán)境的原 因,我們采集到語音信號經(jīng)常含有不同程度的噪聲。典型語音通信系統(tǒng)中的噪聲來自三個方面: 信號處理設(shè)備產(chǎn)生的電噪聲及 傳輸信道中的電噪聲; 信號發(fā)送端空間環(huán)境中的音頻噪聲信號經(jīng)麥克風(fēng)變換 為電信號之后,與有用信號其同傳遞到接收端;信號接收端空間環(huán)境中的音頻 噪聲對信號接收者的影響。噪聲是由于發(fā)生體作無規(guī)則振動產(chǎn)生的。在很多情況下,環(huán)境中的背景噪聲是通信系統(tǒng)中噪聲干
3、擾的主要來源。當(dāng)語音信號受到背景噪聲干擾時語音通信質(zhì)量變得不可接受,因此要對語音信號中的噪聲濾除。DS利用直接存儲器訪問方式DMA( Direct MemoryAccess)采集數(shù)據(jù) 時不打擾CPU因此利用DM方式工作時,CP可以對語音信號進行實時地濾波。 本設(shè)計要求利用DSP勺DM方式進行信號采集和信號輸出,對語音信號進行數(shù)字編 碼,濾波后進行解碼。自適應(yīng)濾波不僅能夠選擇信號,而且能夠控制信號的特性。自適應(yīng)濾波器具 有跟蹤信號和噪聲變化的能力,它的系數(shù)能夠被一種自適應(yīng)算法所修改。利用DSP 可以實時地對信號進行自適應(yīng)濾波。DSP用直接存儲器訪問方式DM采集數(shù)據(jù)時 不打擾CPU因此CP可以對信
4、號進行實時地濾波。本設(shè)計要求利用DSP勺DM方式 進行信號采集和信號輸出,同時對外部輸入的信號進行數(shù)字濾波。這就是這次設(shè)計所要完成的任務(wù)。二、設(shè)計內(nèi)容基本部分:(1)對DM進行初始化;(2)對A/D、D/A進行初始化;(3)編寫DM中斷服務(wù)程序和濾波算法程序,實現(xiàn)語音信號的實時濾波;(4)設(shè)計FFT算法,或調(diào)用DSPLIB中的FFT函數(shù),實現(xiàn)對信號的頻譜分析;(5)設(shè)計子自適應(yīng)濾波算法,調(diào)用DSPLIB的自適應(yīng)函數(shù),實現(xiàn)對信號的 自適應(yīng)濾波。發(fā)揮部分:1)利用自適應(yīng)濾波實現(xiàn)語音信號的回波對消。2)比較加不同窗和階數(shù)時濾波器的濾波效果;3)測試所設(shè)計濾波器的幅頻特性和相頻特性,并與MATLIBF
5、的設(shè)計結(jié)果進行比較。要求完成的任務(wù)(1)編寫C語言程序,并在CCSM成開發(fā)環(huán)境下調(diào)試通過;(2)將包含噪聲的語音信號進行濾波,從揚聲器輸出端口輸出,比較濾波 前后的信號的變化;(3)按要求撰寫設(shè)計報告。三、設(shè)計思路首先利用DS的DM方式對外部含噪聲的語音信號進行實時采集, 語音信號先 經(jīng)過A/D轉(zhuǎn)換為數(shù)字信號,利用MCBS的接收寄存器接收數(shù)據(jù)。編寫濾波算法程序, 而且調(diào)用DSPLIB勺Ims中的濾波函數(shù),對信號進行濾波。濾波后的數(shù)據(jù)利用 DM方 式送到D/A轉(zhuǎn)換器轉(zhuǎn)換為模擬信號。這就是我們的設(shè)計思路。具體的設(shè)計方案原理圖如下。模擬輸入信號通過 DSK勺MIC端口輸入,經(jīng)A/D 轉(zhuǎn)換,然后到達(dá)D
6、S的DM通道2, DS接收到信號后,調(diào)用中斷服務(wù)程序進行濾波, 選擇濾波模式進行不同種類的濾波,濾波后的信號可以在 CC上顯示,也可以通 過DM通道3將信號輸出到D/A轉(zhuǎn)換器,經(jīng)D/A轉(zhuǎn)換后從SPEAKER口輸出。主程序中斷服務(wù)程序四、算法原理1、FIR濾波器算法FIR濾波器是指系統(tǒng)的單位脈沖響應(yīng)hk僅在有限范圍內(nèi)有非零值的濾波 器。在本設(shè)計實驗中,濾波占有十分重要的地位。數(shù)字濾波是數(shù)字信號處理的基 本方法。在許多信息處理過程中,如對信號的過濾、檢測、預(yù)測等,都要廣泛地 用到濾波器,而數(shù)字濾波器則因其設(shè)計靈活、 實現(xiàn)方便等特點而廣為接受。 所謂 數(shù)字濾波器就是具有某種選擇性的器件、網(wǎng)絡(luò)或以計算
7、機硬件支持的計算程序。 其功能本質(zhì)是按事先設(shè)計好的程序,將一組輸人的數(shù)字序列通過一定的運算后轉(zhuǎn) 變?yōu)榱硪唤M輸出的數(shù)字序列,從而改變信號的形式和內(nèi)容,達(dá)到對信號加工或濾 波以符合技術(shù)指標(biāo)的要求。數(shù)字濾波器是語音、圖象處理、模式識別以及譜分析中的重要的處理運算環(huán) 節(jié)。DSP由于其本身具有并行的硬件乘法器、流水結(jié)構(gòu)以及快速的片內(nèi)存儲器等 資源,其技術(shù)已廣泛地應(yīng)用于噪聲及振動的各個領(lǐng)域。因此用DS芯片實現(xiàn)FIR數(shù)字濾波,除具有準(zhǔn)確度高、不受環(huán)境影響等優(yōu)點外,由于DS芯片具有可編程特性,程序的可移植性好,靈活性強。實際應(yīng)用時只需按要求修改濾波器參數(shù), 并對程序作較少的改動,即可實現(xiàn)不同截止頻率的FIR濾
8、波器,實用性較強。下面簡單介紹一下數(shù)字濾波器的基本原理。數(shù)字濾波器原理一般具有如下差分方程:y(n)= EakX(n- k)+ Eb ky(n-k)(1)式中x(n)為輸人序列,y(n)為輸出序列,ak和bk為濾波器系數(shù),,N是濾波器 階數(shù)。當(dāng)所有的bk均為零,則有y(n)= Ea kx( n-k)(2)(2)式是FIR濾波器的差分方程,其一般形式為y(n)=刀 h(k)x(n -k)(3)對(3)式進行z變換,整理后可得FIR濾波器的傳遞函數(shù):kH(Z)=刀 h(k) z-(4)FIR數(shù)字濾波器的設(shè)計方法主要有窗函數(shù)法和頻率抽樣設(shè)計法,其中窗函數(shù) 法是基本而有效的設(shè)計方法。下面為FIR濾波器
9、的算法實現(xiàn)方法。FIR濾波為有限沖擊響應(yīng)濾波,其濾波結(jié)構(gòu)是一個分節(jié)的延時線,每節(jié)的輸 出加權(quán)累加,得到濾波器的輸出。由前面的分析知,F(xiàn)IR濾波器數(shù)學(xué)上可表示為:y(n)=刀 h(k)x(n -k)(5)式(5)中xn為最近(t=nT)的輸人信號,xn-k是延時了 k個取樣周期的 輸人信號,hk是第k個延時節(jié)的加權(quán)值(即濾波器系數(shù)),可由MATLA設(shè)計出來, yn是時刻t=nT時濾波器的輸出信號,N是濾波器的階數(shù)也稱濾波器的抽頭數(shù), 為實整數(shù),且須滿足NX t1/fs,其中fs為采樣頻率,tmac為每個抽頭數(shù)乘加運 算的時間,從這個式子和結(jié)構(gòu)可以看出,為什么稱之為有限沖激響應(yīng)濾波器。因為該濾波器
10、的沖激響應(yīng)在N個周期后變?yōu)?也就是每次乘加運算都要用到之前NT 數(shù)。濾波器系數(shù)可通過MATLA設(shè)計得到,若采用海明窗設(shè)計的FIR濾波器是一個 32階的低通濾波器,截止頻率為150Hz.由“ MATLA設(shè)計FIR濾波器”可得h(n), 這樣設(shè)計的濾波系數(shù)再經(jīng)過量化即得。本次設(shè)計實驗中,F(xiàn)IR濾波器可以通過編寫濾波算法程序,或調(diào)用 DSPLI沖 的濾波函數(shù)來實現(xiàn)。但一般調(diào)用 DSPLI沖的濾波函數(shù)不能夠達(dá)到很好的濾波效 果,所以我們采用編寫濾波算法程序來實現(xiàn)FIR濾波器。2、直接存儲器訪問 DMA直接存儲器訪問(Direct MemoryAccess)是C54x DS非常重要的片上外設(shè), DM控制
11、器可以在不影響CPU勺情況下完成數(shù)據(jù)的傳輸,因此數(shù)據(jù)傳輸速度快,在 要求信號實時采集和處理的系統(tǒng)中常采用 DM方式進行信號采集和傳輸。C5402 有6個可獨立編程的DM通道,每個DM通道受各自的5個16位寄存器控制:源地址 寄存器DMSR、目的地址寄存器DMDST單元計數(shù)寄存器DMCTR同步事件和計數(shù) 寄存器DMSFC發(fā)送模式控制寄存器DMMCR目的地址寄存器DMDST定DM要傳送 數(shù)據(jù)目的地址和首地址。單元計數(shù)寄存器 DMCTR定DM傳送數(shù)據(jù)的個數(shù)為DMCTR 寄存器的值加1。同步事件和楨計數(shù)寄存器DMSF規(guī)定DM傳送數(shù)據(jù)的同步事件類 型和傳送一塊數(shù)據(jù)所含楨信號的個數(shù)。 發(fā)送模式控制寄存器D
12、MMCR定DM通道的 傳輸模式,當(dāng)DM工作在自動初始化模式時,CPUfe一個DM事件完成后自動裝載 下一個DM初始化設(shè)置并繼續(xù)進行數(shù)據(jù)傳送。DINM位和IMO位設(shè)置DM中斷產(chǎn)生方 式。CTMO位設(shè)置發(fā)送計數(shù)模式控制,CTMO位為0時,DM工作在多楨模式,CTMOD 位為1時,DM工作在自動緩沖ABU模式。SIND位和DIND位用來設(shè)置源地址和目的 地址的自動調(diào)整方式。此外,DM的 6個通道還受通道優(yōu)先級和使能控制寄存器 DMPRE控制。本實驗利用DM通道2與 MCBSPI道結(jié)合來讀取A/D轉(zhuǎn)換器的數(shù)據(jù),利用DM通 道3與MCBSPI道結(jié)合來將處理后的數(shù)據(jù)發(fā)送至 D/A轉(zhuǎn)換器。選擇MCBSP1道
13、的接 收寄存器DRR11(41H)為DM傳送數(shù)據(jù)的首地址,并選擇DM源地址工作在不調(diào)整 方式,選擇MCBSP接收事件為DM同步事件,以實現(xiàn)DM和MCBS的結(jié)合。A/D轉(zhuǎn)換 器的數(shù)據(jù)按MCBSP的設(shè)置被傳送到DS內(nèi)部接收寄存器DRR1 中,再由DM通道2 將DRR1中的數(shù)據(jù)讀到指定數(shù)據(jù)存儲區(qū)inp_buffer中完成數(shù)據(jù)采集。DM在傳送外 部來的數(shù)據(jù)時不會影響CPU勺正常運行,當(dāng)DM通道2采集完一組數(shù)據(jù)后產(chǎn)生一個 DM中斷事件中斷CPU來通知CPU寸其進行相應(yīng)的處理,此時DM通道2可以按照 設(shè)定繼續(xù)采集下一組數(shù)據(jù),實現(xiàn)了數(shù)據(jù)采集與 CPI處理的并行操作。當(dāng)一組數(shù)據(jù)處理完成后,將數(shù)據(jù)存放在數(shù)據(jù)存儲
14、區(qū) out_buffer中,選擇 out_buffer為DM通道3的首地址,并選擇源工作地址工作在不調(diào)整方式。選擇 MCBSPI道的發(fā)送積存器DXR11(43H)為DM通道3傳送數(shù)據(jù)的目的地址,并選擇 DM源地址工作在不調(diào)整方式,選擇 MCBSP接收事件為DM同步事件,以實現(xiàn)DMA 和MCBS的結(jié)合。在CC集成開發(fā)環(huán)境中,與 DM相關(guān)的頭文件有regs54xx.h和dma54xx.h。在 這兩個頭文件中,定義了 DM的寄存器資源、使用方法和DM寄存器的地址和基本 訪問方式,以及寄存器的各個比特域和訪問方法,因此需要進行 C源程序的開始 處包含這兩個頭文件。輸入信號經(jīng) A/D轉(zhuǎn)換后,利用DM通道
15、2進行傳輸進入DSP 處理,而濾波后的信號輸出利用了 DM通道3進行傳輸進入D/A轉(zhuǎn)換器等輸出,因 此需要對DM通道2和通道3進行初始化配置。3、A/D和D/A轉(zhuǎn)換器本實驗要用到A/D和 D/A轉(zhuǎn)換器。A/D轉(zhuǎn)換器能夠?qū)⒔邮盏恼Z音信號(模擬信 號)轉(zhuǎn)化為數(shù)字信號,供CP!進行處理;D/A轉(zhuǎn)換器能夠?qū)?shù)字信號轉(zhuǎn)換為語音信 號送SPEAKER 口輸出。要使用A/D和 D/A轉(zhuǎn)換器,必須首先對A/D和 D/A轉(zhuǎn)換器進行初始化設(shè)置,即設(shè) 置A/D轉(zhuǎn)換器的工作模式(15+1bit模式,16bit模式)、輸入增益(0dB,6Db,12dB) 以及抽樣頻率(8000Hz,16000HZ等。4、LMS算法最小
16、均方(LMS,least-mean-square) 算法,是由 Widrow和Hof在 1960年創(chuàng)建的,直到現(xiàn)在它還是應(yīng)用最廣泛的自適應(yīng)濾波算法丄MS算法是隨機梯度算法族中的一員。該算法在隨機輸入維納濾波器遞推計算中使用確定性梯度。LMSf法的一個顯著特點就是它的簡單性。此外,它不需要計算有關(guān)的相關(guān)函數(shù),也不需要 矩陣求逆運算。事實上,正是因為LM算法的簡單性,使得它成為其他自適應(yīng)濾 波算法的參照標(biāo)準(zhǔn)。這兩個過程一起工作組成一個反饋環(huán),如圖 3所示。首先有一個橫向濾波器 (圍繞它構(gòu)造LMSf法);該部件的作用在于完成濾波過程。其次,有一個對橫向濾 波器抽頭權(quán)值進行自適應(yīng)控制過程的算法。橫向濾
17、波器各部分的細(xì)節(jié)如圖4所示。抽頭輸入u(k),u(k-1),u(k-M+1)為MX抽頭輸入向量a(k)元素,其中M+是延遲單元的個數(shù);這些輸入張成一個多維空間。相應(yīng)的ho(k), hi(k), . ,hm-1(k)為Mxl抽頭權(quán)向量h(k)的元素。通過LMSf法計算這個向量所得的值表示一個 估計,當(dāng)?shù)螖?shù)趨于無窮時,該估計的期望值可能接近維納最優(yōu)解在濾波 過程中,期望響應(yīng)d(k)與抽頭輸入向量z(k) 一道參與處理。在這種情況下,給定一個輸入,橫向濾波器產(chǎn)生一個輸入,橫向濾波器產(chǎn)生一個輸出y(k)作為期望響應(yīng) d(k)的估計。因此,我們可把估計誤差e(k)定義為期望響應(yīng)與實際濾波器輸出之 差
18、,如圖4所示。估計誤差e(k)與抽頭輸入向量z(k)都被加到自適應(yīng)部分,因此 圍繞抽頭權(quán)值的反饋環(huán)是閉環(huán)的圖3.自通應(yīng)橫向灘波器框圈圖4.橫向渡波器結(jié)構(gòu)框圖回聲消除器的基本原理:聲學(xué)回聲消除的功能原理框圖如圖5所示:e(n)圖5.回聲消除器原理框圖回聲消除的基本原理可以概括如下:自適應(yīng)地合成回聲,并從有回聲干擾地信號中減去該合成回聲圖6.回聲消除器的基本原理圖一般回聲消除算法通過自適應(yīng)濾波來完成,其基本原理如圖6所示。其中,遠(yuǎn)端信號城x (k)通過回聲信道h產(chǎn)生回聲y(k),近端信號d(k)是由回聲y(k)和近 端聲音代句(可包含噪聲信號)得到。通過使用M抽頭的FIR自適應(yīng)濾波器h來模 擬回聲
19、信道h,可以使所得y(k)通近回聲信號,進而達(dá)到回聲消除的目的由此可A見,回聲消除的關(guān)鍵是自適應(yīng)地調(diào)整 h使其通近h,可通過現(xiàn)有的各種自適應(yīng)濾 波算法實現(xiàn)。這個實驗采用的LMS算法,即最小均方誤差算法設(shè)計的自適應(yīng)濾波器進行未 知系統(tǒng)識別,以將回聲信號濾除。該自適應(yīng)濾波器是FIR橫向濾波器,可以根據(jù) 輸出自動修改濾波器的權(quán)系數(shù),從而逼近未知系統(tǒng)回聲通道。算法的實現(xiàn)基于 TMS320C5402DS芯片和CCS系統(tǒng)的C語言。遠(yuǎn)端的信號通過回聲通道產(chǎn)生回聲信號 d(n),該信號一般為遠(yuǎn)端信號的衰減和延遲。遠(yuǎn)端信號通過自適應(yīng)濾波器產(chǎn)生回聲預(yù)測信號y(n)。在k時刻,它們之差為剩余回聲信號:q = dk
20、- yk用它來控制LMS自適應(yīng)濾波器的系數(shù)s (n)3(n 1) = s(n)2A q in(n)其中卩為自適應(yīng)步長因子,一般取0:卩叮,可視為常數(shù),k時刻濾波器的輸 出為:N -1y(n)= w(n) in(n _ i)i =0以上三個方程是LMS!小均方誤差算法的核心方程,也是 C語言編程的依據(jù)。LMS 的算法流程圖如下:開始送入信號dkdk的值送入in ( n)求回聲預(yù)測信號ykN丄y(n) =、 w(n) “ in(n i)i_Q求剩余的求自適應(yīng)步長ux ek更新濾波器系數(shù)Un 1)=w(n) 2金 in(n)結(jié)束圖7.LMS算法流程圖五、主要函數(shù)介紹自適應(yīng)濾波算法:利用LMS勺算法實
21、現(xiàn)對已疊加噪聲的信號進行濾波,由C語言實現(xiàn)LMSI法的 C語言程序如下所示:double Ims (double w,double x,double dk,double ek) /移植到CCS中的lms算法s16 i;double uek,yk;yk=0;for(i=0;iN;+i)yk=yk+wi*xi;ek=dk-yk;uek=2*mu*ek;for(i=0;iN;i+)wi=wi+uek*xi;return(ek);然而算法的效率與濾波器的長度有關(guān),因此應(yīng)當(dāng)適當(dāng)減小濾波器的長度;同時也應(yīng)該適當(dāng)?shù)奶岣逨IR濾波器的階數(shù)。同時替換原有的LM算法的C語言實現(xiàn) 程序,更換為CCS勺diplib
22、庫中的函數(shù)short dlms(PARAM取代自定的lms()函數(shù), 同時用dsplib庫里的函數(shù)short fir(PARAM)產(chǎn)生回聲通道的輸出信號(也就是用 預(yù)定階數(shù)的FIR濾波器模擬回聲通道),該輸出信號作為自適應(yīng)濾波器的理想輸出 信號,對之進行逼近進而得到預(yù)定結(jié)果。Dsplib庫中的dlsm函數(shù)和fir函數(shù)的子程序:Dlsm.h 的程序如下,路徑:C:tic5400dsplibEXAMPLESDLMS*/ File name:dlms_t.c/ Versio n: 0.01/ Description: test for dlms routine*#in elude #i nclude
23、 #in elude #i nclude test.hshort i;short eflagr= PASS;short eflagh= PASS;void ma in (void)(opti on al) buffer/* clear */for (i=0;iNH;i+) hi =0;/ clear coeff bufferfor (i=0;iNX;i+) ri =0;/ clear output(opti on al)for (i=0; iNH; i+) dbufferi = 0; / clear delay buffer (a must)/* compute */dlms(x,h,r,&d
24、p,des,STEP, NH, NX);/* test */eflagr = test(r, rtest, NX, MAXERROR);/ for reflagh = test(h, htest, NH, MAXERROR);/ for hif (eflagr != PASS)exit(-1);if (eflagh != PASS)exit(-1);return;FIR.h 的程序如下,路徑:C:tic5400dsplibEXAMPLESFIR*/ File name:fir t.c/ Versio n: 0.01/ Description: test for fir routine*#in
25、elude #in elude #in elude #i nclude test.hshort i;short eflag 仁 PASS; short eflag2= PASS;DATA *dbptr = & db0;void ma in (void)/* 1. Test for sin gle-buffer */ /* clear */for (i=0; iNX; i+) ri = 0;/ clear output buffer(opti on al)for (i=0; iNH; i+) dbi = 0; / clear delay buffer (a must)/* compute */
26、fir(x, h, r, &dbptr, NH, NX);/* test */eflagl = test (r, rtest, NX, MAXERROR);/* 2. Tests for dual-buffer */* clear */for (i=0; iNX; i+) ri = 0;/ clear output buffer(opti on al)for (i=0; i=4)fir(x, h, r, &dbptr, NH, NX/4);fir(&xNX/4, h, & rNX/4, &dbptr, NH, NX/4);fir(&x2*NX/4, h, & r2*NX/4, &dbptr,
27、NH, NX/4); fir(&x3*NX/4, h, & r3*NX/4, &dbptr, NH, NX/4); /* test */eflag2 = test (r, rtest, NX, MAXERROR);if (eflag1 != PASS)exit(-1);if (eflag2 != PASS)exit(-2);return;這兩個函數(shù)是用C5000匯編語言編寫的,具有很高的執(zhí)行效率,使用這個函 數(shù)可以大大提高運算速度,以解決用C語言編寫的程序效率不能滿足要求的問題。 下面以dlsm.h為例,其使用方法如下:short oflag = dlms (DATA *x, DATA *h,
28、 DATA *r, DATA *d, DATA *des,DATA step, ushort nh, ushort nx)上述語句是在Dsplib.h中可以找到其路徑為:C:tic5400dsplibIn clude下面參看其C子函數(shù)定義的各個變量的意義:oflag溢出錯誤標(biāo)志,=1時在計算過程中發(fā)生了數(shù)據(jù)溢出;=0時無數(shù)據(jù)溢出。x輸入信號數(shù)組h自適應(yīng)濾波器系數(shù)矢量r輸出數(shù)組d延遲緩沖區(qū),用來存放上一時刻的輸出數(shù)據(jù)des理想輸出信號數(shù)組step 2*卩,卩為自適應(yīng)濾波器的自適應(yīng)步長因子,一般取0卩1,可視為常數(shù)。但為了適應(yīng)DS定點數(shù)的運算一般取STE為327nx向量x中的個數(shù)nh系數(shù)的個數(shù)注意
29、:h和d的存儲地址要求起點必須位于Kbit邊界處,即起始地址值的最 低有效位必須是0,必須在CM文件中開辟對齊1K邊界的空間,并且只能在頭文件 中進行段的配置。否則編譯無法通過。同理,F(xiàn)IR.h的使用方法如下:oflag = short fir (DATA *x, DATA*h, DATA*r, DATA*dbuffer, ushort n h,ushort nx)oflag 溢出錯誤標(biāo)志,=1時在計算過程中發(fā)生了數(shù)據(jù)溢出;=0時無數(shù)據(jù) 溢出。x輸入信號數(shù)組h FIR濾波器的系數(shù)矢量,也是要逼近的對象r輸出數(shù)組d延遲緩沖區(qū),用來存放上一時刻的輸出數(shù)據(jù)nx向量x中的個數(shù)nh系數(shù)的個數(shù)注意:h、d
30、的地址要求同dlms()函數(shù)中的h、d參數(shù)。DATA為tms320.h中定 義的short整型。為了降低計算量,輸入緩沖數(shù)組長度應(yīng)該盡量小,取長度為LENGTH_IN=5采用數(shù)據(jù)壓入方式,將最新的聲音采樣值存入數(shù)組x0,然后將存儲的數(shù)據(jù)從低 位壓入高位。其實現(xiàn)程序 update(DATA x,DATA dk)如下:void update(DATA x,DATA dk) /dk 為當(dāng)前采樣值 s16 j,k;for(j=1;jLENGTH_IN;+j) k=LENGTH_IN-j; xk=xk-1;x0=dk;/從低位壓向高位當(dāng)前采樣值存入最低位六、程序設(shè)計、調(diào)試首先設(shè)計FIR濾波器。FIR濾波
31、器的算法可以由MATLAB設(shè)計打開MATLAB在命令窗中輸入FDAtool,打開濾波器設(shè)計與分析工具。因為 語音信號的頻率成分主要分布在 300Hz到3400Hz,所以我們只要設(shè)計300Hz到 3400Hz的帶通FIR濾波器就可以實現(xiàn)對語音信號中摻雜的噪聲的濾除。在FDA中選擇帶通FIR濾波器,階數(shù)選擇15,抽樣頻率選擇16kHz,阻帶截頻分別為 0.25 kHz和3.45 kHz,通帶截頻分別為0.3 kHz和3.4 kHz。就可以設(shè)計所要 的濾波器了。濾波器的波形如下圖所示。De$iq仃mq Filter. Dons#i nclude tmwtypes.h/* Expected path
32、to tmwtypes.h* C:MATLAB6p5externi ncludetmwtypes.h*/const int BL = 16;con st real64_T B16 = -1737,-22,494, -1762, -4117, -2011, 5080, 11684,11684,5080, -2011, -4117, -1762,494,-22, -1737;設(shè)計好濾波器后,還要進行對 A/D和D/A以及DM的初始化,并編寫主程序和 中斷服務(wù)程序,以及控制調(diào)用中斷時程序流向的中斷向量表, 詳細(xì)內(nèi)容請見程序 清單。由于DSK540板上存儲器分配方式基本相同,所以.cmd文件可以采用其
33、他 程序中的.cmd文件。實驗中用到的源程序:1.主程序(firlab.c )/*/*/*/*/*/*/#in clude #in clude #in clude #in elude #in elude vfirlab.h#inelude #in elude void delay(s16 period);exter n void DMAC2ISR();#defi ne SS 16/*/*全局變量*/*/HANDLE hHan dset;un sig ned int dmsefc,dmmcr,dmctr,src_addr,dst_addr;intun sig neddmpre,dmsrcp,dm
34、dstp,dmidx0,dmidx1,dmfri0,dmfri1,dmgsa,dmgda,dmgcr,dmg fr;/*存放輸入數(shù)據(jù)*/#pragma DATA_SECTION(i np_buffer,audio_buffer);int in p_buffer0x200;/*存放輸出數(shù)據(jù)*/#pragma DATA_SECTION(out_buffer,outt_buffer);in t out_buffer0x200;in t out1_buffer0x200;/*存放濾波器系數(shù)*/#pragma DATA_SECTION(coeffs,coefficie nts);/*低通濾波器*/DAT
35、A coeffs16= 0, -113,419, -878, 1031,0, -3731,19656, 19656,-3731,0, 1031, -878,419, -113,0;/*高通濾波器*/*這里COEFF勺數(shù)據(jù)類型曾經(jīng)是int*/*帶通濾波器*/*帶阻濾波器*/*全通濾波器*/*存放延遲數(shù)據(jù)*/#pragma DATA_SECTION(delaybuff,delayb);int delaybuff16=0;int frame=0;int flag=0;int temp;int currbuff=0;int choose=1;int *delayptr1= &(delaybuff0);
36、in terrupt void DMAC2ISR();DATA ySS;double p,q,temp1;u16 fSS/2+1;int iii,mm;/*/* MAIN*/void mai n()s16 cn t=2;BSCR=0x8806;XPC=0;PMST=0xA0;brd_set_cpu_freq(100);TIMER_HALT(0);brd_set_wait_states(7,7,9);TIMER_RESET(0);IMR=0;FFT*/cbrev(coeffs,y,SS/2);rfft(y,SS,0);求信號的幅度譜f0=abs(y0);fSS/2=abs(y1);mm=1;fo
37、r(iii=2;iiiSS;iii=iii+2)P=yiii;q=yiii+1;temp1=sqrt(p*p+q*q);/fmm=temp1;取幅度譜mm+;*/*/*/if(brdn it_bios()return;while (cn t-)brd_l ed_toggle(BRD_LED0);delay(1000);brd_l ed_toggle(BRD_LED1);delay(1000);brd_l ed_toggle(BRD_LED2);delay(1000);hHa ndset=codec_ope n(HANDSET_CODEC);/*設(shè)置codec參數(shù)*/codec_dac_mode
38、(hHa ndset,CODEC_DAC_15BIT);codec_adc_mode(hHa ndset,CODEC_ADC_15BIT);codec_ain_gai n(hHa ndset,CODEC_AIN_6dB);codec_aout_gai n(hHa ndset,CODEC_AOUT_MINUS_6dB);codec_sample_rate(hHa ndset,SR_16000);INTR_CLR_FLAG(DMAC2);dma_reset_all();/*初始化DMA通道*/dmsefc=(DSYNC_REVT112);dmmcr=(AUTOINIT_ENABLEvv15)|(D
39、INM_ENABLEvv14)|(IMOD_HALFBLOCKv13)|(CTMOD_DEC12)|(INDEXMODE_NOMODv8)|(SPACE_DATAvv6)|(INDEXMODE _IN C2)|(SPACE_DATA);dmmcr=0xe045;dmctr= 0xFF;src_addr=DRR1_ADDR(HANDSET_CODEC);dst_addr= (un sig ned in t)&in p_buffer;dma_i nit(DMA_CH2,dmsefc,dmmcr,dmctr,SPACE_DATA,src_addr,SPACE_DATA,dst_addr);DMA_F
40、RAMECOUNT(DMA_CH2,1);dmgsa=src_addr;dmgda=dst_addr;dmgcr=0xFF;dmgfr=1;dmpre=(HIGH_PRIORITYvv10)|(INTSEL_01v6);dmsrcp=SPACE_DATA;dmdstp=SPACE_DATA;dmidx0=0;dmidx 仁0;dmfri0=0;dmfri 1=0;dma_global_i nit(dmpre,dmsrcp,dmdstp,dmidx0,dmidx1,dmfri0,dmfri1,dmgsa,dmgda,dmgcr,dmgfr);DMA_ENABLE(DMA_CH2);temp=*(
41、volatile u16*)DRR1_ADDR(HANDSET_CODEC);INTR_ENABLE(DMAC2);INTR_GLOBAL_ENABLE;for(;);void delay(s16 period) int i,j;for(i=0;iperiod;i+) for (j=0;jperiod;j+);2.中斷服務(wù)程序(dma2isr.c ) #in clude#in clude#i nclude#i ncludeexter n void delay(s16 period); exter n un sig ned int cha nn el;exter n un sig ned int
42、 dmsefc; exter n un sig ned int dmmcr;exter n un sig ned int dmctr;exter n un sig ned int src_page; exter n un sig ned int src_addr;exter n un sig ned int dst_page; exter n un sig ned int dst_addr; extern int in p_buffer0x200; extern in t out_buffer0x200;exter n int coeffs16;extern int delaybuff16;e
43、xtern int frame;exter n int flag;extern int currbuff;extern int *delayptr1;exter n int L=0;exter n int choose;extern in t out1_buffer0x200;void ini t_dma3(void) while(DMPREC&0x0008);dmsefc=(DSYNC_REVT1 PRAM PAGE 0.text PRAM PAGE 0.vectors VEC2 PAGE 0.vecs VEC1 PAGE 0.stack STACK PAGE 1.trap SCRATCH
44、PAGE 1.bss EXRAM PAGE 1.cio EXRAM PAGE 1.fifo EXRAM PAGE 1.si ntab EXRAM PAGE 1audio_buffer DMARAM PAGE 1outt_buffer DMARAM PAGE 1.const EXRAM PAGE 1coefficie nts EXRAM ,alig n (512)delayb EXRAM ,alig n (512)4.中斷向量表c5402vec.asm*(C) Copyright Texas In strume nts, I nc. 2000*MODULENAME:C5402VEC.ASMAUT
45、HOR: C5000 Applicati onsDESCRIPTION: TMS320VC5402nterruptVector initializationtableNOTE:If DSP/BIOS used you will have to i nitialize in terruptvector table using the BIOS configuration toolDATE: 02/00*.title 54xDSKPLUS Vector Table Initialization.ref _c_in t00, _DMAC2ISR.sect .vecs;RESET vector;NMIRESET: BD _c_in t00NOPNOPNMI: BD NMINOPNOP* S/W In terrupts*SINT17 BD SINT17NOPNOPSINT18 BD SINT18
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年設(shè)備租賃標(biāo)準(zhǔn)協(xié)議及擔(dān)保條款版
- 2024年度機械設(shè)備貨物運輸委托合同示范文本3篇
- 2024年度智能交通行業(yè)學(xué)徒員工培養(yǎng)協(xié)議3篇
- 2024年某科技公司與某城市關(guān)于智慧環(huán)保監(jiān)測的合同
- 核子儀表在核設(shè)施輻射環(huán)境監(jiān)測網(wǎng)絡(luò)建設(shè)中的應(yīng)用考核試卷
- 2024年度體育賽事特邀表演演員聘用合同3篇
- 畜牧養(yǎng)殖廢棄物資源化利用政策支持考核試卷
- 療養(yǎng)院護理質(zhì)量管理工具應(yīng)用考核試卷
- 煤氣化技術(shù)對能源結(jié)構(gòu)的影響考核試卷
- 電子智能家居智能照明控制系統(tǒng)銷售考核試卷
- 眼科手術(shù)圍手術(shù)期的護理
- 人事行政主管打造高效團隊提升員工滿意度實現(xiàn)人力資源的優(yōu)化管理和企業(yè)文化的建設(shè)
- 《腰椎穿刺術(shù)》課件
- 拆遷賠償保密協(xié)議
- 辦稅服務(wù)外包投標(biāo)方案(完整版)
- 青甘大環(huán)線路線
- 《鋁及鋁合金薄板變形量及殘余應(yīng)力測試方法 切縫翹曲法》
- 醫(yī)院女工委工作計劃(2篇)
- 國家開放大學(xué)電大本科《古代小說戲曲專題》2023期末試題及答案(試卷號:1340)
- 創(chuàng)新思維與方法(第2版)PPT全套完整教學(xué)課件
- 北師大版數(shù)學(xué)八年級上冊全冊教案
評論
0/150
提交評論