

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 基于TMS320VC5402語音采集壓縮存儲與回放</p><p> 摘 要:本課程設(shè)計的主要目的是熟悉CCS集成開發(fā)環(huán)境。然后在CCS環(huán)境下實現(xiàn)基于TMS320VC5402芯片的語音采集壓縮與存儲和回放。本課程設(shè)計首先采用A/D轉(zhuǎn)換器從MIC輸入口實行語音信號采集,進(jìn)行壓縮后存儲到DSP的片內(nèi)和片外RAM存儲器中,等到存儲器存滿之后,使用DSP實行解壓縮,并從SPEAKER輸出口進(jìn)行回放
2、輸出,并且用指示燈對語音存儲和回放過程進(jìn)行指示。</p><p> 關(guān)鍵詞:CCS;DSP;采集;壓縮;存儲與回放;</p><p> Abstract: The main purpose of this course design is familiar with the CCS IDE. Then in the CCS environment finish TMS320VC5402
3、 chip-based compression and storage of voice capture and playback. The course is designed first of all with A / D converter implementation from the MIC input speech signal acquisition, after compression to the DSP on-chi
4、p memory and off-chip RAM memory, after the memory is full, use the DSP to implement decompression, and from the SPEAKER output for playback output, and w</p><p> Keyword:CCS; DSP; acquisition; compressi
5、on; storage and playback</p><p><b> 1 引言</b></p><p> 隨著信息技術(shù)革命的深入和計算機(jī)技術(shù)的飛速發(fā)展,數(shù)字信號處理技術(shù)已經(jīng)逐漸發(fā)展成為一門關(guān)鍵的技術(shù)學(xué)科。而DSP芯片的出現(xiàn)則為數(shù)字信號處理算法的實現(xiàn)提供了可能。這一方面極大地促進(jìn)了數(shù)字信號處理技術(shù)的進(jìn)一步發(fā)展;另一方面,它也使數(shù)字信號處理的應(yīng)用領(lǐng)域得到了極大
6、的拓展。在國外DSP芯片已經(jīng)被廣泛地應(yīng)用于當(dāng)今技術(shù)革命的各個領(lǐng)域;在我國,DSP技術(shù)也正以極快的速度被應(yīng)用到科技和國民經(jīng)濟(jì)的各個領(lǐng)域。目前,在微電子技術(shù)發(fā)展的帶動下,DSP芯片的發(fā)展日新月異,DSP的功能日益強(qiáng)大,性能價格比不斷上升,開發(fā)手段不斷改進(jìn)。DSP芯片已經(jīng)完全走下了“貴族”的圣壇。DSP芯片已經(jīng)在通信與電子系統(tǒng)、信號處理系統(tǒng)、自動控制、雷達(dá)、軍事、航空航天、醫(yī)療、家用電器、電力系統(tǒng)等許多領(lǐng)域中得到了廣泛的應(yīng)用,而且新的應(yīng)用領(lǐng)域
7、在不斷地被發(fā)掘。</p><p> 1.1 課程設(shè)計目的</p><p> 在CCS環(huán)境下基于TMS320VC5402芯片的語音采集壓縮存儲與回放。通過這次課程設(shè)計,加深對CCS集成開發(fā)環(huán)境的以及DSP試驗系統(tǒng)箱的使用。鍛煉邏輯思維能力、動手能力以及獨立解決問題的能力,對以后更深入地學(xué)習(xí)和應(yīng)用數(shù)字信號處理及相關(guān)知識作準(zhǔn)備。</p><p> 1.2 課程設(shè)計的
8、要求</p><p> ?。?)了解DSP開發(fā)工具及其安裝過程</p><p> ?。?)熟悉DSP開發(fā)軟件CCS使用</p><p> ?。?)熟悉工程文件的建立方法、匯編程序開發(fā)調(diào)試過程</p><p> ?。?)熟悉常用C5402系列指令的用法</p><p> (5)在老師的指導(dǎo)下,獨立完成課程設(shè)計的全部內(nèi)容
9、,并按要求編寫課程設(shè)計論文,能正確闡述和分析設(shè)計和實驗結(jié)果。</p><p><b> 1.3 設(shè)計平臺</b></p><p> CCS是TI公司推出的用于開發(fā)DSP芯片的集成開發(fā)環(huán)境,它采用Windows風(fēng)格界面,集編輯、編譯、鏈接、軟件仿真、硬件調(diào)試以及實時跟蹤等功能于一體,極大地方便了DSP芯片的開發(fā)與設(shè)計,是目前使用最為廣泛的DSP開發(fā)軟件之一。<
10、/p><p><b> 2 系統(tǒng)硬件簡述</b></p><p> 2.1 TMS320VC5402芯片的基本原理</p><p> TMS320VC5402 數(shù)字信號處理器是TI公司為實現(xiàn)低功耗,高速實時信號處理而專門設(shè)計的16位定點數(shù)字信號處理器,采用改進(jìn)的哈佛結(jié)構(gòu),具有高度的操作靈活性和運行速度,適用于遠(yuǎn)程通信等實時嵌入式應(yīng)用的需要。廣
11、泛應(yīng)用于電子測試、電子設(shè)計、模擬仿真、通信工程中。</p><p> TMS320VC5402具有的主要優(yōu)點如下:</p><p> (1) 圍繞一組程序總線、三組數(shù)據(jù)總線和四組地址總線而建立的改進(jìn)哈佛結(jié)構(gòu),提高了系統(tǒng)的多功能性和操作的靈活性。</p><p> (2) 具有高度的并行性和專用硬件邏輯的CPU設(shè)計,提高了芯片的性能。</p>&l
12、t;p> (3) 具有完善的尋址方式和高度專業(yè)化指令系統(tǒng),更適用于快速算法的實現(xiàn)和高級語言編程的優(yōu)化。</p><p> (4) 模塊化結(jié)構(gòu)設(shè)計,使派生器件得到了更快的發(fā)展。</p><p> (5) 采用先進(jìn)的IC制造工藝,降低了芯片的功耗,提高了芯片的性能。</p><p> (6) 采用先進(jìn)的靜態(tài)設(shè)計技術(shù),進(jìn)一步降低了功耗,使芯片具有更強(qiáng)的應(yīng)用能
13、力。</p><p> TMS320VC5402主要有中央處理器CPU,特殊功能寄存器,數(shù)據(jù)存儲器RAM,程序存儲器ROM,I/O接口功能,串行口,主機(jī)通信接口HPI,定時器,中斷系統(tǒng)等10部分組成。</p><p><b> 各部分功能如下:</b></p><p> (1) 中央處理器(CPU)</p><p>
14、; 它是DSP芯片的核心,它有以下特點:</p><p> (a) 采用多總線結(jié)構(gòu),通過一組程序總線、三組數(shù)據(jù)總線和四組地址總線來實現(xiàn)。</p><p> (b) 40位算術(shù)邏輯運算單元ALU,包括一個40位的桶形移位寄存器和兩個獨立的40位累加器。</p><p> (c) 17×17位并行乘法器,與40位專用加法器相連,可用于進(jìn)行非流水線的單周
15、期乘法—累加運算。</p><p> (d) 比較、選擇、存儲單元,可用于Viterbi譯碼器的加法-比較-選擇運算。</p><p> (e) 指數(shù)編碼器,是一個支持單周期指令EXP的專用硬件??梢栽谝粋€周期內(nèi)計算40位累加器數(shù)值的指數(shù)。</p><p> (f) 配有兩個地址生成器,包括8個輔助寄存器和2個輔助寄存器運算單元。</p><
16、;p> (2)數(shù)據(jù)存儲器RAM</p><p> TMS320VC5402有兩種片內(nèi)數(shù)據(jù)存儲器:</p><p> (a) 雙尋址RAM:在一個指令周期內(nèi),可對其進(jìn)行兩次存取操作,一次讀出和一次寫入;</p><p> (b) 雙尋址RAM:在一個指令周期內(nèi),只能進(jìn)行一次存取操作。</p><p> (3) 程序存儲器ROM&
17、lt;/p><p> TMS320VC5402的程序存儲器可由ROM和RAM配置而成,程序空間可以定義在ROM上,也可以定義在ROM上。當(dāng)需要高速運行程序時,可以將片外ROM中的程序調(diào)入到片內(nèi)RAM中,以提高程序運行速度。降低對外部ROM的要求,增強(qiáng)系統(tǒng)整體抗干擾性能。</p><p><b> (4) I/O口</b></p><p> T
18、MS320VC5402芯片只有兩個通用I/O引腳BIO和XF,BIO主要用來監(jiān)測外部設(shè)備工作狀態(tài),而XF用來發(fā)信號給外部設(shè)備。 </p><p> 另外,芯片還配有主機(jī)接口HPI,同步串行口和64K字的I/O空間,HPI和串行口通過控制,用做通用I/O口使用。而64K字I/O空間可通過外加緩沖器或鎖存電路,配合外部I/O讀寫控制時序構(gòu)成片外外設(shè)的控制電路。</p><p><b&g
19、t; (5) 定時器</b></p><p> 定時器是一個軟件可編程計數(shù)器,用來產(chǎn)生定時中斷。定時器主要由定時寄存器TM,定時周期寄存器PRD,定時控制寄存器TCR及相應(yīng)的邏輯控制電路組成。其中寄存器TIM、PRD和TCR都是存儲映象寄存器,它們在數(shù)據(jù)存儲器中的地址分別為0024H、0025H和0026H。TIM是一個減1寄存器。PRD用來存放定時時間常數(shù)。TCR中包含定時器的控制位和狀態(tài)位。&
20、lt;/p><p><b> (6) 中斷系統(tǒng)</b></p><p> TMS320VC5402的中斷系統(tǒng)具有硬件中斷和軟件中斷。 </p><p> 硬件中斷:由外圍設(shè)備引起的中斷分為片外外設(shè)所引起的中斷和片內(nèi)外設(shè)所引起的中斷。</p><p> 軟件中斷:有程序指令I(lǐng)NTR、TRAP和RESET所引起的中斷。中
21、斷管理優(yōu)先級為11—16個固定級,有4種工作方式。</p><p> (7) 主機(jī)接口HPI</p><p> HPI是一個與主機(jī)通信的并行接口,主要用于DSP與其他總線或CPU進(jìn)行通信,信息可通過TMS320VC5402的片內(nèi)存儲器與主機(jī)進(jìn)行數(shù)據(jù)交換。不同型號的器件配置不同的HPI口,可分為8位標(biāo)準(zhǔn)HPI口、8位增強(qiáng)型HPI接口和16位增強(qiáng)型HPI接口。</p><
22、;p><b> (8) 指令系統(tǒng)</b></p><p> 支持單指令重復(fù)和塊指令重復(fù);支持存儲器塊傳送指令;支持32位長操作數(shù)指令;具有支持2操作數(shù)或3操作數(shù)的讀指令;具有能并行存儲和并行加載的算術(shù)指令;支持條件存儲指令及中斷快速返回指令。</p><p><b> (9) 片外圍電路</b></p><p>
23、; 具有軟件可編程等待狀態(tài)發(fā)生器;設(shè)有可編程分區(qū)轉(zhuǎn)換邏輯電路;帶有內(nèi)部震蕩器或外部時鐘源的片內(nèi)鎖相環(huán)發(fā)生器;支持全雙工操作的串行口,可進(jìn)行8位或16位串行通信。</p><p> 2.2 DSP芯片的基本結(jié)構(gòu)</p><p> DSP的主要基本結(jié)構(gòu)包括:</p><p> ?。?)哈佛結(jié)構(gòu)。哈佛結(jié)構(gòu)的主要特點是將程序和數(shù)據(jù)存儲在不同的存儲空間中,即程序存儲器和
24、數(shù)據(jù)存儲器是兩個相互獨立的存儲器,每個存儲器獨立編址,獨立訪問。與兩個存儲器相對應(yīng)的是系統(tǒng)中設(shè)置了程序總線和數(shù)據(jù)總線,從而使數(shù)據(jù)的吞吐率提高了一倍。由于程序和數(shù)據(jù)存儲在兩個分開的空間中,因此取指和執(zhí)行能完全重疊。</p><p> ?。?)流水線操作。流水線與哈佛結(jié)構(gòu)相關(guān)。DSP廣泛采用流水線,以減少指令執(zhí)行的時間,從而增強(qiáng)了處理器的處理能力。處理器可以并行處理2~4條指令,每條指令處于流水線的不同階段。TMS
25、320VC5402有6級流水線。本次軟件設(shè)計就充分利用DSP這一優(yōu)點。在設(shè)計FIR濾波器時,采用repeat指令重復(fù)執(zhí)行macd指令,可以大大提高數(shù)據(jù)的處理速度。macd指令執(zhí)行時需要三個周期,但用repeat指令執(zhí)行macd,進(jìn)入流水線后只要一個周期就可以執(zhí)行一次macd指令。</p><p> (3)多總線結(jié)構(gòu)。許多DSP內(nèi)部都采用了多總線結(jié)構(gòu),這樣保證在一個機(jī)器周期內(nèi),可以同時訪問數(shù)據(jù)和程序存儲空間。因此
26、,可以解決傳統(tǒng)芯片的總線沖突問題,使系統(tǒng)的速度和效率提高。</p><p> ?。?)專用的硬件乘法器。乘法速度越快,DSP的性能越高。由于具有專用的應(yīng)用乘法器,乘法可在一個指令周期內(nèi)完成。</p><p> ?。?)特殊的DSP指令。為了更好地滿足數(shù)字信號處理應(yīng)用的需要,在DSP指令系統(tǒng)中設(shè)計了一些特殊的DSP指令,以完成一些專門的運算。例如C5402DSP的FIRS指令,專門用于FIR
27、濾波運算。macd指令可以實現(xiàn)乘法累加運算,。</p><p> ?。?)快速的指令周期。哈佛結(jié)構(gòu)、流水線操作、專用的硬件乘法器、特殊的DSP指令,再加上集成電路的優(yōu)化設(shè)計,可使DSP的指令周期在納秒級。此次設(shè)計外部提供12MHZ的頻率,工作頻率通過C5402內(nèi)部提供PLL(可編程鎖相環(huán))倍頻外部頻率得到,具體在后面的硬件時鐘模塊里介紹。</p><p> 2.3 DSP芯片的基本特征&
28、lt;/p><p> 數(shù)據(jù)信號處理技術(shù)在近幾年得到迅速的發(fā)展,應(yīng)用非常廣泛,是因為有了如下的優(yōu)點:</p><p> ?。?)接口方便。DSP應(yīng)用系統(tǒng)與其他以現(xiàn)代數(shù)字技術(shù)為基礎(chǔ)的系統(tǒng)或設(shè)備都是相互兼容的,它與這樣的系統(tǒng)接口以實現(xiàn)某種功能要比模擬系統(tǒng)與這些系統(tǒng)接口要容易得多。</p><p> ?。?)編程方便。DSP應(yīng)用系統(tǒng)中的可編程DSP芯片可使設(shè)計人員在開發(fā)過程中
29、靈活方便地對軟件進(jìn)行修改和升級。</p><p> ?。?)穩(wěn)定性好。DSP應(yīng)用系統(tǒng)以數(shù)字處理為基礎(chǔ),受環(huán)境溫度以及噪聲的影響較小、可靠性高。</p><p> ?。?)精度高。16位數(shù)字系統(tǒng)可以達(dá)到級的精度。</p><p> ?。?)可重復(fù)性好。模擬系統(tǒng)的性能受元器件參數(shù)性能變化的影響比較大,而數(shù)字系統(tǒng)基本不受影響,因此數(shù)字系統(tǒng)便于測試、調(diào)試和大規(guī)模生產(chǎn)。<
30、;/p><p> ?。?)集成方便。DSP應(yīng)用系統(tǒng)中的數(shù)字部件有高度的規(guī)范性,便于大規(guī)模集成。</p><p> 2.4 語音采集與輸出模塊</p><p> 語音采集與輸出模塊采用的是TI公司推出的一款高性能的立體聲音頻Codec芯片TLC320AD50C,內(nèi)置耳機(jī)輸出放大器,支持MIC和LINE IN兩種輸入方式(二選一),且對輸入和輸出都具有可編程增益調(diào)節(jié)。A
31、D50的模數(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。與此同時,AD50還具有很低的能耗,回放模式下功率僅為23mW,省電模式下更是小于15uW。由于具有上述優(yōu)點,使得AD50是一款非常理想的音頻模擬I/O器件,可以很好的應(yīng)用
32、在隨聲聽(如CD,MP3……)、錄音機(jī)等數(shù)字音頻領(lǐng)域[2]。由TLC320AD50C組成的語音輸入與輸出模塊不僅采樣率高最高可達(dá)96K,且外圍電路簡單,性價比高。</p><p> 采用DSP可以直接對PCM編碼后的語音信號進(jìn)行μ律和A律壓縮。圖2.1是DSP硬件實現(xiàn)數(shù)據(jù)壓縮解壓的簡單流程,DSP將傳輸來的壓縮后的數(shù)據(jù)進(jìn)行解壓成16位或者32位,然后對解壓后的數(shù)據(jù)進(jìn)行分析、處理,最后將處理后的數(shù)據(jù)按照要求壓縮成
33、8位的數(shù)據(jù)格式輸出到相應(yīng)設(shè)備,供其他設(shè)備讀取。</p><p> 圖2.1 數(shù)據(jù)壓縮解壓流程</p><p> 圖2.2是DSP將數(shù)據(jù)解壓的值,DSP將壓縮的8位數(shù)據(jù)解壓成16位的DSP通用數(shù)據(jù)格式,其中高13位為解壓后的數(shù)據(jù),低3位補(bǔ)0。這是因為6.711的A律壓縮只能對13位數(shù)據(jù)操作。DSP將解壓后的數(shù)據(jù)放在緩沖串口的發(fā)送寄存器中,只要運行發(fā)送指令,緩沖串口就會將數(shù)據(jù)發(fā)送出去。緩沖
34、串口對接收數(shù)據(jù)的解壓過程和壓縮過程完全相反。圖2.3是μ律數(shù)據(jù)解壓的示意圖。</p><p> 15 3 2 0</p><p><b> 發(fā)送緩沖器 </b></p><p><b> A律</b></p><p> 圖
35、2.2 A律數(shù)據(jù)解壓</p><p> 15 2 1 0</p><p><b> 發(fā)送緩沖器</b></p><p><b> B律</b></p><p> 圖2.3 μ律數(shù)據(jù)解壓</p><p&g
36、t; DSP內(nèi)部的緩沖串口(McBSPs)帶有硬件實現(xiàn)的μ律/A律壓縮解壓,只需要在相應(yīng)寄存器中進(jìn)行設(shè)置就可以了。</p><p> 在進(jìn)行A律壓縮時,采樣后的12位數(shù)據(jù),默認(rèn)其最高位為符號位,壓縮時要保持最高位即符號位不變,原數(shù)據(jù)的后11位要壓縮成7位。這7位碼由3位段落碼和4位段內(nèi)碼組成。具體的壓縮變換后的數(shù)據(jù)根據(jù)后11位數(shù)據(jù)大小決定。除對串行口數(shù)據(jù)實現(xiàn)壓擴(kuò)處理外,這套硬件在McBSP不使用時還可以當(dāng)作一
37、個特殊的處理單元對內(nèi)部數(shù)據(jù)實現(xiàn)壓擴(kuò)處理,他有兩種實現(xiàn)方法。</p><p> 法一:當(dāng)串行口的發(fā)送和接受部分都處于復(fù)位狀態(tài)時,DRR1和DXR1內(nèi)部通過壓擴(kuò)邏輯連接在一起,數(shù)據(jù)從DXR1寫入并根據(jù)XCOMPAND處理,然后根據(jù)RCOMPAND再處理,在4個CPU時鐘后從DRR1中讀出數(shù)據(jù)。該處理比軟件實現(xiàn)快,不利之處在于處理完后沒有同步信息通知CPU和DMA。</p><p> 法二:
38、在數(shù)據(jù)環(huán)回模式下,McBSP也實現(xiàn)了一種內(nèi)連。數(shù)據(jù)處理與第一種方法相同,但它可以提供中斷信號(或同步事件)給CPU(或DMA)。這里數(shù)據(jù)處理的時間是根據(jù)串行口的比特律確定的。</p><p> 另外,在通常情況下McBSP先傳輸信號的高位后傳輸?shù)臀?,但是在字長為8比特的數(shù)據(jù)傳輸時,McBSP提供了比特倒序的功能,即可以先傳輸?shù)臀缓髠鬏敻呶弧?lt;/p><p> 在本實驗中,我們通過軟件編
39、程來完成線性碼轉(zhuǎn)換成A律。</p><p> 語音信號通常是小信號概率大,大信號出現(xiàn)的概率小,為提高小信號時的量化信躁比,壓縮比特速率,可為非線性量化。語音壓縮是把16位的數(shù)據(jù)比特轉(zhuǎn)化為8位數(shù)據(jù)比特,從而到達(dá)語音壓縮的目的。</p><p> 在主程序中通過A/D抽樣量化,可以得到16位的線性編碼,再由編碼表通過軟件計算得到8位A律編碼,其中最高位為符號位,第6位到第4位為段落碼,低4
40、位為段內(nèi)碼。將8位的壓縮結(jié)果存儲到系統(tǒng)RAM中進(jìn)行緩存,根據(jù)抽樣率、語音存儲時間以及系統(tǒng)RAM的容量設(shè)置語音存儲緩沖區(qū)的大小,待緩沖區(qū)存滿后,將緩沖區(qū)內(nèi)的數(shù)據(jù)進(jìn)行解壓縮,然后輸出到SPEAKER接口輸出端。若使用A/D轉(zhuǎn)換器,必須首先對A/D轉(zhuǎn)換器進(jìn)行初始化設(shè)置,即設(shè)置A/D轉(zhuǎn)換器的工作模式、輸入增益以及抽樣頻率等。</p><p> 3 硬件電路接口設(shè)計</p><p><b&g
41、t; 3.1 設(shè)計流程</b></p><p> 在對語音進(jìn)行采集時,先要初始化DSP及其串口和A/D和D/A轉(zhuǎn)換器,待所有的都進(jìn)行初始化后,就可以進(jìn)行語音的采集,其后續(xù)的步驟如下面的流程圖所示:</p><p><b> 圖3.1設(shè)計流程圖</b></p><p> 3.2 創(chuàng)建工程文件及編寫程序</p>&
42、lt;p> 利用CCS創(chuàng)建一個新工程,然后向該工程中添加源代碼文件和庫文件。</p><p> 首先在CCS的安裝目錄e:\ccs的文件夾e:\ccs\myprojects\下建立一個新的文件夾,命名為1111。并將所有的源代碼全部拷貝到該新建的文件夾中。然后雙擊桌面上圖標(biāo),在出現(xiàn)的對話框中選擇C5402 simulator模式下,然后點擊“確定”按鈕即可進(jìn)入“code composer studio”
43、界面。從CCS的Project菜單下選擇子菜單New。將出現(xiàn)Project Creation對話框。在對話框中“Project Name”處輸入1111,“Location”處輸入”myproject\1111\”,在“Project”處選擇Executable(.out)類型,在“Target”中選擇CCS所配置的TMS320C54XX 類型的DSP。最后單擊“完成”即可。創(chuàng)建好的工程的參數(shù)如下圖所示:</p><
44、p> 圖3.2工程創(chuàng)建的參數(shù)</p><p> 通過上述步驟Code Composer Studio就建立了一個工程文件,名為1111.pjt,該工程文件用于存儲工程配置以及在工程中所用到的若干文件??稍凇肮こ添椖坑^察窗口(Project view)”處看到。</p><p> 在CCS中選擇菜單Project中的1111.pjt??然后單擊右鍵選擇“add Files to
45、Project”,然后選文件yuyin.c,并單擊Open。在CCS中選擇菜單Project,選中add Files to Project,并在文件類型選框中選匯編源文件(*.a*, *.s*),然后選vectors.asm 和 load.asm 這兩個文件并單擊Open。這些文件中包含了設(shè)置復(fù)位RESET中斷到程序的C入口c_int00的一些匯編指令。對于更加復(fù)雜的程序,可在vectors.asm 文件中定義更多的中斷向量。也可利用D
46、SP/BIOS來自動定義所有的中斷向量。</p><p> 在CCS中選擇菜單Project,選擇add Files to Project,并在文件類型選框中選擇鏈接命令文件(*.cmd),然后選yuyin.cmd并單擊Open,該命令文件將匯編程序的段映射到DSP的存儲空間中。</p><p> 在CCS中選擇菜單Project??選擇add Files to Project,進(jìn)入編
47、譯庫文件夾,在文件類型選框中選擇目標(biāo)文件類型和庫文件類型(*.o*, *.lib),為所配置的目標(biāo)DSP選rts.lib文件并單擊Open。該庫文件為目標(biāo)DSP提供了運行時間(runtime)支持。</p><p> 在工程視圖窗口,用鼠標(biāo)右鍵單擊工程文件1111.pjt 并在快捷菜單中選擇 Scan All Dependencies。這時.h應(yīng)出現(xiàn)于工程視圖窗口中的庫(Libraries)文件夾中。單擊Pro
48、ject左邊的小加號+,將展開工程列表:1111.pjt,Libraries,以及 Source。該列表即為工程視圖。無需手工向工程中加入include文件,因為CCS將會在編譯過程中自動找到這些文件。編譯之后在工程視圖中將出現(xiàn)這些include文件。添加好后的文件如下圖所示:</p><p> 圖3.3添加好的工程文件</p><p> 3.3編譯并運行程序</p>&
49、lt;p> 編譯并運行程序的步驟: 選擇Project點擊Rebuild All 或單擊工具按鈕 就可以運行程序。</p><p> (1)在默認(rèn)情況下,將當(dāng)前工程目錄下的debug子目錄中生成.out文件。通過CCS工具條可改變生成文件的存放位置。</p><p> (2)選File?Load Program,并在對話框中選剛剛編譯生成的文件1111.out,單擊Op
50、en打開。(默認(rèn)在目錄e:\ccs\myprojects\1111\Debug\ 文件夾下)這樣CCS就將程序載入目標(biāo)DSP,并打開一個反匯編窗口,顯示出相應(yīng)的反匯編指令。CCS也將在窗口底部自動打開一個標(biāo)簽區(qū)域來顯示程序送往stdout的輸出。</p><p> (1)選View?Mixed Source/ASM,將同時看到c源代碼和匯編結(jié)果代碼。</p><p> (2)在混合模式
51、窗口中單擊一條匯編偽指令本身,并按F1鍵,CCS將搜索該條指令的幫助。</p><p> (3)選Debug?Go Main開始從main 函數(shù)處執(zhí)行程序。程序暫停在main處,并用黃色的箭頭標(biāo)識。</p><p> (4)選Debug?Run或單擊工具按鈕 來運行程序。</p><p> (5)選Debug?Halt來暫停程序執(zhí)行。</p>
52、<p> (6)從菜單View中選Mixed Source/ASM。將看到不帶相應(yīng)匯編的c代碼。從而可以方便地進(jìn)行下一個任務(wù):修改程序選項,修正語法錯誤。</p><p> 通過以上步驟,在運行project—》Rebuilt All后得出下圖3.4結(jié)果:</p><p><b> 圖3.4運行結(jié)果</b></p><p>
53、 從上圖可以看出沒有錯誤,故該設(shè)計的源程序代碼是正確的。接下來可以進(jìn)行下面的檢驗以驗證該課程設(shè)計是否正確。</p><p><b> 4實驗檢驗</b></p><p> 點擊工具欄上面的“view”選擇“watch window”然后再輸入“buffer”后就可以出現(xiàn)此數(shù)組的值,其結(jié)果如下圖所示:</p><p><b>
54、圖4.1數(shù)組的值</b></p><p> 再在“view”中選擇“memory”可以看到存儲器中的數(shù)據(jù),其結(jié)果如下圖所示:</p><p> 圖4.2存儲器中的值</p><p> 從上圖中我們可以找到存儲器中的任何內(nèi)容,而且便于觀察壓縮前和壓縮后的存儲內(nèi)容是否是一樣的,這也可以用來驗證設(shè)計的程序是否正確。</p><p>
55、; 仍然在“view”中選擇“graph”然后點擊“time frequentcy”可以看到語音輸入的波形,壓縮后的波形以及解壓后的波形圖。在觀察波形的時候可以加入斷點,然后按animate動態(tài)顯示,這更便于觀察波形。所有的輸出的波形圖如下圖所示:</p><p> 圖4.3語音采集的輸入波形</p><p> 圖4.4語音壓縮后的波形</p><p> 圖
56、4.5語音解壓后的波形</p><p> 從上面的三幅仿真結(jié)果圖可以得到輸入的波形圖與壓縮后的波形圖相比,壓縮后的波形比輸入的波形要尖銳一些,而解壓后的波形圖與輸入的波形相比基本上是一樣的,也就是說該課程設(shè)計是成功的。</p><p> 5出現(xiàn)的問題和解決方法</p><p> 在本次課程設(shè)計的過程中,主要遇到的問題有這樣一些方面:</p>&l
57、t;p> 首先沒有找到合適的CCS軟件進(jìn)行安裝,安裝過程中經(jīng)常的出錯。其次是對CCS軟件里面的各個按鈕不熟悉。對其功能也不是很了解,在編寫程序過程中遇到很多問題,</p><p> 程序編寫后調(diào)試過程不知道問題的所在,并且運行后,出現(xiàn)很多的錯誤。最后是對于調(diào)試成功后出來的結(jié)果不能進(jìn)行正確的認(rèn)識。</p><p> 對于以上出現(xiàn)的問題經(jīng)過認(rèn)真的學(xué)習(xí)思考得出如下解決方法:</
58、p><p> 通過看書自己學(xué)習(xí),以及老師的講解,對軟件的面板的一些基本按鈕有了認(rèn)識。并且可以連貫的使用。在認(rèn)真的看書以及老師的檢查后,基本的編程水平得到提升。按照書本介紹的辦法,點擊問題的所在行后,認(rèn)真檢查發(fā)現(xiàn)許多字母打錯。通過老師的認(rèn)真講解以及自己的思考基本懂了DSP實驗系統(tǒng)的作用,以及相應(yīng)芯片的功能。對所有的程序的添加以及運行都能很好的得到把握。通過向同學(xué)學(xué)習(xí)和自己找資料最終能夠很好的分析所得結(jié)果。</p
59、><p> 通過出現(xiàn)問題到解決問題這一過程,我覺得學(xué)習(xí)的過程是相互討論共同進(jìn)步的,多多討論課題中遇到的問題,可以鞏固我們的知識掌握能力,增加熟練運用度。這更加有利于以后的課程設(shè)計。對以后的學(xué)習(xí)打好良好的基礎(chǔ)。</p><p><b> 6結(jié)束語</b></p><p> 課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉
60、實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程。隨著科學(xué)技術(shù)發(fā)展的日新月異,時代對于學(xué)生的綜合素質(zhì)要求將會越來越高,進(jìn)行課程設(shè)計,將有利于提高學(xué)生們綜合素質(zhì)的提高。</p><p> 從本次課程設(shè)計的中心來看,課題是希望通過對語音信號的采集壓縮存儲與回放而將相應(yīng)的結(jié)果顯示出來,這里就是指對程序的編寫,調(diào)試等。在這里我們只要編寫正確的程序,經(jīng)過調(diào)試,仿真硬件調(diào)試就可以對其進(jìn)行處理了。</p&g
61、t;<p> 在這里,用到了處理數(shù)字信號的強(qiáng)有力工具CCS軟件。在課設(shè)過程中,我學(xué)會了如何正確的安裝CCS軟件,以及如何配置相應(yīng)的程序。對DSP實驗系統(tǒng)箱有了全面的了解,最重要的是對DSP實驗系統(tǒng)箱上的芯片的分類,用處等有了全面的了解,充分的認(rèn)識了DSP的作用,與此同時我還學(xué)會了使用CCS一些基本函數(shù),增加了進(jìn)一步學(xué)習(xí)CCS軟件的興趣。同時,通過本次課程設(shè)計,鍛煉了我的動手能力,和提高了我分析問題,解決問題的能力。
62、60;</p><p> 整個實驗過程中,我在不斷的查閱資料和開動腦筋過程中,鍛煉了我的資料采集能力,也鍛煉了我的分析整理能力,為以后作畢業(yè)設(shè)計打下了基礎(chǔ);同樣在實驗過程中我遇到很多困難,而這些困難則鍛煉了我的耐心和分析解決問題的能力。</p><p> 總之通過這次的實驗,讓我認(rèn)識到了自己的不足,同時又通過這次的實驗讓我們學(xué)到了讓我們受用一生的知識。雖然在設(shè)計中遇到了許多原理問題,但
63、是在老師的悉心指導(dǎo)下,終于迎刃而解。同時,我也在老師的身上學(xué)到了許多有用的知識,使我受益匪淺,在此我表示感謝!</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 周霖.DSP系統(tǒng)設(shè)計與實現(xiàn)[M].北京:電子工業(yè)出版社,2005.</p><p> [2] 蘇濤. DSP實用技術(shù)[M].西安:西安電子科技大學(xué)出版社,20
64、05.</p><p> [3] 彭啟宗.TMS320C54xx實用教程[M].成都:科技大學(xué)出版社,2004.</p><p> [4] 劉益成.DSP程序設(shè)計與開發(fā)[M].北京:航天大學(xué)出版社,2001.</p><p> [5] 戴明楨、周建江.TMs320C54x DSP 結(jié)構(gòu)原理及應(yīng)用M].北京:航空航天出版社</p><p>
65、;<b> 附件</b></p><p> 存儲器的分配(5402.cmd)</p><p><b> MEMORY</b></p><p><b> {</b></p><p> PAGE 0: VECS: origin = 0080h, length =
66、0080h /* Internal Program RAM */</p><p> PRAM: origin = 7600h, length = 8000h /* Internal Program RAM */</p><p> PAGE 1: SCRATCH: origin = 0060h, length = 0020h /* Scratch Pad Data RAM
67、 */</p><p> DMARAM: origin = 0C00h, length = 0300h /* DMA buffer */</p><p> DATA: origin = 1100h, length = 0080h /* Internal Data RAM */</p><p> STACK: origin = 118
68、0h, length = 0560h /* Stack Memory Space */</p><p> INRAM: origin = 1900h, length = 0100h /* Internal Data RAM */</p><p> HPRAM0: origin = 1A00h, length = 0002h /* HPI memory acce
69、ssible by Host and DSP */</p><p> HPRAM1: origin = 1A02h, length = 0280h /* HPI memory accessible by Host and DSP */</p><p> HPRAM2: origin = 1C82h, length = 0280h /* HPI memory accessib
70、le by Host and DSP */</p><p> EXRAM: origin = 1F10h, length = 9000h /* External Data RAM */</p><p><b> }</b></p><p><b> SECTIONS</b></p><
71、;p><b> {</b></p><p> .cinit > PRAM PAGE 0</p><p> .text > PRAM PAGE 0</p><p> .vectors > VECS PAGE 0</p><p> init_var > PRAM
72、 PAGE 0</p><p> detect > PRAM PAGE 0</p><p> vrcprg > PRAM PAGE 0</p><p> matprg > PRAM PAGE 0</p><p> .stack > STACK PAGE 1</p><
73、p> .trap > SCRATCH PAGE 1</p><p> .const > EXRAM PAGE 1</p><p> .data > EXRAM PAGE 1</p><p> .bss > EXRAM PAGE 1</p><p> .cio &
74、gt; EXRAM PAGE 1</p><p> .switch > EXRAM PAGE 1</p><p> tables > EXRAM PAGE 1</p><p> var > EXRAM PAGE 1</p><p> svctab > EXRAM PAGE 1
75、 /* SS_V LSP table */</p><p> vctab > EXRAM PAGE 1 /* V LSP table */</p><p> uvctab > EXRAM PAGE 1 /* UV LSP table */</p><p> cuvtab > EXRA
76、M PAGE 1 /* Stochastic codebook */</p><p> cdbktab > EXRAM PAGE 1 /* various codebook tables*/</p><p> logtab > EXRAM PAGE 1 /* table for log2 */</p>
77、<p> powtab > EXRAM PAGE 1 /* table for pow2 */</p><p> hamtab > EXRAM PAGE 1 /* table for hamming */</p><p> lgwtab > EXRAM PAGE 1 /* table
78、 for lag window */</p><p> acostab > EXRAM PAGE 1 /* table for arccos */</p><p> sqrtab > EXRAM PAGE 1 /* table for square root */</p><p> acbtab
79、> EXRAM PAGE 1 /* table for thresholds in acb */</p><p> pm03tab > EXRAM PAGE 1 /* table for x^(-0.3) computation */</p><p> costab > EXRAM PAGE 1 /* t
80、able for cosine */</p><p> V23 > INRAM PAGE 1</p><p> FSK > INRAM PAGE 1</p><p> hpibuff0 > HPRAM0 PAGE 1</p><p> hpibuff1 > HPRAM1 PAGE 1
81、</p><p> hpibuff2 > HPRAM2 PAGE 1</p><p> dma_buff > DMARAM PAGE 1</p><p><b> }</b></p><p><b> /*主程序設(shè)計*/</b></p><p> /
82、*語音采集及回放程序*/</p><p> /*用A律進(jìn)行壓縮及解壓*/</p><p> /*采用AD50進(jìn)行A/D,D/A轉(zhuǎn)換 */ </p><p> /*燈循環(huán)閃爍程序開始*/</p><p><b> /*L0:錄音*/</b></p>
83、;<p><b> /*L1:放音*/</b></p><p> #include <type.h> /* 頭文件*/</p><p> #include <board.h></p><p> #include <codec.h></p>
84、<p> #include <mcbsp54.h></p><p> #defineSIGN_BIT(0x80)/* Sign bit for a A-law byte. */</p><p> #defineQUANT_MASK(0xf)/* Quantization field mask. */</p><p> #
85、defineNSEGS(8) /* Number of A-law segments. */</p><p> #defineSEG_SHIFT(4) /* Left shift for segment number. */</p><p> #defineSEG_MASK(0x70)/* Segment field mask. */</p&
86、gt;<p> void delay(s16 period);</p><p> void led(s16 cnt);</p><p> void initcodec(void);</p><p> void flashenable(void);</p><p> unsigned char data2alaw(s16
87、 pcm_val);</p><p> int alaw2data(unsigned chara_val);</p><p> static int search(int val,short*table,int size);</p><p> HANDLE hHandset;</p><p><b> s16 data;
88、</b></p><p> s16 data1;</p><p><b> u16 i=0;</b></p><p> u16 temp1;</p><p><b> u16 j=0;</b></p><p> u16 k,l=0;</p>
89、<p><b> u8 temp2;</b></p><p> u16 buffer[20000];</p><p> static short seg_end[8]={0x1F,0x3F,0x7F,0xFF,0x1FF,0x3FF,0x7FF,0xFFF};</p><p> void main()</p>
90、<p> { if (brd_init(100))</p><p><b> return;</b></p><p> led(2); //閃燈兩次</p><p> initcodec(); //初始化codec</p><p> flas
91、henable(); //選擇片外FLASH為片外存儲器 </p><p> delay(100);</p><p> brd_led_toggle(BRD_LED0);</p><p> for(i=0x9000;i<0xefff;i++)</p><p><b> { </
92、b></p><p> REG_WRITE(i,*(volatile u16*)DRR1_ADDR(HANDSET_CODEC));</p><p> delay(20);</p><p><b> }</b></p><p> brd_led_toggle(BRD_LED1);</p>&l
93、t;p> delay(200);</p><p> for(i=0x9000;i<0xefff;i++)</p><p><b> {</b></p><p> *(volatile u16*)DXR1_ADDR(HANDSET_CODEC)=REG_READ(i);</p><p> delay(
94、20); }</p><p> brd_led_toggle(BRD_LED2) </p><p><b> while (1)</b></p><p> { while (!MCBSP_RRDY(HANDSET_CODEC)) {}; //等待接收handset處的采樣</p><p> brd_l
95、ed_toggle(BRD_LED0);</p><p> data = *(volatile u16*)DRR1_ADDR(HANDSET_CODEC); //從handset處讀取采樣</p><p> temp1=data2alaw(data); //對采樣進(jìn)行a律壓縮</p><p> i=i+1; &
96、lt;/p><p> if(i%2==1)</p><p> {buffer[j]=(temp1<<=8);}</p><p><b> else</b></p><p> {buffer[j]=(buffer[j]|temp1); </p><p> j++; //j加1
97、</p><p><b> }</b></p><p> if(i>=40000) </p><p><b> {i=0;}</b></p><p> if(j>=20000)</p><p><b> {j=0;</b></
98、p><p> brd_led_disable(BRD_LED0); </p><p> brd_led_toggle(BRD_LED1); </p><p> //點亮二極管1 表示放音開始</p><p> /* 放音部分 *
99、/</p><p> for(k=0;k<40000;k++)</p><p><b> {</b></p><p> if(k%2==0)</p><p><b> {</b></p><p> temp2=(buffer[l]>>8)&
100、0x0ff;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> temp2=buffer[l]&0x0ff;</p><p><b> l
101、++;</b></p><p><b> }</b></p><p> if(l>=20000)</p><p><b> l=0; </b></p><p> data1=alaw2data(temp2); // a律解壓</p><p>
102、 while (!MCBSP_XRDY(HANDSET_CODEC)) {}; </p><p> *(volatile u16*)DXR1_ADDR(HANDSET_CODEC) = data1; //將數(shù)據(jù)寫入D/A轉(zhuǎn)換器</p><p><b> }</b></p><p> /* 放音結(jié)束
103、 */</p><p> brd_led_toggle(BRD_LED0);</p><p> brd_led_toggle(BRD_LED1); }</p><p><b> } </b></p><p> }
104、 //主程序結(jié)束</p><p> /* 子函數(shù) */ </p><p> /*******延時******/&
105、lt;/p><p> void delay(s16 period)</p><p><b> {</b></p><p><b> int i, j;</b></p><p> for(i=0; i<period; i++)</p><p><b> {
106、</b></p><p> for(j=0; j<period>>1; j++);</p><p><b> }</b></p><p><b> }</b></p><p> /*******閃燈******/</p><p> vo
107、id led(s16 cnt)</p><p> {while ( cnt-- )</p><p> {brd_led_toggle(BRD_LED0); //切換LED指示燈0的顯示狀態(tài)</p><p> delay(1000);</p><p> brd_led_toggle(BRD_LED1);</p>
108、;<p> delay(1000);</p><p> brd_led_toggle(BRD_LED2);</p><p> delay(1000);</p><p><b> }</b></p><p><b> }</b></p><p> /*
109、****初始化codec**/</p><p> void initcodec(void)</p><p> {/* Open Handset Codec 獲取設(shè)置codec的句柄*/</p><p> hHandset = codec_open(HANDSET_CODEC); / Acquire handle to codec </p&g
110、t;<p> /* Set codec parameters */</p><p> codec_dac_mode(hHandset, CODEC_DAC_15BIT); // DAC in 15-bit mode </p><p> codec_adc_mode(hHandset, CODEC_ADC_15BIT); // ADC in 15-bi
111、t mode </p><p> codec_ain_gain(hHandset, CODEC_AIN_6dB); // 6dB gain on analog input to ADC </p><p> codec_aout_gain(hHandset, CODEC_AOUT_MINUS_6dB); </p><p> // -6dB gain on
112、 analog output from DAC </p><p> codec_sample_rate(hHandset,SR_8000); // 8KHz sampling rate </p><p><b> }</b></p><p> /*****設(shè)置flash****/</p><p&g
113、t; void flashenable(void)</p><p><b> {</b></p><p> CPLD_CTRL2_REG|=0x0010;</p><p> CPLD_DMCTRL_REG|=0x0040;</p><p><b> }</b></p><
114、;p> /*****a律壓縮******/</p><p> unsigned char data2alaw(s16 pcm_val) </p><p><b> {</b></p><p> intmask;</p><p><b> intseg;</b><
115、;/p><p> unsigned charaval;</p><p> if (pcm_val >= 0) </p><p><b> {</b></p><p> mask = 0xD5; // 標(biāo)記 (7th) bit = 1</p><p&g
116、t;<b> } </b></p><p><b> else </b></p><p><b> {</b></p><p> mask = 0x55; // 標(biāo)記 bit = 0 </p><p> pcm_va
117、l = -pcm_val;</p><p><b> }</b></p><p> // Convert the scaled magnitude to segment number. </p><p> seg = search(pcm_val, seg_end, 8); </p><p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- dsp課程設(shè)計--基于tm320vc5402語音采集壓縮存儲與回放
- 基于TMS320VC5402的靜態(tài)圖像采集與壓縮.pdf
- dsp課程設(shè)計-語音采集壓縮存儲與回放
- 基于DSP芯片TMS320VC5402的開發(fā)系統(tǒng)設(shè)計.pdf
- 基于TMS320VC5402的語音檢測器.pdf
- 基于tms320vc5402的led顯示系統(tǒng)設(shè)計
- 基于TMS320VC5402的語音處理系統(tǒng)的研究與設(shè)計.pdf
- 基于TMS320VC5402的高速信號采集系統(tǒng)的設(shè)計.pdf
- 基于tms320vc5402的g.721語音壓縮系統(tǒng)的構(gòu)建和實現(xiàn)
- 基于TMS320VC5402 DSP的信息加密系統(tǒng)的研究.pdf
- dsp課程設(shè)計報告----語音壓縮、存儲與回放
- 基于TMS320VC5402的DTMF信號檢測系統(tǒng).pdf
- 基于TMS320VC5402的激光測距儀設(shè)計.pdf
- dsp課程設(shè)計---語音的壓縮、存儲和回放
- dsp課程設(shè)計報告--基于tms320vc5502的語音信號采集系統(tǒng)設(shè)計
- 基于tms320vc5402的g.729語音編解碼器研究
- 畢業(yè)設(shè)計---基于tms320vc5402的fir濾波器設(shè)計與實現(xiàn)
- g.723.1標(biāo)準(zhǔn)在tms320vc5402上的實現(xiàn)
- 外文翻譯--- - 基于tms320vc5402的自適應(yīng)fir濾波器的設(shè)計
- 基于TMS320VC5402的移頻軌道信號參數(shù)檢測儀的設(shè)計.pdf
評論
0/150
提交評論