DSP语音录放课程设计.doc_第1页
DSP语音录放课程设计.doc_第2页
DSP语音录放课程设计.doc_第3页
DSP语音录放课程设计.doc_第4页
DSP语音录放课程设计.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华东交通大学信息学院课程设计目 录目 录I摘要II第1章 概述11.1设计目的11.2设计要求11.3设计环境1第2章 系统硬件设计方案22.1 TMS320VC5416芯片的基本原理22.2 语音编码芯片的选择42.3 系统硬件设计42.3.1 音频控制接口42.3.2 音频数据接口52.3.3 语音数据存储模块52.3.4 液晶屏显示模块6第3章 软件设计63.1 MCBSP 的配置63.2 AIC23 的初始化73.3 DSP 上电自举7第4章 课程设计总结8参考文献9附录:源程序代码10摘要信息技术和超大规模集成电路工艺的不断发展,极大地推动了 DSP 的发展。DSP 技术的应用领域也越来越广,尤其在音频处理领域。目前,在很多语音处理系统中都用到了语音录放模块,采集现场的声音并存储起来供以后回放。语音处理系统的实时性、功耗、体积、以及对语音信号的保真度都是很影响系统性能的关键因素。本设计采用的高速54x DSP 芯片,最高频率能达到160MIPS,能够很好的解决系统的实时性;采用的数字编解码芯片TLV320AIC23(以下简称AIC23)具有1632 位采样精度,录音回放模式下仅23mW 的功耗。因此,该音频编解码芯片与54x DSP 的结合是可移动数字音频录放系统、现场语音采集系统的理想解决方案。经过实验表明,本设计实现的基于定点 DSP 的语音录放系统具有如下优点:1) 音频数据占用资源少2) 声音保真度高3) 开发难度低4) 语音芯片与DSP 接口电路简单5) 体积小II第1章 概述1.1设计目的在CCS环境下基于TMS320VC5416芯片的语音采集压缩存储与回放。通过这次课程设计,加深对CCS集成开发环境,熟悉DSP 54X同步串口原理,了解音频编解码芯片TLV320AIC23原理,了解存储芯片NAND FLASH原理,掌握DSP54X中断原理 以及DSP试验系统箱的使用。锻炼逻辑思维能力、动手能力以及独立解决问题的能力,对以后更深入地学习和应用数字信号处理及相关知识作准备。1.2设计要求(1)了解DSP开发工具及其安装过程(2)熟悉DSP开发软件CCS使用(3)熟悉工程文件的建立方法、汇编程序开发调试过程(4)熟悉常用C5416系列指令的用法(5)通过McBSP1设置AIC23工作模式,通过McBSP0控制AIC23编码和解码,语音信号可由MIC输入和LINEIN输入,采集的语音数据存储在NAND FLASH上,语音的回放方式可以为BYPASS和LOOP-BACK。1.3设计环境计算机、DSP仿真器、DSP 54X EVM板,CCS软件,EVM54库文件,NAND FLASF,TLV320AIC23。第2章 系统硬件设计方案2.1 TMS320VC5416芯片的基本原理TMS320VC5416 数字信号处理器是TI公司为实现低功耗,高速实时信号处理而专门设计的16位定点数字信号处理器,采用改进的哈佛结构,具有高度的操作灵活性和运行速度,适用于远程通信等实时嵌入式应用的需要。广泛应用于电子测试、电子设计、模拟仿真、通信工程中。TMS320VC5416具有的主要优点如下:(1) 围绕一组程序总线、三组数据总线和四组地址总线而建立的改进哈佛结构,提高了系统的多功能性和操作的灵活性。(2) 具有高度的并行性和专用硬件逻辑的CPU设计,提高了芯片的性能。(3) 具有完善的寻址方式和高度专业化指令系统,更适用于快速算法的实现和高级语言编程的优化。(4) 模块化结构设计,使派生器件得到了更快的发展。(5) 采用先进的IC制造工艺,降低了芯片的功耗,提高了芯片的性能。(6) 采用先进的静态设计技术,进一步降低了功耗,使芯片具有更强的应用能力。TMS320VC5416主要有中央处理器CPU,特殊功能寄存器,数据存储器RAM,程序存储器ROM,I/O接口功能,串行口,主机通信接口HPI,定时器,中断系统等10部分组成。各部分功能如下:(1) 中央处理器(CPU)它是DSP芯片的核心,它有以下特点:(a) 采用多总线结构,通过一组程序总线、三组数据总线和四组地址总线来实现。(b) 40位算术逻辑运算单元ALU,包括一个40位的桶形移位寄存器和两个独立的40位累加器。(c) 1717位并行乘法器,与40位专用加法器相连,可用于进行非流水线的单周期乘法累加运算。(d) 比较、选择、存储单元,可用于Viterbi译码器的加法比较选择运算。(e) 指数编码器,是一个支持单周期指令EXP的专用硬件。可以在一个周期内计算40位累加器数值的指数。(f) 配有两个地址生成器,包括8个辅助寄存器和2个辅助寄存器运算单元。(2)数据存储器RAMTMS320VC5416有两种片内数据存储器:(a) 双寻址RAM:在一个指令周期内,可对其进行两次存取操作,一次读出和一次写入;(b) 双寻址RAM:在一个指令周期内,只能进行一次存取操作。(3) 程序存储器ROMTMS320VC5416的程序存储器可由ROM和RAM配置而成,程序空间可以定义在ROM上,也可以定义在ROM上。当需要高速运行程序时,可以将片外ROM中的程序调入到片内RAM中,以提高程序运行速度。降低对外部ROM的要求,增强系统整体抗干扰性能。(4) I/O口TMS320VC5416芯片只有两个通用I/O引脚BIO和XF,BIO主要用来监测外部设备工作状态,而XF用来发信号给外部设备。 另外,芯片还配有主机接口HPI,同步串行口和64K字的I/O空间,HPI和串行口通过控制,用做通用I/O口使用。而64K字I/O空间可通过外加缓冲器或锁存电路,配合外部I/O读写控制时序构成片外外设的控制电路。(5) 定时器定时器是一个软件可编程计数器,用来产生定时中断。定时器主要由定时寄存器TM,定时周期寄存器PRD,定时控制寄存器TCR及相应的逻辑控制电路组成。其中寄存器TIM、PRD和TCR都是存储映象寄存器,它们在数据存储器中的地址分别为0024H、0025H和0026H。TIM是一个减1寄存器。PRD用来存放定时时间常数。TCR中包含定时器的控制位和状态位。(6) 中断系统TMS320VC5416的中断系统具有硬件中断和软件中断。 硬件中断:由外围设备引起的中断分为片外外设所引起的中断和片内外设所引起的中断。软件中断:有程序指令INTR、TRAP和RESET所引起的中断。中断管理优先级为1116个固定级,有4种工作方式。(7) 主机接口HPIHPI是一个与主机通信的并行接口,主要用于DSP与其他总线或CPU进行通信,信息可通过TMS320VC5416的片内存储器与主机进行数据交换。不同型号的器件配置不同的HPI口,可分为8位标准HPI口、8位增强型HPI接口和16位增强型HPI接口。(8) 指令系统支持单指令重复和块指令重复;支持存储器块传送指令;支持32位长操作数指令;具有支持2操作数或3操作数的读指令;具有能并行存储和并行加载的算术指令;支持条件存储指令及中断快速返回指令。(9) 片外围电路具有软件可编程等待状态发生器;设有可编程分区转换逻辑电路;带有内部震荡器或外部时钟源的片内锁相环发生器;支持全双工操作的串行口,可进行8位或16位串行通信。2.2 语音编码芯片的选择从适应语音信号频率、满足实时性、降低成本、简化设计的要求出发,本系统选择TLV320AIC23。AIC23 工作电压3.3 伏特,能在数字和模拟电压下工作,与TMS320VC5416的I/O 电压相兼容,其控制接口和数字接口与DSP 的MCBSP 端口能够无缝连接。AIC23的模数转换(ADCs)和数模转换(DACs)部件高度集成在芯片内部,采用了先进的Sigmadelta 过采样技术,可以在8K 到96K 的频率范围内提供16bit、20bit、24bit 和32bit 的采样,ADC 和DAC 的输出信噪比分别可以达到90dB 和100dB1。2.3 系统硬件设计AIC23 有独立的控制接口和数字接口。控制口用于接收控制器的命令字,数据接口与DSP 完成语音数据的交换。AIC23 的工作时钟由外接的一个11.2896M 的晶振提供,同时该晶振也为DSP 提供工作时钟。DSP 的工作时钟是5 倍频后的时钟:56.488M。本系统用到了利用DSP 的MCBSP0 和MCBSP1,分别与AIC23 的控制和数据接口相连。DSP 与AIC23的接口电路如图2 2.3.1 音频控制接口MCBSP1 接 AIC23 的控制接口。AIC23 提供SPI 和I2C 两种控制接口方式。该器件的模式终端状态(MODE)决定了控制接口的形式。本设计将MODE 引脚接高,选择SPI 方式。AIC23 的控制口主要是为了接收DSP 的控制字,因此这里DSP 的MCBSP1 作为主器件。AIC23 有许多可编程特性,其内部有11 个9 位可编程控制寄存器,DSP 通过MCBSP1 来访问这些控制寄存器。SDIN 为串行数据输入端,它接收DSP 串行数据,数据字长16 位,其中高7 位为地址信息,低9 位为AIC23 的命令字。SCLK 为控制端口串行数据时钟输入, DSP串口的采样率发生器对CPU 时钟分频后得到串口的发送时钟BCLKX1=225.952KHz,产生的时钟通过SCLK 引脚驱动AIC23。2.3.2 音频数据接口DSP 与AIC23 的数据交换是通过串口0 实现的。其中MCBSP 多通道缓冲串口数据的接收是通过三级缓冲完成的2,即引脚DR 上的数据先到达移位寄存器RSR,当收到一个满字之后数据被装载到数据接收寄存器RBR 中,最后数据才被拷贝到接收数据寄存器DRR中。DSP 通过串口0 接收AIC23 采集的语音数字信号,并且在回放模式下,通过串口将语音信号传送给AIC23。这时音频芯片为主器件,给DSP 提供帧同步和时钟信号。AIC23 芯片与数字系统的接口有右判断模式、左判断模式、I2S 模式和DSP 模式四种数据格式。数字音频接口由时钟信号BCLK、数据信号DIN 和DOUT、同步信号LRCIN 和LRCOUT 组成。由于DSP 的MCBSP 接口与该芯片的DSP 模式相兼容,因此该音频模块采用了DSP 模式。现对DSP 模式进行说明。该音频处理模块采用的是DSP 作为从设备,AIC23为主设备。DSP 模式下的数据格式为:发送、接收帧长度为2 个字,每个字长16 位。帧同步信号有效后跟着是两个数据字。AIC23 作为数据接口的主器件,为DSP 提供发送接收时钟,以及帧同步信号,在帧同步信号的下降沿开始传送数据,左通道数据组成了首先传送的数据字,紧接着传送右通道的数据。传送字长32 位,其中左通道数据16 位,右通道数据16 位。BCLK 在主动方式下是输出,而在从动方式下是输入。在LRCIN 或LRCOUT 的下降沿开始数据传输。DSP 为了接收正确的语音数据,应该将串口的数据格式配置为与AIC23 相同。帧同步脉冲高电平有效。接收、发送时钟CLKR、帧同步信号由外部时钟驱动。其中帧同步信号宽度是1 个BCLK时钟宽度。帧周期为32 个BCLK 时钟。在CLKR 的上升沿,发送或采样接收数据。DSP 模式下的数据传输时序入下: 2.3.3 语音数据存储模块考虑到存储器芯片的容量、系统供电、以及对语音信号的读取速率。本系统采用了具有32MX8 位存储空间的K9F5608 Nandflash。Nandflash 以容量大价格低的优势被广泛应用在便携式设备中。同时Nandflash 存储器在写入时需要复杂的操作命令,这样确保了数据写入的正确性。K9F5608 有8 位I/O 端口,地址、命令字以及数据复用这8 位I/O 端口。它采用复杂的操作顺序来区分地址、命令、数据信息。DSP 采集到的32 位语音数据通过外部数据总线的低8 位分4 次,从左声道的高8 位到右声道的低8 位依次写入Nandflash。 2.3.4 液晶屏显示模块对于 DSP 来讲LCD 是典型的慢速设备,如果仅仅靠设置DSP 等待周期寄存器,在访问外部I/O 时最多只能插入14 个等待周期,这点延时对DSP 来说是远远不够的。因此,需要在DSP 与LCD 之间加入时序控制电路。与Nandflash 模块类似,液晶屏、Nandflash 与DSP 的接口电路由CPLD 来完成,液晶屏占用DSP 两个I/O 地址,分别是命令和数据地址。DSP 对I/O 空间的操作由地址线、数据线和三根信号线IOSTRB、R/W 和IS 来完成4 。CPLD根据DSP 给出的读写信号以及地址信号,产生液晶屏的片选、读写信号、以及键盘的扫描信号。第3章 软件设计系统的软件开发环境是 TI 公司的DSP 集成开发环境CCS 2.0。CCS 提供了软件开发、程序调试和系统仿真环境。CCS 不但能支持汇编语言,而且还支持C/C+语言进行软件开发。CCS 提供的C 编译器能优化代码,提高C 程序的运行效率。系统有两种工作方式,一种是现场采集并播放,即系统采集现场的线路输入信号或麦克语音信号,并存储在NandFlash中,在采集的过程中,同时通过耳机播出。另一种是播放录制的语音数据,即不采集现场语音信号,直接播放已经存储在NandFlash 中的语音数据。这两种工作方式可以在系统初始化工程时通过按键选择。具体的程序代码段设计主要包括MCBSP 口的配置、AIC23 的初始化、NandFlash 烧写、DSP 上电自举,这四个部分。其中现场采集、播放的流程图如下: 3.1 MCBSP 的配置5416 提供的MCBSP 口是一种高速、双向、多通道带缓冲的串行接口。它可以与其他C54x DSP 器件、编码器或其他串行接口器件通信。MCBSP 的硬件部分是基于标准串行接口的3。MCBSP 的控制模块包括帧同步信号发生器、内部时钟发生器、以及它们的控制电路和多通道选择。与MCBSP 有关的控制寄存器是通过子地址寻址来访问的,它有28 个子寄存器只占用一个DSP 内存地址。MCBSP 的子地址寄存器(SPSA)用来指向这些使用同一个内存地址的寄存器中的某一个。MCBSP 子数据寄存器(SPSDx)用来访问选中的寄存器。由于配置每个寄存器的代码段相同,首先指定子地址寄存器地址,接着给数据。为了保证程序的简洁与可读性,这里采用调用函数的方法来替代这些重复代码,代码具体实现如下:#define MCBSP1_SET(add,data)MCBSP1_SPSA = add, MCBSP1_SPSD = data / 定义一个宏函数,第一个参数add 为子地址寄存器的地址,data 为子地址寄存器的值MCBSP1_SET( SPCR1, 0x1801)/ SPCR1=0x1801MCBSP1_SET( SPCR2, 0x03C1)/ SPCR2=0x03C1 3.2 AIC23 的初始化AIC23 具有8 个可编程的内部寄存器,通过软件编程能随时控制AIC23 的采样频率,高、低通滤波器的截止频率,模拟输入及输出的增益。DSP 通过串口1 完成对AIC23 的初始化工作。程序中把对AIC23 的初始化命令写在一个数组中,采用循环方式将这些命令通过串口发送出去。codec10=0x1e00,0x0c00,0x0811,0x0a04,0x0e43,0x102c,0x1201,0x0117,0x05ff, 0x07ff;MCBSP1_DXR1=codeci; 3.3 DSP 上电自举当软硬件设计工作完成后,需要系统能够脱离PC 机独立运行。这就需要将调试好的.out烧写到外部Flash 中,并要求目标系统上电后可自行启动并执行用户软件代码,这就需要用到DSP 的自举引导(Bootloader)技术。这里采用的是16 位并行Flash 引导方式。使用Hex500.exe 将.out 文件转换成16 进制的自举表文件,通过烧写器将这个自举表文件烧写到flash 中。然而,这种脱机烧写不能烧写贴片封装的芯片,系统的灵活性受到很大的限制。本设计采用了一种新的一次装载程序并烧写的在线烧写方法。用 Hex500.exe 生成好自举表文件后,另外跟据Flash 的编程方法,编写烧写代码,并读取自举表文件。在C 程序源码中读取的自举表文件是ASCII 值,因此需要在程序中加一段格式转换代码,将数据转换成二进制文件,并且去掉自举表的表头和表尾。转换时采用一个4 次循环,先读取4 位16进制数的最高位,把这个ASCII 值转换成二进制数字,将其左移4 位,接着读取次高位。循环4 次便得到了可以直接烧写的数据。系统脱机工时,通过外部并行总线,用DMA 方式将这些代码从数据空间搬移到程序空间中。第4章 课程设计总结通过这次的DSP课程设计,让我充分认识到了我的不足。我虽然学习过C语言的编程,但一旦将它应用到实际的比较专业的问题上,我所学的知识就变得完全不够用了,为了这次课程设计我查询了大量的资料,无论是C语言方面的还是压缩算法方面的都让我们花费了很多时间,查询到了需要的资料我们又对它们进行了整理,提取出我们需要的a律压缩和律压缩的算法和原理,并且努力去理解其中的知识,使其能为我们所用,尽管如此我们仍然没能成功的编出属于我们自己的程序,因此我们找到了一份编好的程序,用我们已经理解的知识去分析它,理解这份程序的原理,并根据我们的实际对它进行一些修改,从而我们才得出我们现在的程序。虽然程序编写成功了但我们在调试上又遇到了很多的问题,比如在CCS环境下我们要如何观察波形,波形有代表什么等等,为此我们又不断的翻阅课件和资料,才最终解决了所有的问题,我的课程设计才算基本完成了。整个课程设计过程中,我在不断的查阅资料和开动脑筋过程中,锻炼了我的资料采集能力,也锻炼了我的分析整理能力,为以后做毕业设计打下了基础;同样在实验过程中我遇到很多困难,而这些困难则锻炼了我的耐心和分析解决问题的能力;通过编程锻炼了我的编程能力,使我对C语言,汇编语言更加熟悉,让我能更好的运用它们;同时也锻炼了我们的团结协作能力,为将来走入社会能更好的工作打下了基础。总之通过这次的实验,让我认识到了自己的不足,同时又通过这次的实验让我们学到了让我们受用一生的知识。参考文献1戴明桢等编著.TMS320C54X DSP 结构原理及应用. 北京:航空航天大学出版社,第2版,2007;2彭启琮编著.DSP技术的发展与应用.北京:高等教育出版社,2002;3胡广书编著.数字信号处理理论、算法与实现.北京:清华大学出版社,2005;4北京合众达电子技术有限公司编著.SEED-DTK系列实验手册.北京合众达电子技术有限公司出版,2007。5邹彦主编.DSP原理及应用.电子工业出版社,2012.1附录:源程序代码#include #include mmdrv.h#include mcbsp.h#include cpu_reg.h #include lcd_86.hioport unsigned portefff;#define IO_374 portefffvoid init_exint1_interrupt();void init_GPIO(void); void mic_bypass(void);void line_in_bypass(void);void mic_record(void);void line_in_record(void);void codec_play(void);void DEAL_RX(unsigned int i);unsigned int DEAL_TX(void);void stop_interrupt(); /stop receive & tranmit interruptunsigned int flag=0xffff;unsigned long secter_num;unsigned int ping_buf10x2000; unsigned int ping_buf20x2000;unsigned int enc_flag=0; unsigned int input_flag =0;unsigned int rl_flag=0; unsigned int count1=0 ;#define max_secter_num33#define init_secter_num0void main(void)unsigned int i,j;unsigned int key_val; SWWSR = 0x7fff; SWCR = 0x0001; BSCR = 0x8006; CLKMD = PLL_DIV_INIT; waitloop( 0x0400 ); CLKMD = PLL_LOCK_INIT_X(9); waitloop( 0x0400 ); PMST = 0x0168;Init_MCBSP_codec();init_codec_linein();init_exint1_interrupt(); init_GPIO(); init_lcd(); LCD_clear(0);cur_row=2; cur_col=20; LCD_pr_chars(RECORD_PLAY TEST,16);cur_row=3; cur_col=1; LCD_pr_chars(=,23);IO_374=0xffff;/374 enable Close_LED_Data(); Close_LED_Traf(); Close_LED_sign(); waitloop( 0x0400 ); while(1)i=Get_Key(); waitloop( 0x04000 );j=Get_Key(); if(i=j) flag=0xffff;key_val=j;/*Save key_val*/ switch(key_val) default: break; case 1:cur_row=4; cur_col=10; LCD_pr_chars( Mic_Bypass ,17);cur_row=5; cur_col=15; LCD_pr_chars( ,17); mic_bypass(); break; case 2:cur_row=4; cur_col=10; LCD_pr_chars( Line_In_Bypass ,17);cur_row=5; cur_col=15; LCD_pr_chars( ,17); line_in_bypass(); break; case 3:cur_row=4; cur_col=10; LCD_pr_chars(Mic_Rec_Loopback ,17);cur_row=5; cur_col=15; LCD_pr_chars( ,17); mic_record(); break; case 4:cur_row=4; cur_col=10; LCD_pr_chars(Line_Rec_Loopback,17);cur_row=5; cur_col=15; LCD_pr_chars( ,17); line_in_record(); break; case 6:cur_row=4; cur_col=10; LCD_pr_chars( codec_play ,17);cur_row=5; cur_col=15; LCD_pr_chars( ,17); codec_play(); break; void init_exint1_interrupt() IFR =0xffff; IMR =0x0002;/EXINT1=IMR.1asm(trsbxtintm ); void init_tx_interrupt() /transmit interruptIFR =0xffff; IMR =0x22;/BXINT0=IMR.5=1, BXINT0=IMR.4=0,EXINT1=IMR.1=1asm(trsbxtintm ); void init_re_interrupt() /receive interruptIFR =0xffff; IMR =0x12;/BXINT0=IMR.5=0, BXINT0=IMR.4=1,EXINT1=IMR.1=1asm(trsbxtintm ); void stop_interrupt() /stop receive & tranmit interruptIFR =0xffff; IMR =0x0002;/EXINT1=IMR.1asm(trsbxtintm ); interrupt void BRINT0_isr(void)unsigned int i; i = MCBSP0_DRR1; /* DRR1 = txdata */ MCBSP0_DXR1 = i; DEAL_RX(i); interrupt void BXINT0_isr() MCBSP0_DXR1 = DEAL_TX(); interrupt void EXINT1_isr()unsigned int i;IO_374=0xffff;/374 enable Close_LED_Data(); Close_LED_Traf(); Close_LED_sign();IFR =0xffff; /while(!(GPIOSR&0x01) asm(tnop);asm(tnop); flag=0;/flag;cur_row=5; cur_col=15; LCD_pr_chars(Codecr_Stop_play ,17);for(i=0;i32*max_secter_num) asm(tnop); asm(tnop); asm(tnop); secter_num=init_secter_num; break; Close_LED_Data(); Close_LED_Traf(); Close_LED_sign();cur_row=5; cur_col=15; LCD_pr_chars(Codecr_Stop_play ,17);stop_interrupt(); /stop receive & tranmit interruptinit_codec_linein();void line_in_record(void)unsigned int sign_bit=0;unsigned int sign_state=1; enc_flag=0; secter_num=init_secter_num; count1 =0;Init_MCBSP_codec();/init_codec_linein();init_re_interrupt(); /receive interrupt MCBSP0_DXR1 = MCBSP0_DRR1;/* DRR1 = txdata */while(flag) if(enc_flag) Disp_LED_sign(sign_state&0x01),sign_bit);sign_bit+;if(sign_bit=8) sign_bit=0; sign_state =sign_state; enc_flag=0;if(input_flag) erase_nand_flash(secter_num);Write_nand_flash_block(secter_num,ping_buf2,0); else erase_nand_flash(secter_num);Write_nand_flash_block(secter_num,ping_buf1,0); secter_num +=32;if(secter_num32*max_secter_num) asm(tnop); asm(tnop); asm(tnop); secter_num=init_secter_num; break; Close_LED_Data(); Close_LED_Traf(); Close_LED_sign();cur_row=5; cur_col=15; LCD_pr_chars(Codecr_Stop_play ,17);stop_interrupt(); /stop receive & tranmit interruptvoid codec_play(void)unsigned int sign_bit=0;unsigned int s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论