




已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
邵陽學(xué)院課程設(shè)計(jì)(論文)摘 要本課程設(shè)計(jì)的主要目的是熟悉CCS集成開發(fā)環(huán)境。然后在CCS環(huán)境下實(shí)現(xiàn)基于TMS320VC5402芯片的語音采集壓縮與存儲和回放。本課程設(shè)計(jì)首先采用A/D轉(zhuǎn)換器從MIC輸入口實(shí)行語音信號采集,進(jìn)行壓縮后存儲到DSP的片內(nèi)和片外RAM存儲器中,等到存儲器存滿之后,使用DSP實(shí)行解壓縮,并從SPEAKER輸出口進(jìn)行回放輸出,并且用指示燈對語音存儲和回放過程進(jìn)行指示。關(guān)鍵詞:CCS;DSP;采集;壓縮;存儲與回放;第1章 引言隨著信息技術(shù)革命的深入和計(jì)算機(jī)技術(shù)的飛速發(fā)展,數(shù)字信號處理技術(shù)已經(jīng)逐漸發(fā)展成為一門關(guān)鍵的技術(shù)學(xué)科。而DSP芯片的出現(xiàn)則為數(shù)字信號處理算法的實(shí)現(xiàn)提供了可能。這一方面極大地促進(jìn)了數(shù)字信號處理技術(shù)的進(jìn)一步發(fā)展;另一方面,它也使數(shù)字信號處理的應(yīng)用領(lǐng)域得到了極大的拓展。在國外DSP芯片已經(jīng)被廣泛地應(yīng)用于當(dāng)今技術(shù)革命的各個(gè)領(lǐng)域;在我國,DSP技術(shù)也正以極快的速度被應(yīng)用到科技和國民經(jīng)濟(jì)的各個(gè)領(lǐng)域。目前,在微電子技術(shù)發(fā)展的帶動下,DSP芯片的發(fā)展日新月異,DSP的功能日益強(qiáng)大,性能價(jià)格比不斷上升,開發(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)域在不斷地被發(fā)掘。第2章 硬件設(shè)計(jì)2.1 TMS320VC5402芯片的基本原理TMS320VC5402 數(shù)字信號處理器是TI公司為實(shí)現(xiàn)低功耗,高速實(shí)時(shí)信號處理而專門設(shè)計(jì)的16位定點(diǎn)數(shù)字信號處理器,采用改進(jìn)的哈佛結(jié)構(gòu),具有高度的操作靈活性和運(yùn)行速度,適用于遠(yuǎn)程通信等實(shí)時(shí)嵌入式應(yīng)用的需要。廣泛應(yīng)用于電子測試、電子設(shè)計(jì)、模擬仿真、通信工程中。TMS320VC5402具有的主要優(yōu)點(diǎn)如下:(1) 圍繞一組程序總線、三組數(shù)據(jù)總線和四組地址總線而建立的改進(jìn)哈佛結(jié)構(gòu),提高了系統(tǒng)的多功能性和操作的靈活性。 (2) 具有高度的并行性和專用硬件邏輯的CPU設(shè)計(jì),提高了芯片的性能。(3) 具有完善的尋址方式和高度專業(yè)化指令系統(tǒng),更適用于快速算法的實(shí)現(xiàn)和高級語言編程的優(yōu)化。(4) 模塊化結(jié)構(gòu)設(shè)計(jì),使派生器件得到了更快的發(fā)展。(5) 采用先進(jìn)的IC制造工藝,降低了芯片的功耗,提高了芯片的性能。(6) 采用先進(jìn)的靜態(tài)設(shè)計(jì)技術(shù),進(jìn)一步降低了功耗,使芯片具有更強(qiáng)的應(yīng)用能力。TMS320VC5402主要有中央處理器CPU,特殊功能寄存器,數(shù)據(jù)存儲器RAM,程序存儲器ROM,I/O接口功能,串行口,主機(jī)通信接口HPI,定時(shí)器,中斷系統(tǒng)等10部分組成。各部分功能如下:(1) 中央處理器(CPU)它是DSP芯片的核心,它有以下特點(diǎn):(a) 采用多總線結(jié)構(gòu),通過一組程序總線、三組數(shù)據(jù)總線和四組地址總線來實(shí)現(xiàn)。(b) 40位算術(shù)邏輯運(yùn)算單元ALU,包括一個(gè)40位的桶形移位寄存器和兩個(gè)獨(dú)立的40位累加器。(c) 1717位并行乘法器,與40位專用加法器相連,可用于進(jìn)行非流水線的單周期乘法累加運(yùn)算。(d) 比較、選擇、存儲單元,可用于Viterbi譯碼器的加法比較選擇運(yùn)算。(e) 指數(shù)編碼器,是一個(gè)支持單周期指令EXP的專用硬件??梢栽谝粋€(gè)周期內(nèi)計(jì)算40位累加器數(shù)值的指數(shù)。(f) 配有兩個(gè)地址生成器,包括8個(gè)輔助寄存器和2個(gè)輔助寄存器運(yùn)算單元。(2)數(shù)據(jù)存儲器RAMTMS320VC5402有兩種片內(nèi)數(shù)據(jù)存儲器:(a) 雙尋址RAM:在一個(gè)指令周期內(nèi),可對其進(jìn)行兩次存取操作,一次讀出和一次寫入;(b) 雙尋址RAM:在一個(gè)指令周期內(nèi),只能進(jìn)行一次存取操作。(3) 程序存儲器ROMTMS320VC5402的程序存儲器可由ROM和RAM配置而成,程序空間可以定義在ROM上,也可以定義在ROM上。當(dāng)需要高速運(yùn)行程序時(shí),可以將片外ROM中的程序調(diào)入到片內(nèi)RAM中,以提高程序運(yùn)行速度。降低對外部ROM的要求,增強(qiáng)系統(tǒng)整體抗干擾性能。(4) I/O口TMS320VC5402芯片只有兩個(gè)通用I/O引腳BIO和XF,BIO主要用來監(jiān)測外部設(shè)備工作狀態(tài),而XF用來發(fā)信號給外部設(shè)備。 另外,芯片還配有主機(jī)接口HPI,同步串行口和64K字的I/O空間,HPI和串行口通過控制,用做通用I/O口使用。而64K字I/O空間可通過外加緩沖器或鎖存電路,配合外部I/O讀寫控制時(shí)序構(gòu)成片外外設(shè)的控制電路。(5) 定時(shí)器定時(shí)器是一個(gè)軟件可編程計(jì)數(shù)器,用來產(chǎn)生定時(shí)中斷。定時(shí)器主要由定時(shí)寄存器TM,定時(shí)周期寄存器PRD,定時(shí)控制寄存器TCR及相應(yīng)的邏輯控制電路組成。其中寄存器TIM、PRD和TCR都是存儲映象寄存器,它們在數(shù)據(jù)存儲器中的地址分別為0024H、0025H和0026H。TIM是一個(gè)減1寄存器。PRD用來存放定時(shí)時(shí)間常數(shù)。TCR中包含定時(shí)器的控制位和狀態(tài)位。 (6) 中斷系統(tǒng)TMS320VC5402的中斷系統(tǒng)具有硬件中斷和軟件中斷。 硬件中斷:由外圍設(shè)備引起的中斷分為片外外設(shè)所引起的中斷和片內(nèi)外設(shè)所引起的中斷。軟件中斷:有程序指令I(lǐng)NTR、TRAP和RESET所引起的中斷。中斷管理優(yōu)先級為1116個(gè)固定級,有4種工作方式。 (7) 主機(jī)接口HPIHPI是一個(gè)與主機(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接口。 (8) 指令系統(tǒng)支持單指令重復(fù)和塊指令重復(fù);支持存儲器塊傳送指令;支持32位長操作數(shù)指令;具有支持2操作數(shù)或3操作數(shù)的讀指令;具有能并行存儲和并行加載的算術(shù)指令;支持條件存儲指令及中斷快速返回指令。(9) 片外圍電路具有軟件可編程等待狀態(tài)發(fā)生器;設(shè)有可編程分區(qū)轉(zhuǎn)換邏輯電路;帶有內(nèi)部震蕩器或外部時(shí)鐘源的片內(nèi)鎖相環(huán)發(fā)生器;支持全雙工操作的串行口,可進(jìn)行8位或16位串行通信。2.2 語音采集與輸出模塊語音采集與輸出模塊采用的是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)的Sigmadelta過采樣技術(shù),可以在8K到96K的頻率范圍內(nèi)提供16bit、20bit、24bit和32bit的采樣,ADC和DAC的輸出信噪比分別可以達(dá)到90dB和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à)比高。采用DSP可以直接對PCM編碼后的語音信號進(jìn)行律和A律壓縮。圖2.1是DSP硬件實(shí)現(xiàn)數(shù)據(jù)壓縮解壓的簡單流程,DSP將傳輸來的壓縮后的數(shù)據(jù)進(jìn)行解壓成16位或者32位,然后對解壓后的數(shù)據(jù)進(jìn)行分析、處理,最后將處理后的數(shù)據(jù)按照要求壓縮成8位的數(shù)據(jù)格式輸出到相應(yīng)設(shè)備,供其他設(shè)備讀取。 CPURSRDXR壓縮XSRRBR解壓RJUSTDRRCPUDRDX圖2.1 數(shù)據(jù)壓縮解壓流程圖2.2是DSP將數(shù)據(jù)解壓的值,DSP將壓縮的8位數(shù)據(jù)解壓成16位的DSP通用數(shù)據(jù)格式,其中高13位為解壓后的數(shù)據(jù),低3位補(bǔ)0。這是因?yàn)?711的A律壓縮只能對13位數(shù)據(jù)操作。DSP將解壓后的數(shù)據(jù)放在緩沖串口的發(fā)送寄存器中,只要運(yùn)行發(fā)送指令,緩沖串口就會將數(shù)據(jù)發(fā)送出去。緩沖串口對接收數(shù)據(jù)的解壓過程和壓縮過程完全相反。圖2.3是律數(shù)據(jù)解壓的示意圖。 DSP內(nèi)部的緩沖串口(McBSPs)帶有硬件實(shí)現(xiàn)的律A律壓縮解壓,只需要在相應(yīng)寄存器中進(jìn)行設(shè)置就可以了。在進(jìn)行A律壓縮時(shí),采樣后的12位數(shù)據(jù),默認(rèn)其最高位為符號位,壓縮時(shí)要保持最高位即符號位不變,原數(shù)據(jù)的后11位要壓縮成7位。這7位碼由3位段落碼和4位段內(nèi)碼組成。具體的壓縮變換后的數(shù)據(jù)根據(jù)后11位數(shù)據(jù)大小決定。除對串行口數(shù)據(jù)實(shí)現(xiàn)壓擴(kuò)處理外,這套硬件在McBSP不使用時(shí)還可以當(dāng)作一個(gè)特殊的處理單元對內(nèi)部數(shù)據(jù)實(shí)現(xiàn)壓擴(kuò)處理,他有兩種實(shí)現(xiàn)方法。法一:當(dāng)串行口的發(fā)送和接受部分都處于復(fù)位狀態(tài)時(shí),DRR1和DXR1內(nèi)部通過壓擴(kuò)邏輯連接在一起,數(shù)據(jù)從DXR1寫入并根據(jù)XCOMPAND處理,然后根據(jù)RCOMPAND再處理,在4個(gè)CPU時(shí)鐘后從DRR1中讀出數(shù)據(jù)。該處理比軟件實(shí)現(xiàn)快,不利之處在于處理完后沒有同步信息通知CPU和DMA。法二:在數(shù)據(jù)環(huán)回模式下,McBSP也實(shí)現(xiàn)了一種內(nèi)連。數(shù)據(jù)處理與第一種方法相同,但它可以提供中斷信號(或同步事件)給CPU(或DMA)。這里數(shù)據(jù)處理的時(shí)間是根據(jù)串行口的比特律確定的。另外,在通常情況下McBSP先傳輸信號的高位后傳輸?shù)臀?,但是在字長為8比特的數(shù)據(jù)傳輸時(shí),McBSP提供了比特倒序的功能,即可以先傳輸?shù)臀缓髠鬏敻呶?。在本?shí)驗(yàn)中,我們通過軟件編程來完成線性碼轉(zhuǎn)換成A律。語音信號通常是小信號概率大,大信號出現(xiàn)的概率小,為提高小信號時(shí)的量化信躁比,壓縮比特速率,可為非線性量化。語音壓縮是把16位的數(shù)據(jù)比特轉(zhuǎn)化為8位數(shù)據(jù)比特,從而到達(dá)語音壓縮的目的。在主程序中通過A/D抽樣量化,可以得到16位的線性編碼,再由編碼表通過軟件計(jì)算得到8位A律編碼,其中最高位為符號位,第6位到第4位為段落碼,低4位為段內(nèi)碼。將8位的壓縮結(jié)果存儲到系統(tǒng)RAM中進(jìn)行緩存,根據(jù)抽樣率、語音存儲時(shí)間以及系統(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)換器的工作模式、輸入增益以及抽樣頻率等。第3章 軟件設(shè)計(jì)3.1 設(shè)計(jì)流程在對語音進(jìn)行采集時(shí),先要初始化DSP及其串口和A/D和D/A轉(zhuǎn)換器,待所有的都進(jìn)行初始化后,就可以進(jìn)行語音的采集,其后續(xù)的步驟如下面的流程圖3.1所示: 圖3.1 設(shè)計(jì)流程圖3.2 創(chuàng)建工程文件及編寫程序利用CCS創(chuàng)建一個(gè)新工程,然后向該工程中添加源代碼文件和庫文件。首先在CCS的安裝目錄e:ccs的文件夾e:ccsmyprojects下建立一個(gè)新的文件夾,命名為1111。并將所有的源代碼全部拷貝到該新建的文件夾中。然后雙擊桌面上圖標(biāo),在出現(xiàn)的對話框中選擇C5402 simulator模式下,然后點(diǎn)擊“確定”按鈕即可進(jìn)入“code composer studio”界面。從CCS的Project菜單下選擇子菜單New。將出現(xiàn)Project Creation對話框。在對話框中“Project Name”處輸入1111,“Location”處輸入”myproject1111”,在“Project”處選擇Executable(.out)類型,在“Target”中選擇CCS所配置的TMS320C54XX 類型的DSP。最后單擊“完成”即可。創(chuàng)建好的工程的參數(shù)如下圖3.2所示:圖3.2 工程創(chuàng)建的參數(shù)通過上述步驟Code Composer Studio就建立了一個(gè)工程文件,名為1111.pjt,該工程文件用于存儲工程配置以及在工程中所用到的若干文件??稍凇肮こ添?xiàng)目觀察窗口(Project view)”處看到。在CCS中選擇菜單Project中的1111.pjt 然后單擊右鍵選擇“add Files to Project”,然后選文件yuyin.c,并單擊Open。在CCS中選擇菜單Project,選中add Files to Project,并在文件類型選框中選匯編源文件(*.a*, *.s*),然后選vectors.asm 和 load.asm 這兩個(gè)文件并單擊Open。這些文件中包含了設(shè)置復(fù)位RESET中斷到程序的C入口c_int00的一些匯編指令。對于更加復(fù)雜的程序,可在vectors.asm 文件中定義更多的中斷向量。也可利用DSP/BIOS來自動定義所有的中斷向量。在CCS中選擇菜單Project,選擇add Files to Project,并在文件類型選框中選擇鏈接命令文件(*.cmd),然后選yuyin.cmd并單擊Open,該命令文件將匯編程序的段映射到DSP的存儲空間中。在CCS中選擇菜單Project 選擇add Files to Project,進(jìn)入編譯庫文件夾,在文件類型選框中選擇目標(biāo)文件類型和庫文件類型(*.o*, *.lib),為所配置的目標(biāo)DSP選rts.lib文件并單擊Open。該庫文件為目標(biāo)DSP提供了運(yùn)行時(shí)間(runtime)支持。在工程視圖窗口,用鼠標(biāo)右鍵單擊工程文件1111.pjt 并在快捷菜單中選擇 Scan All Dependencies。這時(shí).h應(yīng)出現(xiàn)于工程視圖窗口中的庫(Libraries)文件夾中。單擊Project左邊的小加號,將展開工程列表:1111.pjt,Libraries,以及 Source。該列表即為工程視圖。無需手工向工程中加入include文件,因?yàn)镃CS將會在編譯過程中自動找到這些文件。編譯之后在工程視圖中將出現(xiàn)這些include文件。添加好后的文件如下圖3.3所示:圖3.3 添加好的工程文件3.3編譯并運(yùn)行程序編譯并運(yùn)行程序的步驟: 選擇Project點(diǎn)擊Rebuild All 或單擊工具按鈕 就可以運(yùn)行程序。(1)在默認(rèn)情況下,將當(dāng)前工程目錄下的debug子目錄中生成.out文件。通過CCS工具條可改變生成文件的存放位置。(2)選FileLoad Program,并在對話框中選剛剛編譯生成的文件1111.out,單擊Open打開。(默認(rèn)在目錄e:ccsmyprojects1111Debug 文件夾下)這樣CCS就將程序載入目標(biāo)DSP,并打開一個(gè)反匯編窗口,顯示出相應(yīng)的反匯編指令。CCS也將在窗口底部自動打開一個(gè)標(biāo)簽區(qū)域來顯示程序送往stdout的輸出。(1)選ViewMixed Source/ASM,將同時(shí)看到c源代碼和匯編結(jié)果代碼。(2)在混合模式窗口中單擊一條匯編偽指令本身,并按F1鍵,CCS將搜索該條指令的幫助。(3)選DebugGo Main開始從main 函數(shù)處執(zhí)行程序。程序暫停在main處,并用黃色的箭頭標(biāo)識。(4)選DebugRun或單擊工具按鈕 來運(yùn)行程序。(5)選DebugHalt來暫停程序執(zhí)行。(6)從菜單View中選Mixed Source/ASM。將看到不帶相應(yīng)匯編的c代碼。從而可以方便地進(jìn)行下一個(gè)任務(wù):修改程序選項(xiàng),修正語法錯(cuò)誤。通過以上步驟,在運(yùn)行projectRebuilt All后得出下圖3.4結(jié)果: 圖3.4運(yùn)行結(jié)果從上圖可以看出沒有錯(cuò)誤,故該設(shè)計(jì)的源程序代碼是正確的。接下來可以進(jìn)行下面的檢驗(yàn)以驗(yàn)證該課程設(shè)計(jì)是否正確。第4章 實(shí)驗(yàn)結(jié)果與分析4.1 數(shù)組和寄存器中的值點(diǎn)擊工具欄上面的“view”選擇“watch window”然后再輸入“buffer”后就可以出現(xiàn)此數(shù)組的值,其結(jié)果如下圖4.1所示:圖4.1數(shù)組的值再在“view”中選擇“memory”可以看到存儲器中的數(shù)據(jù),其結(jié)果如下圖4.2所示: 圖4.2存儲器中的值從上圖中我們可以找到存儲器中的任何內(nèi)容,而且便于觀察壓縮前和壓縮后的存儲內(nèi)容是否是一樣的,這也可以用來驗(yàn)證設(shè)計(jì)的程序是否正確。4.2 波形仿真與分析仍然在“view”中選擇“graph”然后點(diǎn)擊“time frequentcy”可以看到語音輸入的波形,壓縮后的波形以及解壓后的波形圖。在觀察波形的時(shí)候可以加入斷點(diǎn),然后按animate動態(tài)顯示,這更便于觀察波形。所有的輸出的波形圖如下圖4.3所示:圖4.3語音采集的輸入波形圖4.4語音壓縮后的波形圖4.5語音解壓后的波形從上面的三幅仿真結(jié)果圖可以得到輸入的波形圖與壓縮后的波形圖相比,壓縮后的波形比輸入的波形要尖銳一些,而解壓后的波形圖與輸入的波形相比基本上是一樣的,也就是說該課程設(shè)計(jì)是成功的。第5章 結(jié)束語從本次課程設(shè)計(jì)的中心來看,課題是希望通過對語音信號的采集壓縮存儲與回放而將相應(yīng)的結(jié)果顯示出來,這里就是指對程序的編寫,調(diào)試等。在這里我們只要編寫正確的程序,經(jīng)過調(diào)試,仿真硬件調(diào)試就可以對其進(jìn)行處理了。在這里,用到了處理數(shù)字信號的強(qiáng)有力工具CCS軟件。在課設(shè)過程中,我對DSP實(shí)驗(yàn)系統(tǒng)箱有了全面的了解,最重要的是對DSP實(shí)驗(yàn)系統(tǒng)箱上的芯片的分類,用處等有了全面的了解,充分的認(rèn)識了DSP的作用,與此同時(shí)我還學(xué)會了使用CCS一些基本函數(shù),增加了進(jìn)一步學(xué)習(xí)CCS軟件的興趣。同時(shí),通過本次課程設(shè)計(jì),鍛煉了我的動手能力,和提高了我分析問題,解決問題的能力。整個(gè)課程設(shè)計(jì)過程中,我在不斷的查閱資料和開動腦筋過程中,鍛煉了我的資料采集能力,也鍛煉了我的分析整理能力,為以后作畢業(yè)設(shè)計(jì)打下了基礎(chǔ);同樣在實(shí)驗(yàn)過程中我遇到很多困難,而這些困難則鍛煉了我的耐心和分析解決問題的能力。總之通過這次的課程設(shè)計(jì),讓我認(rèn)識到了自己的不足,同時(shí)又通過這次的課程設(shè)計(jì)讓我們學(xué)到了讓我們受用一生的知識。雖然在設(shè)計(jì)中遇到了許多原理問題,但是在老師的悉心指導(dǎo)下,終于迎刃而解。同時(shí),我也在老師的身上學(xué)到了許多有用的知識,使我受益匪淺,在此我表示感謝!參考文獻(xiàn)1 周霖.DSP系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)M.北京:電子工業(yè)出版社,2005.2 蘇濤. DSP實(shí)用技術(shù)M.西安:西安電子科技大學(xué)出版社,2005.3 彭啟宗.TMS320C54xx實(shí)用教程M.成都:科技大學(xué)出版社,2004.4 劉益成.DSP程序設(shè)計(jì)與開發(fā)M.北京:航天大學(xué)出版社,2001.5 戴明楨、周建江.TMs320C54x DSP 結(jié)構(gòu)原理及應(yīng)用M.北京:航空航天出版社 附錄 存儲器的分配(5402.cmd)MEMORY PAGE 0: VECS: origin = 0080h, length = 0080h /* Internal Program RAM */ PRAM: origin = 7600h, length = 8000h /* Internal Program RAM */ PAGE 1: SCRATCH: origin = 0060h, length = 0020h /* Scratch Pad Data RAM */ DMARAM: origin = 0C00h, length = 0300h /* DMA buffer */ DATA: origin = 1100h, length = 0080h /* Internal Data RAM */ STACK: origin = 1180h, length = 0560h /* Stack Memory Space */ INRAM: origin = 1900h, length = 0100h /* Internal Data RAM */ HPRAM0: origin = 1A00h, length = 0002h /* HPI memory accessible by Host and DSP */ HPRAM1: origin = 1A02h, length = 0280h /* HPI memory accessible by Host and DSP */ HPRAM2: origin = 1C82h, length = 0280h /* HPI memory accessible by Host and DSP */ EXRAM: origin = 1F10h, length = 9000h /* External Data RAM */SECTIONS .cinit PRAM PAGE 0 .text PRAM PAGE 0 .vectors VECS PAGE 0 init_var PRAM PAGE 0 detect PRAM PAGE 0 vrcprg PRAM PAGE 0 matprg PRAM PAGE 0 .stack STACK PAGE 1 .trap SCRATCH PAGE 1 .const EXRAM PAGE 1 .data EXRAM PAGE 1 .bss EXRAM PAGE 1 .cio EXRAM PAGE 1 .switch EXRAM PAGE 1 tables EXRAM PAGE 1 var EXRAM PAGE 1 svctab EXRAM PAGE 1 /* SS_V LSP table */ vctab EXRAM PAGE 1 /* V LSP table */ uvctab EXRAM PAGE 1 /* UV LSP table */ cuvtab EXRAM PAGE 1 /* Stochastic codebook */ cdbktab EXRAM PAGE 1 /* various codebook tables*/ logtab EXRAM PAGE 1 /* table for log2 */ powtab EXRAM PAGE 1 /* table for pow2 */ hamtab EXRAM PAGE 1 /* table for hamming */ lgwtab EXRAM PAGE 1 /* table for lag window */ acostab EXRAM PAGE 1 /* table for arccos */ sqrtab EXRAM PAGE 1 /* table for square root */ acbtab EXRAM PAGE 1 /* table for thresholds in acb */ pm03tab EXRAM PAGE 1 /* table for x(-0.3) computation */ costab EXRAM PAGE 1 /* table for cosine */ V23 INRAM PAGE 1 FSK INRAM PAGE 1 hpibuff0 HPRAM0 PAGE 1 hpibuff1 HPRAM1 PAGE 1 hpibuff2 HPRAM2 PAGE 1 dma_buff DMARAM PAGE 1/*主程序設(shè)計(jì)*/*語音采集及回放程序*/*用A律進(jìn)行壓縮及解壓*/*采用AD50進(jìn)行A/D,D/A轉(zhuǎn)換 */ /*燈循環(huán)閃爍程序開始*/*L0:錄音*/*L1:放音*/#include /* 頭文件*/#include #include #include #defineSIGN_BIT(0x80)/* Sign bit for a A-law byte. */#defineQUANT_MASK(0xf)/* Quantization field mask. */#defineNSEGS(8) /* Number of A-law segments. */#defineSEG_SHIFT(4) /* Left shift for segment number. */#defineSEG_MASK(0x70)/* Segment field mask. */void delay(s16 period);void led(s16 cnt);void initcodec(void);void flashenable(void);unsigned char data2alaw(s16 pcm_val);int alaw2data(unsigned chara_val);static int search(int val,short*table,int size);HANDLE hHandset;s16 data;s16 data1;u16 i=0;u16 temp1;u16 j=0;u16 k,l=0;u8 temp2;u16 buffer20000;static short seg_end8=0x1F,0x3F,0x7F,0xFF,0x1FF,0x3FF,0x7FF,0xFFF;void main() if (brd_init(100) return; led(2); /閃燈兩次 initcodec(); /初始化codec flashenable(); /選擇片外FLASH為片外存儲器 delay(100); brd_led_toggle(BRD_LED0); for(i=0x9000;i0xefff;i+) REG_WRITE(i,*(volatile u16*)DRR1_ADDR(HANDSET_CODEC); delay(20); brd_led_toggle(BRD_LED1); delay(200); for(i=0x9000;i0xefff;i+) *(volatile u16*)DXR1_ADDR(HANDSET_CODEC)=REG_READ(i); delay(20); brd_led_toggle(BRD_LED2) while (1) while (!MCBSP_RRDY(HANDSET_CODEC) ; /等待接收handset處的采樣 brd_led_toggle(BRD_LED0); data = *(volatile u16*)DRR1_ADDR(HANDSET_CODEC); /從handset處讀取采樣 temp1=data2alaw(data); /對采樣進(jìn)行a律壓縮 i=i+1; if(i%2=1) bufferj=(temp1=40000) i=0; if(j=20000) j=0; brd_led_disable(BRD_LED0); brd_led_toggle(BRD_LED1); /點(diǎn)亮二極管1 表示放音開始 /* 放音部分 */ for(k=0;k8)&0x0ff; else temp2=bufferl&0x0ff; l+; if(l=20000) l=0; data1=alaw2data(temp2); / a律解壓 while (!MCBSP_XRDY(HANDSET_CODEC) ; *(volatile u16*)DXR1_ADDR(HANDSET_CODEC) = data1; /將數(shù)據(jù)寫入D/A轉(zhuǎn)換器 /* 放音結(jié)束 */ brd_led_toggle(BRD_LED0); brd_led_toggle(BRD_LED1); /主程序結(jié)束 /* 子函數(shù) */ /*延時(shí)*/void delay(s16 period) int i, j; for(i=0; iperiod; i+) for(j=0; j1; j+); /*閃燈*/void led(s16 cnt)while ( cnt- )brd_led_toggle(BRD_LED0); /切換LED指示燈0的顯示狀態(tài)delay(1000);brd_led_toggle(BRD_LED1);delay(1000);brd_led_toggle(BRD_LED2);delay(1000);/*初始化codec*/void initcodec(void)/* Open Handset Codec 獲取設(shè)置codec的句柄*/ hHandset = codec_open(HANDSET_CODEC); / Acquire handle to codec /* Set codec parameters */ codec_dac_m
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全員安全培訓(xùn)考試試題附下載答案
- 2025年管理人員安全培訓(xùn)考試試題答案全面
- 2025新入職員工安全培訓(xùn)考試試題附參考答案(奪分金卷)
- 2025項(xiàng)目內(nèi)部承包合同模板
- 【部編版】四年級語文下冊《習(xí)作例文》精美課件
- 2025年律師事務(wù)所律師聘用勞動合同范本
- 2025健身教練股權(quán)激勵合同范本
- 2025教育培訓(xùn)機(jī)構(gòu)師資培訓(xùn)勞動合同模板
- 2025企業(yè)間的貸款協(xié)議范本:借款合同示例
- 2025電纜施工合同范本
- (二模)2025年深圳市高三年級第二次調(diào)研考試歷史試卷(含標(biāo)準(zhǔn)答案)
- 廣西《疼痛綜合評估規(guī)范》(材料)
- 2025年山東省淄博市張店區(qū)中考一模歷史試題(含答案)
- 美容師考試與法律法規(guī)相關(guān)知識及試題答案
- 推動研究生教育高質(zhì)量發(fā)展方案
- 2025-2030中國藥用活性炭行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報(bào)告
- 2025-2031年中國竹鼠養(yǎng)殖及深加工行業(yè)投資研究分析及發(fā)展前景預(yù)測報(bào)告
- 超星爾雅學(xué)習(xí)通《國際經(jīng)濟(jì)學(xué)(中國人民大學(xué))》2025章節(jié)測試附答案
- 第13課 遼宋夏金元時(shí)期的對外交流 教案2024-2025學(xué)年七年級歷史下冊新課標(biāo)
- 固體廢棄物處理和資源化利用項(xiàng)目可行性研究報(bào)告申請建議書案例一
- 陜西省2024年高中學(xué)業(yè)水平合格考化學(xué)試卷試題(含答案解析)
評論
0/150
提交評論