版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《DSP技術(shù)與應(yīng)用》課程設(shè)計(jì)報(bào)告</p><p> 選題名稱: 語音壓縮與回放 </p><p> 系(院): 計(jì)算機(jī)工程學(xué)院</p><p> 專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)(嵌入式系統(tǒng)軟件設(shè)計(jì))</p><p> 班 級(jí): 計(jì)算
2、機(jī)1073 </p><p> 姓 名: 學(xué) 號(hào): </p><p> 指導(dǎo)教師: </p><p> 學(xué)年學(xué)期: 2009 ~ 2010 學(xué)年 第 2 學(xué)期</p><p>
3、2010年 6 月 11 日</p><p><b> 摘要:</b></p><p> 如何在實(shí)際系統(tǒng)中實(shí)現(xiàn)語音壓縮, 這是一個(gè)重要的研究領(lǐng)域。目前, PC上的實(shí)時(shí)語音壓縮技術(shù)已經(jīng)較為成熟,而嵌入式系統(tǒng)領(lǐng)域的語音壓縮技術(shù)還有待發(fā)展和完善。由于大多數(shù)高質(zhì)量、低碼 率的語音壓縮算法有較為復(fù)雜的數(shù)據(jù)運(yùn)算, 所以傳統(tǒng)的單片機(jī)已經(jīng)不能勝任, 必須采用
4、更高性能的處理器, 而專門為數(shù)字信號(hào)處理設(shè)計(jì)的數(shù)字信號(hào)處理器 (DSP)為語音壓縮的實(shí)現(xiàn)提供了一個(gè)很好的平臺(tái)。隨著超大規(guī)模集成電路 (VL S I)工藝的進(jìn)步 ,高速數(shù)字信號(hào)處理器 (DSP)技術(shù)的飛速發(fā)展以及先進(jìn)開發(fā)工具的完備 ,使得復(fù)雜的語音編解碼算法在以高性 能微處理器為核心的硬件系統(tǒng)上實(shí)時(shí)實(shí)現(xiàn)成為可 能 。本文介紹了一種基于目前性能價(jià)格比較高的16位定點(diǎn) DSP芯片 TMS320VC54X的語音壓縮處理系統(tǒng) , 可以直接作為會(huì)議
5、電視 、PSTN 可視電話、IP 網(wǎng)絡(luò)多媒體通信、遠(yuǎn)程醫(yī)療系統(tǒng)終端設(shè)備中聲音信源編碼解碼器系統(tǒng)。</p><p> 關(guān)鍵詞:語音壓縮;語音編碼;DSP</p><p><b> 目錄</b></p><p><b> 1課題綜述1</b></p><p> 1.1 課題來源1</p
6、><p> 1.2 預(yù)期目標(biāo)1</p><p> 1.3 面對(duì)的問題1</p><p> 2 系統(tǒng)設(shè)計(jì)及分析2</p><p> 2.1 涉及的基礎(chǔ)知識(shí)2</p><p> 2.2 實(shí)驗(yàn)方案4</p><p> 2.3 程序流程圖5</p><p>&
7、lt;b> 3 程序代碼6</b></p><p> 3.1 頭文件定義6</p><p><b> 3.2 主函數(shù)7</b></p><p> 3.3 a律壓縮子函數(shù)12</p><p> 3.4 a律解壓縮子函數(shù)13</p><p> 3.5 延時(shí)子函數(shù)
8、14</p><p> 3.6 5402.cmd文件14</p><p> 4 程序運(yùn)行與調(diào)試17</p><p> 4.1 實(shí)驗(yàn)結(jié)果17</p><p><b> 總 結(jié)19</b></p><p><b> 參考文獻(xiàn)20</b></p>
9、<p><b> 1課題綜述</b></p><p><b> 1.1 課題來源</b></p><p> 數(shù)字化語音存儲(chǔ)與回放系統(tǒng),以微處理芯片為核心,具有語音可控、 回放靈活、無磨損、可靠簡(jiǎn)單等特點(diǎn)。因而在各類公共設(shè)施、智能儀表、家用電子產(chǎn)品等領(lǐng)域有著廣泛的應(yīng)用。該系統(tǒng)目前有多種方案可以實(shí)現(xiàn),其中采集成語音芯片是一種較簡(jiǎn)單通
10、用的方案,但該方案智能性較差,如音量不能放大、錄音時(shí)間固定等。在通信應(yīng)用領(lǐng)域中, 壓縮語音信號(hào)的傳輸帶寬或降低電話信道的傳輸碼率, 一直是設(shè)計(jì)人員追求的目標(biāo)。語音編碼在實(shí)現(xiàn)這一目標(biāo)的過程中擔(dān)當(dāng)著重要的角色, 語音編碼是壓縮語音信號(hào)的數(shù)字表示, 而且是這些信號(hào)所需比特?cái)?shù)最小的算法??梢哉f, 語音壓縮技術(shù)的發(fā)展和人類信息技術(shù)的發(fā)展息息相關(guān)。因此, 對(duì)語音壓縮技術(shù)的研究具有重要的現(xiàn)實(shí)意義。</p><p><b&
11、gt; 1.2 預(yù)期目標(biāo)</b></p><p> ?。?)使用DSP實(shí)現(xiàn)語音壓縮和解壓縮的基本算法,算法類型自定,例如可以采用G.711、G.729等語音壓縮算法。</p><p> ?。?)采用A/D轉(zhuǎn)換器從MIC輸入口實(shí)時(shí)采集語音信號(hào),進(jìn)行壓縮后存儲(chǔ)到DSP的片內(nèi)和片外RAM存儲(chǔ)器中,存儲(chǔ)時(shí)間不小于10秒。</p><p> ?。?)存儲(chǔ)器存滿之
12、后,使用DSP進(jìn)行實(shí)時(shí)解壓縮,并從SPEAKER輸出口進(jìn)行回放輸出。</p><p> ?。?)使用指示燈對(duì)語音存儲(chǔ)和回放過程進(jìn)行指示。</p><p> 發(fā)揮部分:使用多種算法進(jìn)行語音的壓縮、存儲(chǔ)和解壓縮,比較它們之間的優(yōu)缺點(diǎn)。</p><p><b> 1.3 面對(duì)的問題</b></p><p> 基于TMS3
13、20C54X為核心的語音壓縮與回放需要掌握和了解如下幾個(gè)知識(shí):語音編碼原理、量化、DPCM&ADPCM、語音采集與輸出模塊、a律壓縮、A/D、D/A及存儲(chǔ)芯片的選擇、數(shù)據(jù)存儲(chǔ)器的選擇等等。</p><p><b> 2 系統(tǒng)設(shè)計(jì)及分析</b></p><p> 2.1 涉及的基礎(chǔ)知識(shí)</p><p> 2.1.1 語音編碼<
14、/p><p> 語音編碼一般分為兩類:一類是波形編碼,一類是被稱為“聲碼器技術(shù)”的編碼。</p><p> PCM編碼即脈沖編碼調(diào)制。</p><p> 波形編碼的最簡(jiǎn)單形式就是脈沖編碼調(diào)制(Pulse code modulation),這種方式將語音變換成與其幅度成正比的二進(jìn)制序列,而二進(jìn)制數(shù)值往往采用脈沖表示,并用脈沖對(duì)采樣幅 度進(jìn)行編碼,所以叫做脈沖編碼調(diào)制
15、。</p><p> 脈沖編碼調(diào)制沒有考慮語音的性質(zhì),所以信號(hào)沒有得到壓縮。</p><p><b> 2.1.2 量化</b></p><p> 脈沖編碼調(diào)制用同等的量化級(jí)數(shù)進(jìn)行量化,即采用均勻量化,而均勻量化是基本的量化方 式。但是均勻量化有缺點(diǎn),在信號(hào)動(dòng)態(tài)范圍較大而方差較小的時(shí)候,其信噪比會(huì)下降 。 </p><
16、p> 國(guó)際上有兩種非均勻量化的方法:A律和u律,u律是最常用的一種。在美國(guó),7位u律是長(zhǎng)途電話質(zhì)量的標(biāo)準(zhǔn)。 而我國(guó)采用的是A律壓縮,而且有標(biāo)準(zhǔn)的A律PCM編碼芯片。 </p><p> 2.1.3 DPCM&ADPCM</p><p> 降低傳輸比特率的方法之一是減少編碼的信息量,這要消除語音信號(hào)中的冗余度。相鄰的語音樣本之間存在明顯的相關(guān)性,因此對(duì)相鄰樣本間的差信號(hào)進(jìn)
17、行編碼,便可使信息量得到壓縮。因?yàn)椴罘中盘?hào)比原語音信號(hào)的動(dòng)態(tài)范圍和平均能量都小。這種編碼叫Differential PCM,簡(jiǎn)稱DPCM,即差分脈沖編碼調(diào)制。 </p><p> ADPCM即自適應(yīng)差分脈沖編碼調(diào)制,是包括短時(shí)預(yù)測(cè)的編碼系統(tǒng)。CCITT(國(guó)際電報(bào)電話咨詢委員會(huì))在1984年提出的32 kbit/s的編碼器建議就是采用ADPCM作為長(zhǎng)途傳輸中的國(guó)際通用語音編碼方案。這種ADPCM編碼方案達(dá)到64
18、kbit/s PCM的語音傳輸質(zhì)量,并具有很好的抗誤碼性能。</p><p> 2.1.4 a律壓縮</p><p> A律編碼(A-law )是ITU-T(國(guó)際電聯(lián)電信標(biāo)準(zhǔn)局)CCITT G.712定義的關(guān)于脈沖編碼的一種壓縮/解壓縮算法。 </p><p> 世界上大部分國(guó)家采用A律壓縮算法。美國(guó)采用mu律算法進(jìn)行脈沖編碼。 </p><
19、;p> 令量化器過載電壓為1,相當(dāng)于把輸入信號(hào)進(jìn)行歸一化,那么A律對(duì)數(shù)壓縮定義為: </p><p> 當(dāng)0 <= x <= 1/A時(shí),f(x)=(Ax)/(1+lnA) </p><p> 當(dāng)1/A <= x <= 1時(shí),f(x)=(1+lnAx)/(1+lnA)</p><p> 在現(xiàn)行的國(guó)際標(biāo)準(zhǔn)中A=87.6,此時(shí)信號(hào)很小
20、時(shí)(即小信號(hào)時(shí)),從上式可以看到信號(hào)被放大了16倍,這相當(dāng)于與無壓縮特性比較,對(duì)于小信號(hào)的情況,量化間隔比均勻量化時(shí)減小了16倍,因此,量化誤差大大降低;而對(duì)于大信號(hào)的情況例如x=1,量化間隔比均勻量化時(shí)增大了5.47倍,量化誤差增大了。這樣實(shí)際上就實(shí)現(xiàn)了“壓大補(bǔ)小”的效果。按上式得到的A律壓擴(kuò)特性是連續(xù)曲線,A的取值不同其壓擴(kuò)特性亦不相同,而在電路上實(shí)現(xiàn)這樣的函數(shù)規(guī)律是相當(dāng)復(fù)雜的。為此,人們提出了數(shù)字壓擴(kuò)技術(shù),其基本思想是這樣的:利用
21、大量數(shù)字電路形成若干根折線,并用這些折線來近似對(duì)數(shù)的壓擴(kuò)特性,從而達(dá)到壓擴(kuò)的目的。下圖2-1為a律壓縮的示意圖</p><p> 圖2-1 a律壓縮示意圖</p><p> 從圖2-1中可以看到,先把軸的0~1分為8個(gè)不均勻段,其分法是:將0~1之間一分為二,其中點(diǎn)為1/2,取1/2~1之間作為第八段;剩余的0~1/2再一分為二,中點(diǎn)為1/4,取1/4~1/2之間作為第七段,再把剩余的
22、0~1/4一分為二,中點(diǎn)為1/8,取1/8~1/4之間作為第六段,依此分下去,直至剩余的最小一段為0~1/128作為第一段。而軸的0~1均勻地分為八段,它們與軸的八段一一對(duì)應(yīng)。從第一段到第八段分別為,0~1/8,1/8~2/8,…,7/8~1。這樣,便可以作出由八段直線構(gòu)成的一條折線。該折線與式(6-22)表示的壓縮特性近似。</p><p> 壓縮后的碼字組成:比特0-3表矢量化值,比特4-6表示段值,壓縮后
23、的碼字符號(hào)放在比特7,為了簡(jiǎn)化未寫出。</p><p> 表2-1 a律壓縮表</p><p> 從A律到線性擴(kuò)展的轉(zhuǎn)換如下表:</p><p> 表2-2 a律解壓縮轉(zhuǎn)換表</p><p><b> 2.2 實(shí)驗(yàn)方案</b></p><p> 用板內(nèi)的AD/DA轉(zhuǎn)換器AD50將由MIC
24、輸入的模擬信號(hào)轉(zhuǎn)換為16位數(shù)字信號(hào)送入DSP板中進(jìn)行壓縮處理,壓縮處理后的數(shù)據(jù)經(jīng)過解壓后再送至DA轉(zhuǎn)換器轉(zhuǎn)換為模擬信號(hào),由SPEAKER口輸出,壓縮和解壓縮用A律格式,從而實(shí)現(xiàn)語音信號(hào)的采集壓縮與回放。</p><p> 圖2-2 總體框架圖</p><p><b> 2.3 程序流程圖</b></p><p> 基于TMS320C54X
25、的語音壓縮與回放程序流程圖如下所示。</p><p> 圖2-4 程序流程圖</p><p><b> 3 程序代碼</b></p><p> 我主要完成a律解壓縮的代碼編寫,因此對(duì)主程序和a律壓縮不做詳細(xì)的解釋。</p><p><b> 3.1 頭文件定義</b></p>
26、<p> /**************************************************************************/</p><p> #include <type.h></p><p> #include <board.h></p><p> #include <code
27、c.h></p><p> #include <mcbsp54.h></p><p> /**************************************************************************/</p><p> /* Function Prototypes
28、 */</p><p> /**************************************************************************/</p><p> void delay(s16 period);</p><p> unsigned char d
29、ata2alaw(int pcm_val);</p><p> int alaw2data(unsigned chara_val);
30、 </p><p> /***********
31、***************************************************************/</p><p> /* Global Variables */</p><p> /******************************
32、********************************************/</p><p> HANDLE hHandset; /*句柄變量*/</p><p><b> int data;</b></p><p> int data1;</p><p> long i,
33、j=0;</p><p> long k,l=0;</p><p> unsigned int temp1;</p><p> unsigned char temp2;</p><p> unsigned int m;</p><p> unsigned int buffer[36000];</p>
34、;<p><b> 3.2 主函數(shù)</b></p><p> /**************************************************************************/</p><p> /* MAIN
35、 */</p><p> /**************************************************************************/</p><p> void main()</p><p><b> {</b></p><p> if
36、(brd_init(100))//初始化DSK板,失敗退出</p><p><b> return;</b></p><p> /* blink the leds a couple times */</p><p> for(m=6;m>0;m--)</p><p><b> {&
37、lt;/b></p><p> brd_led_toggle(BRD_LED0);</p><p> /* brd_delay_msec(1000); */</p><p> delay(1000);</p><p> brd_led_toggle(BRD_LED1);</p><p> /* brd_
38、delay_msec(1000); */</p><p> delay(1000);</p><p> brd_led_toggle(BRD_LED2);</p><p> /* brd_delay_msec(1000); */</p><p> delay(1000);</p><p><b>
39、}</b></p><p> /* Open Handset Codec */</p><p> hHandset = codec_open(HANDSET_CODEC); /* Acquire handle to codec */</p><p> /* Set codec parameters */</p><
40、;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-bit mode */</p><p> codec_ain_gain(hHa
41、ndset, CODEC_AIN_6dB); </p><p> /* 6dB gain on analog input to ADC */</p><p> codec_aout_gain(hHandset, CODEC_AOUT_MINUS_12dB); </p><p> /* -12dB gain on analog output from D
42、AC */</p><p> codec_sample_rate(hHandset,SR_16000); /* 16KHz sampling rate */</p><p> /* Polling and digital loopback */</p><p><b> while (1)</b></p&
43、gt;<p><b> {</b></p><p> brd_led_disable(BRD_LED1);//關(guān)閉led1</p><p> brd_led_disable(BRD_LED2);//關(guān)閉led2</p><p> brd_led_toggle(BRD_LED0);//開啟led0</p>&l
44、t;p> /* Wait for sample from handset */</p><p> while (!MCBSP_RRDY(HANDSET_CODEC)) </p><p> { data = *(volatile u16*)DRR1_ADDR(HANDSET_CODEC);}; //采集語音信號(hào) </p><p> temp1=data
45、2alaw(data); //temp1=data2ulaw(data); </p><p> //保存壓縮后的數(shù)據(jù) 把低地址數(shù)據(jù)放在高八位 高地址數(shù)據(jù)放在第八位 </p><p> i=i+1; </p><p> if(i%2==1)</p><p&
46、gt;<b> {</b></p><p> buffer[j]=(temp1<<=8); /*奇數(shù)數(shù)據(jù)左移8位 temp1=abcdefgh00000000</p><p> buffer[j]=temp1*/ </p><p><b> }</b></p><p&g
47、t;<b> else</b></p><p><b> {</b></p><p> buffer[j]=(buffer[j]|temp1);/*偶數(shù)數(shù)據(jù)與temp1取或 組成新的數(shù)據(jù)</p><p> buffer[j]=abcdefghiabcdefghi*/ </p><p>
48、j++; //j加1</p><p> } </p><p> if(i>=72000) </p><p><b> {</b></p><p><b> i=0;</b></p><p><b
49、> } </b></p><p> if(j>=36000)</p><p><b> {</b></p><p><b> j=0;</b></p><p> brd_led_disable(BRD_LED0); //放音</p><
50、p> brd_led_disable(BRD_LED2);</p><p> brd_led_toggle(BRD_LED1); </p><p> for(k=0;k<72000;k++)</p><p><b> {</b></p><p> if(k%2==0)</p
51、><p> temp2=(buffer[l]>>8)&0x0ff;</p><p><b> else</b></p><p><b> {</b></p><p> temp2=buffer[l]&0x0ff;</p><p><b&g
52、t; l++;</b></p><p><b> }</b></p><p> if(l>=36000)</p><p><b> l=0;</b></p><p> data1=alaw2data(temp2); </p><p> whil
53、e (!MCBSP_XRDY(HANDSET_CODEC)) {}; </p><p> *(volatile u16*)DXR1_ADDR(HANDSET_CODEC) = data1*4;</p><p> } </p><p> brd_led_disable(BRD_LED0);</p><p> br
54、d_led_disable(BRD_LED1);</p><p> brd_led_toggle(BRD_LED2); //放音結(jié)束</p><p> for (m=0;m<3;m++) delay(1000); </p><p> for (m=0;m<36000;m++) buffer[m]=0;</p><
55、;p><b> }</b></p><p><b> } </b></p><p> } </p><p><b> 1)初始化DSK:</b></p><p> if (brd
56、_init(100))</p><p><b> return;</b></p><p> 2)初始化A/D50C程序:</p><p> /*獲取設(shè)置DAC的句柄 */</p><p> hHandset = codec_open(HANDSET_CODEC); // Acquire handle to
57、 codec /*設(shè)置DAC的工作參數(shù)*/</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-bit mode </p><p
58、> codec_ain_gain(hHandset, CODEC_AIN_12dB); // 6dB gain on analog input to ADC </p><p> codec_aout_gain(hHandset, CODEC_AOUT_MINUS_6dB); </p><p> // -6dB gain on analog output from DAC
59、 </p><p> codec_sample_rate(hHandset,SR_16000); // 16KHz sampling rate </p><p><b> }</b></p><p><b> 3)閃燈程序:</b></p><p> for(m=
60、6;m>0;m--)</p><p><b> {</b></p><p> brd_led_toggle(BRD_LED0);</p><p> /* brd_delay_msec(1000); */</p><p> delay(1000);</p><p> brd_
61、led_toggle(BRD_LED1);</p><p> /* brd_delay_msec(1000); */</p><p> delay(1000);</p><p> brd_led_toggle(BRD_LED2);</p><p> /* brd_delay_msec(1000); */</p><
62、p> delay(1000);</p><p><b> }</b></p><p> 4)語音信號(hào)采集與回放程序</p><p> //判斷MCBSP是否做好接收準(zhǔn)備</p><p> while (!MCBSP_RRDY(HANDSET_CODEC) ) {}; </p><p&
63、gt; //從A/D讀取轉(zhuǎn)換數(shù)據(jù)</p><p> data = *(volatile u16*)DRR1_ADDR(HANDSET_CODEC);</p><p> temp1=data2alaw(data); //temp1=data2ulaw(data);</p><p> // 將數(shù)據(jù)寫入D/A轉(zhuǎn)換器</p><p>
64、; data1=alaw2data(temp2); </p><p> while (!MCBSP_XRDY(HANDSET_CODEC)) {}; </p><p> *(volatile u16*)DXR1_ADDR(HANDSET_CODEC) = data1*4;</p><p> 5) 數(shù)據(jù)存儲(chǔ)與處理</p><p>
65、 i=i+1; </p><p> if(i%2==1)</p><p><b> { </b></p><p> buffer[j]=(temp1<<=8); /*奇數(shù)數(shù)據(jù)左移8位 temp1=abcdefgh00000000</p><p> buffer[j]=temp
66、1*/ </p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> buffer[j]=(buffer[j]|temp1);/*偶數(shù)數(shù)據(jù)與temp1取或 組成新的數(shù)據(jù)</p&
67、gt;<p> buffer[j]=abcdefghiabcdefghi*/ </p><p> j++; //j加1</p><p><b> } </b></p><p> I if(k%2==0)</p><p> temp2=(b
68、uffer[l]>>8)&0x0ff;</p><p><b> else</b></p><p><b> {</b></p><p> temp2=buffer[l]&0x0ff;</p><p><b> l++;</b></p&
69、gt;<p><b> }</b></p><p> 3.3 a律壓縮子函數(shù)</p><p> /*************************************************************************/</p><p> /*a率壓縮
70、 */</p><p> /*************************************************************************/</p><p> unsigned char data2alaw(int data) </p><p&g
71、t;<b> {</b></p><p> unsigned char i,sign,achord,astep; </p><p> unsigned int output,absol,temp; </p><p> temp=absol=abs(data); </p><p> sign
72、=(data>=0)?1:0; //判定符號(hào):正數(shù) =1,負(fù)數(shù) =0</p><p> for (i=0;i<16;i++) //確定temp中出現(xiàn)1的最高位</p><p><b> { </b></p><p> output=temp&0x8000; </p><p>
73、 if(output) break; //temp 左移i位后最高位為1</p><p><b> temp<<=1;</b></p><p><b> } </b></p><p> achord=11-i; //段值 </p><p> if (achor
74、d<=0) </p><p><b> {</b></p><p><b> achord=0;</b></p><p> astep=(absol>>1)&0x0F;//段值為0,將absol左移1位得到量化值</p><p><b>
75、}</b></p><p><b> else</b></p><p> astep=(absol>>achord)&0x0F; //段值不為0,將absol左移</p><p> achord<<=4; //achord位得量化值</p>
76、;<p> output=achord+astep; //輸出值的絕對(duì)值</p><p> if(absol>4095) </p><p> //超過最大值4095,輸出最大值0x7f</p><p> output=0x7F;</p><p><b> if(sign) </b>&l
77、t;/p><p> return output^=0xFF; //返回含有符號(hào)信息的輸出值</p><p><b> else </b></p><p> return output^=0x7F;</p><p><b> }</b></p><p> 3.4 a律解壓
78、縮子函數(shù)</p><p> /**************************************************************************/</p><p> /*a率解壓 */</p><p&g
79、t; /**************************************************************************/ </p><p> int alaw2data(unsigned char input) </p><p><b> { </b></p><p> unsigned cha
80、r sign,achord,astep;</p><p> unsigned int temp;</p><p><b> int data;</b></p><p> temp = input^0xFF; //得到含有符號(hào)信息的壓縮值</p><p> sign = (temp&0x80)&
81、gt;>7; //符號(hào)位</p><p> achord = (temp&0x70)>>4; //段值</p><p> astep = temp&0x0F; //量化值</p><p> astep <<= 1;</p><p> if(!achord) //段值
82、為0,輸出值為量化值左移1位后加1</p><p> data=astep+1;</p><p><b> else </b></p><p><b> {</b></p><p> data=astep+33; //擴(kuò)展后數(shù)值中的6位非零值</p><
83、;p> data<<=achord-1;</p><p><b> }</b></p><p><b> if(sign)</b></p><p> return -data; //有符號(hào)的擴(kuò)展值 </p><p><b> else<
84、;/b></p><p> return data;</p><p><b> }</b></p><p><b> 3.5 延時(shí)子函數(shù)</b></p><p><b> //延時(shí)</b></p><p> void delay(int
85、period)</p><p><b> {</b></p><p><b> int i, j;</b></p><p> for(i=0; i<period; i++)</p><p><b> {</b></p><p> for(
86、j=0; j<period>>1; j++);</p><p><b> }</b></p><p><b> }</b></p><p> 3.6 5402.cmd文件</p><p> 實(shí)驗(yàn)中還需要添加5402.cmd文件,5402.cmd文件及其解釋:</p&g
87、t;<p><b> MEMORY</b></p><p><b> {</b></p><p> PAGE 0: VECS: origin = 0080h, length = 0080h /*內(nèi)部程序RAM */</p><p> PRAM: origin = 0100h, len
88、gth = 0FFFh /* 內(nèi)部程序 RAM */</p><p> PAGE 1: SCRATCH: origin = 1000h, length = 0020h /* Scratch Pad Data RAM */</p><p> DMARAM: origin = 1020h, length = 0300h /* DMA緩存*/</p><p&g
89、t; DATA: origin = 1320h, length = 0080h /*內(nèi)部數(shù)據(jù)RAM */</p><p> STACK: origin = 1400h, length = 0500h /* 堆棧內(nèi)存空間 */</p><p> INRAM: origin = 1900h, length = 0100h /*內(nèi)部數(shù)據(jù) RAM */</p&
90、gt;<p> HPRAM0: origin = 1A00h, length = 0002h /* HPI */</p><p> HPRAM1: origin = 1A02h, length = 0280h /* HPI */</p><p> HPRAM2: origin = 1C82h, length = 0280h /* HPI */</
91、p><p> EXRAM: origin = 1F10h, length = 0EA00h /* 外部?jī)?nèi)存*/</p><p><b> }</b></p><p><b> SECTIONS</b></p><p><b> {</b></p>&l
92、t;p> .cinit > PRAM PAGE 0</p><p> .text > PRAM PAGE 0</p><p> .vectors > VECS PAGE 0</p><p> init_var > PRAM PAGE 0</p><p> detect &
93、gt; PRAM PAGE 0</p><p> vrcprg > PRAM PAGE 0</p><p> matprg > PRAM PAGE 0</p><p> .stack > STACK PAGE 1</p><p> .trap > SCRATCH PAGE 1</p
94、><p> .const > EXRAM PAGE 1</p><p> .data > EXRAM PAGE 1</p><p> .bss > EXRAM PAGE 1</p><p> .cio > EXRAM PAGE 1</p><p> .sw
95、itch > EXRAM PAGE 1</p><p> tables > EXRAM PAGE 1</p><p> var > EXRAM PAGE 1</p><p> svctab > EXRAM PAGE 1 /* SS_V LSP table */</p><p
96、> vctab > EXRAM PAGE 1 /* V LSP table */</p><p> uvctab > EXRAM PAGE 1 /* UV LSP table */</p><p> cuvtab > EXRAM PAGE 1 /* Stochastic codebook */
97、</p><p> cdbktab > EXRAM PAGE 1 /* various codebook tables*/</p><p> logtab > EXRAM PAGE 1 /* table for log2 */</p><p> powtab > EXRAM PAGE 1
98、 /* table for pow2 */</p><p> hamtab > EXRAM PAGE 1 /* table for hamming */</p><p> lgwtab > EXRAM PAGE 1 /* table for lag window */</p><p> a
99、costab > EXRAM PAGE 1 /* table for arccos */</p><p> sqrtab > EXRAM PAGE 1 /* table for square root */</p><p> acbtab > EXRAM PAGE 1 /* table for th
100、resholds in acb */</p><p> pm03tab > EXRAM PAGE 1 /* table for x^(-0.3) computation */</p><p> costab > EXRAM PAGE 1 /* table for cosine */</p><p> V
101、23 > INRAM PAGE 1</p><p> FSK > INRAM PAGE 1</p><p> hpibuff0 > HPRAM0 PAGE 1</p><p> hpibuff1 > HPRAM1 PAGE 1</p><p> hpibuff2 > HPRA
102、M2 PAGE 1</p><p> dma_buff > DMARAM PAGE 1</p><p><b> } </b></p><p><b> 4 程序運(yùn)行與調(diào)試</b></p><p><b> 4.1 實(shí)驗(yàn)結(jié)果</b></p><
103、;p> 圖4-1 輸入波形(data)</p><p> 圖4-2 壓縮后波形(temp1)</p><p> 圖4-3 解壓后輸出波形(data1)</p><p> 圖4-4 watch window中的值</p><p><b> 總 結(jié)</b></p><p> 在這一周
104、中,我學(xué)到了很多,對(duì)DSP這門課的認(rèn)識(shí)也進(jìn)一步加深了。從一個(gè)剛?cè)腴T的學(xué)習(xí)者,漸漸的愛上了這門技術(shù),雖然說對(duì)于DSP技術(shù)方面的知識(shí)還有很多要學(xué)習(xí)和提高,但是在這一周中我還是感受到這門課程的魅力所在。經(jīng)過一周的努力,順利的完成了DSP課程設(shè)計(jì)。這是一個(gè)磨練意志的過程。從課題的選擇開始,到硬件和軟件系統(tǒng)的設(shè)計(jì),這其中經(jīng)歷了很多困難,但是更重要的是在這個(gè)過程中我得到了很大的鍛煉。在用Protel 99 SE軟件畫電路圖,這個(gè)過程中讓我掌握了計(jì)算
105、機(jī)輔助的設(shè)計(jì)技術(shù)。當(dāng)然,這是一個(gè)需要不斷的嘗試,不斷的校核,不斷的修改,最后完成一個(gè)合理的設(shè)計(jì)的過程。需要的是細(xì)心和耐心。在很大程度上培養(yǎng)了我拼搏的工作精神。使我受益匪淺,更加明確了自己專業(yè)的方向。這一周的時(shí)間是短暫的,但這我想我們學(xué)到的應(yīng)該不僅僅是專業(yè)技術(shù)等表面上的東西,更深一層的是對(duì)人生的感悟,對(duì)未來的想法,年輕人的桀驁不馴在此時(shí)已經(jīng)不在有意義,取而代之的是理性的思維。我們應(yīng)該具備什么樣的能力,我們適合什么樣的人生,我們應(yīng)該在怎樣的
106、崗位上實(shí)現(xiàn)自己的人生價(jià)值,我們又應(yīng)該怎么做才能對(duì)得起父母,對(duì)得起自己,對(duì)得起朋友,對(duì)得起辛勤培育我們的老師。總之</p><p><b> 參考文獻(xiàn)</b></p><p> 1 張雄偉 ,曹鐵勇. DSP芯片的原理與開發(fā)應(yīng)用.北京:電子工業(yè)出版社,2003</p><p> 2 易克初 ,田斌 ,付強(qiáng).語音信號(hào)處理.北京:國(guó)防工業(yè)出版社
107、,2000</p><p> 3 吳樂南 ,徐孟俠.數(shù)據(jù)壓縮.北京:電子工業(yè)出版社,2000</p><p> 4 陳顯冶.現(xiàn)代通信技術(shù).北京:電子工業(yè)出版社,2000</p><p> 5 李穎,李文海.現(xiàn)代通信技術(shù).北京:人民郵電出版社,2002</p><p> 6 趙勇,甘泉.DSP應(yīng)用系統(tǒng)設(shè)計(jì).北京:電子工業(yè)出版社,2002
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- dsp課程設(shè)計(jì)報(bào)告----語音壓縮、存儲(chǔ)與回放
- 數(shù)字信號(hào)處理(dsp)課程設(shè)計(jì)報(bào)告
- dsp數(shù)字信號(hào)處理課程設(shè)計(jì)報(bào)告8
- dsp課程設(shè)計(jì)-語音采集壓縮存儲(chǔ)與回放
- dsp數(shù)字信號(hào)處理課程設(shè)計(jì)報(bào)告-- 步進(jìn)電機(jī)
- 數(shù)字信號(hào)課程設(shè)計(jì)--語音數(shù)字信號(hào)處理與分析及matlab實(shí)現(xiàn)
- dsp數(shù)字信號(hào)處理課程設(shè)計(jì)報(bào)告-- ad接口設(shè)計(jì)
- dsp語音錄放課程設(shè)計(jì)--數(shù)字信號(hào)處理的最小系統(tǒng)
- 數(shù)字信號(hào)處理課程設(shè)計(jì)--語音信號(hào)的處理與濾波
- 數(shù)字信號(hào)課程設(shè)計(jì)--數(shù)字信號(hào)處理
- 數(shù)字信號(hào)處理課程設(shè)計(jì)報(bào)告
- 數(shù)字信號(hào)處理課程設(shè)計(jì)報(bào)告
- 數(shù)字信號(hào)處理課程設(shè)計(jì)---語音信號(hào)的處理與濾波
- 數(shù)字信號(hào)處理課程設(shè)計(jì)---語音信號(hào)的處理與濾波
- 數(shù)字信號(hào)處理課程設(shè)計(jì)--語音信號(hào)的處理與濾波
- 數(shù)字信號(hào)處理課程設(shè)計(jì)報(bào)告
- dsp課程設(shè)計(jì)---語音的壓縮、存儲(chǔ)和回放
- 數(shù)字信號(hào)課程設(shè)計(jì)---語音信號(hào)的處理與濾波
- 基于dsp_builder數(shù)字信號(hào)處理課程設(shè)計(jì)
- 數(shù)字信號(hào)課程設(shè)計(jì)語音信號(hào)的采集、分析與處理
評(píng)論
0/150
提交評(píng)論