chapter6verilog hdl基本语法_第1页
chapter6verilog hdl基本语法_第2页
chapter6verilog hdl基本语法_第3页
chapter6verilog hdl基本语法_第4页
chapter6verilog hdl基本语法_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

1、Verilog HDL基本语法计算机科学与工程学院计算机科学与程学院于永斌y y 指导思想 VerilogHDL是一种硬件语言,最终是为了产生实际的硬件电路或对硬件电路进行仿真 利用Verilog HDL编程时要时刻记得Verilog 利用Verilog HDL编程时,要时刻记得Verilog是硬件语言,要时刻将Verilog与硬件电路对应起来应起来主要内容主要内容 Verilog的主要能力的主要能力 Verilog的基本描述单位的基本描述单位Verilog的基本描述单位的基本描述单位 Verilog语言要素语言要素 本章小结本章小结 参考资料参考资料参考资料参考资料 思考题思考题Verilo

2、g的主要能力的主要能力Verilog的主要能力的主要能力 基本逻辑门:内置and、or、nand等 UDP创建的灵活性(组合逻辑、时序逻辑) 开关级基本结构模型:内置pmosnmos等 开关级基本结构模型:内置pmos、nmos等 端口到端口时延、路径时延、设计的时序检查种描述方式行为描述数据流结构化 三种描述方式:行为描述、数据流、结构化 提供两类数据类型:线网类型、寄存器类型 能够描述多层次设计(结构描述) 设计规模可大可小 设计规模可大可小Verilog的主要能力的主要能力(续续)人机对话方便设计者与具间交互)Verilog的主要能力的主要能力(续续) 人机对话方便(设计者与EDA工具间

3、交互) 设计能在多个抽象级别上描述:开关级、门级、RTL级、算法级等 能够使用内置开关级原语对设计完整建模能够使用内置开关级原语对设计完整建模 可以创建测试激励Testbench在行为级描述中能运用RTL结构算法 在行为级描述中能运用:RTL、结构、算法 内置逻辑函数:如&(按位与)、|(按位或) 高级语言结构:if语句、case语句、循环语句Verilog的主要能力(续)的主要能力(续)ASIC 和FPGA设计师可用它来编写可综合的代码ASIC 和FPGA设计师可用它来编写可综合的代码ASIC和FPGA设计师可用它来编写可综合的代码 描述系统的结构,做高层次的仿真 验证工程师编写各种

4、层次的测试模块对具体电路ASIC和FPGA设计师可用它来编写可综合的代码 描述系统的结构,做高层次的仿真 验证工程师编写各种层次的测试模块对具体电路 验证工程师编写各种层次的测试模块对具体电路设计工程师所设计的模块进行全面细致的验证 库模型的设计:可以用于描述ASIC 和FPGA的基 验证工程师编写各种层次的测试模块对具体电路设计工程师所设计的模块进行全面细致的验证 库模型的设计:可以用于描述ASIC 和FPGA的基 库模型的设计:可以用于描述ASIC和FPGA的基本单元(Cell)部件,也可以描述复杂的宏单元(Macro Cell) 库模型的设计:可以用于描述ASIC和FPGA的基本单元(C

5、ell)部件,也可以描述复杂的宏单元(Macro Cell)(MacroCell)(MacroCell)Verilog的基本描述单位的基本描述单位moduleVerilog的基本描述单位的基本描述单位modulemod le mod le name (port list);module module_name (port_list);port declarationsdata type declarationsdata type declarationscircuit functionalitysequential rulesequential ruleendmoduleNOTE 1:所有的关

6、键字都小写空白用于提高可读性分NOTE1:所有的关键字都小写,空白用于提高可读性,分号是声明结束符NOTE 2时序规范用于仿真NOTE2:时序规范用于仿真Verilog的基本描述单位的基本描述单位module端口(模块与外部其它模块进行信号传递的通Verilog的基本描述单位的基本描述单位module端模块与外部其模块行信号传递的道或信号线)元器件的引脚或接口模型(1)端口列表 端口名称列表,例如:(1)端口列表端口名称列表,例如:module multi_acc (out, ina, inb, clk, clr);(2)端口类型i (d fl )/型数据(2)端口类型wire(default

7、)/reg型数据 input 输入端口 output 输出端口inout双向端口inout双向端口(3)端口声明t tt ;Verilog的基本描述单位的基本描述单位module example1Verilog的基本描述单位的基本描述单位module半加器:半加器:sum=ABcarry=ABcarry=AB关于时延(时滞)关于时延(时滞)assign #2 sum=AB;#2指2个时间单位 时延可细分为两种类型 时延可细分为两种类型:1)语句间时延:语句执行的时延sum=(AB)Cin;#3 T1=A&Cin;2)语句内时延:右边数值计算与左边赋值间的时延)语句内时延右边数值计算与左

8、边赋值间的时延sum=#4 (AB) Cin; 时间单位通过编译指令与物理时间相关联 时间单位通过编译指令与物理时间相关联timescale1ns/100ps;即时延时间单位为1ns,时间精度为100ps 时间精度#5.21/对应5.2ns/ 对应#6.17/对应6.2nsVerilog的基本描述单位的基本描述单位module example2Verilog的基本描述单位的基本描述单位moduleVerilog的基本描述单位的基本描述单位moduleVerilog的基本描述单位的基本描述单位module example3module muxtwo(out a b s1);module muxt

9、wo(out, a, b, s1);input a, b, s1;output out;output out;reg out;always (s1 or a or b)always (s1 or a or b) / s1 or a or b,若有1个变化就执行下面的语句if (! s1) out = a;if (! s1) out = a;else out = b;endmoduleendmoduleVerilog的基本描述单位的基本描述单位module二选一多路选择器的门级结构Verilog的基本描述单位的基本描述单位module选多路选择器的门级结构Verilog的基本描述单位的基本描述单

10、位module二选一多路器门级结构的Verilog HDL程序Verilog的基本描述单位的基本描述单位module选多路器门级结构的g程序module muxtwo (out, a, b, s1);module muxtwo (out, a, b, s1);input a, b, s1;output out;input a, b, s1;output out;wire ns1, sela, selb;assign ns1=s1;output out;not u1(ns1,s1);assign sela=a&ns1;assign selb=b&s1;and #1 u2(sela

11、, a, ns1);and #1 u3(selb, b, s1);assign out=sela | selb;endmoduleor#1 u4(out, sela, selb);endmoduleendmoduleVerilog的基本描述单位的基本描述单位moduleNOTE:?Verilog HDL的原语(primitive):and(与门),or(Verilog的基本描述单位的基本描述单位module或门),not(非门)(1)规定了接口顺序和用法(2)门级延迟(3)实例名称(3)实例名称?综合(synthesis)与某种艺的基本件对应(1)与某种工艺的基本元件对应(2)布局布线(3)版

12、图文件哪种代码不能综合哪种可以综合Question:哪种代码不能综合,哪种可以综合?Verilog的基本描述单位的基本描述单位module测试模块Verilog的基本描述单位的基本描述单位module(1)Verilog HDL不仅提供描述设计的能力,而且提供对激励控制存储响应和设计验证的建模能力激励对激励、控制、存储响应和设计验证的建模能力。激励和控制可用初始化语句(initial)产生(2)加入激励来对功能行为逻辑网表门级结构等(2)加入激励来对功能行为、逻辑网表、门级结构等进行测试,即行为级仿真、RTL级仿真、门级仿真、后仿真等(参照Top-Down设计)仿真等(参照Top-Down设计

13、)Verilog的基本描述单位的基本描述单位moduleVerilog的基本描述单位的基本描述单位modulemodule trist2(out, in, enable);output out; example4pinput in, enable;bufif1 mybuf(out, in, enable);/如何实例化(实例引用)?如何实例化(实例引用)?endmoduleVerilog的基本描述单位的基本描述单位moduleNOTEVerilog的基本描述单位的基本描述单位moduleNOTE:(1)引用/调用现成的元件或模块的方法称为实例化(或实例引用或模块调用)(或实例引用或模块调用)(

14、2)本质上是从模块模板生成实际的电路结构对象的操作(这样的电路结构对象被称为模块实例)的操作(这样的电路结构对象被称为模块实例)(3)一个Verilog模块可以被任意多个其他模块调用在Verilog HDL语言中模块不能被嵌套定义但在Verilog HDL语言中,模块不能被嵌套定义,但是却可以包含其他模块的拷贝,即调用其他模块的实例。模块的定义和模块的实例是两个不同的概念在个设计中有通过模块用实例化才,在一个设计中,只有通过模块调用(实例化)才能使用一个模块Verilog的基本描述单位的基本描述单位moduleVerilog的基本描述单位的基本描述单位module(4)模块调用(实例化)和函数

15、调用非常相似,但是在本质上又有很大差别:1)一个模块代表拥有特定功能的一个电路块,每当一个模块在其他模块内被调用一次,被调用模块当个模块在其他模块内被调用次,被调用模块所表示的电路结构就会在调用模块代表的电路内部被复制一次(即生成被调用模块的一个实例)被复制次(即生成被调用模块的个实例)2)但是模块调用不能像函数调用一样具有“退出调用”的操作因为硬件电路结构不会随着时间而调用的操作,因为硬件电路结构不会随着时间而发生变化,被复制的电路块将一直存在Verilog语言要素语言要素Verilog语言要素语言要素 标识符(identifier)(1)Verilog HDL中的标识符可以是任意一组字母、

16、数字、$符号和 (下划线)符号的组合,但标识符的第一个字字符号_(下划线)符号但标识符第个字符必须是字母或者下划线。另外,标识符是区分大小写的。例如:Count COUNT_R1_D2 R56_68FIVE$(2)转义标识符(escaped identifier)可以在一条标识符中转(p)包含任何可打印字符。转义标识符以(反斜线)符号开头,以空白结尾。例如:7400 .*.$ * Q OutGateVerilog语言要素语言要素 注释在VerilogHDL中有两种形式的注释1) /*第一种形式:可以扩展至多行*/)2) /第二种形式:在本行结束)Verilog语言要素语言要素 格式规范Veri

17、log语言要素语言要素(1)VerilogHDL区分大小写(1)VerilogHDL区分大小写(2)VerilogHDL是自由格式的,即结构可以跨越多行编写也可以在行内编写白空(新行制表符行编写,也可以在一行内编写。白空(新行、制表符和空格)没有特殊意义。例如:initial begin Top= 3b001; #2 Top = 3 b011; endinitial begin Top= 3b001; #2 Top = 3 b011; end和下面的指令一样:initialinitialbeginTop = 3b001;Top = 3b001;#2 Top = 3b 0 1 1 ;endend

18、Verilog语言要素语言要素 系统任务(task)与函数()与函数(function)Verilog语言要素语言要素(1)以$字符开始的标识符表示系统任务或系统函数(2)任务提供了种封装行为的机制这种机制可在(2)任务提供了一种封装行为的机制。这种机制可在设计的不同部分被调用。任务可以返回0个或多个值(3)函数除只能返回个值以外与任务相同(3)函数除只能返回一个值以外与任务相同(4)此外,函数在0时刻执行,即不允许延迟,而任务可带有延迟务可带有延迟?$display (Hi, you have reached LT today);/* $dil系统任务在新的行中显示* /* $display

19、 系统任务在新的一行中显示。* /?$time/该系统任务返回当前的模拟时间Verilog语言要素语言要素 VerilogHDL提供了内置的系统任务和系统函数,即在语言中预定义的任务和函数,用户可以随意调用。而且用户可以根据自己的需要基于V il仿真系统提供的PLI(Pi己的需要,基于Verilog仿真系统提供的PLI(ProgrammingLanguageInterface)编程接口编制特殊的系统任务和系统函数。根据系统任务和系统函数实现的功能不同,可将其分为:。根据系统任务和系统函数实现的功能不同,可将其分为:?显示任务(displaytask)?文件输入/输出任务(File I/O ta

20、sk)?文件输入/输出任务(FileI/Otask)?时间标度任务(timescaletask)?模拟控制任务(simulationcontroltask)模拟控制任务()?时序验证任务(timingchecktask)?PLA建模任务(PLAmodelingtask)?随机建模任务(stochasticmodelingtask)?实数变换函数(conversionfunctionsforreal)?概率分布函数(probabilisticdistributionfunction)Verilog语言要素语言要素 编译指令Verilog语言要素语言要素(1)以(反引号)开始的某些标识符是编译器指

21、令器指令(2)在Verilog语言编译时,特定的编译器指令在整个编译过程中有效(编译过程可令在整个编译过程中有效(编译过程可跨越多个文件),直到遇到其它的不同编译程序指令。编译程序指令。例如:timescaletimescaledefine, undefincludeincludeVerilog语言要素语言要素timescaleVerilog语言要素语言要素(1)在il模型中所有时延都用单位时间表(1)在Verilog HDL模型中,所有时延都用单位时间表述。使用timescale编译器指令将时间单位与实际时间相关联相关联。(2)该指令用于定义时延单位和时延精度。timescale编译器指令格

22、式 ilii / ii i编译器指令格式:timescale time_unit/ time_ precision/ time_unit和time_precision由值1、10、和100以及单位s、和f 组成例如ms、us、ns、ps和fs组成。例如timescale 1 ns / 100 ps /表示时延单位为1ns, 时延精度为100为100 ps(3)timescale编译器指令在模块说明外部出现, 并且影响后面所有的时延值影响后面所有的时延值Verilog语言要素语言要素define,undefVerilog语言要素语言要素(1)define指令用于文本替换它很像C语言中的(1) d

23、efine指令用于文本替换,它很像C语言中的#define 指令,如:define SIZE 32define SIZE 32regSIZE -1:0 AddReg;(2)一旦define指令被编译其在整个编译过程中都(2)一旦 define指令被编译,其在整个编译过程中都有效。例如,通过另一个文件中的define指令,SIZE能被多个文件使用被多个文件使用(3)undef指令取消前面定义的宏。例如:define WORD 16/建立个文本宏替代define WORD 16/建立一个文本宏替代wire WORD : 1 Bus;undef WORD/ 在d f编译指令后 WORD的宏定义不再有

24、效undef WORD/ 在undef编译指令后,WORD的宏定义不再有效Verilog语言要素语言要素includeVerilog语言要素语言要素il d 编译器指令用于嵌入内嵌文件的内容文include编译器指令用于嵌入内嵌文件的内容。文件既可以用相对路径名定义,也可以用全路径名定义 例如定义, 例如:incl de / /primiti esinclude . ./. ./primitives.v /编译时,这一行由文件“. ./. ./primitives.v”的内容替代容替代Verilog语言要素语言要素 值集合Verilog语言要素语言要素(1)Verilog HDL有内置了下列四

25、种基本的值:)逻辑 或“假”1)0:逻辑0或“假”2)1:逻辑1或“真”)未知3) x:未知4)z:高阻(2) 值和 值都是不分大小写的(2)x值和z值都是不分大小写的。即:值0 x1z与值0X1Z相同。Verilog语言要素语言要素 VerilogHDL中有三类常量中有三类常量Verilog语言要素语言要素1)整型)2)实数型3)字符串型)下划线符号(_)可以随意用在整数或实数中,它们就数量本身没有意义。它们能用来提高易读性;们就数本身没有义们能用来提高易读性;唯一的限制是下划线符号不能用作为首字符。Verilog语言要素语言要素 整型数Verilog语言要素语言要素整型数整型数可以按如下两

26、种方式书写:1)简单的十进制数格式1)简单的十进制数格式32 -152)基数表示法2)基数表示法格式:size base value例如:5O37/ 5位八进制数例如:5O37/ 5位八进制数4D2 /4位十进制数4B1x 01/ 4位二进制数4B1x_01 / 4位二进制数8h2 A/ 8位十六进制数Verilog语言要素语言要素 实数Verilog语言要素语言要素 字符串整型数可以按如下两种方式书写字符串是双引号内的字符序列字符串不能分书写:1) 十进制计数法十进制计数法3 25 67820 1符序列。字符串不能分成多行书写。例如: INTERNAL ERROR3.2 5.678 2. 0

27、.12) 科学计数法科学计数法例如23 5 1e2/ 23510 0 INTERNAL ERROR REACHEDHERE 例如:23_5.1e2/ 23510.03.6E2 /360 0 (e与E相同)/360.0 (e与E相同)5e-3 / 0.005Verilog语言要素语言要素 数据类型(代表了不同的硬件结构)Verilog语言要素语言要素Verilog HDL 有两大类数据类型1) 线网类型。net type 表示Verilog结构化元件间的物理1) 线网类型。net type 表示Verilog结构化元件间的物理连线。它的值由驱动元件的值决定,例如:连续赋值或门的输出门的输出如果没

28、有驱动元件连接到线网,线网的缺省值为z2) 寄存器类型。register type表示一个抽象的数据存储单2) 寄存器类型。register type表示个抽象的数据存储单元,它只能在always语句和initial语句中被赋值,并且它的值从一个赋值到另一个赋值被保存下来。寄存器类型的值从个赋值到另个赋值被保存下来。寄存器类型的变量具有x的缺省值线网类型Verilog语言要素语言要素线网类型(1)wire- represents a node(2)tri- represents a tri-state node(2)tri represents a tri state node(3)Bus D

29、eclarations: MSB : LSB ; LSB : MSB ; LSB : MSB ;(4)Examples: wire s1 ;i15 0 dd i wire 15:0 add, ins ;类型功能可综合性wiretri标准内部连接线wire,tri标准内部连接线supply1,supply0电源和地supp y ,supp y0电源和地wand,triand多驱动源线与wor,trior多驱动源线或tri1,tri0无驱动时上拉/下拉trireg能保存电荷的netVerilog语言要素语言要素在一个线网类型声明中可以指定两类强度Verilog语言要素语言要素在一个线网类型声明中,

30、可以指定两类强度:1)电荷量强度(charge strength)一个trireg线网型数据用于模拟电荷存储。电荷量强度可由下面的关键字来制定电容量的相对大小:smallmedium(默认)large一个trireg线网制定电容量的相对大小:small、medium(默认)、large。个trireg线网型数据能够模拟一个电荷存储节点,该节点的电荷量将随时间而逐渐衰减。对一trireg线网型数据在仿真时,其电荷衰减时间应当制定为延迟时间对g线网型数据在仿真时,其电荷衰减时间应当制定为延迟时间2)驱动强度(drive strength)在个线网型数据的声明语句中如果对数据对象进行了连续赋值就可以

31、在一个线网型数据的声明语句中如果对数据对象进行了连续赋值,就可以为生命的数据对象指定驱动强度Verilog语言要素语言要素 寄存器类型Verilog语言要素语言要素(1)reg-unsigned variable of any bit size(2)integer-signed variable (usually 32 bits)Examples:reg cin;reg 7 : 0 sum ;Verilog语言要素语言要素)型数据常用来表示内的指定信号对Verilog语言要素语言要素(3)reg型数据常用来表示always内的指定信号,对应的是具有状态保持作用的硬件电路,如触发器、锁存器等锁存

32、器等(4)寄存器型变量与线网数据的区别主要在于:寄存器型变量保持最后一次的赋值,而wire型数据需要有连续的驱动(5)寄存器型变量只能在initial或always内部被赋值在always内被赋值的每一个信号都必须定义成reg型在always内被赋值的每个信号都必须定义成reg型Verilog语言要素语言要素Verilog语言要素语言要素Inaword: 线网数据类型表示进程之间的物理互联(活线网数据类型表示进程之间的物理互联活动流程) 寄存器数据类型表示暂时存储数据的变量 寄存器数据类型表示暂时存储数据的变量,可以表示寄存或者组合节点Verilog语言要素语言要素 操作符Verilog语言要

33、素语言要素Verilog HDL中的操作符可以分为下述类型:1) 算术操作符)2) 按位操作符3) 相等操作符)4) 逻辑操作符5) 关系操作符)6) 归约操作符7) 移位操作符)8) 条件操作符9) 连接和复制操作符)Verilog语言要素语言要素算术操作符Verilog语言要素语言要素算术操作符Verilog语言要素语言要素按位操作符Verilog语言要素语言要素按位操作符Verilog语言要素语言要素归约操作符Verilog语言要素语言要素归约操作符Verilog语言要素语言要素关系操作符Verilog语言要素语言要素关系操作符Verilog语言要素语言要素相等关系操作符Verilog语

34、言要素语言要素相等关系操作符Vil语言要素语言要素逻辑操作符Verilog语言要素语言要素逻辑操作符语言要素语言要素移位操作符Verilog语言要素语言要素移位操作符Vil语言要素语言要素条件连接复制操作符Verilog语言要素语言要素条件、连接、复制操作符Vil语言要素语言要素优先级Verilog语言要素语言要素 优先级元加右移+ 一元加-一元减! 一元逻辑非元按位求反 右移 小于 大于 = 大于等于= = 逻辑相等!逻辑不等 归约异或或 归约异或非| 归约或 |归约或非! = 逻辑不等= = = 全等! = = 非全等&按位与 | 归约或非* 乘/ 除%取模& 按位与 按位

35、异或 or 按位异或非|按位或% 取模+ 二元加_ 二元减 左移| 按位或& & 逻辑与| | 逻辑或? :条件操作符 左移? : 条件操作符Verilog语言要素语言要素 语句块Verilog语言要素语言要素语句块提供将两条或更多条语句组合成语法结构上语句块提供将两条或更多条语句组合成语法结构上相当于一条语句的机制。在Verilog HDL中有两类语句块,即:句块,即:1) 顺序语句块(begin . end):语句块中的语句按给定次序顺序执行次序顺序执行2) 并行语句块(fork . join):语句块中的语句并行执行行Verilog语言要素语言要素顺序语句块中的语句按顺序

36、方式执行。每条语句中Verilog语言要素语言要素顺序语句块中的语句按顺序方式执行。每条语句中的时延值与其前面的语句执行的模拟时间相关例如:例如:begin#2 St1#2 Stream = 1;#5 Stream = 0;#3 St1#3 Stream = 1;#4 Stream = 0;#2 Stream1;#2 Stream = 1;#5 Stream = 0; End顺序语句块中的累积时延EndVerilog语言要素语言要素并行语句块带有定界符fork和和join,并行语句块中的各语句并行执行并行语句块内的各条语句指定的Verilog语言要素语言要素各语句并行执行。并行语句块内的各条语

37、句指定的时延值都与语句块开始执行的时间相关例如:fork#2 Stream = 1; #7 Stream = 0;#10 Stream = 1;#14 Stream = 0;#16 Stream = 1;#21 Stream = 0; 并行语句块中的相对时延join并行语句块中的相对时延Verilog语言要素语言要素 过程性赋值(进程赋值)Verilog语言要素语言要素进程赋值是在initial语句或always语句内的赋值,它只能对寄存器数据类型的变量赋值。表达式的右端可以是任何表达式。 过程性赋值(进程赋值)分两类:1) 阻塞性过程赋值(=)2) 非阻塞性过程赋值(=)Verilog语言要

38、素语言要素阻塞赋值(=)Verilog语言要素语言要素阻塞赋值在其后所有语句执行前执行,即在下一语句执行前该赋值语句完成执行。执行前该赋值语句完成执行。 例如:always (A or B or Cin)always (A or B or Cin) beginreg T1, T2, T3 ;reg T1, T2, T3 ;T1 = A & B ;T2 = B & Cin;/T1赋值生效后执行T2赋值T2 B & Cin; /T1赋值生效后执行T2赋值T3 = A & Cin;Cout= T1 | T2 | T3;Cout T1 | T2 | T3;endVeri

39、log语言要素语言要素非阻塞赋值(=)Verilog语言要素语言要素通常非阻塞赋值执行次序彼此不相关例如:initialbeginA =B ; ;B =A ; /执行结果是A与B取值互换endVerilog语言要素语言要素连续赋值与过程赋值的比较Verilog语言要素语言要素Verilog语言要素语言要素Verilog语言要素语言要素 其它语句(1)if语句其它语句(2)case语句(3)循环语句1) forever循环2) repeat循环)p3) while循环4) for 循环)Inaword1、一个复杂电路系统的完整Verilog HDL模型(程序)是由若干个Verilog HDL模块构成的每一个模块又可以由若干个Verilog HDL模块构成的,每一个模块又可以由若干个子模

温馨提示

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

评论

0/150

提交评论