版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目 錄</b></p><p> 摘要………………………………………………………………………Ⅰ</p><p><b> 第1章 概述1</b></p><p><b> 1.1設(shè)計(jì)目的1</b></p><p><b>
2、1.2設(shè)計(jì)要求1</b></p><p> 第2章 系統(tǒng)硬件設(shè)計(jì)方案2</p><p> 2.1 TMS320VC5402芯片的基本原理2</p><p> 2.2 語音采集與輸出模塊4</p><p> 第3章 軟件設(shè)計(jì)與系統(tǒng)仿真5</p><p> 3.1軟件設(shè)計(jì)流程圖5</
3、p><p> 3.2 CCS操作過程5</p><p><b> 3.3系統(tǒng)仿真5</b></p><p> 第4章 課程設(shè)計(jì)總結(jié)8</p><p><b> 參考文獻(xiàn)9</b></p><p> 附錄:源程序代碼10</p><p>
4、<b> 第1章 概述</b></p><p><b> 1.1設(shè)計(jì)目的</b></p><p> 在CCS環(huán)境下基于TMS320VC5402芯片的語音采集壓縮存儲(chǔ)與回放。通過這次課程設(shè)計(jì),加深對CCS集成開發(fā)環(huán)境的以及DSP試驗(yàn)系統(tǒng)箱的使用。鍛煉邏輯思維能力、動(dòng)手能力以及獨(dú)立解決問題的能力,對以后更深入地學(xué)習(xí)和應(yīng)用數(shù)字信號處理及相關(guān)知識(shí)作
5、準(zhǔn)備。</p><p><b> 1.2設(shè)計(jì)要求</b></p><p> ?。?)了解DSP開發(fā)工具及其安裝過程</p><p> ?。?)熟悉DSP開發(fā)軟件CCS使用</p><p> ?。?)熟悉工程文件的建立方法、匯編程序開發(fā)調(diào)試過程</p><p> ?。?)熟悉常用C5402系列指令
6、的用法</p><p> (5)在老師的指導(dǎo)下,獨(dú)立完成課程設(shè)計(jì)的全部內(nèi)容,并按要求編寫課程設(shè)計(jì)論文,能正確闡述和分析設(shè)計(jì)和實(shí)驗(yàn)結(jié)果。</p><p> 第2章 系統(tǒng)硬件設(shè)計(jì)方案</p><p> 2.1 TMS320VC5402芯片的基本原理</p><p> TMS320VC5402 數(shù)字信號處理器是TI公司為實(shí)現(xiàn)低功耗,高速實(shí)時(shí)
7、信號處理而專門設(shè)計(jì)的16位定點(diǎn)數(shù)字信號處理器,采用改進(jìn)的哈佛結(jié)構(gòu),具有高度的操作靈活性和運(yùn)行速度,適用于遠(yuǎn)程通信等實(shí)時(shí)嵌入式應(yīng)用的需要。廣泛應(yīng)用于電子測試、電子設(shè)計(jì)、模擬仿真、通信工程中。</p><p> TMS320VC5402具有的主要優(yōu)點(diǎn)如下:</p><p> (1) 圍繞一組程序總線、三組數(shù)據(jù)總線和四組地址總線而建立的改進(jìn)哈佛結(jié)構(gòu),提高了系統(tǒng)的多功能性和操作的靈活性。<
8、;/p><p> (2) 具有高度的并行性和專用硬件邏輯的CPU設(shè)計(jì),提高了芯片的性能。</p><p> (3) 具有完善的尋址方式和高度專業(yè)化指令系統(tǒng),更適用于快速算法的實(shí)現(xiàn)和高級語言編程的優(yōu)化。</p><p> (4) 模塊化結(jié)構(gòu)設(shè)計(jì),使派生器件得到了更快的發(fā)展。</p><p> (5) 采用先進(jìn)的IC制造工藝,降低了芯片的功耗
9、,提高了芯片的性能。</p><p> (6) 采用先進(jìn)的靜態(tài)設(shè)計(jì)技術(shù),進(jìn)一步降低了功耗,使芯片具有更強(qiáng)的應(yīng)用能力。</p><p> TMS320VC5402主要有中央處理器CPU,特殊功能寄存器,數(shù)據(jù)存儲(chǔ)器RAM,程序存儲(chǔ)器ROM,I/O接口功能,串行口,主機(jī)通信接口HPI,定時(shí)器,中斷系統(tǒng)等10部分組成。</p><p><b> 各部分功能如
10、下:</b></p><p> (1) 中央處理器(CPU)</p><p> 它是DSP芯片的核心,它有以下特點(diǎn):</p><p> (a) 采用多總線結(jié)構(gòu),通過一組程序總線、三組數(shù)據(jù)總線和四組地址總線來實(shí)現(xiàn)。</p><p> (b) 40位算術(shù)邏輯運(yùn)算單元ALU,包括一個(gè)40位的桶形移位寄存器和兩個(gè)獨(dú)立的40位累加器
11、。</p><p> (c) 17×17位并行乘法器,與40位專用加法器相連,可用于進(jìn)行非流水線的單周期乘法—累加運(yùn)算。</p><p> (d) 比較、選擇、存儲(chǔ)單元,可用于Viterbi譯碼器的加法-比較-選擇運(yùn)算。</p><p> (e) 指數(shù)編碼器,是一個(gè)支持單周期指令EXP的專用硬件??梢栽谝粋€(gè)周期內(nèi)計(jì)算40位累加器數(shù)值的指數(shù)。</
12、p><p> (f) 配有兩個(gè)地址生成器,包括8個(gè)輔助寄存器和2個(gè)輔助寄存器運(yùn)算單元。</p><p> (2)數(shù)據(jù)存儲(chǔ)器RAM</p><p> TMS320VC5402有兩種片內(nèi)數(shù)據(jù)存儲(chǔ)器:</p><p> (a) 雙尋址RAM:在一個(gè)指令周期內(nèi),可對其進(jìn)行兩次存取操作,一次讀出和一次寫入;</p><p>
13、 (b) 雙尋址RAM:在一個(gè)指令周期內(nèi),只能進(jìn)行一次存取操作。</p><p> (3) 程序存儲(chǔ)器ROM</p><p> TMS320VC5402的程序存儲(chǔ)器可由ROM和RAM配置而成,程序空間可以定義在ROM上,也可以定義在ROM上。當(dāng)需要高速運(yùn)行程序時(shí),可以將片外ROM中的程序調(diào)入到片內(nèi)RAM中,以提高程序運(yùn)行速度。降低對外部ROM的要求,增強(qiáng)系統(tǒng)整體抗干擾性能。</
14、p><p><b> (4) I/O口</b></p><p> TMS320VC5402芯片只有兩個(gè)通用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
15、空間可通過外加緩沖器或鎖存電路,配合外部I/O讀寫控制時(shí)序構(gòu)成片外外設(shè)的控制電路。</p><p><b> (5) 定時(shí)器</b></p><p> 定時(shí)器是一個(gè)軟件可編程計(jì)數(shù)器,用來產(chǎn)生定時(shí)中斷。定時(shí)器主要由定時(shí)寄存器TM,定時(shí)周期寄存器PRD,定時(shí)控制寄存器TCR及相應(yīng)的邏輯控制電路組成。其中寄存器TIM、PRD和TCR都是存儲(chǔ)映象寄存器,它們在數(shù)據(jù)存儲(chǔ)器中
16、的地址分別為0024H、0025H和0026H。TIM是一個(gè)減1寄存器。PRD用來存放定時(shí)時(shí)間常數(shù)。TCR中包含定時(shí)器的控制位和狀態(tài)位。</p><p><b> (6) 中斷系統(tǒng)</b></p><p> TMS320VC5402的中斷系統(tǒng)具有硬件中斷和軟件中斷。 </p><p> 硬件中斷:由外圍設(shè)備引起的中斷分為片外外設(shè)所引起的中
17、斷和片內(nèi)外設(shè)所引起的中斷。</p><p> 軟件中斷:有程序指令I(lǐng)NTR、TRAP和RESET所引起的中斷。中斷管理優(yōu)先級為11—16個(gè)固定級,有4種工作方式。</p><p> (7) 主機(jī)接口HPI</p><p> HPI是一個(gè)與主機(jī)通信的并行接口,主要用于DSP與其他總線或CPU進(jìn)行通信,信息可通過TMS320VC5402的片內(nèi)存儲(chǔ)器與主機(jī)進(jìn)行數(shù)據(jù)交
18、換。不同型號的器件配置不同的HPI口,可分為8位標(biāo)準(zhǔn)HPI口、8位增強(qiáng)型HPI接口和16位增強(qiáng)型HPI接口。</p><p><b> (8) 指令系統(tǒng)</b></p><p> 支持單指令重復(fù)和塊指令重復(fù);支持存儲(chǔ)器塊傳送指令;支持32位長操作數(shù)指令;具有支持2操作數(shù)或3操作數(shù)的讀指令;具有能并行存儲(chǔ)和并行加載的算術(shù)指令;支持條件存儲(chǔ)指令及中斷快速返回指令。&l
19、t;/p><p><b> (9) 片外圍電路</b></p><p> 具有軟件可編程等待狀態(tài)發(fā)生器;設(shè)有可編程分區(qū)轉(zhuǎn)換邏輯電路;帶有內(nèi)部震蕩器或外部時(shí)鐘源的片內(nèi)鎖相環(huán)發(fā)生器;支持全雙工操作的串行口,可進(jìn)行8位或16位串行通信。</p><p> 2.2 語音采集與輸出模塊</p><p> 語音采集與輸出模塊采用
20、的是TI公司推出的一款高性能的立體聲音頻Codec芯片TLC320AD50C,內(nèi)置耳機(jī)輸出放大器,支持MIC和LINE IN兩種輸入方式(二選一),且對輸入和輸出都具有可編程增益調(diào)節(jié)。AD50的模數(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
21、和100dB。與此同時(shí),AD50還具有很低的能耗,回放模式下功率僅為23mW,省電模式下更是小于15uW。由于具有上述優(yōu)點(diǎn),使得AD50是一款非常理想的音頻模擬I/O器件,可以很好的應(yīng)用在隨聲聽(如CD,MP3……)、錄音機(jī)等數(shù)字音頻領(lǐng)域[2]。由TLC320AD50C組成的語音輸入與輸出模塊不僅采樣率高最高可達(dá)96K,且外圍電路簡單,性價(jià)比高。</p><p> 在主程序中通過A/D抽樣量化,可以得到16位的
22、線性編碼,再由編碼表通過軟件計(jì)算得到8位A律編碼,其中最高位為符號位,第6位到第4位為段落碼,低4位為段內(nèi)碼。將8位的壓縮結(jié)果存儲(chǔ)到系統(tǒng)RAM中進(jìn)行緩存,根據(jù)抽樣率、語音存儲(chǔ)時(shí)間以及系統(tǒng)RAM的容量設(shè)置語音存儲(chǔ)緩沖區(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>
23、<p> 圖2.1 語音的采集和回放的基本結(jié)構(gòu)圖</p><p> 第3章 軟件設(shè)計(jì)與系統(tǒng)仿真</p><p> 3.1軟件設(shè)計(jì)流程圖</p><p> 在對語音進(jìn)行采集時(shí),先要初始化DSP及其串口和A/D和D/A轉(zhuǎn)換器。</p><p> 圖3.1軟件設(shè)計(jì)流程圖</p><p> 3.2 CC
24、S操作過程</p><p> 1.將工程文件夾放入C盤要求目錄下。</p><p> 2. 打開CCS,Project → open,打開工程文件。</p><p> 3.進(jìn)行編譯,連接。</p><p> 4.根據(jù)錯(cuò)誤提示,對build option進(jìn)行正確的設(shè)置,修改頭文件路徑。</p><p> 5.再
25、編譯,連接,顯示沒有錯(cuò)誤。</p><p> 6.load program---run,此時(shí)三盞燈循環(huán)亮,之后程序開始,第一盞燈亮開始錄音,一段時(shí)間后第二盞燈亮開始放音,然后又開始錄音。依次循環(huán)。</p><p><b> 3.3系統(tǒng)仿真</b></p><p> 點(diǎn)擊工具欄上面的“view”選擇“watch window”然后再輸入“b
26、uffer”后就可以出現(xiàn)此數(shù)組的值,其結(jié)果如下圖所示:</p><p><b> 圖4.1數(shù)組的值</b></p><p> 再在“view”中選擇“memory”可以看到存儲(chǔ)器中的數(shù)據(jù),其結(jié)果如下圖所示:</p><p> 圖4.2存儲(chǔ)器中的值</p><p> 在“view”中選擇“graph”然后點(diǎn)擊“ti
27、me frequentcy”可以看到語音輸入的波形,壓縮后的波形以及解壓后的波形圖。在觀察波形的時(shí)候可以加入斷點(diǎn),然后按animate動(dòng)態(tài)顯示,這更便于觀察波形。</p><p> 圖4.3語音采集的輸入波形</p><p> 圖4.4語音壓縮后的波形</p><p> 圖4.5語音解壓后的波形</p><p> 從上面的三幅仿真結(jié)果
28、圖可以得到輸入的波形圖與壓縮后的波形圖相比,壓縮后的波形比輸入的波形要尖銳一些,而解壓后的波形圖與輸入的波形相比基本上是一樣的,也就是說該課程設(shè)計(jì)是成功的。</p><p> 第4章 課程設(shè)計(jì)總結(jié)</p><p> 通過這次的DSP課程設(shè)計(jì),讓我充分認(rèn)識(shí)到了我的不足。我雖然學(xué)習(xí)過C語言的編程,但一旦將它應(yīng)用到實(shí)際的比較專業(yè)的問題上,我所學(xué)的知識(shí)就變得完全不夠用了,為了這次課程設(shè)計(jì)我查詢
29、了大量的資料,無論是C語言方面的還是壓縮算法方面的都讓我們花費(fèi)了很多時(shí)間,查詢到了需要的資料我們又對它們進(jìn)行了整理,提取出我們需要的a律壓縮和μ律壓縮的算法和原理,并且努力去理解其中的知識(shí),使其能為我們所用,盡管如此我們?nèi)匀粵]能成功的編出屬于我們自己的程序,因此我們找到了一份編好的程序,用我們已經(jīng)理解的知識(shí)去分析它,理解這份程序的原理,并根據(jù)我們的實(shí)際對它進(jìn)行一些修改,從而我們才得出我們現(xiàn)在的程序。雖然程序編寫成功了但我們在調(diào)試上又遇到
30、了很多的問題,比如在CCS環(huán)境下我們要如何觀察波形,波形有代表什么等等,為此我們又不斷的翻閱課件和資料,才最終解決了所有的問題,我的課程設(shè)計(jì)才算基本完成了。</p><p> 整個(gè)課程設(shè)計(jì)過程中,我在不斷的查閱資料和開動(dòng)腦筋過程中,鍛煉了我的資料采集能力,也鍛煉了我的分析整理能力,為以后做畢業(yè)設(shè)計(jì)打下了基礎(chǔ);同樣在實(shí)驗(yàn)過程中我遇到很多困難,而這些困難則鍛煉了我的耐心和分析解決問題的能力;通過編程鍛煉了我的編程能
31、力,使我對C語言,匯編語言和MATLAB語言更加熟悉,讓我能更好的運(yùn)用它們;同時(shí)也鍛煉了我們的團(tuán)結(jié)協(xié)作能力,為將來走入社會(huì)能更好的工作打下了基礎(chǔ)。</p><p> 總之通過這次的實(shí)驗(yàn),讓我認(rèn)識(shí)到了自己的不足,同時(shí)又通過這次的實(shí)驗(yàn)讓我們學(xué)到了讓我們受用一生的知識(shí)。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]戴明楨
32、等編著.TMS320C54X DSP 結(jié)構(gòu)原理及應(yīng)用. 北京:航空航天大學(xué)出版社,第2版,2007;</p><p> [2]彭啟琮編著.DSP技術(shù)的發(fā)展與應(yīng)用.北京:高等教育出版社,2002;</p><p> [3]胡廣書編著.數(shù)字信號處理理論、算法與實(shí)現(xiàn).北京:清華大學(xué)出版社,2005;</p><p> [4]北京合眾達(dá)電子技術(shù)有限公司編著.SEED-
33、DTK系列實(shí)驗(yàn)手冊.北京合眾達(dá)電子技術(shù)有限公司出版,2007。</p><p><b> 附錄:源程序代碼</b></p><p> 存儲(chǔ)器的分配(5402.cmd)</p><p><b> MEMORY</b></p><p><b> {</b></p>
34、;<p> PAGE 0: VECS: origin = 0080h, length = 0080h /* Internal Program RAM */</p><p> PRAM: origin = 7600h, length = 8000h /* Internal Program RAM */</p><p> PAGE 1: SCRATCH:
35、 origin = 0060h, length = 0020h /* Scratch Pad Data RAM */</p><p> DMARAM: origin = 0C00h, length = 0300h /* DMA buffer */</p><p> DATA: origin = 1100h, length = 0080h /* Internal Da
36、ta RAM */</p><p> STACK: origin = 1180h, length = 0560h /* Stack Memory Space */</p><p> INRAM: origin = 1900h, length = 0100h /* Internal Data RAM */</p><p> HPR
37、AM0: origin = 1A00h, length = 0002h /* HPI memory accessible by Host and DSP */</p><p> HPRAM1: origin = 1A02h, length = 0280h /* HPI memory accessible by Host and DSP */</p><p> HPRAM2: origi
38、n = 1C82h, length = 0280h /* HPI memory accessible by Host and DSP */</p><p> EXRAM: origin = 1F10h, length = 9000h /* External Data RAM */</p><p><b> }</b></p><p>
39、;<b> SECTIONS</b></p><p><b> {</b></p><p> .cinit > PRAM PAGE 0</p><p> .text > PRAM PAGE 0</p><p> .vectors > VECS PAG
40、E 0</p><p> init_var > PRAM PAGE 0</p><p> detect > PRAM PAGE 0</p><p> vrcprg > PRAM PAGE 0</p><p> matprg > PRAM PAGE 0</p><p>
41、 .stack > STACK PAGE 1</p><p> .trap > SCRATCH PAGE 1</p><p> .const > EXRAM PAGE 1</p><p> .data > EXRAM PAGE 1</p><p> .bss > E
42、XRAM PAGE 1</p><p> .cio > EXRAM PAGE 1</p><p> .switch > EXRAM PAGE 1</p><p> tables > EXRAM PAGE 1</p><p> var > EXRAM PAGE 1</p>
43、;<p> svctab > EXRAM PAGE 1 /* SS_V LSP table */</p><p> vctab > EXRAM PAGE 1 /* V LSP table */</p><p> uvctab > EXRAM PAGE 1 /* UV LSP table
44、 */</p><p> cuvtab > EXRAM PAGE 1 /* Stochastic codebook */</p><p> cdbktab > EXRAM PAGE 1 /* various codebook tables*/</p><p> logtab > EXRAM PA
45、GE 1 /* table for log2 */</p><p> powtab > EXRAM PAGE 1 /* table for pow2 */</p><p> hamtab > EXRAM PAGE 1 /* table for hamming */</p><p>
46、lgwtab > EXRAM PAGE 1 /* table for lag window */</p><p> acostab > EXRAM PAGE 1 /* table for arccos */</p><p> sqrtab > EXRAM PAGE 1 /* table for sq
47、uare root */</p><p> acbtab > EXRAM PAGE 1 /* table for thresholds in acb */</p><p> pm03tab > EXRAM PAGE 1 /* table for x^(-0.3) computation */</p><p&g
48、t; costab > EXRAM PAGE 1 /* table for cosine */</p><p> V23 > INRAM PAGE 1</p><p> FSK > INRAM PAGE 1</p><p> hpibuff0 > HPRAM0 PAGE 1</p
49、><p> hpibuff1 > HPRAM1 PAGE 1</p><p> hpibuff2 > HPRAM2 PAGE 1</p><p> dma_buff > DMARAM PAGE 1</p><p><b> }</b></p><p><b>
50、 /*主程序設(shè)計(jì)*/</b></p><p> /*語音采集及回放程序,用A律進(jìn)行壓縮及解壓,采用AD50進(jìn)行A/D,D/A轉(zhuǎn)換 */ </p><p> /*燈循環(huán)閃爍程序開始,L0:錄音,L1:放音*/</p><p> #include <type.h>
51、 /* 頭文件*/</p><p> #include <board.h></p><p> #include <codec.h></p><p> #include <mcbsp54.h></p><p> #defineSIGN_BIT(0x80)/* Sign bit
52、for a A-law byte. */</p><p> #defineQUANT_MASK(0xf)/* Quantization field mask. */</p><p> #defineNSEGS(8) /* Number of A-law segments. */</p><p> #defineSEG_SHIFT(4
53、) /* Left shift for segment number. */</p><p> #defineSEG_MASK(0x70)/* Segment field mask. */</p><p> void delay(s16 period);</p><p> void led(s16 cnt);</p><p
54、> void initcodec(void);</p><p> void flashenable(void);</p><p> unsigned char data2alaw(s16 pcm_val);</p><p> int alaw2data(unsigned chara_val);</p><p> static
55、 int search(int val,short*table,int size);</p><p> HANDLE hHandset;</p><p><b> s16 data;</b></p><p> s16 data1;</p><p><b> u16 i=0;</b><
56、/p><p> u16 temp1;</p><p><b> u16 j=0;</b></p><p> u16 k,l=0;</p><p><b> u8 temp2;</b></p><p> u16 buffer[20000];</p><
57、p> static short seg_end[8]={0x1F,0x3F,0x7F,0xFF,0x1FF,0x3FF,0x7FF,0xFFF};</p><p> void main()</p><p> { if (brd_init(100))</p><p><b> return;</b></p><
58、p> led(2); //閃燈兩次</p><p> initcodec(); //初始化codec</p><p> flashenable(); //選擇片外FLASH為片外存儲(chǔ)器 </p><p> delay(100);</p><p>
59、; brd_led_toggle(BRD_LED0);</p><p> for(i=0x9000;i<0xefff;i++)</p><p><b> { </b></p><p> REG_WRITE(i,*(volatile u16*)DRR1_ADDR(HANDSET_CODEC));</p><
60、;p> delay(20);</p><p><b> }</b></p><p> brd_led_toggle(BRD_LED1);</p><p> delay(200);</p><p> for(i=0x9000;i<0xefff;i++)</p><p><
61、b> {</b></p><p> *(volatile u16*)DXR1_ADDR(HANDSET_CODEC)=REG_READ(i);</p><p> delay(20); }</p><p> brd_led_toggle(BRD_LED2) </p><p><b> while (1)&l
62、t;/b></p><p> { while (!MCBSP_RRDY(HANDSET_CODEC)) {}; //等待接收handset處的采樣</p><p> brd_led_toggle(BRD_LED0);</p><p> data = *(volatile u16*)DRR1_ADDR(HANDSET_CODEC); //從h
63、andset處讀取采樣</p><p> temp1=data2alaw(data); //對采樣進(jìn)行a律壓縮</p><p> i=i+1; </p><p> if(i%2==1)</p><p> {buffer[j]=(temp1<<=8);}</p>
64、<p><b> else</b></p><p> {buffer[j]=(buffer[j]|temp1); </p><p> j++; //j加1</p><p><b> }</b></p><p> if(i>=40000) </p><
65、;p><b> {i=0;}</b></p><p> if(j>=20000)</p><p><b> {j=0;</b></p><p> brd_led_disable(BRD_LED0); </p><p> brd_led_toggle(BRD_LED1)
66、; //點(diǎn)亮二極管1 表示放音開始</p><p> /* 放音部分 */</p><p> for(k=0;k<40000;k++)</p><p><b> {</b></p><p> if(k%2==0)</p&
67、gt;<p><b> {</b></p><p> temp2=(buffer[l]>>8)&0x0ff;</p><p><b> }</b></p><p><b> else</b></p><p><b> {&l
68、t;/b></p><p> temp2=buffer[l]&0x0ff;</p><p><b> l++;</b></p><p><b> }</b></p><p> if(l>=20000)</p><p><b> l=0;
69、 </b></p><p> data1=alaw2data(temp2); // a律解壓</p><p> while (!MCBSP_XRDY(HANDSET_CODEC)) {}; </p><p> *(volatile u16*)DXR1_ADDR(HANDSET_CODEC) = data1;//將數(shù)據(jù)寫入D/A轉(zhuǎn)換器&l
70、t;/p><p><b> }</b></p><p> /* 放音結(jié)束 */</p><p> brd_led_toggle(BRD_LED0);</p><p> brd_led_toggle(BRD_LED1); }
71、</p><p><b> } </b></p><p> } //主程序結(jié)束
72、 </p><p> /*******延時(shí)子程序******/</p><p> void delay(s16 period)</p><p><b> {</b></p><p><b> int i, j;</b></p
73、><p> for(i=0; i<period; i++)</p><p><b> {</b></p><p> for(j=0; j<period>>1; j++);</p><p><b> }</b></p><p><b>
74、}</b></p><p> /*******閃燈******/</p><p> void led(s16 cnt)</p><p> {while ( cnt-- )</p><p> {brd_led_toggle(BRD_LED0); //切換LED指示燈0的顯示狀態(tài)</p><
75、p> delay(1000);</p><p> brd_led_toggle(BRD_LED1);</p><p> delay(1000);</p><p> brd_led_toggle(BRD_LED2);</p><p> delay(1000);</p><p><b> }&l
76、t;/b></p><p><b> }</b></p><p> /*****初始化codec**/</p><p> void initcodec(void)</p><p> {/* Open Handset Codec 獲取設(shè)置codec的句柄*/</p><p> hH
77、andset = codec_open(HANDSET_CODEC); / Acquire handle to codec </p><p> codec_dac_mode(hHandset, CODEC_DAC_15BIT); // DAC in 15-bit mode </p><p> codec_adc_mode(hHandset, CODEC_ADC_1
78、5BIT); // ADC in 15-bit 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>
79、<p> // -6dB gain on analog output from DAC </p><p> codec_sample_rate(hHandset,SR_8000); // 8KHz sampling rate </p><p><b> }</b></p><p> /*****設(shè)置fl
80、ash****/</p><p> void flashenable(void)</p><p><b> {</b></p><p> CPLD_CTRL2_REG|=0x0010;</p><p> CPLD_DMCTRL_REG|=0x0040;</p><p><b>
81、 }</b></p><p> /*****a律壓縮******/</p><p> unsigned char data2alaw(s16 pcm_val) </p><p><b> {</b></p><p> intmask;</p><p><b&
82、gt; intseg;</b></p><p> unsigned charaval;</p><p> if (pcm_val >= 0) </p><p><b> {</b></p><p> mask = 0xD5; // 標(biāo)記 (7th)
83、 bit = 1</p><p><b> } </b></p><p><b> else </b></p><p><b> {</b></p><p> mask = 0x55; // 標(biāo)記 bit = 0 &l
84、t;/p><p> pcm_val = -pcm_val;</p><p><b> }</b></p><p> seg = search(pcm_val, seg_end, 8); </p><p> if (seg >= 8) /
85、/ out of range, 返回最大數(shù). </p><p> return (0x7F ^ mask);</p><p><b> else </b></p><p><b> {</b></p><p> aval = seg << SEG_SHIFT;</p>
86、<p> if (seg < 2)</p><p> aval |= (pcm_val >> 1) & QUANT_MASK;</p><p><b> else</b></p><p> aval |= (pcm_val >>seg) & QUANT_MASK;</p&
87、gt;<p> return (aval ^ mask);</p><p><b> }</b></p><p><b> }</b></p><p> /****alaw的子程序**/</p><p> static int search(int val,short*ta
88、ble,int size)</p><p><b> {</b></p><p><b> inti;</b></p><p> for (i = 0; i < size; i++) </p><p><b> {</b></p><p&g
89、t; if (val <= *table++)</p><p> return (i);</p><p><b> }</b></p><p> return (size);</p><p><b> }</b></p><p> /*****a律解壓***
90、***/</p><p> int alaw2data(unsigned chara_val)</p><p> { intt;</p><p><b> intseg;</b></p><p> a_val ^= 0x55;</p><p> t = (a_val &am
91、p; QUANT_MASK) << 4;</p><p> seg = ((unsigned)a_val & SEG_MASK) >> SEG_SHIFT;</p><p> if(seg==0) </p><p><b> {t += 8;</b></p><p> t=(t&g
92、t;>3);}</p><p> if((seg<4)&&(seg>0)) </p><p> {t +=0x108;</p><p> t=(t>>(4-seg));}</p><p><b> if(seg>3)</b></p><p&g
93、t; {t+=0x108;</p><p> t=(t<<=(seg-4));}</p><p> return ((a_val & SIGN_BIT) ? t : -t);</p><p><b> }</b></p><p> /* 結(jié)束
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- dsp課程設(shè)計(jì)--基于tms320vc5402語音采集壓縮存儲(chǔ)與回放
- dsp課程設(shè)計(jì)-語音采集壓縮存儲(chǔ)與回放
- dsp課程設(shè)計(jì)報(bào)告----語音壓縮、存儲(chǔ)與回放
- dsp課程設(shè)計(jì)---語音的壓縮、存儲(chǔ)和回放
- dsp課程設(shè)計(jì)報(bào)告--基于tms320vc5502的語音信號采集系統(tǒng)設(shè)計(jì)
- 基于TMS320VC5402的靜態(tài)圖像采集與壓縮.pdf
- dsp數(shù)字信號處理課程設(shè)計(jì)報(bào)告-- 語音壓縮與回放
- dsp課程設(shè)計(jì)--語音壓縮,存儲(chǔ)和回訪
- 基于DSP芯片TMS320VC5402的開發(fā)系統(tǒng)設(shè)計(jì).pdf
- 基于tms320vc5402的g.721語音壓縮系統(tǒng)的構(gòu)建和實(shí)現(xiàn)
- 基于TMS320VC5402的語音處理系統(tǒng)的研究與設(shè)計(jì).pdf
- 基于TMS320VC5402的語音檢測器.pdf
- dsp語音錄放課程設(shè)計(jì)--基于tms320c5416 dsp的語音信號的采集和放送
- 課程設(shè)計(jì)-基于單片機(jī)的語音存儲(chǔ)及回放系統(tǒng)課程設(shè)設(shè)計(jì)
- 基于TMS320VC5402的高速信號采集系統(tǒng)的設(shè)計(jì).pdf
- dsp課程設(shè)計(jì)基于tms320c5402的fsk說明書
- dsp課程設(shè)計(jì)-- 基于tms320vc5509 dsp的fir濾波器設(shè)計(jì)
- dsp課程設(shè)計(jì)--基于tms320vc5509 dsp的fir濾波器設(shè)計(jì)
- 基于TMS320VC5402 DSP的信息加密系統(tǒng)的研究.pdf
- 基于tms320vc5402的led顯示系統(tǒng)設(shè)計(jì)
評論
0/150
提交評論