VHDL设计初步课件(PPT 91页)_第1页
VHDL设计初步课件(PPT 91页)_第2页
VHDL设计初步课件(PPT 91页)_第3页
VHDL设计初步课件(PPT 91页)_第4页
VHDL设计初步课件(PPT 91页)_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

1、EDA技术实用教程第4章 VHDL设计初步第1页,共91页。第4章 目 录4.1 多路选择器VHDL描述;4.2 寄存器描述及其VHDL语言现象;4.3 1位二进制全加器的VHDL设计;4.4 VHDL文本输入设计方法初步。第2页,共91页。4.1 多路选择器VHDL描述关于VHDL多路选择器VHDL描述第3页,共91页。什么是VHDL? Very high speed integrated Hardware Description Language (VHDL)是IEEE、工业标准硬件描述语言用语言的方式而非图形等方式描述硬件电路容易修改容易保存特别适合于设计的电路有:复杂组合逻辑电路,如:

2、 译码器、编码器、加减法器、多路选择器、地址译码器.状态机等等.第4页,共91页。 VHDL于1983年由美国国防部创建,1987年成为国际标准:IEEE:1076。 1993年进行了修订,扩充了VHDL的功能,成为IEEE:10761993版。2002发布了最新版本。3个版本:87版,93版,2002版。 此外,Verilog_HDL 也是一种通用的硬件描述语言。1983年创立,1995年成为IEEE标准。第5页,共91页。4.1多路选择器的VHDL描述 多路选择器的VHDL描述 图1 mux21a实体 图2 mux21a结构体 设计模块实体 结构体第6页,共91页。多路选择器的VHDL描述

3、 【例1】ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ; 行为描述第7页,共91页。【例2】 ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a;ARCHITECTURE one OF mux21a

4、 IS SIGNAL d,e : BIT; BEGINd = a AND (NOT S) ;e = b AND s ;y = d OR e ; END ARCHITECTURE one ; 结构描述第8页,共91页。ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN y = (a AND (NOT s) OR (b AND s) ; END ARCHITECTURE one;结构描述第9页,共91页。【例3】

5、 ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = 0 THEN y = a ; ELSE y = b ;END IF; END PROCESS;END ARCHITECTURE one ; 行为描述第10页,共91页。图3 mux21a功能时序波形 第11页,共91页。VHDL相关语句说明1. 实体表达ENTITY e_name IS PORT ( p_name : p

6、ort_m data_type; . p_namei : port_mi data_type );END ENTITY e_name;或:ENTITY e_name IS PORT ( p_name : port_m data_type; . p_namei : port_mi data_type );END e_name;93版87版实体是指设计的功能模块,它描述模块的名称和端口信号关键词不分大小写第12页,共91页。2. 实体名:即指设计的模块名称,不能使用中文、关键词作为实体名,开头不能使用数字。3. PORT语句和端口信号名4. 端口模式:指端口信号的传输方向INOUTINOUTBUF

7、FER5. 数据类型BIT:只有2种取值:0和1第13页,共91页。6. 结构体表达ARCHITECTURE arch_name OF e_name IS (说明语句)BEGIN (功能描述语句)END ARCHITECTURE arch_name ;或:ARCHITECTURE arch_name OF e_name IS (说明语句)BEGIN (功能描述语句)END arch_name ;结构体是指模块的内部结构,它描述模块的内部结构和行为、功能93版87版第14页,共91页。8. 逻辑操作符AND、OR、NOT7. 信号传输(赋值)符号和数据比较符号:赋值符号是 = 比较符号是 = 布

8、尔数据类型(BOOLEAN):指一个表达式的值,为真或者假(true = 1,false = 0 ),用于逻辑操作和条件判断。 第15页,共91页。 例: z = a WHEN p1 = 1 ELSE b WHEN p2 = 1 ELSE c ; 优先级:前面的赋值语句优先级高9. WHEN_ELSE条件信号赋值语句:并行赋值语句,有赋值优先级赋值目标 = 表达式1 WHEN 赋值条件 ELSE 表达式2 WHEN 赋值条件 ELSE . 表达式 n;第16页,共91页。10. PROCESS进程语句和顺序语句:所有的顺序描述语句都必须放在进程语句PROCESS中。敏感表:输入信号都必须放在敏

9、感表中,只要一个信号发生改变,进程语句就启动执行一次; 一个结构体中可以包含任意多个进程语句,所有的进程语句都是并行语句,但进程内部的语句是顺序执行的。12. 文件取名和存盘 文件名应与实体名相同,扩展名为.vhd。 文件存放在工程目录中,工程目录叫做WORK目录或者WORK库的目录。11. IF_THEN条件语句:VHDL顺序语句,可以描述组合电路,只能在进程语句内部使用。第17页,共91页。VHDL设计的基本概念和语句小节数据类型信号赋值符条件比较符 延时实体结构体端口定义端口模式逻辑操作符IF条件语句并行条件语句进程语句顺序语句并行语句文件取名文件存盘第18页,共91页。第19页,共91

10、页。4.2 寄存器描述及其HVDL现象D触发器VHDL描述标准逻辑std_logic库和程序包时钟沿检测时序电路和组合电路的VHDL描述同步电路和异步电路第20页,共91页。寄存器描述及其VHDL语言现象D触发器的VHDL描述【例】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; D触发器第21页,共91页。ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1

11、: STD_LOGIC ; -类似于在芯片内部定义一个数据的暂存节点 BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; Q = Q1 ; -将内部的暂存数据向端口输出 END PROCESS ; END bhv;第22页,共91页。D触发器VHDL描述的语言现象说明1. 标准逻辑位数据类型STD_LOGICBIT数据类型定义: TYPE BIT IS(0,1);STD_LOGIC数据类型定义:TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);STD_LOGIC所定义的9种数据

12、的含义是:U表示未初始化的; X表示强未知的; 0表示强逻辑0; 1表示强逻辑1; Z表示高阻态; W 表示弱未知的; L表示弱逻辑0; H表示弱逻辑1; -表示忽略。第23页,共91页。2. 设计库和标准程序包使用库和程序包的一般定义表式是: LIBRARY ; USE .ALL ; 库、程序包和包内容的关系 库/程序包/包内容(指包中的所有定义,如数据类型、函数、过程、常量等)(1)IEEE库:不是VHDL的系统库,使用时必须说明(2)STD库:是VHDL自带的标准库,默认打开,在程序中不须说明。(3)工作库:即用户自己在设计文件中定义的一切内容,是默认打开的,在程序中不须说明。第24页,

13、共91页。3. SIGNAL信号定义和数据对象ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; BEGINEND bhv;信号Q1是属于数据对象(data objects)。VHDL中有3种数据对象:信号(SIGNAL)、变量(VARIABLE)和常量(CONSTANT)。每一个数据对象都必须给它规定一种数据类型。数据类型定义了数据对象的取值范围。如BIT, STD_LOGIC等第25页,共91页。4. 上升沿检测表式和信号属性函数EVENT 关键词EVENT是信号属性,VHDL通过以下表式来测定某信号的跳变边沿: EVENT【例5】ARC

14、HITECTURE bhv OF DFF1 IS BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q = D ; END IF; END PROCESS ;END ;第26页,共91页。【例】.PROCESS (CLK) BEGINIF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -确保CLK的变化是一次上升沿的跳变 END IF; END PROCESS ;【例】.PROCESS (CLK) BEGINIF CLK=1 AND CLKLAST_VALUE=0 -同

15、上例 THEN Q = D ; END IF; END PROCESS ;时钟沿的不同描述方式第27页,共91页。【例】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF3 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) - CLK的数据类型必须

16、是STD_LOGIC THEN Q1 = D ; END IF; Q b1 THEN q1 = 1 ; ELSIF a1 b1 THEN q1 b1 THEN q1 = 1 ; ELSE q1 = 0 ; END IF; END PROCESS ; END 电路图第31页,共91页。【例】. PROCESS (CLK) BEGIN IF CLK = 1 时钟沿触发型寄存器 THEN Q = D ; -利用进程的启动特性产生对CLK的边沿检测 END IF; END PROCESS ;【例】. PROCESS (CLK,D) BEGIN IF CLK = 1 -电平触发型寄存器 THEN Q =

17、 D ; END IF; END PROCESS ;第32页,共91页。时钟沿触发器时序波形电平触发型寄存器的时序波形第33页,共91页。异步时序电路设计. ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2 : STD_LOGIC; BEGINPRO1: PROCESS (CLK) BEGIN IF CLKEVENT AND CLK=1 THEN Q1 = NOT (Q2 OR A); END IF; END PROCESS ;PRO2:PROCESS (Q1) BEGIN IF Q1EVENT AND Q1=1 THEN Q2 = D; END IF

18、; QQ = Q2 ; END PROCESS ; 同步电路:各个部分的电路使用相同的时钟异步电路:各个部分的电路使用不同的时钟第34页,共91页。综合的电路第35页,共91页。VHDL设计基本概念和语言现象小节数据类型数据对象信号属性时钟检测VHDL库程序包时序电路异步时序第36页,共91页。4.3 1位二进制全加器的VHDL设计知识要点1、CASE语句表示多分支情况的选择语句,各分支无优先级。与IF语句的区别。2、元件例化语句(有2个语句组成)用于层次设计,即在当前设计中调用一个已经设计好的功能模块component 语句:将一个设计实体定义为一个元件port map 语句: 用于元件调用

19、(端口映射)。第37页,共91页。3、标准逻辑矢量:std_logic_vector( * downto *) 或者 std_logic_vector( * to *)表示一维数组或者总线并置操作符& 用于将单独的信号合并起来组成新的数组或者总线4、1位全加器的VHDL描述半加器的VHDL描述全加器的VHDL描述(层次设计)第38页,共91页。半加器h_adder电路图全加器f_adder电路图第39页,共91页。半加器描述和CASE语句absoco0000011010101101半加器h_adder逻辑功能真值表可使用CASE语句描述真值表第40页,共91页。1. CASE语句CASE语句的

20、一般表式是:CASE ISWhen = ; . ; ;When = ; . ; ;.END CASE ;作用:表示多分支情况的选择语句,各分支无优先级。执行:每次启动CASE语句,只选择执行其中一个分支的语句。注意:(1)对所有的情况都要赋值,否则会综合成锁存器。 (2)CASE语句只能在process语句中使用。 (3)与IF语句的区别。第41页,共91页。2. 标准逻辑矢量数据类型STD_LOGIC_VECTOR3. 并置操作符 半加器描述和CASE语句在使用STD_LOGIC_VECTOR中,必须注明其数组宽度,即位宽,如: B : OUT STD_LOGIC_VECTOR(7 DOWN

21、TO 0) 8位数 或 SIGNAL A :STD_LOGIC_VECTOR(1 TO 4)4位数第42页,共91页。以下是一些并置操作示例:SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ;SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ; .a = 10d(1)1 ; - 元素与元素并置,并置后的数组长度为4 .IF a d = 101011 THEN . - 在IF条件句中可以使用并置符 第43页,共91页。【例】 LIBRARY IEEE ;-或门逻辑描述 USE IEEE.STD_LOGIC_1164.ALL; EN

22、TITY or2a IS PORT (a, b :IN STD_LOGIC; c : OUT STD_LOGIC ); END ENTITY or2a; ARCHITECTURE one OF or2a IS BEGIN c = a OR b ; END ARCHITECTURE fu1;第44页,共91页。【例】LIBRARY IEEE; -半加器描述(1)USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder;

23、ARCHITECTURE fh1 OF h_adder is BEGIN so = NOT(a XOR (NOT b) ; co = a AND b ; END ARCHITECTURE fh1; 第45页,共91页。【例】LIBRARY IEEE; -半加器描述(2)USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; 第46页,共91页。【例】ARCHITECTURE fh1 OF h_adder is SI

24、GNAL abc : STD_LOGIC_VECTOR(1 DOWNTO 0) ;BEGIN abc so=0; co so=1; co so=1; co so=0; co NULL ; END CASE; END PROCESS;END ARCHITECTURE fh1 ;第47页,共91页。【例】 . -半加器描述(3) SIGNAL abc,cso : STD_LOGIC_VECTOR(1 DOWNTO 0 ); BEGIN abc = a & b ; co = cso(1) ; so cso cso cso csoain,b=bin,co=d,so=e); u2 : h_adder P

25、ORT MAP(a=e, b=cin, co=f,so=sum);u3 : or2a PORT MAP(a=d, b=f, c=cout); END ARCHITECTURE fd1;第51页,共91页。第52页,共91页。全加器描述和例化语句 元件例化语句由两部分组成,第一部分是将一个现成的设计实体定义为一个元件,语句的功能是对待调用的元件作出调用声明,它的最简表达式如下所示: COMPONENT 元件名 IS PORT (端口名表) ; END COMPONENT 文件名 ; 元件例化语句的第二部分则是此元件引脚与当前设计实体(顶层文件)中的具体信号连接起来。语句的表达式如下: 例化名 :

26、 元件名 PORT MAP( 端口名 = 连接端口名,.);注意连接顺序:左边表示元件引脚名,右边表示与该引脚相连的实际信号名。第53页,共91页。8位全加器的设计调用方法调用8次,将8个1位全加器串连起来。示例(课堂练习)第54页,共91页。第55页,共91页。知识要点计数器:广泛用于控制。整数:INTEGER, 要定义范围,便于综合器确定线宽。表示方法:如2,35,16d9#, 2#11001#等。自然数和正整数。操作符的重载函数重载:给操作符赋予新的功能,使不同数据类型的数据可以混合使用使用重载函数: USE IEEE.STD_LOGIC_UNSIGNED.ALL 4.4 计数器设计第5

27、6页,共91页。BUFFER模式当输出的量内部需要用时,必须定义为BUFFER类型。计数器的电路结构一个加法器一个锁存器Q X)第57页,共91页。十进制计数器的设计使能型号和复位信号内部变量的定义进位信号移位寄存器的设计并行置位移位寄存器的描述移位输出第58页,共91页。4.4 计数器设计 【例】ENTITY CNT4 IS PORT ( CLK : IN BIT ; Q: BUFFER INTEGER RANGE 15 DOWNTO 0); END ; ARCHITECTURE bhv OF CNT4 IS BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND

28、 CLK = 1 THEN Q = Q + 1 ; 两边的数据类型相同 END IF; END PROCESS ;END bhv; 第59页,共91页。4.4 计数器设计 4位加法计数器 表面上BUFFER具有双向端口INOUT的功能,但实际上其输入功能是不完整的,它只能将自己输出的信号再反馈回来,并不含有IN的功能。 表式Q = Q + 1的右项与左项并非处于相同的时刻内,对于时序电路,除了传输延时外,前者的结果出现于当前时钟周期;后者,即左项要获得当前的Q + 1,需等待下一个时钟周期。 第60页,共91页。4.4 计数器设计 整数类型 1 十进制整数0 十进制整数35 十进制整数10E3

29、 十进制整数,等于十进制整数100016#D9# 十六进制整数,等于十六进制整数D9H8#720# 八进制整数,等于八进制整数7202#11010010# 二进制整数,等于二进制整11010010B 例 Q : BUFFER NATURAL RANGE 15 DOWNTO 0; 第61页,共91页。自然数:NATURE,包含0和所有正整数;正整数:POSITIVE,不包含0;INTEGER,NATURE,POSITIVE都定义在VHDL标准程序包STANDARD中,是默认打开的,所以不需要进行库的声明语句。第62页,共91页。4.4 计数器设计 计数器设计的另一种表述 【例】 LIBRARY

30、IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; ENTITY CNT4 IS PORT ( CLK : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ; END ; 第63页,共91页。【例】。ARCHITECTURE bhv OF CNT4 ISSIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN Q1为内部信号,无传输方向限制 PROCESS (CLK) BEGIN IF CLKEVENT AND

31、CLK = 1 THEN Q1 = Q1 + 1 ; -右边两个不同数据类型的数相加 END IF; END PROCESS ; Q 0) ;-计数器复位 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟上升沿 IF EN = 1 THEN -检测是否允许计数 IF CQI 0);-等于或者大于9,计数值清零 END IF; END IF; END IF; IF CQI = “1001” THEN COUT = 1; -计数等于9,输出进位信号 ELSE COUT = 0; END IF; CQ X) 为了简化表达才使用短语“(OTHERS=X)”,这是一个省略赋值操作符

32、,它可以在较多位的位矢量赋值中作省略化的赋值,如以下语句: SIGNAL d1,d2 : STD_LOGIC_VECTOR(4 DOWNTO 0); VARIABLE a1 : STD_LOGIC_VECTOR(15 DOWNTO 0); . d1 0); d2 1,4=1,others=0); a1 := (OTHERS=0) ;则d1 = “00000”,d2 = “10010”a1=“000000000000000”省略赋值操作符(OTHERS=X)比并置操作符&要简单。第72页,共91页。3.带有复位和时钟使能的10进制计数器异步:跟时钟信号无关,单独起作用;同步:跟时钟信号有关,受时

33、钟控制,即跟时钟同步;异步复位:异步复位信号变为复位电平时立即复位;同步复位:复位信号变为复位电平时并不立即复位,而是等到时钟沿到来时才复位。第73页,共91页。4.5 一般加法计数器设计 程序分析 RTL电路(Synplify综合) 第74页,共91页。4.5 一般加法计数器设计 程序分析 工作时序 第75页,共91页。4.5 一般加法计数器设计 含并行置位的移位寄存器设计 【例】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHFRT IS - 8位右移寄存器 PORT ( CLK,LOAD : IN STD_LOGIC; DIN : IN

34、 STD_LOGIC_VECTOR(7 DOWNTO 0); QB : OUT STD_LOGIC );END SHFRT;第76页,共91页。【例】。ARCHITECTURE behav OF SHFRT IS BEGIN PROCESS (CLK, LOAD) VARIABLE REG8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF CLKEVENT AND CLK = 1 THEN IF LOAD = 1 THEN REG8 := DIN; -由(LOAD=1)装载新数据 ELSE REG8(6 DOWNTO 0) := REG8(7 DOWNTO 1

35、); END IF; END IF; QB = REG8(0); - 输出最低位 END PROCESS; END behav; 第77页,共91页。 含并行置位的移位寄存器设计 工作时序 (1)在第一个时钟到来时,LOAD恰为高电平(2)第二个时钟,以及以后的时钟信号都是移位时钟(3)第二个时钟后,QB输出了右移出的第2个位1第78页,共91页。4.6 VHDL语句结构与语法小节 实体:以ENTITY. . .END ENTITY e_name描述器件的端口特性。结构体: 以ARCHITECTURE . END ARCHITECTURE 给出器件 的逻辑功能和行为。端口定义: 以PORT()

36、语句定义器件端口及其数据类型。端口模式: IN、OUT、INOUT、BUFFER描述端口数据的流向特征。数据类型: 数据对象承载数据的类别:INTEGER、BOOLEAN、STD_LOGIC、BIT、STD_LOGIC_VECTOR。信号赋值符:“=”,用于信号数据的传输,仿真传输延时最短为一个。条件比较符: “=”,在条件语句表式中用于比较待测数据的关系。 延时: 模拟器最小分辨时间,或称延时 。第79页,共91页。逻辑操作符: AND、OR、NOT、NAND、XOR、XNOR。IF条件语句:IF_THEN_ELSE语句作为顺序语句。并行条件语句:WHEN_ELSE条件信号赋值语句。进程语句

37、: 以PROCESS .END PROCESS引导的语句结构。顺序语句: 由进程语句引导的,以顺序方式执行的语句。并行语句: 在结构体中以并行方式执行的语句。文件取名: 建议文件名与VHDL设计的实体名一致,后缀是.vhd。第80页,共91页。4.6 VHDL语句结构与语法小节 文件存盘: VHDL设计文件必须存于指定为工程的目录中,此目录将被设定为WORK库,WORK库的路径即为此目录的路径。VHDL库:LIBRARY语句打开VHDL库:IEEE库、标准库STD、工作库WORK . .程序包:USE语句声明使用程序包:STD_LOGIC_1164、STD_LOGIC_UNSIGNED、STA

38、NDARD等程序。数据对象:信号:SIGNAL,变量:VERIABLE,常数:CONSTANT信号属性函数:信号属性函数EVENT、LAST_VALUE。时钟检测:时钟检测上升沿检测表式:CLKEVENT AND CLK=1、RISING_EDGE()、FALLING_EDGE()等。第81页,共91页。时序电路:不完整条件语句产生时序电路:IF THEN END IF,IF THEN ELSIF THEN END IF真值表表达:表达方法之一是用CASE_WHEN语句,但要注意OTHERS的应用。并置操作符:并置操作符可用于合并两个或多个逻辑矢量,构建成新的数组。元件例化:由元件调用声明语句COMPONENT和映射语句PORT MAP( )构成。运算符重载概念:当进行非

温馨提示

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

评论

0/150

提交评论