版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PAGE1題目基于DSP的MP3播放器設(shè)計(jì)一技術(shù)指標(biāo)表一技術(shù)指標(biāo)序號技術(shù)指標(biāo)參數(shù)1內(nèi)存2GB2數(shù)據(jù)流速度64kb/s—320kb/s3諧波失真0.01%4信噪比≥90dB5動態(tài)范圍85dB6通道分離度80dB7錄音格式ADPCM8錄音數(shù)據(jù)流速率16kb/s-32kb/s9解碼功能16、32kb/s等(WAV格式)16、32、48、64、128kb/s等(MP3格式)10USB接口3—4Mb/s(下載)5—6Mb/s(上傳)11音頻輸出功率(5-7.5)mW×212電池AAA型1節(jié)13靜態(tài)電流≤2uA14待機(jī)電流≤30mA15工作電流≤70mA16錄音取樣頻率8kHz二功能描述表二功能描述序號功能當(dāng)前狀態(tài)操作結(jié)果1播放待機(jī)、停止按PLAY鍵順序播放內(nèi)存中的MP3歌曲2隨機(jī)播放播放按隨機(jī)鍵MP3中的歌曲隨機(jī)播放3重復(fù)播放播放重復(fù)按REPEAT鍵普通播放→單曲重復(fù)→所有歌曲重復(fù)→普通播放4循環(huán)播放播放按MODE鍵按一次設(shè)起點(diǎn),再按一次設(shè)終點(diǎn),兩點(diǎn)間循環(huán)播放循環(huán)播放按MODE鍵返回原播放5音場選擇待機(jī)、播放重復(fù)按EQ鍵普通(NORMAL)→古典(CLASSIC)→搖滾(ROCK)→重低音(BASS)→迪斯科(DISCO)→爵士(JAZZ)→流行(POP)→普通(NORMAL)6音量控制播放按VOL+鍵聲音增大按VOL-鍵聲音減小7搜索播放按REW或FF鍵向前或向后搜索歌曲并播放待機(jī)、停止按REW或FF鍵向前或向后搜索歌曲文件名8暫停播放按PLAY鍵暫停播放暫停播放按PLAY鍵恢復(fù)播放9刪除待機(jī):選定文件按DEL鍵二次刪除選定文件10鎖定待機(jī)、播放按HOLD鍵其他鍵失去作用鎖定按HOLD鍵取消鎖定11瀏覽停止按REW或FF鍵順序顯示存儲器中的歌曲文件名12停止播放按STOP鍵停止13關(guān)機(jī)停止按“開關(guān)”鍵關(guān)機(jī)待機(jī)n分鐘無三方案論證1硬件要求預(yù)期的MP3播放器的目標(biāo)系統(tǒng)硬件要求實(shí)現(xiàn)以下功能:·能夠存儲一定量的MP3碼流文件,供解碼系統(tǒng)使用。在系統(tǒng)初步實(shí)現(xiàn)時(shí),存儲的碼流長度至少要保證能夠從主觀上感受到音頻信號解碼的效果;·能夠?qū)P3碼流進(jìn)行解碼,從MP3格式恢復(fù)成PCM碼流。系統(tǒng)應(yīng)該能夠保證解碼過程的正確性,并能夠解碼算法在實(shí)現(xiàn)過程中所需要的存儲空間、計(jì)算速度等需求;·能夠把解碼后輸出的PCM碼流通過揚(yáng)聲設(shè)備,如耳機(jī)、音箱等播放出來,這樣才能夠從直觀上判斷解碼的效果,并且方便后期在使用該系統(tǒng)方案時(shí)進(jìn)行直觀性能評價(jià)和直接應(yīng)用;·能夠滿足系統(tǒng)的功率要求。對于電子類便攜式系統(tǒng),或者嵌入式應(yīng)用方案來說,系統(tǒng)的功耗要比較低,用電池供電能夠滿足系統(tǒng)的工作需要。2軟件要求系統(tǒng)的軟件應(yīng)該能夠?qū)崿F(xiàn)以下功能:·能夠從數(shù)據(jù)存儲介質(zhì)中讀取MP3碼流數(shù)據(jù),要能保證數(shù)據(jù)讀取的速度滿足系統(tǒng)的需要;·能夠正確對MP3碼流進(jìn)行解碼,并且以所需要的格式和方式輸出。解碼算法要在目標(biāo)系統(tǒng)中實(shí)現(xiàn),因此,不但要保證算法的正確性,也要保證算法的適應(yīng)性,充分利用目標(biāo)系統(tǒng)性能特性,并滿足系統(tǒng)的運(yùn)算速度要求;·能夠正確協(xié)調(diào)硬件各個(gè)模塊的工作,提供正確的芯片控制信號,這項(xiàng)軟件功能是專門針對硬件的,需要根據(jù)目標(biāo)系統(tǒng)的硬件需求來設(shè)計(jì)實(shí)現(xiàn);3兩種設(shè)計(jì)方案為了能夠設(shè)計(jì)和實(shí)現(xiàn)出較高性能的系統(tǒng),需要了解當(dāng)前的MP3解碼器系統(tǒng)的實(shí)現(xiàn)方案。市場調(diào)查和技術(shù)咨詢的結(jié)果顯示,目前MP3播放器系統(tǒng)MP3解碼模塊一般有兩種實(shí)現(xiàn)方案。第一、使用專業(yè)的MP3解碼芯片,輔以簡單的外圍電路實(shí)現(xiàn)。這種方案的優(yōu)點(diǎn)是系統(tǒng)個(gè)體集成度高,電路結(jié)構(gòu)緊湊,實(shí)現(xiàn)相對比較簡單,能夠很快設(shè)計(jì)實(shí)現(xiàn)出目標(biāo)系統(tǒng)并投入使用,但是由于使用的是專業(yè)芯片,芯片中的功能模塊即使能擴(kuò)充,幅度和范圍都相對較小,系統(tǒng)很難進(jìn)行算法升級或功能擴(kuò)充,在嵌入式應(yīng)用中與原系統(tǒng)的集成度不高。第二、以通用數(shù)字信號處理器(DSP,DigitalSignalProcessor)為核心,搭建相應(yīng)的外部電路形成一個(gè)系統(tǒng),解碼功能通過對數(shù)字信號處理芯片編程來實(shí)現(xiàn)。這種方案中,使用一定開發(fā)環(huán)境進(jìn)行軟件的設(shè)計(jì)實(shí)現(xiàn)和調(diào)試測試。為了滿足解碼系統(tǒng)的需求,需要根據(jù)性能和技術(shù)要求,對通用的數(shù)字信號處理芯片進(jìn)行外圍電路擴(kuò)充。這種方案的優(yōu)點(diǎn)是系統(tǒng)實(shí)現(xiàn)的靈活性高,功能的可擴(kuò)展性強(qiáng),系統(tǒng)成本可以通過對芯片的選擇控制到相對較低的水平,而且對于同樣使用數(shù)字信號處理芯片實(shí)現(xiàn)的系統(tǒng)來說,能最大程度地進(jìn)行系統(tǒng)集成。但是由于整個(gè)系統(tǒng)從硬件到軟件都需要自行設(shè)計(jì)和搭建,系統(tǒng)實(shí)現(xiàn)的難度和復(fù)雜度比較高。對于本系統(tǒng)設(shè)計(jì)采用方案二,即采用以DSP實(shí)現(xiàn)編解碼的系統(tǒng)。四設(shè)計(jì)方案基于DSP的系統(tǒng)設(shè)計(jì)方案MP3解碼器的解碼算法完全由DSP芯片實(shí)現(xiàn),其控制部分用單片機(jī)實(shí)現(xiàn),作為硬件電路設(shè)計(jì)的一個(gè)部分。電路的整體設(shè)計(jì)與開發(fā)需要綜合考慮前面兩部分程序算法接口內(nèi)容,可以在進(jìn)行詳細(xì)的程序設(shè)計(jì)的基礎(chǔ)上進(jìn)行。這樣,可以把MP3解碼器的開發(fā)工作分為兩大模塊,即MP3解碼程序DSP實(shí)現(xiàn),即軟件設(shè)計(jì),以單片機(jī)控制程序和電路板設(shè)計(jì)部分,即硬件設(shè)計(jì)。MP3系統(tǒng)開發(fā)從模塊上可以劃分為硬件開發(fā)和軟件開發(fā)兩個(gè)部分,軟件主要實(shí)現(xiàn)MP3解碼算法,單片機(jī)實(shí)現(xiàn)存儲器訪問控制,MP3文件播放控制等功能。系統(tǒng)總體的功能結(jié)構(gòu)如圖一所示。圖5.1系統(tǒng)結(jié)構(gòu)框圖軟件系統(tǒng)設(shè)計(jì)方案是用DSP軟件實(shí)現(xiàn)MP3解碼算法功能,并完成相應(yīng)的接口訪問功能,軟件功能圖如圖二所示。圖5.2MP3解碼器軟件系統(tǒng)功能原理圖五系統(tǒng)整體框圖MP3解碼算法要被用來實(shí)現(xiàn)數(shù)碼MP3實(shí)時(shí)解碼適配器,所以必須通過硬件實(shí)現(xiàn)其算法。本系統(tǒng)以DSP(TMS320VC5416)作為解碼的主要部分,還包括音頻D/A轉(zhuǎn)換,單片機(jī)的控制模塊,電源系統(tǒng),存儲器模塊等組成,圖三給出了系統(tǒng)框圖。圖5.3系統(tǒng)整體框圖六硬件電路設(shè)計(jì)1主譯碼模塊(1)TMS320C6711接口與時(shí)鐘電路veloci結(jié)構(gòu)使C6000DSP成為高性能的DSP芯片。典型的VLIW結(jié)構(gòu)由多個(gè)并行運(yùn)行的執(zhí)行單元組成,這些單元在單個(gè)時(shí)鐘周期內(nèi)可執(zhí)行多條指令。并行是突破傳統(tǒng)設(shè)計(jì)而獲得高性能的關(guān)鍵。C6711處理器由三個(gè)主要部分組成:CPU內(nèi)核、外設(shè)和存儲器。CPU中8個(gè)功能單元可以并行操作,這些功能單元被分成類似的兩套,每套由4個(gè)基本功能單元組成。CPU有兩組寄存器,每組寄存器由16個(gè)32位寄存器組成。由于在運(yùn)行期間個(gè)做硬件數(shù)據(jù)相關(guān)性的檢查,所以程序的并行性在編譯時(shí)就被確定。片內(nèi)程序存儲器的總線寬度為256的,使每個(gè)周期可取8條32位指令。C6711腆芯片包括片內(nèi)程序存儲器和數(shù)據(jù)存儲器,有些芯片將這些存儲器作為高速緩沖存儲器。外設(shè)包括直接存儲器訪問(DMA)、低功耗邏輯、外部存儲器接口、串口、擴(kuò)展總線或主機(jī)口和定時(shí)器等。具有以下特點(diǎn):1運(yùn)行速度快。指令周期為6ns,峰值運(yùn)算能力為1336MIPS,對于單精度運(yùn)算可達(dá)1GFLOPS,對于算精度運(yùn)算可達(dá)250MFLOPS.2硬件支持IEEE格式的32位單精度與64為雙精度浮點(diǎn)操作。3繼承了32*32bit的乘法器,其結(jié)果可為32或64bit.4C6711的指令集在C62的指令集基礎(chǔ)上增加了浮點(diǎn)執(zhí)行能力,可以看作是C62指令集的超集。與C62系列芯片一樣,由于其出色的運(yùn)算能力、高效的指令集、智能外設(shè)、大容量的片內(nèi)存儲器和大范圍的尋址能力,這個(gè)系列的芯片適合用于基站數(shù)字波束形成、圖像處理、語音識別等對運(yùn)算能力和存儲量有高要求的應(yīng)用場合。圖6.1時(shí)鐘,JTAG和DSP接口電路時(shí)鐘電路有25MHZ晶振,兩片ICS504和SN74LVTH125PW組成,如圖所示圖6.2時(shí)鐘電路(2)JTAG仿真口電路連接測試組(JTAG)接口用于連接最小系統(tǒng)和仿真器,實(shí)現(xiàn)仿真器對DSP的訪問,JTAG接口的連接需要和仿真器上的接口一致。一般情況下,最小系統(tǒng)板需要引出雙排的14腳插針,圖中引腳間隔為0.1英寸,引腳寬度為0.025英寸,引腳長度為0.235英寸。在大多數(shù)情況下,如果開發(fā)板和仿真器之間的連接電纜不超過6英寸,可采用上述接法,在EMU0和EMU1接上拉電阻4.7K。圖6.3JTAG電路2模擬音頻模塊聲音采集電路以TI公司的音頻編解碼器TLV320AIC23為核心來完成,AIC23把麥克風(fēng)輸出的模擬音頻信號轉(zhuǎn)換成數(shù)字音頻信號,形成PCM碼流,送給DSP芯片。DSP則以DMA方式,通過多通道緩沖串口讀取PCM樣值,并在片內(nèi)RAM建立幀緩沖區(qū),每幀的大小為12,DSP通過I2C接口對芯片的內(nèi)部寄存器進(jìn)行控制設(shè)置,使其工作在合適的的工作模式下。(1)A1C23與6711的連接方式AIC23與DSP的接口有兩個(gè):一個(gè)是控制口,用于設(shè)置AIC23的工作參數(shù);另一個(gè)是數(shù)據(jù)口,用于傳輸AIC23的A/D、D/A數(shù)據(jù)。將6711的McASP配置成脈沖幀同步模式,2通路TDM格式的數(shù)據(jù)流,與4片AIC23的數(shù)據(jù)接口相連;使用I2C總線與AIC23的控制口接口。AIC23的數(shù)據(jù)口AIC23的數(shù)據(jù)口有4種工作方式,分別為Rightiustitled、Leftjustified、xlsMode、DSPMode。其中后兩種可以很方便的與DSP的McASP串口相連接。采用DSPMode工作方式。AIC23的數(shù)據(jù)口可以和6711的McASP接口無縫連接,方便地實(shí)現(xiàn)主模式與從模式兩種工作方式。當(dāng)McASP為從模式時(shí),McASP的接收時(shí)鐘與幀同步信號都由AIC23來提供;當(dāng)McASP為主模式時(shí),McASP產(chǎn)生所有的信號。McASP串口相連接。采用DSPMode工作方式。AIC23的數(shù)據(jù)口可以和6711的McASP接口無縫連接,方便地實(shí)現(xiàn)主模式與從模式兩種工作方式。當(dāng)McAS為從模式時(shí),McASP的接收時(shí)鐘與幀同步信號都由AIC23來提供;當(dāng)McAS為主模式時(shí),McASP產(chǎn)生所有的信號。AIC23的控制口AIC23的控制口有兩種工作方式:兩線制的I2C方式(MODE為低);三線制的SPI方式(MODE為高),文中采用I2C方式,時(shí)序圖如圖4.6所示。圖6.4I2C總線配置AIC23的時(shí)序圖使用I2C總線對AIC23進(jìn)行配置時(shí),I2C總線選擇7位地址的尋址方式,由于AIC23的寄存器只有寫操作無讀操作,因而其通訊協(xié)議規(guī)定每個(gè)WORD的前7Bit為寄存器的地址,后1Bit為寄存器內(nèi)容。在兩線制的I2C方式下SDI為串行數(shù)據(jù)線,SCLK為串行時(shí)鐘線,開始條件是當(dāng)SCLK為高而SDI為下降沿,1到7個(gè)位時(shí)鐘傳輸寄存器地址,R/W位決定數(shù)據(jù)傳輸方向,第9個(gè)位時(shí)鐘識別地址并接受數(shù)據(jù)傳輸,后2個(gè)8位時(shí)鐘傳輸控制數(shù)據(jù)位(9位)。單片AIC23接口電路。圖6.5音頻轉(zhuǎn)換電路3電源模塊TMS320C6711的內(nèi)核電壓典型值為1.26V,電壓范圍為1.1~1.8V;外部接口電壓典型值為3.3V,電壓范圍為3.0~3.6V。另外單片機(jī)需+5V供電;電平轉(zhuǎn)換電路需3.3V供電;故電源系統(tǒng)有5V、3.3V和1.26V四種電壓。電系統(tǒng)的5V電壓由外部穩(wěn)壓電源供給;3.3V和1.26V由系統(tǒng)內(nèi)部線性電壓調(diào)節(jié)器提供。采用TI公司的TPS767D3011線性調(diào)壓電路芯片,能滿足系統(tǒng)設(shè)計(jì)要求。TPS767D3011為雙輸出低漏電壓調(diào)整器。其特點(diǎn)如下:具有快速瞬態(tài)響應(yīng)功能;3.3V/1.26V可調(diào)電壓輸出;輸出電流范圍為0~1A;200MS延遲的雙通道上電復(fù)位;熱關(guān)斷保護(hù);超低靜態(tài)電流,典型值為80uA;關(guān)斷電流為1uA。采用TPS767D3011構(gòu)成的電源電路如圖6.2所示。從外部穩(wěn)壓電源引入5V電壓。+5V電壓一方面輸入給TPS767D3011,經(jīng)TPS767D3011后輸出電壓1.26V和3.3V,另一方面又直接供給單片機(jī)電源。圖6.6電源電路4存儲擴(kuò)展(1)SDRAM擴(kuò)展本系統(tǒng)采用MICron公司生產(chǎn)的MT48LC4M16AZ作為SDRAM存儲芯片,并可與DSP完全兼容,能夠與6711實(shí)現(xiàn)無縫連接。MT48LC4M16AZ連線圖如圖4.12所示。通過對6711的EMIF與SDRAM相關(guān)寄存器的設(shè)置之后,DSP對SDRAM的訪問操作將變的非常透明,可像訪問片外SRAM一樣訪問它,因此非常方便。系統(tǒng)中采用一片Mieron公司的MT48LC4M16AZ,數(shù)據(jù)寬度16bit,工作電壓為3.3V。該芯片可以滿足系統(tǒng)對內(nèi)存容量和讀寫速度的要求。板上通過6711的EMIF總線擴(kuò)展了一片64M位(IM*4Blank*16)的SDRAM,它將占用oM642的石而和瓦1二個(gè)片外存儲空間可尋址范圍oXo40000一oX7FFFFF:最大配置時(shí),板上可安裝一片128M為的SDRAM,它將占用6711的CEO一CE3。全部四個(gè)片外存儲空間,可尋址范圍0x040000一OxFEFFFF(6711狀態(tài)寄存器ST3中的MPNMC=O),或oxO40000一OxFFFFFF(MPNMC=0),上電復(fù)位時(shí),MPNMC被清0。由于EMIF每個(gè)片選的最大空間為64M比特,所以一片64M比特的SDRAM就要占用1個(gè)片選空間,然而僅有1個(gè)對應(yīng)映射范圍開始的CE引腳作為SDRAM的片選信號。所以同時(shí)選用CEO和CEI空間,用EMIF的CEO與SDRAM片選CS相聯(lián),CEI引腳懸空。圖6.7SDRAM擴(kuò)展電路(2)FLASH存儲器模塊本系統(tǒng)采用SST公司推出的多用途、高性能、低電壓、基于CMOS的FLASH存儲器SST39VF80OA,其容量為SMbit(512kx16bit),只需2.7V的電壓就可完成讀、寫和擦除操作,寫入一個(gè)字節(jié)(sbit)僅需20,s,整個(gè)存儲器的擦除只需8s。FLASH存儲器電路的連接圖如圖4.13所示。圖6.8FLASH擴(kuò)展電路由于本系統(tǒng)DSP采用ROM加載方式,在上電復(fù)位之后首先將CE1空間的程序代碼搬到片內(nèi)地址O處開始運(yùn)行,因此FLASH主要分配到DSP的外部CE1空間。為使DSP能夠正確地從FLASH引導(dǎo)并加載程序,還需配置相應(yīng)的引腳。由于C6000系列DSP提供了與FLASH的無縫接口,因此設(shè)計(jì)6711與FLASH的接口電路就變得相對較簡單。(3)ROM模塊采用EPROM芯片AT29LV010A-15JC存儲程序,接線圖如下;圖6.9ROM電路5單片機(jī)控制模塊(1)USB接口電路與控制下面介紹以下PDIUSBD12芯片。圖6.10PDIUSBD12芯片引腳D0~D7:雙向8位數(shù)據(jù)線。ALE:地址鎖存使能信號。CLKOUT:可編程時(shí)鐘輸出。/INT:PDIUSBD12中斷輸出。D-:USBD-數(shù)據(jù)線。D+:USBD+數(shù)據(jù)線。PDIUSBD12適應(yīng)于不同類型的設(shè)備,有四種不同的模式:非同步傳輸,同步輸出傳輸,同步輸入傳輸,同步輸出/輸入傳輸。共有3各端點(diǎn),分別為端點(diǎn)0,端點(diǎn)1和端點(diǎn)2。端點(diǎn)是一個(gè)USB設(shè)備唯一可以確認(rèn)的部分,它是主機(jī)和設(shè)備之間的通信流終點(diǎn)。每一個(gè)USB邏輯設(shè)備都包括一個(gè)端點(diǎn)集合,PC機(jī)應(yīng)用軟件只能通過一個(gè)或多個(gè)端點(diǎn)與一個(gè)USB設(shè)備通信。在設(shè)備接入時(shí),每個(gè)邏輯設(shè)備都有一個(gè)由系統(tǒng)分配的唯一地址,而一個(gè)設(shè)備上的任一個(gè)端點(diǎn)都有一個(gè)有設(shè)備確定的唯一的標(biāo)識和端點(diǎn)號,利用設(shè)備的地址和端點(diǎn)號就可以唯一指定任一個(gè)端點(diǎn)。所有的USB設(shè)備都要擁有端點(diǎn)0,它總是在設(shè)備一經(jīng)接入和上電時(shí)就進(jìn)行配置。該端點(diǎn)用于對一個(gè)邏輯設(shè)備進(jìn)行初始化和一般的操作。端點(diǎn)0支持控制傳輸,通過它訪問一般的USB狀態(tài)和控制操作。除了端點(diǎn)0外,功能設(shè)備還具有其他端點(diǎn),如PDIUSBD12的端點(diǎn)1和端點(diǎn)2.低速功能設(shè)備有兩個(gè)端點(diǎn)可供選擇,而一個(gè)全速設(shè)備最多可以有16個(gè)輸入端點(diǎn)和16個(gè)輸出端點(diǎn)。(2)單片機(jī)與鍵盤控制單片機(jī)采用80C52芯片,實(shí)現(xiàn)按鍵管理,及USB控制。圖6.11USB,鍵盤和單片機(jī)接口電路6LCD擴(kuò)展LCD模塊選擇VPG240128TA-SC-HT-LED04,LCD工作電壓與DSP的電壓不匹配,需要做電平匹配,LCD電平轉(zhuǎn)換芯片SN74LVC4245A;LCD模塊通過排線與單板連接。圖6.12LCD顯示接口電路七PCB板設(shè)計(jì)在MP3播放機(jī)PCB板設(shè)計(jì)中,經(jīng)過合理布局,全面滿足了外觀和結(jié)構(gòu)方面的需求。同時(shí)在數(shù)字信號部分精心考慮信號線走向,盡可能多地增加鋪地面積,減少分布參數(shù)的影響,使干擾減少到合理范圍。兼顧信號質(zhì)量和成本后,最終PCB板采用了六層板設(shè)計(jì)。八系統(tǒng)軟件設(shè)計(jì)1CVSD編碼語音信號采用比較容易實(shí)現(xiàn)的CSVD編碼,也即線性增量調(diào)制算法編碼方法,實(shí)現(xiàn)對語音信號的編碼以及相應(yīng)的解碼算法。CVSD是一種量階隨著輸入語音信號平均斜率大小而連續(xù)變化的增量調(diào)制方法。他的工作原理是使用多個(gè)連續(xù)可變斜率的線段來逼近語音信號,當(dāng)斜率為正時(shí),對應(yīng)的數(shù)字編碼為1;當(dāng)斜率為負(fù)時(shí),對應(yīng)的數(shù)字編碼為0。當(dāng)CVSD工作于編碼方式時(shí),其系統(tǒng)框圖如7.1,語音輸入信號經(jīng)采樣得到數(shù)字信號,數(shù)字信號與積分器輸出信號¥比較后輸出偏差信號,偏差信號經(jīng)判決后輸出數(shù)字編碼,該信號同時(shí)作為積分器輸出斜率的機(jī)型控制信號和積分器輸出斜率邏輯的輸入信號。在每個(gè)時(shí)鐘周期內(nèi),若語音信號大于積分器輸出信號,則判決輸出為1,積分器輸出上升一個(gè)量階;若語音信號小于積分器輸出信號,則判決輸出為0,積分器下降一個(gè)量階。圖8.1CSVD編碼系統(tǒng)框圖當(dāng)CSVD工作于解碼方式時(shí),其系統(tǒng)框圖如圖7.2。在每個(gè)時(shí)鐘周期內(nèi),數(shù)字編碼被送到連碼檢測器,然后送到斜率幅度控制電路一控制積分器輸出斜率的大小。若數(shù)字編碼輸入為1,則積分器的輸出上升一個(gè)量階,這相當(dāng)于編碼過程的逆過程。積分器的輸出通過低通濾波器平滑濾波后將重現(xiàn)輸入語音信號。圖7.2CSVD解碼系統(tǒng)框圖可見輸入信號的波形上升越快,輸出的連1碼就越多,同樣下降越快連0碼越多,CVSD編碼能夠很好地反應(yīng)輸入信號的斜率大小。為使積分器的輸出能夠更好地逼近輸入語音信號,量階隨著信號斜率大小而變化,當(dāng)信號斜率絕對值很大,編碼出現(xiàn)3個(gè)連1或連0碼時(shí),則量階加一個(gè)增量,當(dāng)不出現(xiàn)上述碼型時(shí),量階則相應(yīng)地減小。為了減碼及譯碼的偏差,要求編碼和譯碼過程使用相同的時(shí)鐘頻率,而且采樣頻率應(yīng)符合耐酸斯特采樣定律。CSVD通過不斷改變量階大小來跟蹤信號的變化以減小顆粒噪聲與斜率過程失真,量階調(diào)整是基于過去的3個(gè)或4個(gè)樣值輸出。具體編碼程序如圖7.3,具體解碼程序如圖7.4.圖7.3語音編碼流程圖圖7.4語音解碼流程圖2CVSD編碼的C語言程序代碼#include<stdio.h>#include<math.h>//#include<C55.h>#defineBUFFERSIZEOUT254#defineBUFFERSIZEIN4064#defineDeltaMax1280 #defineDeltaMin6.5#defineBeta0.99 #defineORD6 #defineMAX_BITS16doubleValPreCVSD=0;doubleDeltaCVSD=20; doubleDelta0CVSD=10; charThreeJudgeCVSD[3]={0,1,0};doubleValPreCVSDDE=0;doubleDeltaCVSDDE=20; doubleDelta0CVSDDE=10; charThreeJudgeCVSDDE[3]={0,1,0};staticdoubleCoefA[ORD]={1.00000000,-3.88893329,6.64074495,-6.08600100,2.98673653,-0.62768820};staticdoubleCoefB[ORD]={0.03285030,-0.05723916,0.03681835,0.03681835,-0.05723916,0.03285030};staticshortfilterY[ORD-1];staticshortfilterX[ORD];charCVSDCoder(shortInData);shortCVSDDecoder(charInData);charCVSDCoder(shortInData) { doubleDiff=0; intj=0; charOutData; Diff=InData-ValPreCVSD; if(Diff>0) { ThreeJudgeCVSD[j]=1; OutData=1; } else { ThreeJudgeCVSD[j]=0; OutData=0; } //判斷三連碼 if(((ThreeJudgeCVSD[0]==1)&(ThreeJudgeCVSD[1]==1)&(ThreeJudgeCVSD[2]==1))| ((ThreeJudgeCVSD[0]==0)&(ThreeJudgeCVSD[1]==0)&(ThreeJudgeCVSD[2]==0))) DeltaCVSD=DeltaCVSD+Delta0CVSD; else DeltaCVSD=Beta*DeltaCVSD; if(DeltaCVSD>DeltaMax) DeltaCVSD=DeltaMax; if(DeltaCVSD<DeltaMin) DeltaCVSD=DeltaMin; if(ThreeJudgeCVSD[j]==1) {ValPreCVSD=ValPreCVSD+DeltaCVSD; } if(ThreeJudgeCVSD[j]==0) { ValPreCVSD=ValPreCVSD-DeltaCVSD; } j++; j%=3; returnOutData; }shortCVSDDecoder(charInData) { doubleMax; intj=0; intm=0; shortOutData; shortDataDecode; if(InData==0)ThreeJudgeCVSDDE[m]=0; if(InData==1)ThreeJudgeCVSDDE[m]=1; if(((ThreeJudgeCVSDDE[0]==1)&(ThreeJudgeCVSDDE[1]==1)&(ThreeJudgeCVSDDE[2]==1))|((ThreeJudgeCVSDDE[0]==0)&(ThreeJudgeCVSDDE[1]==0)&(ThreeJudgeCVSDDE[2]==0))) DeltaCVSDDE=DeltaCVSDDE+Delta0CVSDDE; else DeltaCVSDDE=Beta*DeltaCVSDDE; if(DeltaCVSDDE>DeltaMax) DeltaCVSDDE=DeltaMax; if(DeltaCVSDDE<DeltaMin) DeltaCVSDDE=DeltaMin; if(ThreeJudgeCVSDDE[m]==1)ValPreCVSDDE+=DeltaCVSDDE; if(ThreeJudgeCVSDDE[m]==0)ValPreCVSDDE-=DeltaCVSDDE; if(ValPreCVSDDE>32767) ValPreCVSDDE=32767; if(ValPreCVSDDE<-32768) ValPreCVSDDE=-32768; m++; m%=3; OutData=(short)ValPreCVSDDE; Max=0; filterX[0]=OutData; for(j=0;j<ORD;j++) { Max=Max+CoefB[j]*filterX[j]; } for(j=1;j<ORD;j++) { Max=Max-CoefA[j]*filterY[j-1]; } DataDecode=(short)Max; for(j=ORD-1;j>0;j--) { filterX[j]=filterX[j-1]; } for(j=ORD-2;j>0;j--) { filterY[j]=filterY[j-1]; } filterY[0]=(short)Max; returnDataDecode; }main() {shortCVSDinput=0;charCVSDoutput;shortCVSDDEoutput;charCVSDDEinput=0;CVSDoutput=CVSDCoder(CVSDinput); CVSDDEoutput=CVSDDecoder(CVSDDEinput); }3編碼程序.title"CVSDcoder.asm".mmregsSTACK.usect"STACK",10h.globalInit,BeginDeltaMax.set1280hDeltaMin.set65hBeta.set99hDelta0CVSD.set10h.dataTBL:.word0,1,0.bssThreeJudge,3.bssInData,1.bssOutData,1.bssDeltaCVSD,1.bssValPreCVSD,1.textInit:STM#ThreeJudge,AR5RPT#3MVPDTBL,*AR5+STM#ThreeJudge,AR5ST#20,*(DeltaCVSD)ST#0,*(ValPreCVSD)ST#100,*(InData)Begin:LD*(InData),ASTLMA,AR1LD*(ValPreCVSD),ASTLMA,AR0CMPRLT,AR1BCDiffNeg,TCSTM#1,*AR5+ST#1,*(OutData)LD#1,AAND*AR5+,AAND*AR5+,ABCL1,ANEQSTM#DeltaCVSD,AR6STM#Beta,TMPYAR6,ABL2L1:LD#DeltaCVSD,ASTM#Delta0CVSD,AR3;ADDAR3,AL2:STM#DeltaMax,AR0STLA,AR4CMPRLT,AR4BCL3,TCLDAR0,AL3:STM#DeltaMin,AR0STLA,AR4CMPRGT,AR4BCL4,TCLDAR0,AL4:STLA,*(DeltaCVSD)STM#ValPreCVSD,AR4ADD*AR4,ASTLA,*(ValPreCVSD)BendingDiffNeg:STM#0,*AR5+ST#0,*(OutData)LD#0,AADD*AR5+,AADD*AR5+,ABCL5,ANEQLD#DeltaCVSD,ASTM#Delta0CVSD,AR3;ADDAR3,ABL6L5:STM#DeltaCVSD,AR6STM#Beta,TMPYAR6,AL6:STM#DeltaMax,AR0STLA,AR4CMPRLT,AR4BCL7,TCLDAR0,AL7:STM#DeltaMin,AR0CMPRGT,AR4BCL8,TCLDAR0,AL8:STLA,*(DeltaCVSD)STLA,AR4STM#ValPreCVSD,AR6LD*(AR6),ASUBAR4,ASTLA,*(ValPreCVSD)ending:STLA,*(ValPreCVSD).END4解碼程序.title"CVSDdecoder.asm".mmregsSTACK.usect"STACK",10h.globalnit,BeginDeltaMax.set1280hDeltaMin.set65hBeta.set99hDelta0CVSD.set10hORD.set6hORD1.set5h.dataTBL:.word0,1,0Coefa:.word-3888933*32768/1000000.word6640744*32768/1000000.word-6086001*32768/1000000.word2986736*32768/1000000.word-627688*32768/1000000Coefb:.word32850*32768/1000000.word-57239*32768/1000000.word36818*32768/1000000.word36818*32768/1000000.word-57239*32768/1000000.word32850*32768/1000000.bssThreeJudge,3.bssJudge,1.bssInData,1.bssOutData,1.bssDeltaCVSD,1.bssValPreCVSD,1.bssFilterX,6.bssCoefA,5.bssFilterY,5.bssCoefB,6.textInit:STM#ThreeJudge,AR5RPT#3MVPDTBL,*AR5+STM#CoefA,AR5RPT#5MVPDCoefa,*AR5+STM#CoefB,AR5RPT#6MVPDCoefb,*AR5+STM#ThreeJudge,AR5ST#20,*(DeltaCVSD)ST#0,*(ValPreCVSD)ST#1,*(Judge)ST#1,*(InData)Begin:LD*(InData),ASTLA,*AR5+AND*(Judge),ABCONE,ANEQLD#0,AADD*AR5+,AADD*AR5+,ABCL1,ANEQSTM#DeltaCVSD,AR6STM#Beta,TMPYAR6,ABL2L1:LD#DeltaCVSD,ASTM#Delta0CVSD,AR3;ADDAR3,AL2:STM#DeltaMax,AR0STLA,AR4CMPRLT,AR4BCL3,TCLDAR0,AL3:STM#DeltaMin,AR0STLA,AR4CMPRGT,AR4BCL4,TCLDAR0,AL4:STLA,*(DeltaCVSD)STLA,AR4STM#ValPreCVSD,AR6LD*(AR6),ASUBAR4,ASTLA,*(ValPreCVSD)ONE:LD#1,AAND*AR5+,AAND*AR5+,ABCL5,ANEQSTM#DeltaCVSD,AR6STM#Beta,TMPYAR6,ABL6L5:LD#DeltaCVSD,ASTM#Delta0CVSD,AR3;ADDAR3,AL6:STM#DeltaMax,AR0STLA,AR4CMPRLT,AR4BCL7,TCLDAR0,AL7:STM#DeltaMin,AR0STLA,AR4CMPRGT,AR4BCL8,TCLDAR0,AL8:STLA,*(DeltaCVSD)STM#ValPreCVSD,AR4ADD*AR4,ASTLA,*(ValPreCVSD)IIR:STM#CoefB,AR2STM#FilterX,AR3LD*(ValPreCVSD),ASTLA,*AR3MPY*AR2+,*AR3+,ARPT#4MAC*AR2+,*AR3+,ASTM#CoefA,AR2STM#FilterY,AR3RPT#4MAS*AR2+,*AR3+,ASTM#FilterX+4,AR3RPT#3DELAY*AR3-STM#FilterY+3,AR3RPT#2DELAY*AR3-S:STLA,*(FilterY).END八*軟硬件電路調(diào)試九總結(jié)本文通過MP3的設(shè)計(jì),熟悉并掌握了C6711芯片,TLV320AIC23芯片以及語音編解碼原理;十參考書目(1)宋亞玲,MP3音頻編碼算法的DSP實(shí)現(xiàn)及優(yōu)化,北京工業(yè)大學(xué),2021.(2)王希公,MP3數(shù)碼音頻播放機(jī)設(shè)計(jì),天津大學(xué)工程碩士學(xué)位論文,2021.(3)計(jì)丹,基于定點(diǎn)DSP的MP3解碼系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),碩士學(xué)位論文,2021.(4)鄧彥松,向偉,基于DSP的語音信號處理系統(tǒng)設(shè)計(jì),中國集成電路,2021,(4):95(5)呂海平,基于DSP的MP3編碼器技術(shù)研究,碩士學(xué)位論文,2021.(6)王宏,基于TMS320C50的通用語音信號處理系統(tǒng),電子技術(shù)應(yīng)用,2021,(7):3.(7)高永清,基于TL16C550C實(shí)現(xiàn)TMS320C6711的異步串行通信,工礦自動化,2021,(4):2.(8)馮小龍,基于多媒體DSP芯片TMS320DM642的語音信號處理,煤炭工程,2021,(8):3.十一附錄1電路圖(1)主譯碼電路(2)模擬音頻模塊電路(3)電源電路(4)SDRAM擴(kuò)展電路(5)FLASH和ROM擴(kuò)展電路(6)單片機(jī)控制電路(7)LCD電路2系統(tǒng)的PCB版圖(1)小圖(2)放大后
中南民族大學(xué)學(xué)生課程設(shè)計(jì)報(bào)告課程名稱:C程序設(shè)計(jì)語言選題名稱:通訊錄管理年級:專業(yè):信息管理與信息系統(tǒng)學(xué)號:姓名:指導(dǎo)教師:完成地點(diǎn):管理學(xué)院綜合實(shí)驗(yàn)室完成日期:1.課程設(shè)計(jì)的目的為了熟練掌握C語言的語法特點(diǎn)、及其數(shù)據(jù)結(jié)構(gòu),提高自身編寫程序的能力。通過課程設(shè)計(jì)實(shí)現(xiàn)理論知識與實(shí)際情況的結(jié)合,使所學(xué)知識能夠在現(xiàn)實(shí)社會中起到一定的作用,防止所編寫的程序脫離實(shí)際,讓程序可以更好的發(fā)揮作用,以便減輕實(shí)際工作中所遇到的繁瑣步驟,提高現(xiàn)實(shí)工作中的效率。此外通過課程設(shè)計(jì)提高邏輯思考能力和解決實(shí)際問題的能力。程序設(shè)計(jì)是公認(rèn)的、最能直接有效地訓(xùn)練學(xué)生的創(chuàng)新思維,培養(yǎng)分析問題、解決問題能力的學(xué)科之一。其次課程設(shè)計(jì)有利于治學(xué)態(tài)度的培養(yǎng)。程序設(shè)計(jì)中,語句的語法和常量變量的定義都有嚴(yán)格的要求,有時(shí)輸了一個(gè)中文標(biāo)點(diǎn)、打錯(cuò)了一個(gè)字母,編譯就不通過,程序無法正常運(yùn)行。因此,程序設(shè)計(jì)初學(xué)階段,學(xué)生經(jīng)常會犯這樣的錯(cuò)誤,可能要通過幾次乃至十多次的反復(fù)修改、調(diào)試,才能成功,但這種現(xiàn)象會隨著學(xué)習(xí)的深入而慢慢改觀。這當(dāng)中就有一個(gè)嚴(yán)謹(jǐn)治學(xué)、一絲不茍的科學(xué)精神的培養(yǎng),又有一個(gè)不怕失敗、百折不撓品格的鍛煉。通訊錄信息管理系統(tǒng)是生活中不可缺少的部分編寫了一個(gè)通訊錄信息管理系統(tǒng)是十分必要的。本程序設(shè)計(jì)具有通訊信息的錄入,進(jìn)行保存、查找、刪除等功能,操作界面簡潔美觀,易于操作。程序用了條件、循環(huán)、指針、結(jié)構(gòu)體等知識點(diǎn),綜合了文件的打開和保存編寫的??蛇\(yùn)用于小的管理軟件。軟件運(yùn)用菜單實(shí)現(xiàn)交互式管理,用戶輕松的按鍵既可實(shí)現(xiàn)對軟件的操作,操作簡單易懂,功能豐富,可以很好的滿足的需要。通過對通訊錄管理系統(tǒng)的設(shè)計(jì),進(jìn)一步理解和掌握C語言這門課程的知識點(diǎn),能夠熟練的調(diào)用各種函數(shù),把各種C語句有機(jī)的結(jié)合起來,提高自己C語言程序設(shè)計(jì)的能力,為今后解決實(shí)際問題打下良好基礎(chǔ)。2.設(shè)計(jì)方案論證2.1設(shè)計(jì)思路建立一個(gè)函數(shù),用來添加、顯示、刪除、查詢通訊錄等信息,完成通訊錄的功能。主函數(shù)可以調(diào)用六個(gè)子函數(shù),分別完成添加記錄、顯示記錄、刪除記錄、查詢記錄、退出系統(tǒng)等功能。在主函數(shù)中可以以1、2、3、4、0數(shù)字鍵分別可以執(zhí)行某個(gè)功能模塊。退出程序刪除記錄查詢記錄顯示退出程序刪除記錄查詢記錄顯示記錄添加記錄通訊錄管理系統(tǒng) 2.2程序設(shè)計(jì)2.2.1根據(jù)圖1定義數(shù)據(jù)類型建立函數(shù)typedefstruct { charscore;/*編號*/ charname[10];/*姓名*/ charnum[15];/*號碼*/ charemail[20]; /*郵箱*/ charage[8]; /*年齡*/ charadds[20]; /*住址*/ }Person;2.2.2主函數(shù)及其流程圖Y定義主函數(shù)main()和一系列的功能函數(shù),只有通過這些函數(shù)才可實(shí)現(xiàn)程序的功能。每次使用都會調(diào)用主函數(shù)。主函數(shù)主要是利用switch語句對數(shù)據(jù)進(jìn)行處理,流程圖如下:Y添加記錄選擇1開始N選擇2YYYYNNNN退出系統(tǒng)查詢記錄刪除記錄顯示記錄選擇0選擇4選擇3添加記錄選擇1開始N選擇2YYYYNNNN退出系統(tǒng)查詢記錄刪除記錄顯示記錄選擇0選擇4選擇3結(jié)束結(jié)束2.2.3增加函數(shù)及其流程圖.添加通訊錄記錄流程圖:.顯示通訊錄記錄流程圖:.刪除通訊錄記錄流程圖:.查詢通訊錄記錄流程圖:2.3源程序#include<stdio.h>#include<stdlib.h>#include<string.h>typedefstruct { charscore;/*編號*/ charname[10];/*姓名*/ charnum[15];/*號碼*/ charemail[20]; /*郵箱*/ charage[8]; /*年齡*/ charadds[20]; /*住址*/ }Person;Personpe[80];intmenu_select() { charc; do{ system("cls"); printf("\t\t*****通訊錄*****\n"); printf("\t\t┌───────┐\n"); printf("\t\t│1.添加記錄│\n"); printf("\t\t│2.顯示記錄│\n"); printf("\t\t│3.刪除記錄│\n"); printf("\t\t│4.查詢記錄│\n"); printf("\t\t│0.退出程序│\n"); printf("\t\t└───────┘\n"); printf("\t\t請您選擇(0-4):"); c=getchar(); }while(c<'0'||c>'4'); return(c-'0'); }intInput(Personper[],intn){ inti=0; charsign,x[10]; while(sign!='n'&&sign!='N') { printf("\t編號:"); scanf("\t%d",&per[n+i].score); printf("\t姓名:"); scanf("\t%s",per[n+i].name); printf("\t年齡:"); scanf("\t%s",per[n+i].age); printf("\t電話號碼:"); scanf("\t%s",per[n+i].num); printf("\t通訊住址:"); scanf("\t%s",per[n+i].adds); printf("\t電子郵箱:"); scanf("\t%s",per[n+i].email); gets(x); printf("\n\t是否繼續(xù)添加?(Y/N)"); scanf("\t%c",&sign); i++; } return(n+i);}voidDisplay(Personper[],intn){ inti; printf("\n");/*格式*/ printf("編號姓名年齡電話號碼通訊地址電子郵箱\n"); printf("\n"); for(i=1;i<n+1;i++) { printf("%-5d%-8s%-6s%-13s%-15s%-15s\n",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email); if(i>1&&i%10==0) { printf("\t\n"); printf("\t"); system("pause"); printf("\t\n"); } } printf("\n"); system("pause");}intDelete_a_record(Personper[],intn){ chars[20]; inti=0,j; printf("\t請輸入想刪除記錄中的名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return(n); } for(j=i;j<n-1;j++) { strcpy(per[j].num,per[j+1].num); strcpy(per[j].name,per[j+1].name); strcpy(per[j].age,per[j+1].age); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].email,per[j+1].email); per[j].score=per[j+1].score; } printf("\t\t\t已經(jīng)成功刪除!\n"); return(n-1);}voidQuery_a_record(Personper[],intn){ intm; printf("\t\n請選擇查詢方式:\n");printf("\t┌──────┐\n");printf("\t│1姓名│\n");printf("\t│2電話│\n");printf("\t│3地址│\n");printf("\t│4返回│\n");printf("\t└──────┘\n");printf("請選擇:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){ printf("輸入錯(cuò)誤,請重新選擇:"); scanf("%d",&m); } if(m==1) { chars[20]; inti=0; printf("\t請輸入想查詢的姓名:"); scanf("\t%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return; } printf("\t此人編號:%d\n",per[i].score); printf("\t此人年齡:%s\n",per[i].age); printf("\t電話號碼:%s\n",per[i].num); printf("\t通訊地址:%s\n",per[i].adds); printf("\t電子郵箱:%s\n",per[i].email); }; if(m==2) { chars[20]; inti=0; printf("\t請輸入想查詢的電話:"); scanf("\t%s",s); while(strcmp(per[i].num,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return; } printf("\t此人編號:%d\n",per[i].score); printf("\t此人姓名:%s\n",per[i].name); printf("\t此人年齡:%s\n",per[i].age); printf("\t通訊地址:%s\n",per[i].adds); printf("\t電子郵箱:%s\n",per[i].email); }; if(m==3) { chars[20]; inti=0; printf("\t請輸入想查詢的地址:"); scanf("\t%s",s); while(strcmp(per[i].adds,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return; } printf("\t此人編號:%d\n",per[i].score); printf("\t此人姓名:%s\n",per[i].name); printf("\t此人年齡:%s\n",per[i].age); printf("\t電話號碼:%s\n",per[i].num); printf("\t電子郵箱:%s\n",per[i].email); };}voidChange(Personper[],intn){ chars[20]; inti=0; printf("\t請輸入想修改的記錄中的名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return; } printf("\t編號:"); scanf("\t%d",&per[i].score); printf("\t姓名:"); scanf("\t%s",per[i].name); printf("\t年齡:"); scanf("\t%s",per[i].age); printf("\t電話號碼:"); scanf("\t%s",per[i].num); printf("\t通訊住址:"); scanf("\t%s",per[i].adds); printf("\t電子郵箱:"); scanf("\t%s",per[i].email); printf("\t修改成功!");}voidWritetoText(Personper[],intn){ inti=0; FILE*fp;
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度綠色能源項(xiàng)目投資定金合同附屬協(xié)議書2篇
- 二零二五年度權(quán)威解讀!欠條法律風(fēng)險(xiǎn)防范及處理合同3篇
- 二零二五年度白酒定制生產(chǎn)與品牌發(fā)展合同2篇
- 二零二五年度高鐵安裝工程設(shè)備磨損保險(xiǎn)合同2篇
- 2025年度西餐廳經(jīng)營管理權(quán)租賃合同3篇
- 二零二五年度航空貨運(yùn)代理航空貨物包裝材料供應(yīng)合同3篇
- 展會展臺拆除合同(2篇)
- 小區(qū)道路工程承包合同(2篇)
- 2025年餐飲食材配送與售后服務(wù)合同協(xié)議3篇
- 二零二五年度航空航天零部件耗材采購合同范本3篇
- 幼兒園反恐防暴技能培訓(xùn)內(nèi)容
- 食品企業(yè)質(zhì)檢員聘用合同
- 中醫(yī)診所內(nèi)外部審計(jì)制度
- 自然辯證法學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024年國家危險(xiǎn)化學(xué)品經(jīng)營單位安全生產(chǎn)考試題庫(含答案)
- 護(hù)理員技能培訓(xùn)課件
- 家庭年度盤點(diǎn)模板
- 河南省鄭州市2023-2024學(xué)年高二上學(xué)期期末考試 數(shù)學(xué) 含答案
- 2024年資格考試-WSET二級認(rèn)證考試近5年真題集錦(頻考類試題)帶答案
- 試卷中國電子學(xué)會青少年軟件編程等級考試標(biāo)準(zhǔn)python三級練習(xí)
- 公益慈善機(jī)構(gòu)數(shù)字化轉(zhuǎn)型行業(yè)三年發(fā)展洞察報(bào)告
評論
0/150
提交評論