版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> DSP課程設(shè)計(jì)報(bào)告</b></p><p> 語音信號(hào)的FIR濾波器處理</p><p> 姓 名: </p><p> 班 級(jí): 11電信4 </p><p> 學(xué) 號(hào):
2、 </p><p> 指導(dǎo)老師: </p><p> 日期: 2014.06.03~2014.06.13 </p><p><b> 摘 要</b></p><p> DSP( Digital
3、Signal Processing) 也就是我們常說的數(shù)字信號(hào)處理, 它是利用計(jì)算機(jī)或?qū)S锰幚碓O(shè)備, 以數(shù)字形式對(duì)信號(hào)進(jìn)行采集、變換、濾波、估值、增強(qiáng)、壓縮、識(shí)別等處理, 以得到符合人們需要的信號(hào)形式。DSP 芯片在信號(hào)處理、通信、雷達(dá)等許多領(lǐng)域得到廣泛的應(yīng)用。</p><p> Matlab是一款強(qiáng)大的軟件,它將數(shù)值分析、矩陣計(jì)算、科學(xué)數(shù)據(jù)可視化等諸多強(qiáng)大功能集成在一個(gè)易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)
4、計(jì)以及必須進(jìn)行有效數(shù)值計(jì)算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案。</p><p> CSS集成開發(fā)環(huán)境使用CCS內(nèi)置的軟件仿真simulator對(duì)程序進(jìn)行編譯,調(diào)試和運(yùn)行,主要用于檢測(cè)目標(biāo)程序運(yùn)行的正確性和連貫性,并能通過仿真器與目標(biāo)板連接,在目標(biāo)板上實(shí)時(shí)觀察效果。</p><p> 在本次設(shè)計(jì)中,我們選擇的課題是基于DSP的語言信號(hào)的FIR濾波處理。首先利用MATLAB進(jìn)行了仿真,
5、得到濾波前后的時(shí)域波形和頻譜。然后通過調(diào)用MATLAB的分析工具FDATOOL,根據(jù)仿真結(jié)果導(dǎo)出了濾波器的相關(guān)參數(shù),將原始信號(hào)數(shù)據(jù)和濾波器參數(shù)輸入CCS進(jìn)行DSP編程。最后在DSP中實(shí)現(xiàn)了FIR低通濾波,并通過CCS的頻譜分析功能查看了最終DSP的濾波效果。</p><p> 關(guān)鍵詞: 語音信號(hào) DSP FIR濾波 MATLAB CCS</p><p><b> 目
6、 錄</b></p><p><b> 1.前言4</b></p><p><b> 2.設(shè)計(jì)原理4</b></p><p> 2.1數(shù)字信號(hào)處理器4</p><p> 2.2濾波器簡(jiǎn)介5</p><p> 2.3 fir濾波器原理6&l
7、t;/p><p> 2.4窗函數(shù)簡(jiǎn)介7</p><p> 2.5濾波器的特點(diǎn)7</p><p> 3.FIR濾波器的Matlab設(shè)計(jì)8</p><p> 3.1總體方案的設(shè)計(jì)8</p><p> 3.2語音信號(hào)的采集9</p><p> 3.3 MATLAP的具體處理9<
8、;/p><p> 3.4 FIR濾波器的系統(tǒng)參數(shù)11</p><p> 4.FIR濾波器的CCS設(shè)計(jì)與仿真11</p><p> 4.1 CCS程序流程圖12</p><p> 4.2 CCS仿真結(jié)果15</p><p> 5.問題及解決辦法18</p><p><b>
9、; 6.設(shè)計(jì)感想19</b></p><p><b> 參考文獻(xiàn)19</b></p><p><b> 7.附錄20</b></p><p><b> 1 前言</b></p><p> 隨著信息與數(shù)字技術(shù)的發(fā)展,數(shù)字信號(hào)處理已經(jīng)成為當(dāng)今極其重要而學(xué)
10、科與技術(shù)領(lǐng)域之一。它在通信、語音、圖像、自動(dòng)控制、雷達(dá)、軍事、航空航天、醫(yī)療和家用電器等眾多領(lǐng)域得到了廣泛的應(yīng)用。在數(shù)字信號(hào)處理的基本方法中,通常會(huì)涉及到變換、濾波、頻譜分析、調(diào)制解調(diào)和編碼解碼等處理。其中濾波是應(yīng)用非常廣泛的一個(gè)環(huán)節(jié),數(shù)字濾波器的理論和相關(guān)設(shè)計(jì)也一直都是人們研究的重點(diǎn)之一。FIR濾波器的是非遞歸的,穩(wěn)定性好,精度高;更重要的是,F(xiàn)IR濾波器在滿足幅頻響應(yīng)要求的同時(shí),可以獲得嚴(yán)格的線性相位特征。因此,它在高保真的信號(hào)處理
11、,如數(shù)字音頻、圖像處理、數(shù)據(jù)傳輸和生物醫(yī)學(xué)等領(lǐng)域得到廣泛應(yīng)用。</p><p> 在數(shù)字信號(hào)處理中,濾波占有極其重要的地位。數(shù)字濾波是語音信號(hào)處理、圖像處理、模式識(shí)別、頻譜分析等應(yīng)用的基本處理算法。用DSP芯片實(shí)現(xiàn)數(shù)字濾波除了具有穩(wěn)定性好、精確度高、不受環(huán)境影響等優(yōu)點(diǎn)外,還具有靈活性好等特點(diǎn)。</p><p> 本文介紹了數(shù)字濾波器的設(shè)計(jì)基礎(chǔ)及用窗函數(shù)法設(shè)計(jì)FIR濾波器的方法,運(yùn)用MA
12、THLAB語言實(shí)現(xiàn)了低通濾波器的設(shè)計(jì)并用CCS 2.0進(jìn)行觀察效果。</p><p><b> 2 設(shè)計(jì)原理</b></p><p> 2.1 數(shù)字信號(hào)處理器</p><p> DSP(Digital Signal Processor)是一種獨(dú)特的微處理器,是以數(shù)字信號(hào)來處理大量信息的器件。其工作原理是接收模擬信號(hào),轉(zhuǎn)換為0或1的數(shù)字信號(hào)
13、。再對(duì)數(shù)字信號(hào)進(jìn)行修改、刪除、強(qiáng)化,并在其他系統(tǒng)芯片中把數(shù)字?jǐn)?shù)據(jù)解譯回模擬數(shù)據(jù)或?qū)嶋H環(huán)境格式。它不僅具有可編程性,而且其實(shí)時(shí)運(yùn)行速度可達(dá)每秒數(shù)以千萬條復(fù)雜指令程序,遠(yuǎn)遠(yuǎn)超過通用微處理器,是數(shù)字化電子世界中日益重要的電腦芯片。它的強(qiáng)大數(shù)據(jù)處理能力和高運(yùn)行速度,是最值得稱道的兩大特色。</p><p> 由Ti公司提供專業(yè)的開發(fā)工具CCS,自帶DSP/BIOS操作系統(tǒng),能夠直接編寫適合DSP開發(fā)工程及文件,滿足DS
14、P程序設(shè)計(jì)要求。</p><p> 由MathWorks 公司和TI 公司聯(lián)合開發(fā)的DSPMATLAB Link for CCS Development Tools(簡(jiǎn)稱CCSLink)是MATLAB6.5 版本(Release13)中增加的一個(gè)全新的工具箱,它提供了MATLAB、CCS 和DSP 目標(biāo)板的接口,利用此工具可以像操作MATLAB變量一樣來操作DSP 器件的存儲(chǔ)器和寄存器,使開發(fā)人員在MATLAB
15、環(huán)境下完成對(duì)DSP的操作,從而極大地提高DSP應(yīng)用系統(tǒng)的開發(fā)進(jìn)程。</p><p> 本設(shè)計(jì)主要是使用DSP對(duì)語音噪聲信號(hào)進(jìn)行處理,使用CCS開發(fā)工具編寫程序,同時(shí)利用MATLAB操作DSP 器件的存儲(chǔ)器和寄存器。</p><p><b> 2.2 濾波器簡(jiǎn)介</b></p><p> (Finite Impulse Response)濾
16、波器:有限長(zhǎng)單位沖激響應(yīng)濾波器,是數(shù)字信號(hào)處理系統(tǒng)中最基本的元件,它可以在保證任意幅頻特性的同時(shí)具有嚴(yán)格的線性相頻特性,同時(shí)其單位抽樣響應(yīng)是有限長(zhǎng)的,因而濾波器是穩(wěn)定的系統(tǒng)。因此,F(xiàn)IR濾波器在通信、圖像處理、模式識(shí)別等領(lǐng)域都有著廣泛的應(yīng)用。</p><p> 沖激響應(yīng)之所以是“有限的”是因?yàn)樵跒V波器中沒有反饋出現(xiàn);如果你輸入一個(gè)沖激{就是一個(gè)“1”樣本后出現(xiàn)許多“0”的樣本的信號(hào)},那么零將在樣本 “1”通過
17、了所有的延遲線的系數(shù)后出現(xiàn)。</p><p> 濾波器,顧名思義,是對(duì)波進(jìn)行過濾的器件。“波”是一個(gè)非常廣泛的物理概念,在電子技術(shù)領(lǐng)域,“波”被狹義地局限于特指描述各種物理量的取值隨時(shí)間起伏變化的過程。該過程通過各類傳感器的作用,被轉(zhuǎn)換為電壓或電流的時(shí)間函數(shù),稱之為各種物理量的時(shí)間波形,或者稱之為信號(hào)。因?yàn)樽宰兞繒r(shí)間‘是連續(xù)取值的,所以稱之為連續(xù)時(shí)間信號(hào),又習(xí)慣地稱之為模擬信號(hào)(Analog Signal)。隨
18、著數(shù)字式電子計(jì)算機(jī)(一般簡(jiǎn)稱計(jì)算機(jī))技術(shù)的產(chǎn)生和飛速發(fā)展,為了便于計(jì)算機(jī)對(duì)信號(hào)進(jìn)行處理,產(chǎn)生了在抽樣定理指導(dǎo)下將連續(xù)時(shí)間信號(hào)變換成離散時(shí)間信號(hào)的完整的理論和方法。也就是說,可以只用原模擬信號(hào)在一系列離散時(shí)間坐標(biāo)點(diǎn)上的樣本值表達(dá)原始信號(hào)而不丟失任何信息,波、波形、信號(hào)這些概念既然表達(dá)的是客觀世界中各種物理量的變化,自然就是現(xiàn)代社會(huì)賴以生存的各種信息的載體。信息需要傳播,靠的就是波形信號(hào)的傳遞。信號(hào)在它的產(chǎn)生、轉(zhuǎn)換、傳輸?shù)拿恳粋€(gè)環(huán)節(jié)都可能由
19、于環(huán)境和干擾的存在而畸變,有時(shí),甚至是在相當(dāng)多的情況下,這種畸變還很嚴(yán)重,以致信號(hào)及其所攜帶的信息被深深地埋在噪聲當(dāng)中了。</p><p> 濾波,本質(zhì)上是從被噪聲畸變和污染了的信號(hào)中提取原始信號(hào)所攜帶的信息的過程。</p><p> 濾波器特性可以用其頻率響應(yīng)來描述,按其特性的不同,可以分為低通濾波器,高通濾波器,帶通濾波器和帶阻濾波器等。</p><p>
20、 2.3 FIR濾波器原理</p><p> FIR濾波器(有限長(zhǎng)單位沖激響應(yīng)濾波器)是在數(shù)字信號(hào)處理(DSP)中經(jīng)常使用的兩種基本的濾波器之一,另一個(gè)為IIR濾波器。IIR濾波器是無限沖激響應(yīng)濾波器。</p><p> 不論哪一種濾波器設(shè)計(jì)方法,都要求出濾波器的單位沖激響應(yīng)h(n),然后才能在時(shí)域中實(shí)現(xiàn)頻域中的濾波。</p><p> 在頻域,當(dāng)其輸入信號(hào)為
21、X(ejω)時(shí),如濾波器的頻率響應(yīng)為H(ejω),則其輸出信號(hào)為Y(ejω)=X(ejω)H(ejω)。</p><p> 在時(shí)域,設(shè)濾波器的單位沖激響應(yīng)h(n)為一N點(diǎn)序列,即0≤n≤N-1時(shí)h(n)的值不為零,根據(jù)離散傅氏變換的性質(zhì),則可以將濾波器的輸入序列x(n)的響應(yīng)y(n)表示為x(n)與h(n)的卷積和,即:</p><p> 這就是濾波系統(tǒng)的差分方程,它給濾波器的實(shí)現(xiàn)奠定
22、了理論基礎(chǔ)。即求出時(shí)域的h(n)后,便可通過卷積來實(shí)現(xiàn)頻域的濾波。</p><p> 卷積和運(yùn)算主要有以下幾個(gè)步驟:</p><p> (1) h(n)序列N個(gè)點(diǎn)數(shù)值的存儲(chǔ)</p><p> 由于h(n)是根據(jù)濾波性能要求已經(jīng)設(shè)計(jì)好的有限長(zhǎng)單位沖激響應(yīng),故其N個(gè)點(diǎn)的數(shù)值是已知的,因此可以存放在ROM或RAM當(dāng)中,且對(duì)應(yīng)著N個(gè)不同的地址,便于尋址。</p&
23、gt;<p> (2) 輸入序列x(n)的移位寄存</p><p> 輸入序列x(n)是不斷變化的,因此只能對(duì)其進(jìn)行移位寄存,寄存器的個(gè)數(shù)為N,即N個(gè)寄存器中分別存放著x(n)、x(n-1)……x(n-N+1),它們都隨著n的變化而變化。</p><p><b> (3) 乘法器</b></p><p> 用以完成兩個(gè)數(shù)值
24、的乘法,即h(m)x(n-m),也就是將存儲(chǔ)器中N地址所對(duì)應(yīng)的N個(gè)固定數(shù)值h(m)分別與N個(gè)移位寄存器中的不斷變化的N個(gè)變化數(shù)值x(n-m)相乘。</p><p><b> (4) 累加器</b></p><p> 用以實(shí)現(xiàn)N個(gè)乘積的累加,即將當(dāng)前x(n)所對(duì)應(yīng)的N個(gè)乘積進(jìn)行累加,所得到的和就是y(n)。當(dāng)濾波器的下一個(gè)輸入值即x(n +1)到來時(shí),累加器清零,并
25、重新將下一組x(n +1)所對(duì)應(yīng)的N個(gè)乘積進(jìn)行累加,所得到的和就是y(n +1)。</p><p><b> 2.4 窗函數(shù)簡(jiǎn)介</b></p><p> 數(shù)字信號(hào)處理的主要數(shù)學(xué)工具是傅里葉變換。而傅里葉變換是研究整個(gè)時(shí)間域和頻率域的關(guān)系。不過,當(dāng)運(yùn)用計(jì)算機(jī)實(shí)現(xiàn)工程測(cè)試信號(hào)處理時(shí),不可能對(duì)無限長(zhǎng)的信號(hào)進(jìn)行測(cè)量和運(yùn)算,而是取其有限的時(shí)間片段進(jìn)行分析。做法是從信號(hào)中截
26、取一個(gè)時(shí)間片段,然后用觀察的信號(hào)時(shí)間片段進(jìn)行周期延拓處理,得到虛擬的無限長(zhǎng)的信號(hào),然后就可以對(duì)信號(hào)進(jìn)行傅里葉變換、相關(guān)分析等數(shù)學(xué)處理。無線長(zhǎng)的信號(hào)被截?cái)嘁院螅漕l譜發(fā)生了畸變,原來集中在f(0)處的能量被分散到兩個(gè)較寬的頻帶中去了(這種現(xiàn)象稱之為頻譜能量泄漏)。</p><p> 為了減少頻譜能量泄漏,可采用不同的截取函數(shù)對(duì)信號(hào)進(jìn)行截短,截?cái)嗪瘮?shù)稱為窗函數(shù),簡(jiǎn)稱為窗。信號(hào)截短以后產(chǎn)生的能量泄漏現(xiàn)象是必然的,因?yàn)?/p>
27、窗函數(shù)w(t)是一個(gè)頻帶無限的函數(shù),所以即使原信號(hào)x(t)是有限帶寬信號(hào),而在截短以后也必然成為無限帶寬的函數(shù),即信號(hào)在頻域的能量與分布被擴(kuò)展了。又從采樣定理可知,無論采樣頻率多高,只要信號(hào)一經(jīng)截短,就不可避免地引起混疊,因此信號(hào)截短必然導(dǎo)致一些誤差。</p><p> 泄漏與窗函數(shù)頻譜的兩側(cè)旁瓣有關(guān),如果兩側(cè)瓣的高度趨于零,而使能量相對(duì)集中在主瓣,就可以較為接近于真實(shí)的頻譜,為此,在時(shí)間域中可采用不同的窗函數(shù)
28、來截短信號(hào)。</p><p> 2.5濾波器的特點(diǎn) </p><p><b> 優(yōu)點(diǎn):</b></p><p> ?。?)很容易獲得嚴(yán)格的線性相位,避免被處理的信號(hào)產(chǎn)生相位失真,這一特點(diǎn)在寬頻帶信號(hào)處理、陣列信號(hào)處理、數(shù)據(jù)傳輸?shù)认到y(tǒng)中非常重要;</p><p> ?。?)可以在幅度特性隨意設(shè)計(jì)的同時(shí),保證精確、嚴(yán)格的
29、線性相位,還可得到多帶幅頻特性;</p><p> ?。?)極點(diǎn)全部在原點(diǎn)(永遠(yuǎn)穩(wěn)定),無穩(wěn)定性問題;</p><p> ?。?)任何一個(gè)非因果的有限長(zhǎng)序列,總可以通過一定的延時(shí),轉(zhuǎn)變?yōu)橐蚬蛄?,所以因果性總是滿足;</p><p> (5)無反饋運(yùn)算,運(yùn)算誤差小。 </p><p><b> 缺點(diǎn):</b><
30、/p><p> ?。?)因?yàn)闊o極點(diǎn),要獲得好的過渡帶特性,需以較高的階數(shù)為代價(jià);</p><p> (2)無法利用模擬濾波器的設(shè)計(jì)結(jié)果,一般無解析設(shè)計(jì)公式,要借助計(jì)算機(jī)輔助設(shè)計(jì)程序完成。</p><p> 3 FIR濾波器的Matlab設(shè)計(jì)</p><p> 3.1. 總體方案設(shè)計(jì)</p><p> 本次課程設(shè)計(jì)所
31、采用的主要軟件為Matlab。設(shè)計(jì)中用到的函數(shù)主要有wavread,sound,fft,subplot,plot,fir1,freqz,filter。</p><p> 課程設(shè)計(jì)利用窗函數(shù)法設(shè)計(jì)FIR數(shù)字濾波器,并利用MATLAB作為輔助工具仿真濾波前后的時(shí)域波形和頻譜。對(duì)于DSP的處理,首先,通過Matlab給語音信號(hào)添加高頻噪音,即將原始信號(hào)調(diào)制到某一高頻上(本設(shè)計(jì)用10000hz),再將其與原始語音信號(hào)相
32、疊加,最后將這個(gè)疊加后的信號(hào)轉(zhuǎn)化為數(shù)據(jù)(matlab編程),并存入后綴為dat的文件中。之后根據(jù)仿真結(jié)果使用MATLAB的設(shè)計(jì)分析工具FDATOOL產(chǎn)生濾波器參數(shù)。將混疊后的信號(hào)數(shù)據(jù)和濾波器參數(shù)輸入CCS進(jìn)行DSP編程,在DSP中實(shí)現(xiàn)FIR帶通濾波,并使用CCS的頻譜分析功能,查看最終DSP的濾波效果。</p><p> 3.2 語音信號(hào)的采集</p><p> 使用PC 機(jī)上的聲卡和
33、WINDOWS 操作系統(tǒng)可以進(jìn)行數(shù)字信號(hào)的采集。將話筒插入計(jì)算機(jī)的語音輸入插口上,啟動(dòng)MOOo錄音專家。按下錄音按鈕,接著對(duì)話筒錄音,錄音結(jié)束后屏幕左側(cè)將顯示所錄聲音的長(zhǎng)度。點(diǎn)擊放音按鈕,可以實(shí)現(xiàn)所錄音的重現(xiàn)。如圖3.1所示,以文件名“voice”保存入matlab當(dāng)前工作路徑 中??梢钥吹?文件存儲(chǔ)器的后綴默認(rèn)為.wav ,這是WINDOWS 操作系統(tǒng)規(guī)定的聲音文件存的標(biāo)準(zhǔn)。</p><p> 3.3 mat
34、lab具體處理</p><p> 3.3.1 FIR濾波器的matlab實(shí)現(xiàn)</p><p> FIR參數(shù)設(shè)定及頻域響應(yīng)特性</p><p> 根據(jù)上述要求在matlab中采用fir2函數(shù)設(shè)計(jì)低通FIR濾波器,其程序代碼為:</p><p> f=[0 0.38 0.5 1];</p><p> m=[1 1
35、 0 0];</p><p> b=fir2(36,f,m);</p><p> 在MATLAB中輸入以上代碼,求出濾波器系數(shù)如下具有兩邊對(duì)稱, </p><p> h(0)=h(36)=-0.0010, h(1)=h(35)=-0.0036 ,h(2)=h(34)=0.0000</p><p> h(3)=h(33)=0.006
36、5 , h(4)=h(32)=0.0032 , h(5)=h(31)=-0.0088</p><p> h(6)=h(30)=-0.0093 , h(7)=h(29)=0.0090 , h(8)=h(28)=0.0184</p><p> h(9)=h(27)=-0.0047 , h(10)=h(26)=-0.0297 ,h(11)=h(25)=-0.0071&
37、lt;/p><p> h(12)=h(24)=0.0417 , h(13)=h(23)=0.0316 , h(14)=h(22)=-0.0524</p><p> h(15)=h(21)=-0.0848, h(16)=h(20)=0.0598, h(17)=h(19)=0.3108</p><p> h(18)=0.4375</p><
38、;p> CCS的輸入語音信號(hào)的輔助產(chǎn)生(MATLAB)</p><p> 1、理想情況:FIR 濾波器的輸入數(shù)據(jù)存儲(chǔ)在indata.dat 文件中,共300 個(gè)點(diǎn),由頻率為1000Hz和2500Hz 的兩個(gè)余弦波疊加而成</p><p> 2、為了驗(yàn)證設(shè)計(jì)的可行性,自身錄制一個(gè)語音片段,主要信號(hào)為低頻成分,其中夾雜著高頻成分的噪聲。</p><p>
39、在MATLAB中產(chǎn)生一個(gè)indata.dat文件供CCS輸入,在matlab中輸入的代碼為:</p><p> x=wavread('D:\matlab\work\XINZAO.wav'); %語音文件的路徑 </p><p> y=fft(x,1024);</p><p> plot(abs(y(1:1000)));
40、 %采樣100個(gè)點(diǎn)</p><p> x1=round(1024*x);</p><p> fid=fopen('indata.dat','w'); %生成一個(gè)dat文件</p><p> fprintf(fid,'1651 1 00E2 1000\n');</p>
41、<p> fprintf(fid,'%d\n',x1); %輸出</p><p> 3.4 FIR濾波器的系統(tǒng)參數(shù)</p><p> 在本設(shè)計(jì)中,使用MATLAB模擬產(chǎn)生合成信號(hào),然后利用CCS進(jìn)行濾波。</p><p> 本次FIR濾波器設(shè)計(jì)的的參數(shù)選取指標(biāo)如下:</p><p
42、> 采用37階低通濾波器,漢明窗(Hamming Window)函數(shù),通帶截止頻率為1500 Hz,阻帶截止頻率為2000 Hz,通帶波紋為0.01,阻帶波紋為0.1,采樣頻率為8000Hz。</p><p> 在選項(xiàng)中選擇或輸入濾波器參數(shù),然后點(diǎn)擊”Design Filter”按鈕完成濾波器設(shè)計(jì)。設(shè)計(jì)成功后的結(jié)果如圖下圖所示。在fdatool中,選擇Targets->Code Composer
43、Studio?IDE。在出現(xiàn)的對(duì)話框中選擇輸出文件類型為C.header file,輸出系數(shù)類型為signed 16-bit integer。點(diǎn)擊Generate按鈕,選擇路徑,即可輸出前一步設(shè)計(jì)出的FIR濾波器系數(shù)表。</p><p> 4 FIR濾波器的CCS設(shè)計(jì)與仿真</p><p> CCS是一種針對(duì)TMS320系列DSP的集成開發(fā)環(huán)境,在windows操作系統(tǒng)下,采用圖形接
44、口界面,提供環(huán)境配置、源文件編輯、程序調(diào)試、跟蹤和分析等工具,提供了配置、建立、調(diào)試、跟蹤和分析程序的工具,從而完成編輯、編譯、鏈接、調(diào)試和數(shù)據(jù)分析等工作。</p><p> 在CCS中編寫匯編語言程序,進(jìn)行調(diào)試,實(shí)現(xiàn)FIR濾波的功能。本課程設(shè)計(jì)使用CCS開發(fā)應(yīng)用程序的一般步驟為:</p><p> ?。?)創(chuàng)建一個(gè)工程項(xiàng)目文件fir2.h,用匯編語言編寫處理主程序fir2.asm。另外
45、根據(jù)板上的存儲(chǔ)器配置方式,編寫存儲(chǔ)器配置文件fir.cmd文件,將MATLAB生成的fir2.h和indata.dat文件拷貝到工程文件夾下。</p><p> ?。?)編輯各類文件。使用CCS提供的集成編輯環(huán)境,對(duì)頭文件、鏈接命令文件和源程序進(jìn)行編輯。</p><p> ?。?)對(duì)工程項(xiàng)目進(jìn)行編譯,生成可執(zhí)行文件。如出現(xiàn)語法錯(cuò)誤,將在構(gòu)建窗口中顯示錯(cuò)誤信息。用戶可以根據(jù)顯示信息定位錯(cuò)誤信
46、息,更改錯(cuò)誤。</p><p> (4)下載程序、輸入數(shù)據(jù),執(zhí)行程序,對(duì)結(jié)果和數(shù)據(jù)進(jìn)行分析和算法評(píng)估。利用CCS提供的探測(cè)點(diǎn)、圖形顯示等工具,對(duì)運(yùn)行結(jié)果、輸出數(shù)據(jù)進(jìn)行分析,評(píng)估算法性能。</p><p> 4.1 CCS程序流程圖</p><p> 4.1.1 程序分析</p><p> FIR濾波器的DSP實(shí)現(xiàn)主要有線性緩沖區(qū)法和循
47、環(huán)緩沖區(qū)法兩種。</p><p> 線性緩沖區(qū)法又稱延遲線法。其特點(diǎn):</p><p> (1)對(duì)于N級(jí)的FIR濾波器,在數(shù)據(jù)存儲(chǔ)器中開辟一個(gè)N單元的緩沖區(qū)(滑窗),用來存放最新的N個(gè)輸入樣本;</p><p> ?。?)從最老樣本開始取數(shù),每取一個(gè)樣本后,將此樣本向下移位;</p><p> ?。?)讀完最后一個(gè)樣本后,輸入最新樣本存入
48、緩沖區(qū)的頂部。</p><p> 循環(huán)緩沖區(qū)法的特點(diǎn)如下:</p><p> ?。?)對(duì)于N級(jí)FIR濾波器,在數(shù)據(jù)存儲(chǔ)器中開辟一個(gè)N單元的緩沖區(qū)(滑窗),用來存放最新的N個(gè)輸入樣本;</p><p> ?。?)從最新樣本開始取數(shù);</p><p> (3)讀完最后一個(gè)樣本(最老樣本)后,輸入最新樣本來代替最老樣本,而其他數(shù)據(jù)位置不變;&l
49、t;/p><p> ?。?)用片內(nèi)BK(循環(huán)緩沖區(qū)長(zhǎng)度)寄存器對(duì)緩沖區(qū)進(jìn)行間接尋址,使循環(huán)緩沖區(qū)地址首尾相鄰。</p><p> 本次設(shè)計(jì)的FIR濾波器所采用的就是循環(huán)緩沖區(qū)法。</p><p> 對(duì)DSP進(jìn)行初始化,并設(shè)置好存儲(chǔ)單元。為數(shù)字濾波作準(zhǔn)備,將預(yù)先設(shè)計(jì)好的有N個(gè)抽頭的FIR數(shù)字濾波器的沖激響應(yīng)序列h(n)中的N個(gè)數(shù)值放入存儲(chǔ)單元bn中,從indata數(shù)據(jù)
50、存儲(chǔ)段中讀入抽樣值,將抽樣值逐一放入存儲(chǔ)單元xn中。</p><p><b> 主要循環(huán)程序如下:</b></p><p> 將累加器清零,將存儲(chǔ)單元bn與xn值對(duì)應(yīng)相乘并累加到ACC中,循環(huán)N次將ACC中的值保存輸出。再?gòu)膇ndata數(shù)據(jù)存儲(chǔ)段中讀入一個(gè)新的數(shù)據(jù),代替原來的最老樣本 MVDD *AR4+,*AR2+0% ,重復(fù)循環(huán)直到數(shù)據(jù)全部處理完。</
51、p><p> 最后將處理完的數(shù)據(jù)輸入到outdata數(shù)據(jù)存儲(chǔ)段中。</p><p> 4.1.2 數(shù)據(jù)輸入</p><p> MATLAB輔助DSP 實(shí)現(xiàn)FIR濾波器濾波 ,其總體過程是為DSP 中編寫處理程序提供濾波器系數(shù)。在MATLAB中利用濾波器設(shè)計(jì)、分析工具( FDATOOL) ,根據(jù)指定的濾波器性能快速設(shè)計(jì)一個(gè)FIR ,然后把濾波器系數(shù)以頭文件形式導(dǎo)入C
52、CS 中,頭文件中包含MATLAB 輔助DSP 實(shí)現(xiàn)FIR 數(shù)字濾波器的階數(shù)和系數(shù)數(shù)組,在MATLAB中調(diào)試、運(yùn)行DSP 程序并顯示、分析處理后的數(shù)據(jù)。</p><p> 打開CCS IDE 中file的data加載初始化data數(shù)據(jù),在Address中輸入數(shù)據(jù)存放的起始地址indata,并設(shè)置數(shù)據(jù)棧長(zhǎng)度。</p><p> 4.1.3 運(yùn)行程序仿真</p><p&
53、gt; 運(yùn)行程序,查看輸入輸出波形,修改相應(yīng)參數(shù)進(jìn)行調(diào)試。</p><p> 在View的Graph中單擊Time/frequency出現(xiàn)graph property dialog框。</p><p> 將顯示類型,圖形名稱,起始地址,抽樣點(diǎn)數(shù),數(shù)據(jù)類型等分別進(jìn)行設(shè)置,輸出各種波形。輸出濾波前的信號(hào)時(shí)域波形。首先,設(shè)置如下圖所示,輸出濾波前的信號(hào)時(shí)域波形。</p>&l
54、t;p> 圖 16 濾波前語音信號(hào)的時(shí)域Graph Property Dialog設(shè)置參數(shù)圖</p><p> 將Display Type改為FFT Magnitude 就可以看到濾波前信號(hào)的頻譜,將Start Address改為outdata就可以看到濾波后信號(hào)的時(shí)域波形和頻譜。</p><p> 4.2 CCS仿真結(jié)果</p><p> 圖 17
55、濾波前語音信號(hào)的時(shí)域波形圖</p><p> 圖 18 濾波前信號(hào)頻譜波形圖</p><p> 4.2.2 FIR濾波器濾波后的信號(hào)</p><p> 圖 19 濾波后信號(hào)時(shí)域波形圖</p><p> 圖 20 濾波后信號(hào)頻譜圖</p><p> 圖17波前的信號(hào),由高頻信號(hào)和原信號(hào)疊加而成的波形較為雜亂,加
56、噪后的信號(hào)幅值較大。圖19波后的信號(hào),從圖上可以看到信號(hào)幅度較低,波形較為清晰。</p><p> 對(duì)比圖18圖20可以看到加躁后信號(hào)幅值較大,信號(hào)的能量集中在高頻段,濾波后,高頻成分大部分被濾去,信號(hào)的能量主要集中在低頻段。</p><p><b> 5 問題及解決方法</b></p><p> 1.為什么存入DAT文件的信號(hào)數(shù)據(jù)要乘上
57、32768?</p><p> 由于TMS32054X是16位定點(diǎn)處理器,在進(jìn)行匯編程序設(shè)計(jì)時(shí),F(xiàn)IR濾波器系數(shù)需要采用Q15格式,即必須將上述系數(shù)據(jù)轉(zhuǎn)化位Q15定點(diǎn)式。 </p><p> 2.matlab編譯錯(cuò)誤出現(xiàn)如下錯(cuò)誤?</p><p> The carrier frequency must be less than half the samplin
58、g frequency.故降低載波頻率</p><p> 3. 在View的Graph中單擊Time/frequency出現(xiàn)graph property dialog框,未修改抽樣點(diǎn)數(shù),顯示的圖形出現(xiàn)差異.</p><p> 4、通過load data時(shí),在配置地址和長(zhǎng)度時(shí),我們沒有忘記按照自己設(shè)定的起始地址及長(zhǎng)度,結(jié)果顯示出來的圖像與真實(shí)的有極大的偏差。</p><
59、;p> 答:把Address和Length的參數(shù)填寫自己在生成dat文件是所設(shè)置的值一致,最后濾波輸出波形正確。</p><p> 5、為了實(shí)現(xiàn)語音及噪聲的通過設(shè)計(jì)的濾波器進(jìn)行驗(yàn)證,需要制作一個(gè)語音及噪聲的.dat文件,以供CCS信號(hào)輸入,對(duì)軟件不熟練的我們不懂的怎么應(yīng)用?</p><p> 答:通過到圖書館借相應(yīng)的書來自學(xué),學(xué)習(xí)MATLAB的生成.dat文件的相關(guān)命令語句,以
60、及請(qǐng)教其他同學(xué)。通過不斷的討論和研究,知道了要對(duì)信號(hào)進(jìn)行采樣,再通過fopen語句等,才能生成dat文件</p><p><b> 6 設(shè)計(jì)感想</b></p><p> 通過本次課程設(shè)計(jì),我們發(fā)現(xiàn)在課本上學(xué)到的知識(shí)實(shí)在是不能使我們有能力駕馭這個(gè)課程設(shè)計(jì)。 </p><p> 一開始決定做這個(gè)課題,我們就去查找了大量資料,通過查找資料我們
61、都清楚了大概要做些什么。首先要進(jìn)行MATLAB仿真,并通過MATLAB設(shè)計(jì)的FIR濾波器輸出濾波器系數(shù)。接著便是通過CCS編程,并在DSP上運(yùn)行。我們覺得思路是很清晰的,但是實(shí)際操作起來卻困難重重。</p><p> 原始信號(hào)有了,我們也得了教訓(xùn),便開始計(jì)劃開來。于是,翻書看完有關(guān)FIR濾波器的相關(guān)介紹,重點(diǎn)看了凱塞窗。然后查資料找出與本次設(shè)計(jì)有關(guān)的MATLAB知識(shí)。做完這些自然是開始設(shè)計(jì),總體框架,具體步驟,
62、都在腦袋瓜里轉(zhuǎn)了幾轉(zhuǎn)。動(dòng)工,這時(shí)才深刻體會(huì)到“紙上學(xué)來終覺淺,用到實(shí)際才叫真!”開始設(shè)計(jì)從噪聲選取,到低通,高通,帶阻,帶通濾波器的設(shè)計(jì),其中是錯(cuò)漏百出。當(dāng)然,作為老手自然不會(huì)再去犯什么程序設(shè)計(jì)上的低級(jí)錯(cuò)誤,主要還是對(duì)濾波器的認(rèn)知不夠深刻。有的只是照抄書本,最后是連自己都為自己所犯的錯(cuò)誤驚愕不已。其中許多錯(cuò)誤差點(diǎn)讓自己從頭來過,一度讓自己有放棄的打算。最后還是堅(jiān)持了下來,自己大嘆不容易。</p><p> 設(shè)計(jì)
63、的時(shí)間過了,但它帶來的影響我想是不滅的!要有一個(gè)良好的就業(yè)前景。擁有扎實(shí)的理論知識(shí),認(rèn)真細(xì)致的處事態(tài)度,隨機(jī)應(yīng)變的實(shí)際應(yīng)用方法,不拘一格的思路都將使得自己能有好的未來。</p><p><b> 參 考 文 獻(xiàn)</b></p><p> [1] 鄒彥,DSP原理及應(yīng)用(修訂版),北京:電子工業(yè)出版社,2012.</p><p> [2]
64、王宏. MATLAB6.5及其在信號(hào)處理中的應(yīng)用.[M]. 北京:清華大學(xué)出版社,2004</p><p> [3] 高西全,丁玉美,闊永紅.數(shù)字信號(hào)處理---原理、實(shí)現(xiàn)及應(yīng)用.[M].北京:電子工業(yè)出版社,2006</p><p> [4] 胡廣書編著,數(shù)字信號(hào)處理理論、算法與實(shí)現(xiàn).北京:清華大學(xué)出版社,2005;</p><p><b> 附
65、 錄</b></p><p> 1.主程序fir.asm:</p><p> .title "FIR.ASM"</p><p><b> .mmregs</b></p><p> .def start</p><p> .bss yn,1<
66、/p><p> xn .usect "xn",37</p><p> hn .usect "hn",37</p><p> indata .usect "indata",300</p><p> outdata .usect "outdat
67、a",256</p><p><b> .data</b></p><p> fir_coff: </p><p> .word -10*1024/10000,-36*1024/10000</p><p> .word 0*1024/10000,65*1024/10000</p>&
68、lt;p> .word 32*1024/10000,-88*1024/10000</p><p> .word -93*1024/10000,90*1024/10000</p><p> .word 184*1024/10000,-47*1024/10000</p><p> .word -297*1024/10000,-71*1024/100
69、00</p><p> .word 417*1024/10000,316*1024/10000</p><p> .word -524*1024/10000,-848*1024/10000</p><p> .word 598*1024/10000,3108*1024/10000</p><p> .word 4375*102
70、4/10000</p><p> .word 3108*1024/10000,598*1024/10000</p><p> .word -848*1024/10000,-524*1024/10000</p><p> .word 316*1024/10000,417*1024/10000</p><p> .word -71
71、*1024/10000,-297*1024/10000</p><p> .word -47*1024/10000,184*1024/10000</p><p> .word 90*1024/10000,-93*1024/10000</p><p> .word -88*1024/10000,32*1024/10000</p><p&
72、gt; .word 65*1024/10000,0*1024/10000</p><p> .word -36*1024/10000,-10*1024/10000</p><p><b> .text</b></p><p><b> start: </b></p><p> ss
73、bx frct ;使用小數(shù)運(yùn)算 </p><p> stm #hn,ar1 ;系數(shù)首地址 </p><p> rpt #36 ;將系數(shù)移入循</p><p> mvpd fir_coff,*ar1+ ;環(huán)緩沖區(qū) </p><p> stm
74、 #-1,ar0</p><p> stm #outdata,ar5</p><p> stm #indata,ar4</p><p> stm #xn+36,ar2</p><p> rpt #36 ;將輸入數(shù)據(jù)移入 </p><p> mvdd *ar4+,*
75、ar2+0% ;循環(huán)緩沖區(qū)</p><p> stm #xn+36,ar2 ;指向第一個(gè)輸入</p><p> stm #hn+36,ar3</p><p> stm #37,bk ;緩沖區(qū)大小37</p><p> stm #255,brc ;塊重復(fù)256次</p><p&
76、gt; stm #-1,ar0</p><p> rptb loop-1 ;塊程序重復(fù)大小</p><p> rptz a,#36 ;計(jì)算一個(gè)輸出</p><p> mac *ar2+0%,*ar3+0%,a</p><p> sth a,*(yn) ;保存輸出</p
77、><p> mvkd *(yn),*ar5+</p><p> mvdd *ar4+,*ar2+0% ;讀進(jìn)一個(gè)輸入</p><p> loop: nop</p><p> b loop</p><p><b> .end </b></p><p&
78、gt; 2.鏈接命令文件fir.cmd:</p><p><b> MEMORY</b></p><p> { PAGE 0:</p><p> PARAM: org=00E0h len=1000h</p><p><b> PAGE 1:</b></p><
79、;p> SPRAM org=0060h len=0020h </p><p> DARAM: org=0080h len=1380h </p><p><b> }</b></p><p><b> SECTIONS</b></p><p><b>
80、 {</b></p><p> .text :> PARAM PAGE 0</p><p> .data :> PARAM PAGE 0</p><p> .bss :> SPRAM PAGE 1</p><p> xn : align (64) {} &
81、gt; DARAM PAGE 1</p><p> hn : align (64) {} > DARAM PAGE 1 </p><p> indata :> DARAM PAGE 1</p><p> outdata :> DARAM PAGE 1 </p><p>&l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 語音信號(hào)處理與濾波課程設(shè)計(jì)
- 課程設(shè)計(jì)--語音信號(hào)濾波去噪使用bohman窗設(shè)計(jì)的頻率采樣型fir濾波器
- 語音信號(hào)的濾波課程設(shè)計(jì)
- 數(shù)字信號(hào)處理課程設(shè)計(jì)-基于fir的有噪聲語音信號(hào)處理
- 《數(shù)字信號(hào)處理》課程設(shè)計(jì)--fir窗函數(shù)濾波器的設(shè)計(jì)
- 數(shù)字信號(hào)處理課程設(shè)計(jì)--語音信號(hào)的處理與濾波
- 語音濾波器課程設(shè)計(jì)--語音濾波器
- fir帶通濾波器課程設(shè)計(jì)
- 語音信號(hào)處理課程設(shè)計(jì)
- 數(shù)字信號(hào)處理課程設(shè)計(jì)---語音信號(hào)的處理與濾波
- 數(shù)字信號(hào)處理課程設(shè)計(jì)---語音信號(hào)的處理與濾波
- 數(shù)字信號(hào)處理課程設(shè)計(jì)--語音信號(hào)的處理與濾波
- fir帶阻濾波器課程設(shè)計(jì)
- 數(shù)字信號(hào)處理課程設(shè)計(jì)--基于fir的有噪聲語音信號(hào)處理
- 數(shù)字信號(hào)課程設(shè)計(jì)---語音信號(hào)的處理與濾波
- fir帶通濾波器課程設(shè)計(jì)
- 數(shù)字信號(hào)處理課程設(shè)計(jì)--語音信號(hào)濾波去噪
- 數(shù)字信號(hào)處理課程設(shè)計(jì)---基于matlab的語音信號(hào)濾波處理
- dsp課程設(shè)計(jì)-- 語音信號(hào)處理,進(jìn)行三種類型的濾波器的設(shè)計(jì)
- 課程設(shè)計(jì)--語音信號(hào)濾波去噪
評(píng)論
0/150
提交評(píng)論