2017毕业论文-基于FPGA的四位电子密码锁.doc_第1页
2017毕业论文-基于FPGA的四位电子密码锁.doc_第2页
2017毕业论文-基于FPGA的四位电子密码锁.doc_第3页
2017毕业论文-基于FPGA的四位电子密码锁.doc_第4页
2017毕业论文-基于FPGA的四位电子密码锁.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

I 基于 FPGA 的四位电子密码锁 摘 要 随着电子技术的发展,具有防盗报警等功能的电子密码锁代替密码量 少、安全性差的机械式密码锁已是必然趋势。电子密码锁与普通机械锁相 比,具有许多独特的优点:保密性好,防盗性强,可以不用钥匙,记住密 码即可开锁等。目前使用的电子密码锁大部分是基于单片机技术,以单片 机为主要器件,其编码器与解码器的生成为软件方式。在实际应用中,由 于程序容易跑飞,系统的可靠性能较差。 本文主要阐述了一种基于现场可编程门阵列 FPGA 器件的电子密码锁 的设计方法。用 FPGA 器件构造系统,所有算法完全由硬件电路来实现, 使得系统的工作可靠性大为提高。由于 FPGA 具有现场可编程功能,当设 计需要更改时,只需更改 FPGA 中的控制和接口电路,利用 EDA 工具将 更新后的设计下载到 FPGA 中即可,无需更改外部电路的设计,大大提高 了设计的效率。因此,采用 FPGA 开发的数字系统,不仅具有很高的工作 可靠性,而且升级也极其方便。 本文采用 EDA 技术,利用 Quartus II 工作平台和硬件描述语言,设计 了一种电子密码锁,并通过一片 FPGA 芯片实现。 关键词:关键词:电子密码锁;FPGA;硬件描述语言;EDA II Four FPGA-based electronic lock ABSTRACT With the development of electronic technology, electronic password lock with burglar alarm and other functions replacing less password and poor security mechanical code lock is an inevitable trend. compared electronic password lock with ordinary mechanical locks, it has many unique advantages : confidentiality, and security in nature, do not use the key, remember password can unlock it etc .Most electronic password locks we used now is based upon SCM technology ,SCM is its mainly device ,and the creating of encoding and decoding devices is the fashion of Software mode. In practical application, the reliability of the system may be worse because of easy running fly of the programme. This paper mainly expatiates a design method of electronic password lock based upon Field Programmable Gate Array device. We use FPGA devices to construct system , all of the algorithm entirely achieved by the hardware circuit , because of FPGA has the function of ISP , when the design needs to be changed We only need to change the control and interface circuit of FPGA,EDA tools are III used to download the updated design to FPGA without changing the design of the external circuit , this greatly enhance the efficiency of the design .Therefore , we use FPGA to empolder the digital system has not only high reliability but also extremely convenient of upgrading and improvement .In this paper ,we use EDA technology , Quartus II platform and hardware description language designing an electronic password lock ,and it achieved through an FPGA chip. Key words: electronic password lock;FPGA;hardware description language;EDA 目录 摘 要 I ABSTRACT . 1 绪论.1 1.1 国内外现状及其发展1 1.2 电子密码锁的系统简介.2 1.3 系统设计要求.2 1.4 本课题的研究目的和意义3 2 FPGA 与 VHDL 硬件描述语言.4 2.1 FPGA 的相关介绍4 2.2 VHDL 硬件描述语言6 2.2.1 VHDL 语言的基本结构 .6 3 电子密码锁的设计与实现8 3.1 电子密码锁设计要求.8 3.2 总体设计思想.8 3.3 子模块的设计思想及实现9 3.3.13.3.1 输入模块的设计与实现 9 3.3.23.3.2 控制电路设计与实现.13 3.3.33.3.3 显示模块设计与实现 .17 3.3.43.3.4 电子密码锁的系统实现.18 4 电子密码锁的时序仿真19 4.1 电子密码锁的设计流程.19 4.2 系统主要模块的仿真.19 总 结 23 结 束 语 .24 参考文献 .25 附录 .26 1 1 绪 论 1.1 国内外现状及其发展 随着人们生活水平的提高和安全意识的加强,对安全的要求也就越 来越高。锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安 全可靠的防盗,又要使用方便,这也是制锁者长期以来研制的主题。随着 电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。据 有关资料介绍,电子密码锁的研究从 20 世纪 30 年代就开始了,在一些特 殊场所早就有所应用。这种锁是通过键盘输入一组密码完成开锁过程。研 究这种锁的初衷,就是为提高锁的安全性。由于电子锁的密钥量(密码量) 极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐 患。电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属 钥匙的烦恼,而被越来越多的人所欣赏。电子锁的种类繁多,例如数码锁, 指纹锁,磁卡锁,IC 卡锁,生物锁等。但较实用的还是按键式电子密码锁。 20 世纪 80 年代后,随着电子锁专用集成电路的出现,电子锁的体积 缩小,可靠性提高,成本较高,是适合使用在安全性要求较高的场合,且 需要有电源提供能量,使用还局限在一定范围,难以普及,所以对它的研 究一直没有明显进展。 目前,在西方发达国家,电子密码锁技术相对先进,种类齐全,电子 密码锁已被广泛应用于智能门禁系统中,通过多种更加安全,更加可靠的 技术实现大门的管理。在我国电子锁整体水平尚处于国际上 70 年代左右, 电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥 2 匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。但国内 自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。国内的不 少企业也引进了世界上先进的技术,发展前景非常可观。希望通过不断的 努力,使电子密码锁在我国也能得到广泛应用。 目前使用的电子密码锁大部分是基于单片机技术,以单片机为主要器 件,其编码器与解码器的生成为软件方式。在实际应用中,由于程序容易 跑飞,系统的可靠性能较差。基于现场可编程逻辑门阵列 FPGA 器件的电 子密码锁,用 FPGA 器件构造系统,所有算法完全由硬件电路来实现,使 得系统的工作可靠性大为提高。由于 FPGA 具有现场可编程功能,当设计 需要更改时,只需更改 FPGA 中的控制和接口电路,利用 EDA 工具将更新 后的设计下载到 FPGA 中即可,无需更改外部电路的设计,大大提高了设 计的效率。 1.2 电子密码锁的系统简介 通用的电子密码锁主要由四个部分组成:数字密码输入电路、密码 锁控制电路和密码锁显示电路。 (1) 密码锁输入电路包括时序产生电路、键盘扫描电路、键盘弹跳 消除电路、键盘译码电路等几个小的功能电路。 (2) 密码锁控制电路包括按键数据的缓冲存储电路,密码的清除、 变更、存储、激活电锁电路(寄存器清除信号发生电路) ,密码核对(数 值比较电路) ,解锁电路(开/关门锁电路)等几个小的功能电路。 (3) 密码显示电路主要将显示数据的 BCD 码转换成相对应的编码。 如,若选用七段数码管显示电路,主要将待显示数据的 BCD 码转换成数 码器的七段显示驱动编码。 3 1.3 系统设计要求 设计一个具有较高安全性和较低成本的通用电子密码锁,具体功能要 求如下: (1)数码输入:每按下一个数字键,就输入一个数值,并在显示器上 的显示出该数值,同时将先前输入的数据依序左移一个数字位置。 (2)数码清除:按下此键可清除前面所有的输入值,清除为“0000” 。 (3)密码更改:按下此键时会将目前的数字设定成新的密码。 (4)激活电锁:按下此键可将密码锁上锁。 (5)解除电锁:按下此键会检查输入的密码是否正确,密码正确即开 锁。 1.4 本课题的研究目的和意义 随着人们生活水平的提高,对家庭防盗技术的要求也是越来越高, 传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其 保密性高,使用灵活性好,安全系数高,受到了广大用户的欢迎。现在 市场上主要是基于单片机技术的电子密码锁,但可靠性较差。FPGA 即 现场可编程门阵列,它是在 PAL、GAL、EPLD 等可编程器件的基础上 进一步发展的产物,是一种超大规模集成电路,具有对电路可重配置能 力。相对于基于单片机技术的电子密码锁,用 FPGA 器件来构成系统, 可靠性提高,并且由于 FPGA 具有的现场可编程功能,使得电子密码锁 的更改与升级更为方便简单。 通过本次设计掌握 FPGA 系统设计的方法,熟悉 FPGA 设计的相关 软件,以及硬件描述语言的使用,了解电子密码锁的系统构成,利用 4 FPGA 实现电子密码锁的设计与实现,可以加深自己对所学专业的认识, 关联知识,增强自己的动手能力,积累实践经验,为以后的工作打好基 础。 2 FPGA 与 VHDL 硬件描述语言 此次设计是按照“自顶向下“的设计方法,对整个系统进行方案设计和 功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然 后采用硬件描述语言(VHDL)完成系统行为级设计,最后通过综合器和 适配器生成最终的目标器件。自上而下的设计方法是现代电子系统的新型 设计策略,它从设计的总体要求出发,自上而下地逐步从系统数学模型的 设计与仿真,到数据流级的设计与仿真,选择系统设计方案,最后完成系 统硬件的整体设计。 2.1 FPGA 的相关介绍 FPGA 是英文 Field Programmable Gate Array 的缩写,即现场可编程 门阵列,它是在 PAL、GAL、EPLD 等可编程器件的基础上进一步发展的产 物9。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的, 既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 FPGA 采用了逻辑单元阵列 LCA(Logic Cell Array)这样一个新概念, 内部包括可配置逻辑模块 CLB(Configurable Logic Block) 、输出输入模 块 IOB(Input Output Block)和内部连线(Interconnect)三个部分。 FPGA 的基本特点主要有: 1)采用 FPGA 设计 ASIC 电路,用户不需要投片生产,就能得到合用 5 的芯片。 2)FPGA 可做其它全定制或半定制 ASIC 电路的中试样片。 3)FPGA 内部有丰富的触发器和 IO 引脚。 4)FPGA 是 ASIC 电路中设计周期最短、开发费用最低、风险最小的 器件之一。 5)FPGA 采用高速 CHMOS 工艺,功耗低,可以与 CMOS、TTL 电平兼容。 可以说,FPGA 芯片是小批量系统提高系统集成度、可靠性的最佳选 择之一。 目前 FPGA 的品种很多,有 XILINX 的 XC 系列、TI 公司的 TPC 系列、 ALTERA 公司的 FIEX 系列等。 FPGA 是由存放在片内 RAM 中的程序来设置其工作状态的,因此,工 作时需要对片内的 RAM 进行编程。用户可以根据不同的配置模式,采用不 同的编程方式。 加电时,FPGA 芯片将 EPROM 中数据读入片内编程 RAM 中,配置完成 后,FPGA 进入工作状态。掉电后,FPGA 恢复成白片,内部逻辑关系消失, 因此,FPGA 能够反复使用。FPGA 的编程无须专用的 FPGA 编程器,只须用 通用的 EPROM、PROM 编程器即可。当需要修改 FPGA 功能时,只需换一片 EPROM 即可。这样,同一片 FPGA,不同的编程数据,可以产生不同的电路 功能。因此,FPGA 的使用非常灵活。FPGA 设计流程包括系统设计和设计 实现,系统方案完成之后即进入设计实现阶段的工作,他以系统方案为输 入,进行 RTL 级描述、功能仿真(RTL 级仿真)、逻辑综合、布线前门级仿 真、适配(布局布线)、时序仿真(布线后门级仿真)、时序分析、器件编程、 系统验证一系列流程的处理才能完成 FPGA 芯片的设计,其设计流程如图 2.1 所示。 6 图 2.1 系统设计流程 2.2 VHDL 硬件描述语言 VHDL(Very high speed integrated circuit Hardware Description Language)硬件描述语言从高于逻辑级的抽象层次上描述硬件的功能、信 号连接关系及定时关系。VHDL 的设计流程如下图。 图 2.2 VHDL 的设计流程。 2.2.1 VHDL 语言的基本结构 一个完整的 VHDL 语言程序通常包含实体(Entity)、结构体 (Architecture) 、配置(Configuration) 、包集合(Package)和库 (Library)五个部分。 模块划分及其功能描述模块划分及其功能描述 各模块接口信号定义各模块接口信号定义 系统行为描述系统行为描述 系统行为仿真系统行为仿真 系统设计方案系统设计方案 时序、时序、 同步、同步、 算法算法 测试等测试等 方案方案 7 1 实体 实体说明部分是说明一个器件的外观视图,即从器件外部看到的器件 外貌,其中包括器件的端口,同时也可以定义参数,并把参数从外部传入 模块内部,主要用于描述所设计的系统的外部接口。 2 结构体 结构体是描述一个器件的内部视图,是次级设计单元。在其对应的初 级设计单元实体说明被编译并且被并入设计库之后,它就可以单独地被并 入该设计库中。结构体描述一个设计的结构和行为,把一个设计的输入和 输出之间的关系建立起来。一个设计可以有多个结构,分别代表该器件的 不同实现方案。根据对一个器件设计由抽象到具体的过程,可把结构体的 描述方式分为三个层次:行为描述方式、寄存器传输描述方式(RTL)和 结构描述方式。 3 库 库是经编译后的实体、结构体、包集合和配置的集合。使用库时总要 在设计单元的前面予以说明。一旦说明,库中的数据对该设计单元就是可 见的,从而共享已经编译过的设计结果。VHDL 语言中存在的库大致有 IEEE 库、STD 库、ASIC 厂家提供的库、用户定义的库和现行作业库。 4 包集合 包集合属库中的一个层次,是一种可编译的源设计单元。它收集了 VHDL 语言中所用到的信号、常数、数据类型、函数和过程的说明等。用 户可以构造一个包集合,用以存放常数、数据类型、函数和过程,该包集 合经编译后便自动加到 WORK 库中。使用库中的包集合时,在打开库后 要用 USE 语句说明,例如: LIBRARY IEEE; USE IEEE.STD-LOGIC-1164.ALL; 8 5 配置 配置语句从一个库中为一个实体选择一个特定的结构体,是一种放在 库中的被编辑单元,并有相应的配置名。通过配置技术,可以选取多种不 同的结构体,以便对一个设计任务采用仿真工具进行多种配置的性能实验。 另外,配置说明和规定的特性还可以用在多层描述中。 3 电子密码锁的设计与实现 3.1 电子密码锁设计要求 设计一个基于 FPGA 的电子密码锁,其基本要求为: 1.密码锁为四位显示,可以通过按键接受密码设置;按下数字键,第 一个数字会显示器的最右端显示,随后每按下一个新数字,显示器上的已 经存在的数字整体会向左移一位,并将以新的数字显示出来; 2.当输入密码时,四位密码都正确,则绿灯亮,密码锁开锁;当其中 任意一位不正确时,则红灯亮,密码锁不开锁,当按下复位键时,显示为 最初设置,可再重新输入密码。 3.若要更改输入数字,则可按复位键消除所有输入的数字,再重新输 入数字。 4.电子密码锁为 4 位,当输入超过 4 位时,电路不予理会,且不会显 示第 4 个以后的数字。 9 3.2 总体设计思想 首先根据电子密码锁的逻辑功能,设计逻辑电路。然后根据逻辑电 路,编写 FPGA 程序实现逻辑功能,再用仿真软件进行仿真调试,最后下 载到 FPGA 芯片上运行。本设计为四位电子密码锁,通过输入密码并直观 地通过数显模块显示出来;对输入信号进行显示,通过控制模块判断输入 密码是否正确,四位密码都正确,则密码锁开锁,只要其中有一位不正确, 则密码锁不开锁,同时该系统还应有复位功能,按下复位键,允许重新输 入密码。 此电子密码锁的设计中采用自顶向下的设计思路,运用 VHDL 硬件描 述语言对各个模块进行层次化、系统化的描述,并且先设计一个顶层文件, 再把各个模块连接起来。图 3.1 为数字电子密码锁系统总体框图。 图 3.1 电子密码锁系统总体框图 10 3.3 子模块的设计思想及实现 通过第一章电子密码锁系统结构的分析和对电子密码锁的功能要求, 把要设计的系统划分为几个功能模块:密码输入模块、密码锁控制模块和 数码显示模块。 3.3.1 输入模块的设计与实现 作为电子密码锁的输入电路,数字密码输入电路可采用一个 34 的 通用数字机械键盘作为本设计的输入设备。机械式键盘具有低成本、可靠 性高、构成电路简单、技术成熟和应用广泛等特点,因此将其应用到通用 电子密码锁中是比较适宜的。 输入模块主要包括时序产生电路、键盘扫描电路和弹跳消除电路。 1时序产生电路 本时序产生电路中使用了三种不同频率的工作脉冲波形:系统时钟脉 冲(它是系统内部所有时钟脉冲的源头,且其频率最高) 、弹跳消除取样 信号、键盘扫描信号。 当一个系统中需使用多种操作频率的脉冲波形时,最方便的方法之一 就是利用一计数器来产生各种需要的频率。也就是先建立一个 N 位计数器, N 的大小根据电路的需求决定,N 的值越大,电路可以分频的次数就越多, 这样就可以获得更大的频率变化,以便提供多种不同频率的时钟信号。若 输入时钟为 CLK,N 位计数器的输出为 QN-10,则 Q(0)为 CLK 的 2 分 频脉冲信号,Q(1)为 CLK 的 4 分频脉冲信号,Q(2)为 CLK 的 8 分频脉冲 信号Q(N-1)为 CLK 的 2N分频脉冲信号;Q(5 DOWNTO 4)取得的是一 个脉冲波形序列,其值依 000110110001 周期性变化,其变化 频率为 CLK 的 32 分频。我们利用以上规律即可得到各种我们所需要频率 11 的信号或信号序列。 SIGNAL CLK: STD_LOGIC ; -电路工作时钟脉冲 SIGNAL C_KEYBOARD: STD_LOGIC_VECTOR(1 DOWNTO 0); -键扫信号“00-01-10-11”寄存器 SIGNAL C_DEBOUNCE: STD_LOGIC ; -去抖时钟信号 2键盘扫描电路 扫描电路的作用是用来提供键盘扫描信号的,扫描信号变化的顺序依 次为 11101101101101111110依序的周而复始。扫描时依序分 别扫描四列按键,当扫描信号为 1110 时扫描 KY3 这一排按键;当扫描信 号为 1101 室,扫描 KY2 这一排按键;当扫描信号为 1011 时,扫描 KY1 这一排按键;当扫描信号为 0111 时,扫描 KY0 这一排按键。每扫描一排 按键就检查一次是否有键被按下,如果这排没有按键被按下就忽略,反之, 如果出现被按下的键则立刻进行按键编码的动作,且将编码的结果储存于 寄存器中。 -扫描信号发生器 COUNTER : BLOCK IS SIGNAL Q: STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL SEL: STD_LOGIC_VECTOR (3 DOWNTO 0); -1110- 1101-1011-0111 BEGIN PROCESS (CLK_1K) IS BEGIN IF CLK_1KEVENT AND CLK_1K =1 THEN Q KEY_IN(0) , D_OUT = C(0), CLK = C_DEBOUNCE); U2: DEBOUNCING PORT MAP (D_IN = KEY_IN(1) , D_OUT = C(1), CLK = C_DEBOUNCE); U3: DEBOUNCING PORT MAP (D_IN = KEY_IN(2) , D_OUT = C(2), CLK = C_DEBOUNCE ); 3.3.2 控制电路设计与实现 密码锁的控制电路是整个电路的控制中心,主要完成对数字按键输入 14 和功能按键输入的相应控制。 1数字按键输入的响应控制 (1)如果按下数字键,第一个数字会从显示其的最右端开始显示, 此后每新按一个数字时,显示器上的数字必须左移一格,以便将新的数字 显示出来。 (2)假如要更改输入的数字,可以按倒退按键来清除前一个输入的 数字,或者按清除键清除所有出入的数字,再重新输入四位数。 (3)当输入的数字键超过预设位数时,电路不予理会,而且不再显 示以后的数字。 2。功能按键输入的响应控制 (1)清除键:清除所有的输入数字,即作归零动作。 (2)激活电锁键:按下此键时可将密码锁的门上锁。 (3)解除电锁键:按下此键会检查输入的密码是否正确,若密码正 确无误则开门。 使用电子密码锁的时候,只会用到三种工作模式,其中输入文字模式 用的是数字按键,只有上锁和开锁两个模式必须占用功能按键。但是在实 际操作中,难免会有按错键的情况发生,使得“清除输入”功能是用的机 率很高,所以在设计中共设置了两个功能按键,其中“接触电锁”和“清 除电锁”共用一个功能按键,另一个功能按键是“激活电锁” 。 -CTRL.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CTRL IS 15 PORT (DATA_N: IN STD_LOGIC_VECTOR(3 DOWNTO 0); DATA_F: IN STD_LOGIC_VECTOR(3 DOWNTO 0); FLAG_N: IN STD_LOGIC; FLAG_F: IN STD_LOGIC; CLK: IN STD_LOGIC; ENLOCK: OUT STD_LOGIC; -1: LOCK, 0: UNLOCK DATA_BCD: OUT STD_LOGIC_VECTOR (15 DOWNTO 0); END ENTITY CTRL ; ARCHITECTURE ART OF CTRL IS SIGNAL ACC, REG: STD_LOGIC_VECTOR (15 DOWNTO 0); -ACC 用于暂存键盘输入的信息,REG 用于存储输入的密码 SIGNAL NC: STD_LOGIC_VECTOR (2 DOWNTO 0); SIGNAL RR2, CLR, BB, QA, QB: STD_LOGIC; SIGNAL R1, R0: STD_LOGIC; BEGIN -寄存器清零信号的产生进程 PROCESS(CLK) BEGIN IF CLKEVENT AND CLK=1 THEN R1 N N N N N N N N N N N CLK, CLRN = INV_D, PRN = VCC, D =VCC , Q = Q0); U2: DCFQ PORT MAP (CLK = CLK, CLRN = Q0, PRN = VCC, D =VCC , Q = Q1); PROCESS (CLK) BEGIN IF CLKEVENT AND CLK=1 THEN D0 KEY_IN(0) , D_OUT = C(0), CLK = C_DEBOUNCE); U2: DEBOUNCING PORT MAP (D_IN = KEY_IN(1) , D_OUT = C(1), CLK = C_DEBOUNCE); U3: DEBOUNCING PORT MAP (D_IN = KEY_IN(2) , D_OUT = C(2), CLK = C_DEBOUNCE ); END BLOCK DEBOUNUING ; KEY_DECODER : BLOCK SIGNAL Z : STD_LOGIC_VECTOR(4 DOWNTO 0) ; BEGIN PROCESS(CLK) BEGIN Z N N N N N N N N N N N F F F = “1000“ ; END CASE ; END IF ; END PROCESS ; FN = NOT ( N(3) AND N(2) AND N(1) AND N(0) ) ; FF = F(2) OR F(0) ; END BLOCK KEY_DECODER ; 33 END ARCHITECTURE ART; 3密码锁控制电路程序 -CTRL.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARIT

温馨提示

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

评论

0/150

提交评论