DSP語音壓縮設(shè)計(jì)_第1頁
DSP語音壓縮設(shè)計(jì)_第2頁
DSP語音壓縮設(shè)計(jì)_第3頁
DSP語音壓縮設(shè)計(jì)_第4頁
DSP語音壓縮設(shè)計(jì)_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

一、概述當(dāng)今的通信應(yīng)該是人與人之間方便快捷、可多種手段實(shí)現(xiàn)信息交換的形式。其中,通過語音傳遞信息是人類最重要的、最有效和最方便的通信方式,因此語音通信在現(xiàn)代數(shù)字通信系統(tǒng)中占有重要的地位。隨著信息社會的快速發(fā)展,通信信道資源變得非常寶貴,各種語音壓縮編碼技術(shù)應(yīng)運(yùn)而生。高速數(shù)字信號處理器的出現(xiàn),使得語音編碼算法可以實(shí)時(shí)的實(shí)現(xiàn),并且?guī)诱Z音壓縮技術(shù)得到了突飛猛進(jìn)的發(fā)展。另外,移動通信技術(shù)飛速發(fā)展,已經(jīng)越來越深入的滲透到每個(gè)人的生活當(dāng)中,對講機(jī)系統(tǒng)隨著移動通信技術(shù)也迅速發(fā)展著,在公安、交通運(yùn)輸?shù)榷鄠€(gè)領(lǐng)域得到廣泛的應(yīng)用。低速率語音編碼以及在此基礎(chǔ)上的數(shù)字對講機(jī)技術(shù)已成為數(shù)字通信中的一個(gè)重要的研究領(lǐng)域。本文首先介紹了一種多帶激勵語音(MBE)低速率編碼算法,這種算法在很大范圍內(nèi)改善了解碼合成后的語音質(zhì)量,而算法的復(fù)雜度并沒有明顯增加。它不僅在低速率上能恢復(fù)出音質(zhì)比傳統(tǒng)聲碼器好得多的語音(可達(dá)到2.4kbps或更低的編碼速率),而且具有良好的自然度和容忍環(huán)境噪聲的能力,是目前較為理想的低速率語音編碼方案。在低速率的語音編碼基礎(chǔ)之上,本文又提出了幾種窄帶數(shù)據(jù)加密技術(shù)的方案,并對這幾種數(shù)字對講方案進(jìn)行了分析和仿真。語音壓縮技術(shù)指的是對原始數(shù)字音頻信號流運(yùn)用適當(dāng)?shù)臄?shù)字信號處理技術(shù),在不損失有用信息量,或所引入損失可忽略的條件下,降低(壓縮)其碼率,也稱為壓縮編碼。它必須具有相應(yīng)的逆變換,稱為解壓縮或解碼。音頻信號在通過一個(gè)編解碼系統(tǒng)后可能引入大量的噪聲和一定的失真。數(shù)字信號的優(yōu)勢是顯而易見的,而它也有自身相應(yīng)的缺點(diǎn),即存儲容量需求的增加及傳輸時(shí)信道容量要求的增加。本次實(shí)驗(yàn)采用DSPC5402實(shí)驗(yàn)板實(shí)現(xiàn)語音信號的壓縮解壓的。SEED-VC5402DSK實(shí)驗(yàn)板上集成了SRAM,FLASH,音頻輸入輸出接口等部件。這些外設(shè)為我們提供了極大的方便。語音信號的幅度(發(fā)音強(qiáng)度)并非均勻分布,由于小信號占的比例比大信號大很多,因此可以進(jìn)行非均勻量化。達(dá)到這一目標(biāo)的基本做法是,對大信號使用大的量化間隔,而小信號則使用小的臺階。ITU-TG.711建議的PCMA律和μ律語音壓縮標(biāo)準(zhǔn)可以分別將13比特和14比特壓縮為8比特,達(dá)到語音壓縮的目的。二、研究內(nèi)容設(shè)計(jì)要求及目標(biāo)基本部分:(1)使用DSP實(shí)現(xiàn)語音壓縮和解壓縮的基本算法,算法類型自定,例如可以采用G.711、G.729等語音壓縮算法。(2)采用A/D轉(zhuǎn)換器從MIC輸入口實(shí)時(shí)采集語音信號,進(jìn)行壓縮后存儲到DSP的片內(nèi)和片外RAM存儲器中,存儲時(shí)間不小于10秒。(3)存儲器存滿之后,使用DSP進(jìn)行實(shí)時(shí)解壓縮,并從SPEAKER輸出口進(jìn)行回放輸出。(4)使用指示燈對語音存儲和回放過程進(jìn)行指示。使用多種算法進(jìn)行語音的壓縮、存儲和解壓縮,比較它們之間的優(yōu)缺點(diǎn)。三、研究方案、算法原理說明(1)語音算法與芯片特點(diǎn)在本項(xiàng)目中,我們選擇了DSP集團(tuán)的語音壓縮最新算法TripleRateCoder,其壓縮比達(dá)到了46:1,且音質(zhì)良好,MOS指標(biāo)達(dá)到了3.98.該算法的基本思想是:首先將語音分為若干小段,由于語音信號的譜變化是一個(gè)緩變量,因此在每一小段內(nèi)信號是平穩(wěn)變化的.然后用一個(gè)數(shù)字濾波器和一個(gè)激勵函數(shù)來表示這一段時(shí)域波形的離散采樣序列.在實(shí)際算法中是采用了一個(gè)十階的線性預(yù)測濾波器,計(jì)算時(shí)還將每一幀分為4個(gè)子幀,每一子幀的濾波器系數(shù)矢量由上一幀和本幀數(shù)據(jù)計(jì)算得到,而最后一子幀的濾波器系數(shù)矢量則由矢量分解預(yù)測法得到;激勵函數(shù)采用的是偽隨機(jī)多脈沖激勵函數(shù),由最大似然算法得到.對每一幀計(jì)算得到濾波器系數(shù)矢量和函數(shù)生成元后,將這些系數(shù)再壓縮打包就得到了最后的語音壓縮數(shù)據(jù).當(dāng)對語音壓縮數(shù)據(jù)進(jìn)行解壓時(shí),首先將打包的數(shù)據(jù)展開,然后建立起線性預(yù)測濾波器,將重新生成的偽隨機(jī)多脈沖激勵函數(shù)輸入濾波器,這樣在濾波器的輸出端就可得到被恢復(fù)的語音信號序列了.該算法的實(shí)時(shí)運(yùn)算需要22MIPS以上的運(yùn)算速度,為此DSP集團(tuán)將DSP內(nèi)核和算法代碼集成在D6571系列芯片內(nèi),以滿足除PC用戶以外的更廣泛應(yīng)用.D6571原理框圖如圖1所示,其本身可直接外掛并管理4兆位的flash,8K采樣速率時(shí)在2.8KB的數(shù)據(jù)率下可提供25分鐘的回放時(shí)間.該芯片具備工業(yè)標(biāo)準(zhǔn)的編解碼器接口,可直接與串行PCM接口的音頻編解碼芯片相連,如美國國家半導(dǎo)體的TP3054或韓國三星半導(dǎo)體的KS8620.D6571可外接兩片音頻編解碼芯片,上電后可用設(shè)置命令對外接音頻編解碼芯片的工作模式進(jìn)行設(shè)置.例如:設(shè)置外接芯片的時(shí)鐘是外同步還是自同步;設(shè)置外接芯片處于輸出方式還是輸入方式等.根據(jù)實(shí)際開發(fā)經(jīng)驗(yàn),我們認(rèn)為D6571芯片與其它公司所提供的某些DSP內(nèi)核芯片相比,其最大的優(yōu)點(diǎn)是幾乎不需要任何開發(fā)工具或軟件就可使用.因?yàn)樵撔酒臄?shù)據(jù)是雙向的,既可由上位機(jī)將壓縮后的語音數(shù)據(jù)通過它解壓轉(zhuǎn)變成語音,也可輸入語音通過它進(jìn)行實(shí)時(shí)壓縮后傳送給上位機(jī).這就大大方便了長回放時(shí)間語音開發(fā)用戶的使用.更何況目前許多語音壓縮芯片對語音數(shù)據(jù)的管理是不公開的,例如:某些數(shù)字錄音電話的語音壓縮芯片.(2)系統(tǒng)構(gòu)成與語音處理有關(guān)的系統(tǒng)構(gòu)成如圖2所示.語音數(shù)據(jù)存放在一片32兆位的flash中,采用三星的K29W3200,這是一種8位并行接口的閃存,并行接口有利于提高代碼效率和滿足實(shí)時(shí)性要求.在語音數(shù)據(jù)的壓縮和回放過程中,D6571和flash之間的數(shù)據(jù)吞吐均通過上位機(jī)進(jìn)行.上位機(jī)采用89C52.系統(tǒng)還有64×64的點(diǎn)陣液晶模塊ACM6464等外圍設(shè)備.所有的設(shè)備均使用一條公共的8位數(shù)據(jù)總線,即CPU的P0口;P2口的六根口線用于鍵盤管理;P3口的兩根口線作為兩條串口線;這樣用于外設(shè)管理的口線還剩余16根可用.系統(tǒng)實(shí)際使用了其中的14根線:與flash管理有關(guān)的使用6根,與D6571有關(guān)的使用4根,還有4根用于液晶顯示管理.音頻編解碼接口芯片采用一片TP3054,TP3054工作所需的同步脈沖、采樣時(shí)鐘、數(shù)據(jù)信號等只需要與D6571的四根控制線相連即可得到.(3)系統(tǒng)開發(fā)本系統(tǒng)的語音開發(fā)分為上載、數(shù)據(jù)合成及下載三個(gè)過程.上載是指獲得語音壓縮數(shù)據(jù);數(shù)據(jù)合成是指將全系統(tǒng)的數(shù)據(jù)按一定的結(jié)構(gòu)組織成一個(gè)文件;下載是指儀器裝配出廠時(shí)將文件燒錄到flash中.這三個(gè)過程均通過PC機(jī)進(jìn)行.由于系統(tǒng)板上MCU的串行信號直接輸出的是TTL電平,因此,本系統(tǒng)的語音開發(fā)唯一需要另外制作的硬件就是使用一片MAX232來完成與PC機(jī)之間的電平轉(zhuǎn)換.D6571具有16位寬度的總線,但也允許以分時(shí)方式使用8位總線,這時(shí)上位機(jī)須用HL信號表示送上總線的是高8位還是低8位;而當(dāng)D6571主動將數(shù)據(jù)送上總線時(shí),會發(fā)出ACK信號通知上位機(jī)讀取數(shù)據(jù).HRD和HWR則是讀和寫的控制線.由于TripleRateCoder算法是按30毫秒分幀采樣,然后再進(jìn)行分析壓縮的,因此無論是讀取壓縮數(shù)據(jù)還是回送壓縮數(shù)據(jù),均必須在一幀之內(nèi)完成,否則D6571會自行進(jìn)入休眠狀態(tài).向D6571輸送語音數(shù)據(jù)的過程如下:首先送出解壓控制命令,然后接收一個(gè)回送狀態(tài)字,狀態(tài)字中包含了當(dāng)前幀所需要的字節(jié)數(shù),上位機(jī)就連續(xù)送出規(guī)定數(shù)目的數(shù)據(jù),待一幀處理完畢后,D6571會繼續(xù)送出狀態(tài)字.如此循環(huán)就可連續(xù)回放出語音了.而利用D6571進(jìn)行語音壓縮的數(shù)據(jù)處理過程正好相反,狀態(tài)字中包含的是當(dāng)前幀壓縮所得到的字節(jié)數(shù),上位機(jī)就應(yīng)連續(xù)接收規(guī)定數(shù)目的數(shù)據(jù).上載時(shí),首先要得到的是各個(gè)語音段的壓縮數(shù)據(jù).作為準(zhǔn)備工作,先用PC機(jī)的錄音機(jī)工具將我們所需的語音錄制成WAV文件.然后對MCU和PC機(jī)分別編寫共同配合工作的兩段程序來完成以下功能:PC機(jī)通過聲卡播放聲音給D6571;89C52控制D6571進(jìn)行語音壓縮并讀回壓縮數(shù)據(jù),然后通過串口線回送給PC機(jī),PC機(jī)則將每段的壓縮數(shù)據(jù)存盤.由于每段語音播放時(shí)均要有一定的中文點(diǎn)陣字符顯示,數(shù)據(jù)合成的任務(wù)就是要將每段數(shù)據(jù)加上索引和字符點(diǎn)陣數(shù)據(jù)后再合成為一個(gè)完整的近32兆位的二進(jìn)制文件.文件形成時(shí)為了使數(shù)據(jù)定位和讀出編程方便,數(shù)據(jù)塊以flash的頁為單位,一頁為528字節(jié).下載工作則較簡單,在設(shè)備出廠前直接使用系統(tǒng)89C52的串口將數(shù)據(jù)合成形成的文件下載到閃存中即可.D6571的壓縮率極高,使用和開發(fā)也比較方便.因此盡管本系統(tǒng)的語音容量長達(dá)200分鐘,但系統(tǒng)整體設(shè)計(jì)十分簡潔、經(jīng)濟(jì),幾乎不需調(diào)試.主要開發(fā)工作是MCU和PC機(jī)的一些程序開發(fā)使用C51和VB編程,開發(fā)速度也比較快.由于D6571的控制命令很豐富,系統(tǒng)用戶界面的軟件是很容易編寫的.例如,由于該芯片具有30階的音量控制命令,我們未添任何硬件就為設(shè)備增加了數(shù)字音量控制功能.D6571的控制命令還包含自動增益控制、變速回放、數(shù)字濾波器等更加高級的命令,因此,它幾乎可應(yīng)用于任何語音場合.(4)語音的u律壓縮與解壓原理u率限制采樣模值為13比特,u律的壓縮可定義為:從線性到u律的壓縮轉(zhuǎn)換如下表所說明。壓縮后的碼字組成:比特0-3表示量化值,比特4-6表示段值,壓縮后的碼字符號放在比特7,為了簡化未寫出。U律二進(jìn)制編碼表壓縮前的碼字丟棄的比特?cái)?shù)壓縮后的碼字輸入值段值,量化值比特:1211109876543210比特:654321000000001abcdx1000abcd0000001abcdxx2001abcd000001abcdxxx3010abcd00001abcdxxxx4011abcd0001abcdxxxxx5100abcd001abcdxxxxxx6101abcd01abcdxxxxxxx7110abcd1abcdxxxxxxxx8111abcd在擴(kuò)展前,u律碼字再次反轉(zhuǎn)。低位的有效比特原是丟棄的,但是為了減少精度損失,用中間值近似。為了簡化,擴(kuò)展后的碼字符號左溢。U率二進(jìn)制解碼表壓縮過的碼字偏值的輸入段值,量化值比特:6543210比特:1211109876543210000abcd00000001abcd1001abcd0000001abcd10010abcd000001abcd100011abcd00001abcd1000100abcd0001abcd10000101abcd001abcd100000110abcd01abcd1000000111abcdabcd100000005、程序設(shè)計(jì)思路及流程圖思路:DSP程序設(shè)計(jì)應(yīng)包括用戶程序、存儲器配置程序。為了實(shí)現(xiàn)語音信號的采集與回放,先將語音信號采集,運(yùn)用a律壓縮算法將信號壓縮并存入存貯器中,當(dāng)放音開始時(shí)運(yùn)用a律解壓算法將信號解壓并從存儲器中釋放出來,實(shí)現(xiàn)語音的回放。流程圖:開始開始初始化DSP及串行口初始化DSP及串行口初始化A/D轉(zhuǎn)換器D/A轉(zhuǎn)換器初始化A/D轉(zhuǎn)換器D/A轉(zhuǎn)換器語音經(jīng)A/D轉(zhuǎn)換器輸入語音經(jīng)A/D轉(zhuǎn)換器輸入數(shù)據(jù)壓縮數(shù)據(jù)壓縮數(shù)據(jù)存儲數(shù)據(jù)存儲解壓縮經(jīng)D/A轉(zhuǎn)換器回放解壓縮經(jīng)D/A轉(zhuǎn)換器回放結(jié)束結(jié)束四、程序設(shè)計(jì)、調(diào)試與結(jié)果分析1、程序設(shè)計(jì)(1)用2812dsp實(shí)現(xiàn)語音的A率壓縮解壓有兩種方法:a、使用多通道緩沖串口(McBSP)的縮展器在多緩沖通道串口(McBSP)內(nèi)部裝置了硬件電路,支持A律格式縮展器,對數(shù)據(jù)進(jìn)行壓縮與擴(kuò)展,A律縮展器允許14比特的動態(tài)范圍。首先描述一下McBSP硬件如何能夠同時(shí)處理A律,如圖顯示的是McBSP縮展器硬件工作流程。在接受端,McBSP接收壓縮的、非線性的數(shù)據(jù)然后擴(kuò)展為線性數(shù)據(jù)寫道CPU或DMA,在發(fā)送端,從CPU或DMA得到的線性數(shù)據(jù)在發(fā)送前必須按著A律壓縮。RSRRBRRJUSTDRR接收移位接收移位寄存器接收緩沖寄存器擴(kuò)展器器數(shù)據(jù)發(fā)送寄存器從CPU/DMA輸入數(shù)據(jù)接收寄存器調(diào)整模式控制位到CPU或DMA到CPU或DMADLB模式 非DSB模式b、用軟件實(shí)現(xiàn)主程序的功能是從McBSP的接收通道讀取A/D轉(zhuǎn)換的值,然后經(jīng)過壓縮解壓后將其發(fā)送到McBSP的發(fā)送通道,構(gòu)成AD50CODEC模擬輸入和輸出通道的自環(huán),是否能接收到A/D轉(zhuǎn)換的數(shù)據(jù)是通過查詢串口1的接收標(biāo)志RRDY來進(jìn)行的,程序?yàn)椋簑hile(1){while(!MCBSP_RRDY(HANDSET_CODEC)){};data=*(volatileint*)DRR1_ADDR(HANDSET_CODEC);temp1=data2alaw(data);data=alaw2data(temp2);*(volatileint*)DXR1_ADDR(HANDSET_CODEC)=data;}(2)實(shí)驗(yàn)程序及相關(guān)功能解釋如下/*頭文件*/#include<type.h>#include<board.h>#include<codec.h>#include<mcbsp54.h>/*聲明函數(shù)*/voiddelay(s16period);unsignedchardata2alaw(int);intalaw2data(unsignedchar );/*定義變量*/HANDLEhHandset;intdata0;intdata1;longi,j=0;longk,l=0;unsignedinttemp1;unsignedchartemp2;unsignedintm;unsignedintbuffer[50000];/*主程序*/voidmain(){s16cnt1=2;s16cnt2=10;if(brd_init(100))//初始化DSK板,失敗退出return; while(cnt1--)//指示燈依次先亮后滅 { brd_led_toggle(BRD_LED0); delay(1000); brd_led_toggle(BRD_LED1); delay(1000); brd_led_toggle(BRD_LED2); delay(1000); }/*AD50的初始化*/hHandset=codec_open(HANDSET_CODEC);//初始化串口1,設(shè)置成功返回codec的句柄放在變量hHandset中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_8000);//8K采樣率while(1){brd_led_disable(BRD_LED1);//關(guān)閉led1brd_led_disable(BRD_LED2);//關(guān)閉led2brd_led_toggle(BRD_LED0);//錄音指示燈亮while(!MCBSP_RRDY(HANDSET_CODEC)){};//采集語音信號data0=*(volatileu16*)DRR1_ADDR(HANDSET_CODEC);temp1=data2alaw(data0);//A律壓縮/*存儲壓縮后的數(shù)據(jù)*/i=i+1; if(i%2==1) { buffer[j]=(temp1<<=8); } else{ buffer[j]=(buffer[j]|temp1);j++;}if(i>=100000){ i=0; } if(j>=50000) { j=0; brd_led_disable(BRD_LED0); brd_led_disable(BRD_LED2); while(cnt2--)//燈閃爍{brd_led_toggle(BRD_LED1); /*brd_delay_msec(1000);*/ delay(2000); } cnt2=10;brd_led_disable(BRD_LED0);//放音指示燈亮 brd_led_disable(BRD_LED1); brd_led_toggle(BRD_LED2);/*取出壓縮數(shù)據(jù)*/ for(k=0;k<100000;k++) { if(k%2==0) temp2=(buffer[l]>>8)&0x0ff; else { temp2=buffer[l]&0x0ff; l++; } if(l>=50000) l=0; data1=alaw2data(temp2);//解壓縮數(shù)據(jù) while(!MCBSP_XRDY(HANDSET_CODEC)){};//輸出解壓后的數(shù)據(jù) *(volatileu16*)DXR1_ADDR(HANDSET_CODEC)=data1*4; } delay(2000); for(m=0;m<50000;m++)buffer[m]=0; //buffer清零 }}}/*A律壓縮子程序*/unsignedchardata2alaw(intdata){ unsignedchari,sign,achord,astep; unsignedintoutput,absol,temp; temp=absol=abs(data); sign=(data>=0)?1:0;//判定符號:正數(shù)=1,負(fù)數(shù)=0 for(i=0;i<16;i++)//確定temp中出現(xiàn)1的最高位 { output=temp&0x8000; if(output)break;//temp左移i位后最高位為1 temp<<=1;}achord=11-i;//求出段值if(achord<=0) { achord=0; astep=(absol>>1)&0x0F;//段值為0,將absol右移1位得到量化值} else astep=(absol>>achord)&0x0F;//段值不為0,將absol右移 achord<<=4;//achord位得量化值 output=achord+astep;//輸出值的絕對值 if(absol>4095)//超過最大值4095,輸出最大值0x7f output=0x7F; if(sign) returnoutput^=0xFF;//返回含有符號信息的輸出值 else returnoutput^=0x7F;}/*A律解壓子程序*/intalaw2data(unsignedcharinput){ unsignedcharsign,achord,astep; unsignedinttemp; intdata; temp=input^0xFF;//得到含有符號信息的壓縮值 sign=(temp&0x80)>>7;//得到符號位 achord=(temp&0x70)>>4;//得到段值 astep=temp&0x0F;//得到量化值 astep<<=1; if(!achord)//段值為0,輸出值為量化值左移1位后加1 data=astep+1; else { data=astep+33;//擴(kuò)展后數(shù)值中的6位非零值 data<<=achord-1; } if(sign) return-data;//有符號的擴(kuò)展值 else returndata;}2、實(shí)驗(yàn)現(xiàn)象及波形輸出=1\*GB3①連接好SEED-VC5402DSK試驗(yàn)板和計(jì)算機(jī)的通信,通電后首先進(jìn)行復(fù)位,然后啟動CCS,編譯、下載。運(yùn)行編寫的程序會看到DSK板上的3個(gè)指示燈依次點(diǎn)亮,熄滅之后就開始進(jìn)行采集語音信號了。當(dāng)?shù)谝粋€(gè)燈亮?xí)r,開始在J5端采集音頻信號,采集完后,第一個(gè)燈滅,第二個(gè)燈亮閃爍5次,第三個(gè)燈亮?xí)rJ6端耳機(jī)開始放音,就會聽到剛才儲存的8秒左右的音頻信號。放完音后,第一個(gè)燈右開始亮,程序進(jìn)入下一輪錄音、壓縮、存儲、解壓、放音循環(huán)。=2\*GB3②壓縮前后以及解壓后輸出波形/*u率壓縮子程序*/unsignedchardata2ulaw(intdata) { unsignedchari,sign,achord,astep; unsignedintoutput,absol,temp; temp=absol=abs(data); sign=(data>=0)?1:0;//判定符號:正數(shù)=1,負(fù)數(shù)=0 for(i=0;i<16;i++)//確定temp中出現(xiàn)1的最高位 { output=temp&0x8000; if(output)break;//temp左移i位后最高位為1 temp<<=1;}achord=10-i;//求出段值if(achord<=0) { achord=0; astep=(absol>>1)&0x0F;//段值為0,將absol右移1位得到量化值} else achord++; astep=(absol>>achord)&0x0F;//段值不為0,將absol右移 achord<<=4;//achord位得量化值 output=achord+astep;//輸出值的絕對值 if(absol>8191)//超過最大值8191,輸出最大值0x7f o

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論