




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
年4月19日DSP課程設計報告精文檔僅供參考DSP課程設計實驗報告語音壓縮、存儲與回放成績:工程設計50報告20答辯30總分評語:指導教師簽字:日期:一、實驗背景與內容語音通信是現(xiàn)代多媒體通信中一個重要的組成部分,而語音信號是信息的重要形式,語音信號處理有著廣泛的應用領域,同時語音壓縮在語音信號的傳輸、存儲等方面有非常廣泛的作用,而且在通信領域中已經有較成熟的發(fā)展和廣泛應用。本設計要求采用DSP及其A/D、D/A轉換器進行語音信號的壓縮、存儲和回放。語音的數(shù)字通信無論在可靠性、抗干擾能力、保密性還是價格方面都遠優(yōu)于模擬語音信號,但這是以信道占用寬頻帶寬為代價的。因此為了減少語音信號所占用的帶寬或存儲空間,就必須對數(shù)字語音信號進行壓縮編碼。一個優(yōu)秀的語音壓縮系統(tǒng)要求能夠在軟硬件資源占用比例低和壓縮編解碼時間短的同時,能夠實現(xiàn)多通道語音實時壓縮。DSP仿真器用于DSP的在線調試開發(fā),能夠經過軟件在線控制DSP的運行狀態(tài),并能夠查看DSP內部寄存器。PC是開發(fā)人員和DSP系統(tǒng)之間的交互界面,經過PC上安裝的CCS集成開發(fā)環(huán)境,開發(fā)人員能夠在友好的圖形界面下對目標系統(tǒng)進行操作。本次實驗采用DSPC5402實驗板實現(xiàn)語音信號的壓縮解壓的。SEED-VC5402DSK實驗板上集成了SRAM,FLASH,音頻輸入輸出接口等部件。二、實驗目的1、應用DSP算法實現(xiàn)對語音信號的壓縮、存儲和回放。2、熟悉使用C語言編寫較復雜的程序;3、熟悉C語言對外設(DSK板或示波器)的訪問(軟件編程、硬件連接);4、熟練使用軟件CCS5000對程序的完整調試過程。三、實驗設計要求及目標1要求(1)使用DSP實現(xiàn)語音壓縮和解壓縮的基本算法,算法類型自定,例如能夠采用G.711、G.729等語音壓縮算法。(2)采用A/D轉換器從MIC輸入口實時采集語音信號,進行壓縮后存儲到DSP的片內和片外RAM存儲器中,存儲時間不小于10秒。(3)存儲器存滿之后,使用DSP進行實時解壓縮,并從SPEAKER輸出口進行回放輸出。(4)使用指示燈對語音存儲和回放過程進行指示。2.設計思路語音信號的幅度(發(fā)音強度)并非均勻分布,由于小信號占的比例比大信號大很多,因此能夠進行非均勻量化。達到這一目標的基本做法是,對大信號使用大的量化間隔,而小信號則使用小的臺階。ITU-TG.711建議的PCMA律和μ律語音壓縮標準能夠分別將13比特和14比特壓縮為8比特,達到語音壓縮的目的。四、實驗原理1、DSK包括:主芯片1枚:100MHzTMS320VC5402DSPRAM1枚:1個軟件等待的64K×16bit的SRAM(CY7C1021V33FLASH1枚:256K×16bit的FLASH存儲器(AM39VF400A接口2個:一個連接到PC機并口的主機端接口HPI和用于仿真的JTAG測試總線控制器信號采集和輸出端口:麥克風/耳機音頻接口C5402的硬件特點:增強型哈佛結構,一個程序總線,三個獨立的數(shù)據(jù)總線;40bit的算術邏輯單元ALU;可尋址的程序空間達1Mx16bit;4Kx16bit片內ROM;16Kx16bit雙口片內RAM;片內外設:軟件可編程等待狀態(tài)發(fā)生器;片內鎖相環(huán)時鐘發(fā)生器;兩個多通道緩沖串口;增強型8bit并行HPI口;兩個16bit定時器;六通道DMA控制器;節(jié)電模式IDLE1,IDLE2,IDLE3做功耗控制;單周期定點指令(100MIPS)執(zhí)行時間為10ns。C5402硬件優(yōu)點:內部多總線結構保證在一個機器周期內能夠多次訪問程序空間和數(shù)據(jù)空間;指令執(zhí)行時的多重流水線結構將指令周期降低到了最小值;多處理單元能夠在一個指令周期內同時進行運算,而這種結構恰好滿足了數(shù)字信號處理中的一些特殊要求如FIR、IIR、FFT等運算。C5402的軟件特點:7種有效靈活的尋址方式,僅為10ns的指令執(zhí)行周期。2、TMS320C5402的結構及原理TMS320C5402采用先進的改進的哈佛結構和8條總線結構,解決了馮諾伊曼(Von-Neumann)結構中高速數(shù)據(jù)傳輸時的傳輸通道上的瓶頸現(xiàn)象,使處理器的性能大大提高,程序數(shù)據(jù)總線相互獨立,允許同時訪問程序存儲器和數(shù)據(jù)存儲器,實現(xiàn)高度并行操作。另外,還能夠在數(shù)據(jù)總線與程序總線之間相互傳送數(shù)據(jù),從而使處理器具有在單個周期內同時執(zhí)行算數(shù)運算、邏輯運算、移位操作、乘法/累加運算以及訪問程序和數(shù)據(jù)存儲器的強大功能。TMS320C5402的內部多總線結構保證在一個機器周期內能夠多次訪問程序空間和數(shù)據(jù)空間;指令執(zhí)行時的多重流水線結構將指令周期降低到了最小值;多處理單元能夠在一個指令周期內同時進行運算,而這種結構恰好滿足了數(shù)字信號處理中的一些特殊要求如FIR、IIR、FFT等運算。由于C5402有7種有效靈活的尋址方式的軟件特點,僅為10ns的指令執(zhí)行周期,還有一些特殊的運算指令更好地滿足了數(shù)字信號處理中特有的運算需要。TMS320C5402具有高速的,全雙工串行口,可用來與系統(tǒng)中的其它C54x器件,編碼解碼器,串行A/D,D/A轉換器以及其它的串行器件直接接口。這兩個串行口均為多通道緩沖串行口McBSP(Multi-channelBufferedSerialPort)。它支持全雙工通信,雙緩沖數(shù)據(jù)寄存器,允許連續(xù)的數(shù)據(jù)流。內置μ-律和A-律壓擴硬件。DSP結構框圖3、AD50的結構與原理AD50是單片音頻接口芯片(AIC)。它內部集成了16位的D/A和A/D轉換器,采樣速率最高可達22.05kb/s,其采樣速率可經過DSP編程來設置。在DAC之前有一個插值濾波器以保證輸出信號平滑和ADC之后有一個抽取濾波器以提高輸入信號的信噪比。AD50內部有7個數(shù)據(jù)和控制寄存器,用于編程控制它們的工作狀態(tài)。它的數(shù)據(jù)傳輸模式和采樣速率都能夠經過DSP對其控制寄存器的編程來實現(xiàn),因此,在許多場合下,AD50都作為DSP的AIC來實現(xiàn)音頻處理。寄存器0:空操作寄存器。
寄存器1:軟件復位
軟件掉電
選擇16位或15位工作方式
硬件或軟件二次通信請求方式的選擇寄存器2:使能ALTDATA輸入端
為ADC選擇16/15位方式寄存器3:選擇FS與FSD之間延遲SCLK的個數(shù)
告訴主機有幾個從機被聯(lián)上寄存器4:為輸入和輸出放大器選擇放大器增益
選擇N來設置采樣頻率,fs=MCLK/(128*N)或MCLK/(512*N)
在MCLK輸入端使能外部時鐘輸入并旁通內部的PLL寄存器5,6:保留AD50與C5402之間的數(shù)據(jù)傳送采用串行方式,包括兩種傳輸模式:16位和15+1位傳輸模式。15+1位模式時,其中的D0位表示二次通信。它們各自的時序如下:4、程序存儲芯片實驗中,電路選用的芯片SST39VF400是一個低功耗FLASH。芯片硬件特點:A17至A0為外部地址管腳,D15至D0為1條數(shù)據(jù)線,CE#為片選控制管腳(低有效),OE#為輸出控制管腳(低有效),WE#為寫入控制管腳(低有效)。工作在2.7V至3.6V電壓下,存儲容量位256KW,其。中的數(shù)據(jù)能夠保持1以上,可重復編程次數(shù)高達10萬次。5、u_LAW/a_LAW的壓擴硬件處理在電信中常常利用u律和a律對數(shù)據(jù)進行壓擴處理,C5400在McBSP中提供了專門的硬件實驗這一功能。壓擴處理時,CPU訪問到的都是16位的,她分別是利用線性的14位數(shù)據(jù)(u律)和13位(a律)數(shù)據(jù)左對齊獲得的。壓擴硬件結構和相應的數(shù)據(jù)如下圖所示。在本實驗中,我們經過軟件編程來完成線性碼轉換成A律。語音信號一般是小信號概率大,大信號出現(xiàn)的概率小,為提高小信號時的量化信躁比,壓縮比特速率,可為非線性量化。語音壓縮是把16位的數(shù)據(jù)比特轉化為8位數(shù)據(jù)比特,從而到達語音壓縮的目的。在主程序中經過A/D抽樣量化,能夠得到16位的線性編碼,再由編碼表經過軟件計算得到8位A律編碼,其中最高位為符號位,第6位到第4位為段落碼,低4位為段內碼。將8位的壓縮結果存儲到系統(tǒng)RAM中進行緩存,根據(jù)抽樣率、語音存儲時間以及系統(tǒng)RAM的容量設置語音存儲緩沖區(qū)的大小,待緩沖區(qū)存滿后,將緩沖區(qū)內的數(shù)據(jù)進行解壓縮,然后輸出到SPEAKER接口輸出端。若使用A/D轉換器,必須首先對A/D轉換器進行初始化設置,即設置A/D轉換器的工作模式、輸入增益以及抽樣頻率等。A律壓縮編碼表線性輸入編碼壓縮編碼0000000wxyza000wxyz0000001wxyza001wxyz000001wxyzab010wxyz00001wxyzabc011wxyz0001wxyzabcd100wxyz001wxyzabcde101wxyz01wxyzabcdef110wxyz1wxyzabcdefg111wxyz
五、程序設計思路DSP程序設計應包括用戶程序、存儲器配置程序。為了實現(xiàn)語音信號的采集與回放,先將語音信號采集,運用a律壓縮算法將信號壓縮并存入存貯器中,當放音開始時運用a律解壓算法將信號解壓并從存儲器中釋放出來,實現(xiàn)語音的回放。1、軟件設計流程否2、TMS320VC5402mcbsp的串口的初始化首先將DSP的串口1復位,再對串口1的16個寄存器進行編程,使串口1工作在以下狀態(tài):禁止SPI模式,但數(shù)據(jù)相,每幀一字,每字16位,幀同步脈沖低電平有效,而且?guī)叫盘柡鸵莆恍盘栍型獠繒r鐘產生。hHandset=codec_open(HANDSET_CODEC;此語句調用了函數(shù)codec_open(對串口1進行了初步設置,設置成功返回codec的句柄放在變量hHandset中,作為調用其它函數(shù)的實參。3、AD50的初始化:該初始化過程調用了5個函數(shù)對AD50的5項參數(shù)進行了設置,包括adc和dac的工作模式,模擬輸入和輸出的增益;以及AD,DA的轉換速率。4、從McBSP的接收通道讀取A/D轉換的值,然后經過壓縮解壓后將其發(fā)送到McBSP的發(fā)送通道,講解壓后的數(shù)據(jù)將數(shù)據(jù)寫入D/A轉換器。程序如下:while(1{/*Waitforsamplefromhandset*/while(!MCBSP_RRDY(HANDSET_CODEC{};/*Readsamplefromandwritebacktohandsetcodec*/data=*(volatileint*DRR1_ADDR(HANDSET_CODEC;pre=int2alaw(data;/*orpre=int2ulaw(data;*/data=alaw2int(pre;/*ordata=ulaw2int(pre;*/*(volatileint*DXR1_ADDR(HANDSET_CODEC=data;六、實驗程序1C語言程序/******************************************************************//*頭文件*//*******************************************************************/#include#include#include#include/*******************************************************************//*變量宏定義*//*******************************************************************/#defineSIGN_BIT(0x80/*SignbitforaA-lawbyte.*/#defineQUANT_MASK(0xf/*Quantizationfieldmask.*/#defineNSEGS(8/*NumberofA-lawsegments.*/#defineSEG_SHIFT(4/*Leftshiftforsegmentnumber.*/#defineSEG_MASK(0x70/*Segmentfieldmask.*//******************************************************************//*函數(shù)聲明*//*******************************************************************/voiddelay(s16period;voidled(s16cnt;voidinitcodec(void;voidflashenable(void;unsignedchardata2alaw(s16pcm_val;intalaw2data(unsignedchara_val;staticintsearch(intval,short*table,intsize;/*******************************************************************//*全局變量*//*******************************************************************/HANDLEhHandset;s16data;s16data1;u16i=0;u16temp1;u16j=0;u16k,l=0;u8temp2;u16buffer[2];staticshortseg_end[8]={0x1F,0x3F,0x7F,0xFF,0x1FF,0x3FF,0x7FF,0xFFF};/*******************************************************************//*主函數(shù)*//*******************************************************************/voidmain({if(brd_init(100return;led(2;//閃燈兩次initcodec(;//初始化codecflashenable(;//選擇片外FLASH為片外存儲器while(1{while(!MCBSP_RRDY(HANDSET_CODEC{};//等待接收handset處的采樣if(i==0brd_led_toggle(BRD_LED0;//點亮二極管0,表示錄音開始data=*(volatileu16*DRR1_ADDR(HANDSET_CODEC;//從handset處讀取采樣temp1=data2alaw(data;//對采樣進行a律壓縮/*****************************************************************//*把低地址數(shù)據(jù)放在高八位高地址數(shù)據(jù)放在低八位*//*******************************************************************/i=i+1;if(i%2==1{buffer[j]=(temp1<<=8;/*奇數(shù)數(shù)據(jù)左移8位temp1=abcdefgh00000000buffer[j]=temp1*/}else{buffer[j]=(buffer[j]|temp1;/*偶數(shù)數(shù)據(jù)與temp1取或組成新的數(shù)據(jù)buffer[j]=abcdefghiabcdefghi*/j++;//j加1}if(i>=44000{i=0;}if(j>=2{j=0;brd_led_toggle(BRD_LED0;//熄滅數(shù)碼管0表示錄音結束brd_led_toggle(BRD_LED1;//點亮二極管1表示放音開始/*******************************************************************//*放音部分*//*******************************************************************/for(k=0;k<44000;k++{if(k%2==0{temp2=(buffer[l]>>8&0x0ff;}else{temp2=buffer[l]&0x0ff;l++;}if(l>=2l=0;data1=alaw2data(temp2;while(!MCBSP_XRDY(HANDSET_CODEC{};*(volatileu16*DXR1_ADDR(HANDSET_CODEC=data1;}/*******************************************************************//*放音結束*//*******************************************************************/if(k==44000brd_led_toggle(BRD_LED1;//熄滅二極管1表示放音結束}}}//主程序結束/*******************************************************************//*子函數(shù)*//****************************************************************//*******延時******/voiddelay(s16period{inti,j;for(i=0;i{for(j=0;j>1;j++;}}/*******閃燈******/voidled(s16cnt{while(cnt--{brd_led_toggle(BRD_LED0;delay(1000;brd_led_toggle(BRD_LED1;delay(1000;brd_led_toggle(BRD_LED2;delay(1000;}}/*****初始化codec**/voidinitcodec(void{/*OpenHandsetCodec*/hHandset=codec_open(HANDSET_CODEC;//Acquirehandletocodec/*Setcodecparameters*/codec_dac_mode(hHandset,CODEC_DAC_15BIT;//DACin15-bitmodecodec_adc_mode(hHandset,CODEC_ADC_15BIT;//ADCin15-bitmodecodec_ain_gain(hHandset,CODEC_AIN_6dB;//6dBgainonanaloginputtoADCcodec_aout_gain(hHandset,CODEC_AOUT_MINUS_6dB;//-6dBgainonanalogoutputfromDACcodec_sample_rate(hHandset,SR_8000;//8KHzsamplingrate}/*****設置flash****/voidflashenable(void{CPLD_CTRL2_REG|=0x0010;CPLD_DMCTRL_REG|=0x0040;}/*****a律壓縮******/unsignedchardata2alaw(s16pcm_val{Intmask;Intseg;unsignedcharaval;if(pcm_val>=0{mask=0xD5;//標記(7thbit=1}else{mask=0x55;//標記bit=0pcm_val=-pcm_val;}//Convertthescaledmagnitudetosegmentnumber.seg=search(pcm_val,seg_end,8;//Combinethesign,segment,andquantizationbits.if(seg>=8//outofrange,返回最大數(shù).return(0x7F^mask;else{aval=seg<<SEG_SHIFT;if(seg<2aval|=(pcm_val>>1&QUANT_MASK;elseaval|=(pcm_val>>seg&QUANT_MASK;return(aval^mask;}}/****alaw的子程序**/staticintsearch(intval,short*table,intsize{Inti;for(i=0;i<size;i++{if(val<=*table++return(i;}return(size;}/*****a律解壓******/intalaw2data(unsignedchara_val{Intt;Intseg;a_val^=0x55;t=(a_val&QUANT_MASK<<4;seg=((unsigneda_val&SEG_MASK>>SEG_SHIFT;if(seg==0{t+=8;t=(t>>3;}if((seg<4&&(seg>0{t+=0x108;t=(t>>(4-seg;}if(seg>3{t+=0x108;t=(t<<=(seg-4;}return((a_val&SIGN_BIT?t:-t;}/*******************************************************************//*結束*//*******************************************************************/2、存儲器的分配(*.cmd)MEMORY{PAGE0:VECS:origin=0080h,length=0080h/*InternalProgramRAM*/PRAM:origin=7600h,length=8000h/*InternalProgramRAM*/PAGE1:SCRATCH:origin=0060h,length=0020h/*ScratchPadDataRAM*/DMARAM:origin=0C00h,length=0300h/*DMAbuffer*/DATA:origin=1100h,length=0080h/*InternalDataRAM*/STACK:origin=1180h,length=0560h/*StackMemorySpace*/INRAM:origin=1900h,length=0100h/*InternalDataRAM*/HPRAM0:origin=1A00h,length=0002h/*HPImemoryaccessiblebyHostandDSP*/HPRAM1:origin=1A02h,length=0280h/*HPImemoryaccessiblebyHostandDSP*/HPRAM2:origin=1C82h,length=0280h/*HPImemoryaccessiblebyHostandDSP*/EXRAM:origin=1F10h,length=5A00h/*ExternalDataRAM*/}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.3computation*/costab>EXRAMPAGE1/*tableforcosine*/V23>INRAMPAGE1FSK>INRAMPAGE1hpibuff0>HPRAM0PAGE1hpibuff1>HPRAM1PAGE1hpibuff2>HPRAM2PAGE1dma_buff>DMARAMPAGE1}七、CCS程序調試與結果1、啟動SetupCCS程序設置CCS的環(huán)境。選擇浮動菜單Importconfiguration->Availableconfiguration列表中,然后選中C5402DeviceSimulator(沒接DSK板時、C5402DSKviaParallelPortEmulation(接DSK板時。選中Import,最后選中saveandquit以保存目標DSP的配置。2、運行CCS2(‘5000,出現(xiàn)CCS界面。新建一個工程,向工程中添加c語言程序文件、CMD程序、頭文件和庫文件。C程序運行支持庫:C:\ti\c5400\cgtools\rts.lib相關的頭文件C:\ti\c5400\cgtools\include\*.hDSK板庫文件:C:\ti\c5400\dsk5402\drv5402.lib,dsk5402.lib相關的頭文件C:\ti\c5400\dsk5402\include\*.h在程序中還用到其它頭文件:#include#include#inc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度股權轉讓及經營權轉讓一體化協(xié)議
- 二零二五年度居民住房租賃合同租賃房屋租賃期限調整協(xié)議
- 二零二五年度保密信息處理保密合同
- 綠茶茶園承包經營合同(2025年度)含茶樹病蟲害防治服務
- 二零二五年度農村宅基地買賣合同協(xié)議書(農村產權交易平臺)
- 二零二五年度個人私下股權轉讓及投資風險分擔協(xié)議
- 代理銷售合同市場拓展策略約定事項說明
- 三字經儒家經典讀后感
- 歷史人物事件記憶題
- 企校合作辦學合同
- (高清版)JTGT 3365-02-2020 公路涵洞設計規(guī)范
- DZ∕T 0223-2011 礦山地質環(huán)境保護與恢復治理方案編制規(guī)范(正式版)
- 2024年湖南有色金屬職業(yè)技術學院單招職業(yè)適應性測試題庫學生專用
- 醫(yī)院營養(yǎng)食堂餐飲服務投標方案(技術方案)
- 醫(yī)院培訓課件:《分級護理制度解讀》
- 學生宿舍安全應急疏散預案
- 北師大版數(shù)學四年級下冊第2單元 認識三角形和四邊形 大單元整體教學設計
- 2024年長沙環(huán)境保護職業(yè)技術學院單招職業(yè)技能測試題庫及答案解析
- 靜療相關血管解剖知識課件
- 中職統(tǒng)編《金屬材料與熱處理》系列課件 第4章 非合金鋼(動畫) 云天系列課件
- 【蘇科版】九年級物理下冊教學計劃(及進度表)
評論
0/150
提交評論