dsp+語音壓縮存儲與回放_第1頁
dsp+語音壓縮存儲與回放_第2頁
dsp+語音壓縮存儲與回放_第3頁
dsp+語音壓縮存儲與回放_第4頁
dsp+語音壓縮存儲與回放_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

PAGEPAGE1A率語音壓縮、存儲與回放一、概述語音信號是信息的重要形式,語音信號處理有著廣泛的應(yīng)用領(lǐng)域,而語音壓縮在語音信號的傳輸、存儲等方面有非常廣泛的作用,而且在通信領(lǐng)域中以及有較成熟的發(fā)展并且已經(jīng)廣泛應(yīng)用。本次實驗采用TI公司的TMS320C5402的DSK實驗版實現(xiàn)語音信號的壓縮存儲與解壓的。SEED-VC5402DSK實驗板上集成了SRAM,FLASH,音頻輸入輸出接口等部件。這些外設(shè)為我們提供了極大的方便。實驗主要分為語音信號接收,壓縮,存儲,解壓,增益和輸出幾部分。語音信號模數(shù)、數(shù)模轉(zhuǎn)換采用TLC320AD50C(以下簡稱AD50),這是一款SIGMA-DELTA型單片音頻接口芯片(AIC)。它內(nèi)部集成了16位的D/A和A/D轉(zhuǎn)換器,采樣速率最高可達22.05kb/s,其采樣速率可通過DSP編程來設(shè)置,內(nèi)含抗混疊濾波器和重構(gòu)濾波器。在DAC之前有一個插值濾波器以保證輸出信號平滑和ADC之后有一個抽取濾波器以提高輸入信號的信噪比。DSP主芯片通過McBSP多通道緩沖串行口與AD50連接,其主要特點如下:1.全雙工通信。2.雙緩沖發(fā)送、三緩沖接收寄存器,以實現(xiàn)連續(xù)數(shù)據(jù)流發(fā)送。3.支持多達128通道個的接收和發(fā)送。4.利用DMA,McBSP可脫離CPU控制,直接內(nèi)存存取單獨運行5.內(nèi)置m律和A律硬件壓縮和擴展。信號的接收和輸出采用DMA方式,DMA是C5400DSP系統(tǒng)中非常重要的片上外設(shè),其控制器可以在不影響CPU的情況下完成數(shù)據(jù)的傳輸,因此數(shù)據(jù)傳輸速度快,其數(shù)據(jù)的源和目的可以是片內(nèi)存儲器片上外設(shè)和片外設(shè)備。C5402的DMA擁有6個獨立的可編程通道,允許6個不同的DMA操作。另外DMA控制器還相應(yīng)HPI的服務(wù)請求。二、實驗?zāi)康?.通過本次試驗的設(shè)計和操作,掌握在CCS的軟件環(huán)境下進行編輯、編譯鏈接、調(diào)試和數(shù)據(jù)分析等工作。2.學習采集及存儲數(shù)據(jù)方法。3.充分利用DSK的集成環(huán)境,完成語音的采集,存儲和回放。4.掌握PCM編碼技術(shù)的基本原理及語音的A律壓縮與解壓。三、實驗內(nèi)容1.使用DSP實現(xiàn)語音壓縮和解壓縮的基本算法,算法類型自定。2.采用A/D轉(zhuǎn)換器從MIC輸入口實時采集語音信號,進行壓縮后存儲到DSP的片內(nèi)和片外RAM存儲器中。3.存儲器存滿后,使用DSP進行實時解壓縮,并從SPEAKER輸出口進行回放輸出。4.使用指示燈對語音存儲和回放過程進行指示。四、實驗原理1.語音編碼(1)概念:語音編碼一般分為兩類:一類是波形編碼,一類是被稱為“聲碼器技術(shù)”的編碼。PCM編碼即脈沖編碼調(diào)制。波形編碼的最簡單形式就是脈沖編碼調(diào)制(Pulsecodemodulation),這種方式將語音變換成與其幅度成正比的二進制序列,而二進制數(shù)值往往采用脈沖表示,并用脈沖對采樣幅度進行編碼,所以叫做脈沖編碼調(diào)制。脈沖編碼調(diào)制沒有考慮語音的性質(zhì),所以信號沒有得到壓縮。(2)量化:脈沖編碼調(diào)制用同等的量化級數(shù)進行量化,即采用均勻量化,而均勻量化是基本的量化方式。但是均勻量化有缺點,在信號動態(tài)范圍較大而方差較小的時候,其信噪比會下降。

國際上有兩種非均勻量化的方法:A律和μ律,μ律是最常用的一種。在美國,7位μ律是長途電話質(zhì)量的標準。而我國采用的是A律壓縮,而且有標準的A律PCM編碼芯片。

(3)DPCM&ADPCM:降低傳輸比特率的方法之一是減少編碼的信息量,這要消除語音信號中的冗余度。相鄰的語音樣本之間存在明顯的相關(guān)性,因此對相鄰樣本間的差信號進行編碼,便可使信息量得到壓縮。因為差分信號比原語音信號的動態(tài)范圍和平均能量都小。這種編碼叫DifferentialPCM,簡稱DPCM,即差分脈沖編碼調(diào)制。ADPCM即自適應(yīng)差分脈沖編碼調(diào)制,是包括短時預(yù)測的編碼系統(tǒng)。CCITT(國際電報電話咨詢委員會)在1984年提出的32kbit/s的編碼器建議就是采用ADPCM作為長途傳輸中的國際通用語音編碼方案。這種ADPCM編碼方案達到64kbit/sPCM的語音傳輸質(zhì)量,并具有很好的抗誤碼性能。2.當前壓縮算法及壓縮技術(shù)介紹(1).壓縮算法的介紹用途抽樣頻率(kHz)壓縮標準或系統(tǒng)壓縮技術(shù)碼率(kbit/s)長途電話8G.711G.726G.728PCMADPCMLD-CELP6440/32/24/1616移動電話8GSMIS54/IS95G.729RPE/LTPVSELP/QSELPCS-ACELP13.216/8/4/2/18ISDN,會議電視1G.722SB-ADPCM64/56/48VCD32/48ISO/IEC10149MPEG1192/128/96(2).壓縮技術(shù)的介紹壓縮技術(shù)a.波形編碼:直接對語音時域或頻域波形樣值進行編碼。PCM,ADPCM,SBC,ATCb.參數(shù)編碼:對人類語音的生成模型的參數(shù)進行編碼。c.混合編碼:結(jié)合波形編碼和參數(shù)編碼。MPLPC,RPE/LTP,CELP,VSELPd.可變速率編碼:G.727嵌入式編碼e.無失真編碼?;舴蚵幋af.ADPCM工作原理h.自適應(yīng)地改變量化幅值i.確定好量化幅度的最大值和最小值3、語音的A律壓縮與解壓統(tǒng)計表明對于每一個講話者來說,語音中小幅度成分出現(xiàn)的概率要比大幅度多得多,為了在語音信號的整個動態(tài)范圍內(nèi)都可以接受低電平信號,量化電平必須照顧到語音的低電平信號,極低電平的量化間隔要小,高電平的量化間隔要大。壓縮擴展技術(shù)能過借用3種方法實現(xiàn):(1)模擬信號在到達ADC前,即進行8比特量化前,首先通過一個非線性電路;(2)使用一個8比特ADC,其內(nèi)部量化電平取非均等間隔;(3)使用線性12比特ADC然后借助于數(shù)字查表(12筆特輸入,8比特輸出)。這三種方法都需要有非線性性功能,差別僅是非線性放在什么地方。兩個標準的壓縮擴展特性曲線稱為u律和A律,使CCITT提出的G.711協(xié)議PCM編碼方式的一部分。北美和日本使用u律,歐洲使用A律,兩個算法使用了非線性,把量化間隔變換成人耳能檢測的線性空間。A律限制采樣值為12比特,A律的壓縮可以按照下列公式進行定義:式中,A是壓縮參數(shù)(在歐洲,A=87.6)x是需要壓縮的歸一化整數(shù)。從線性到A律的壓縮轉(zhuǎn)換如下表所示:壓縮后的碼字組成:比特0-3表矢量化值,比特4-6表示段值,壓縮后的碼字符號放在比特7,為了簡化未寫出.壓縮前的碼字丟棄的比特數(shù)壓縮后的碼字輸入值段值,量化值比特:11109876543210比特:65432100000000abcdx1000abcd0000001abcdx1001abcd000001abcdxx2010abcd00001abcdxxx3011abcd0001abcdxxxx5100abcd001abcdxxxxx6101abcd01abcdxxxxxx7110abcd1abcdxxxxxxx8111abcdA律的擴展可定義為:從A律到線性擴展的轉(zhuǎn)換如下表:壓縮過的碼字偏值的輸入段值,量化值比特:6543210比特:11109876543210000abcd0000000abcd1001abcd0000001abcd1010abcd000001abcd10011abcd00001abcd100100abcd0001abcd1000101abcd001abcd10000110abcd01abcd100000111abcd1abcd10000004.硬件特點C5402的特點增強型哈佛結(jié)構(gòu),一個程序總線,三個獨立的數(shù)據(jù)總線40bit的算術(shù)邏輯單元ALU可尋址的程序空間達1Mx16bit4Kx16bit片內(nèi)ROM16Kx16bit雙口片內(nèi)RAM片內(nèi)外設(shè):軟件可編程等待狀態(tài)發(fā)生器;片內(nèi)鎖相環(huán)時鐘發(fā)生器;兩個多通道緩沖串口;增強型8bit并行HPI口;兩個16bit定時器;六通道DMA控制器節(jié)電模式IDLE1,IDLE2,IDLE3做功耗控制單周期定點指令(100MIPS)執(zhí)行時間為10ns5.C5402及其多通道緩沖串口C5402硬件優(yōu)點:內(nèi)部多總線結(jié)構(gòu)保證在一個機器周期內(nèi)可以多次訪問程序空間和數(shù)據(jù)空間;指令執(zhí)行時的多重流水線結(jié)構(gòu)將指令周期降低到了最小值;多處理單元可以在一個指令周期內(nèi)同時進行運算,而這種結(jié)構(gòu)恰好滿足了數(shù)字信號處理中的一些特殊要求如FIR、IIR、FFT等運算。C5402的軟件特點:7種有效靈活的尋址方式,僅為10ns的指令執(zhí)行周期。6.AD50(1)AD50是一款SIGMA-DELTA型單片音頻接口芯片。它內(nèi)部集成了16位的D/A和A/D轉(zhuǎn)換器,采樣速率最高可達22.05kb/s,其采樣速率可通過DSP編程來設(shè)置。在DAC之前有一個插值濾波器以保證輸出信號平滑和ADC之后有一個抽取濾波器以提高輸入信號的信噪比。(2)AD50內(nèi)部有7個數(shù)據(jù)和控制寄存器,用于編程控制它們的工作狀態(tài)。寄存器0:空操作寄存器。寄存器1:軟件復位;軟件掉電;選擇16位或15位工作方式;硬件或軟件二次通信請求方式的選擇。寄存器2:使能ALTDATA輸入端;為ADC選擇16/15位方式。寄存器3:選擇FS與FSD之間延遲SCLK的個數(shù);告訴主機有幾個從機被聯(lián)上。寄存器4:為輸入和輸出放大器選擇放大器增益;選擇N來設(shè)置采樣頻率,fs=MCLK/(128*N)MCLK/(512*N);在MCLK輸入端使能外部時鐘輸入并旁通內(nèi)部的PLL。寄存器5,6:保留(3)AD50與C5402之間的數(shù)據(jù)傳送采用串行方式,包括兩種傳輸模式:16位和15+1位傳輸模式。15+1位模式時,其中的D0位表示二次通信。五、實驗程序設(shè)計TMS320VC5402McBSP的串口的初始化:首先將DSP的串口1復位,再對串口1的16個寄存器進行編程,使串口1工作在以下狀態(tài):禁止SPI模式,但數(shù)據(jù)相,每幀一字,每字16位,幀同步脈沖低電平有效,并且?guī)叫盘柡鸵莆恍盘栍型獠繒r鐘產(chǎn)生。DSP給AD50編程用查詢方式,A/D轉(zhuǎn)換數(shù)據(jù)的接收和D/A轉(zhuǎn)換的數(shù)據(jù)發(fā)送采用查詢方式。hHandset=codec_open(HANDSET_CODEC);此語句調(diào)用了函數(shù)codec_open()對串口1進行了初步設(shè)置,設(shè)置成功返回codec的句柄放在變量hHandset中,作為調(diào)用其他函數(shù)的實參。AD50的初始化:codec_dac_mode(hHandset,CODEC_DAC_15BIT);/*DAC15bit模式*/codec_adc_mode(hHandset,CODEC_ADC_15BIT);/*ADC15bit模式*/codec_ain_gain(hHandset,CODEC_AIN_6dB);/*輸入6dB增益*/codec_aout_gain(hHandset,CODEC_AOUT_MINUS_6dB);/*輸出-6dB增益*/codec_sample_rate(hHandset,SR_16000);/*16KHz采樣率*/該初始化過程調(diào)用了5個函數(shù)對AD50的5項參數(shù)進行了設(shè)置,包括ADC和DAC的工作模式,模擬輸入和輸出的增益;以及AD/DA的轉(zhuǎn)換速率。3.用TMS320VC5402實現(xiàn)語音的A率壓縮解壓有兩種方法:(1)使用多通道緩沖串口(McBSP)的縮展器在多緩沖通道串口(McBSP)內(nèi)部裝置了硬件電路,支持A律格式縮展器,對數(shù)據(jù)進行壓縮與擴展,A律縮展器允許14比特的動態(tài)范圍。首先描述一下McBSP硬件如何能夠同時處理A律,如圖顯示的是McBSP縮展器硬件工作流程。在接受端,McBSP接收壓縮的、非線性的數(shù)據(jù)然后擴展為線性數(shù)據(jù)寫道CPU或DMA,在發(fā)送端,從CPU或DMA得到的線性數(shù)據(jù)在發(fā)送前必須按著A律壓縮。RSRRBRRJUSTDRR接收移位接收移位寄存器接收緩沖寄存器擴展器器數(shù)據(jù)發(fā)送寄存器從CPU/DMA輸入數(shù)據(jù)接收寄存器調(diào)整模式控制位到CPU或DMADLB模式 非DSB模式用軟件實現(xiàn)主程序的功能是從McBSP的接收通道讀取A/D轉(zhuǎn)換的值,然后經(jīng)過壓縮解壓后將其發(fā)送到McBSP的發(fā)送通道,構(gòu)成AD50CODEC模擬輸入和輸出通道的自環(huán),是否能接收到A/D轉(zhuǎn)換的數(shù)據(jù)是通過查詢串口1的接收標志RRDY來進行的,程序為:while(1){while(!MCBSP_RRDY(HANDSET_CODEC)){};data=*(volatileint*)DRR1_ADDR(HANDSET_CODEC);temp1=data2alaw(data);data=alaw2data(temp2);*(volatileint*)DXR1_ADDR(HANDSET_CODEC)=data;}初始化串口開始初始化串口開始數(shù)據(jù)處理和送出串口準備好否?初始化AD50 六、實驗操作步驟將SEED-VC5402DSK板與計算機的并口相連。連接DSK板的電源,并啟動計算機。雙擊桌面上的CCS2( C5000)圖標運行CCS程序,在CCS并行調(diào)試管理器窗口中選擇打開“C5402DSK/CPU-1”選項啟動DSK板的驅(qū)動程序,注意在啟動CCS之前先按一下DSK板的復位按鈕。正常啟動CCS之后,在CCS的左上角出現(xiàn)“C5402DSK/CPU-1”將本工程目錄拷貝至C:\ti\myproject目錄下。將本工程進行編譯,并裝載程序。運行工程,在MIC信號輸入端輸入語音信號,在SPEAKER信號輸出端用耳機接收。七、程序調(diào)試及結(jié)果1.待程序設(shè)計好之后,將其添加到一個新建的工程里調(diào)試,編譯,在次過程中要向工程中添加文件:.CMD和庫文件:(1)drv5402.lib是軟件仿真所用的仿真器所必需的庫文件;(2)dsk5402.lib是驅(qū)動DSK板所必需的庫文件;(3)rts.lib,這個庫提供目標DSP運行時間支持(runtime-support)。在程序中還用到了頭文件:#include<type.h>#include<board.h>#include<codec.h>#include<mcbsp54.h>構(gòu)建通過并生成.out文件,然后裝載.out文件。這樣就可以運行了。為了驗證程序是否已正常運行,可以在麥克風/揚聲器接口分別接上話筒和耳機,對著話筒說一段話,一段延時后將可以從耳機中聽到之前的聲音。同時,也可以在CCS中打開觀察窗口、寄存器窗口以及圖形顯示窗口。2..cmd文件類型及作用:.cmd是鏈接器命令文件,用于存儲器配置。.cmd文件結(jié)構(gòu):.cmd由兩條鏈接偽指令來描述:MEMORY和SECTIONS,其中:MEMORY定義用戶目標系統(tǒng)存儲器的配置;SECTIONS控制段的構(gòu)建和存儲器的分配。首先存儲器空間是需要配置的,因為DSP不同的空間占用相同的地址,因此需要人工分配。5402.cmd全文及其解釋如下:MEMORY{PAGE0:VECS:origin=0080h,length=0080h/*內(nèi)部程序RAM*/PRAM:origin=0100h,length=0FFFh/*內(nèi)部程序RAM*/PAGE1:SCRATCH:origin=1000h,length=0020h/*ScratchPadDataRAM*/DMARAM:origin=1020h,length=0300h/*DMA緩存*/DATA:origin=1320h,length=0080h/*內(nèi)部數(shù)據(jù)RAM*/STACK:origin=1400h,length=0500h/*堆棧內(nèi)存空間*/INRAM:origin=1900h,length=0100h/*內(nèi)部數(shù)據(jù)RAM*/HPRAM0:origin=1A00h,length=0002h/*HPI*/HPRAM1:origin=1A02h,length=0280h/*HPI*/HPRAM2:origin=1C82h,length=0280h/*HPI*/EXRAM:origin=1F10h,length=0EA00h/*外部內(nèi)存*/}SECTIONS{.cinit>PRAMPAGE0.text>PRAMPAGE0.vectors>VECSPAGE0init_var>PRAMPAGE0detect>PRAMPAGE0vrcprg >PRAMPAGE0matprg >PRAMPAGE0 .stack>STACKPAGE1.trap>SCRATCHPAGE1.const>EXRAMPAGE1.data>EXRAMPAGE1.bss>EXRAMPAGE1.cio>EXRAMPAGE1.switch>EXRAMPAGE1tables>EXRAMPAGE1var>EXRAMPAGE1svctab>EXRAMPAGE1/*SS_VLSPtable*/vctab>EXRAMPAGE1/*VLSPtable*/uvctab>EXRAMPAGE1/*UVLSPtable*/cuvtab>EXRAMPAGE1/*Stochasticcodebook*/cdbktab>EXRAMPAGE1/*variouscodebooktables*/logtab>EXRAMPAGE1/*tableforlog2*/powtab>EXRAMPAGE1/*tableforpow2*/hamtab>EXRAMPAGE1/*tableforhamming*/lgwtab>EXRAMPAGE1/*tableforlagwindow*/acostab>EXRAMPAGE1/*tableforarccos*/sqrtab>EXRAMPAGE1/*tableforsquareroot*/acbtab>EXRAMPAGE1/*tableforthresholdsinacb*/pm03tab>EXRAMPAGE1/*tableforx^(-0.3)computation*/costab>EXRAMPAGE1/*tableforcosine*/V23>INRAMPAGE1FSK>INRAMPAGE1hpibuff0>HPRAM0PAGE1hpibuff1>HPRAM1PAGE1hpibuff2>HPRAM2PAGE1dma_buff>DMARAMPAGE1}.cmd文件的細節(jié)問題:未初始化段:存儲器中的保留空間(通常是RAM)。程序可以在運行時使用這個空間,建立和存儲變量。匯編器compiler建立如下未初始化段:.bss段:為globalandstaticvariables保留空間。當使用-c鏈接選項,程序啟動時,C/C++boot程序?qū)?cinit段的數(shù)據(jù)拷出,存到.bss段中。.stack段:為C/C++系統(tǒng)堆棧systemstack分配存儲器,其存儲器可以傳送變量。八、硬件實現(xiàn)及現(xiàn)象連接好SEED-VC5402DSK試驗板和計算機的通信,通電后首先進行復位,然后啟動CCS,編譯、下載。運行編寫的程序會看到DSK板上的3個燈依次點亮三次,熄滅之后就可以進行采集語音信號了,當?shù)谝粋€燈亮時,開始在J5端采集音頻信號,采集完后,第一個燈滅,第二個燈亮,在J6端耳機開始放音,就會聽到剛才儲存的15秒左右的音頻信號。放完音后,第二個燈熄滅,第三個燈亮,程序結(jié)束。經(jīng)過短暫的延時后,程序進入下一輪循環(huán)。九、實驗心得及總結(jié) 本次課程設(shè)計我們學會了DSP基本的原理結(jié)構(gòu)、TMS320C5402芯片及其DSK開發(fā)板的使用,并利用編寫了本次A率語音壓縮存儲的程序,對語音壓縮的基本原理也有了一定的了解。課程設(shè)計中我們選擇了較為簡單的C語言而沒有選擇繁雜的匯編語言,但是由于以前沒有給PC以外的平臺編寫程序的經(jīng)驗,給涉及硬件的程序編寫帶來了困難。通過閱讀TI公司的例程和相關(guān)的文檔,我們才逐步掌握了DSP編程的方法。 課程設(shè)計中使用了TI的CCS集成開發(fā)工具,給整個課程設(shè)計帶來了極大的便利,學會了CCS使用后,整個程序的設(shè)計、編輯、載入都可在一個集成環(huán)境下完成,而不用去輸入繁雜的DOS提示符命令。 本次課程設(shè)計的結(jié)果基本達到了預(yù)期的效果,但是還有很多不完善的地方。程序在運行過程中始終伴隨著某種固定的噪聲,雖然反復查詢修改程序,最后仍然沒有找到噪聲產(chǎn)生的原因,只是通過增加采樣頻率和輸出增益盡量的減少噪聲的干擾。程序在運行過程中也不是每次都按照預(yù)期結(jié)果運行,有時出現(xiàn)語聲被噪聲掩埋的現(xiàn)象,分析原因可能是由于DSK開發(fā)板的存儲器配置出現(xiàn)問題,但因時間所限,最終沒有找到錯誤的原因并將其改正。十、A率語音源程序:#include<type.h>#include<board.h>#include<codec.h>#include<mcbsp54.h>voiddelay(intperiod); //延時子程序聲明unsignedchardata2alaw(intpcm_val); //壓縮子程序intalaw2data(unsignedchar a_val); //解壓縮子程序HANDLEhHandset; //定義句柄intdata; //數(shù)據(jù)中間量 longi,j=0; //壓縮計數(shù)器longk,l=0; //解壓縮計數(shù)器unsignedinttemp; //數(shù)據(jù)中間量unsignedintm; //計數(shù)器unsignedintbuffer[50000]; //存儲數(shù)組voidmain(){if(brd_init(100)) //初始化DSK板,失敗退出return; for(m=6;m>0;m--) { brd_led_toggle(BRD_LED0); delay(1000); brd_led_toggle(BRD_LED1); delay(1000); brd_led_toggle(BRD_LED2); delay(1000); }hHandset=codec_open(HANDSET_CODEC);codec_dac_mode(hHandset,CODEC_DAC_15BIT); //15bitD/A轉(zhuǎn)換codec_adc_mode(hHandset,CODEC_ADC_15BIT); //15bitA/D轉(zhuǎn)換codec_ain_gain(hHandset,CODEC_AIN_6dB); //輸入6dB增益codec_aout_gain(hHandset,CODEC_AOUT_MINUS_12dB); //輸出-12dB增益codec_sample_rate(hHandset,SR_16000); //16K采樣率while(1){ brd_led_disable(BRD_LED1); //關(guān)閉led1 brd_led_disable(BRD_LED2); //關(guān)閉led2 brd_led_toggle(BRD_LED0); //開啟led0 while(!MCBSP_RRDY(HANDSET_CODEC)){}; //采集語音信號 data=*(volatileu16*)DRR1_ADDR(HANDSET_CODEC); temp=data2alaw(data); //存儲壓縮后的數(shù)據(jù),按照壓縮格式 i=i+1; if(i%2==1) buffer[j]=(temp<<=8); else { buffer[j]=(buffer[j]|temp); j++; } if(i>=100000) i=0; //放音開始 if(j>=50000) { j=0; brd_led_disable(BRD_LED0); brd_led_disable(BRD_LED2); brd_led_toggle(BRD_LED1);//LED1放音指示燈亮 for(k=0;k<100000;k++) { if(k%2==0) temp=(buffer[l]>>8)&0x0ff; else { temp=buffer[l]&0x0ff; l++; } if(l>=50000) l=0; data=alaw2data((unsignedchar)temp); //解壓縮數(shù)據(jù) while(!MCBSP_XRDY(HANDSET_CODEC)){}; //輸出解壓后的數(shù)據(jù) *(volatileu16*)DXR1_ADDR(HANDSET_CODEC)=data*4; } brd_led_disable(BRD_LED0); brd_led_disable(BRD_LED1); brd_led_toggle(BRD_LED2);//放音結(jié)束 for(m=0;m<3;m++)delay(1000); for(m=0;m<50000;m++)buffer[m]=0; }}}//延時子程序voiddelay(intperiod){in

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論