电子密码锁设计设计.doc

上传人:本田雅阁 文档编号:2043756 上传时间:2019-02-08 格式:DOC 页数:34 大小:238.02KB
返回 下载 相关 举报
电子密码锁设计设计.doc_第1页
第1页 / 共34页
电子密码锁设计设计.doc_第2页
第2页 / 共34页
电子密码锁设计设计.doc_第3页
第3页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《电子密码锁设计设计.doc》由会员分享,可在线阅读,更多相关《电子密码锁设计设计.doc(34页珍藏版)》请在三一文库上搜索。

1、- 1 - 摘要:本课题设计的主要是基于CPLD/FPGA来实现电子密码锁的设计,主要包括 输入、控制和输出三大模块。其中输出部分由显示缓冲器、多路选通器、显示 模块、时钟发生器、扫描信号发生器组成。显示缓存器是一个存储量为16位的 寄存器,它用于存储LED显示的内容。多路选通器用于从显示缓存器中选择出某 一个LED的内容用于显示。扫描信号用于选择片选信号,片选信号依次并循环地 选通各个LED管时钟发生器,通过对全局时钟的分频得到扫描模块所需的时钟。 显示模块由七段译码器和七段显示器组成。总体上输出部分电路的设计都是基 于VHDL语言来实现的。 关键词:电子密码锁 FPGA 硬件描述语言 ED

2、A - 2 - 目录 1 引言2 2 概述4 2.1 MAX+PLUS的概述.4 2.1.1 设计输入.5 2.1.2 设计处理.6 2.1.3 设计校验.7 2.2 MAX+PLUS II 软件的设计流程.8 2.3VHDL 语言简介.9 2.3.1 CPLD/FPGA11 2.3.2 VHDL 的优点12 3 总体设计13 3.1 系统框图13 3.2 系统说明14 3.2.1 系统原理.14 3.2.2 各部分作用15 3.3 总体电路说明18 3.3.1 总体电路图.18 3.3.2 总体原理说明19 4 单元电路设计20 4.1 单元电路图20 4.2 原理说明30 5 总结32 5

3、.1 设计的优缺点32 5.2 可以改进的地方32 5.3 结语32 参考文献34 致谢.35 - 3 - 1 1 引言引言 随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。 锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗, 又要使用方便,这也是制锁者长期以来研制的主题。随着电子技术的发展,各 类电子产品应运而生,电子密码锁就是其中之一。据有关资料介绍,电子密码 锁的研究从 20 世纪 30 年代就开始了,在一些特殊场所早就有所应用。这种锁 是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就是为提高锁的 安全性。由于电子锁的密钥量(密码量)极大,可

4、以与机械锁配合使用,并且 可以避免因钥匙被仿制而留下安全隐患。电子锁只需记住一组密码,无需携带 金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。电子 锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC 卡锁,生物锁等。但较实用 的还是按键式电子密码锁。 目前使用的电子密码锁大部分是基于单片机技术,以单片机为主要器件, 其编码器与解码器的生成为软件方式。在实际应用中,由于程序容易跑飞,系 统的可靠性能较差。基于现场可编程逻辑门阵列 FPGA 器件的电子密码锁,用 FPGA 器件构造系统,所有算法完全由硬件电路来实现,使得系统的工作可靠性 大为提高。 本课题设计的电子密码锁是基于 CP

5、LD/FPGA。电子密码锁主要由输入部分, 控制部分和输出部分组成。其中输入部分包括 44 矩阵键盘、弹跳消除电路、 键盘译码电路、键盘扫描电路;控制部分包括按键存储电路、密码存储电路、 比较电路;输出部分包括多路选通器、七段译码器、扫描信号发生器。该密码 锁具有密码输入、密码清除、密码激活、电锁解除和密码更改等功能,用一片复 杂可编程逻辑芯片 CPLD 实现,因此它体积小、功耗低、价格便宜,维护和升级 都十分方便,具有较好的应用前景主要应用有:汽车锁,门锁,保险柜,仓库。 - 4 - 2 2 概述概述 2.12.1 MAX+PLUSMAX+PLUS的概述的概述 Altera 公司的 MAX+

6、PLUS开发系统是一个完全集成化、易学易用的可编程 逻辑器件软件设计环境,可以在多种平台上运行,具有操作灵活、支持器件多、 设计输入方法灵活多变的特点,是用户设计、开发以 Altera PLD 器件为核心的 软件开发工具。 MAX+PLUS是 Multiple Array Matrix and Programmable Logic User System 的缩写,软件版本分基本版、商业版和学生版,学生版软件在功能上与 商业版类似,仅在可使用的芯片上受到限制。MAX+PLUS的 9.x 版和 10.x 版均 可安装在 WIN95 或 WIN98/2000 操作系统上,其中 9.x 版需 32MB

7、 内存、1GB 以 上硬盘,10.x 版需 64MB 内存、2GB 以上硬盘。 MAX+PLUS的设计过程可用图 2-1 表示: 设计输入 项目编译 功能时序仿真项目校正 编程/配置 (可以使用原理图或文本输入设计要求) (用于检验设计输入是否正确) (用于检验所设计的电路功能是否 符合设计要求) (将正确的设计通过计算机下载到硬件 电路上,使其具有与设计电路相符的逻 辑功能) 图 2-1 MAX+PLUS设计流程图 - 5 - 为使设计者快速掌握MAX + PLUS II软件的使用,我们首先介绍MAX + PLUS II软件的设计流程,它是由设计输入、设计处理、设计校验和器件编程四部分 组成

8、的。 2.1.1 设计输入 MAX + PLUS II软件的设计输入方法有多种多样,主要包括文本输入方式、 原理图设计输入方式、波形设计输入方式、层次设计输入方式和低层设计输入 方式。另外还可以利用第三方EDA工具生成的网络表文件输入。输入法不同, 生成的设计文件也不同,设计者可以根据自己的需要灵活掌握。 (1)原理图输入 利用MAX + PLUS II提供的各种原理图库进行设计输入是一 种最为直接的、也是我们最容易掌握的一种方法。使用该方法时,通过采用自 顶向下的设计方式,将大规模的电路分成若干小块进行设计。该方法虽然效率 较低,但容易实现仿真,便于信号的观察和电路的调整。 (2)硬件描述语

9、言输入 MAX + PLUS II包含一个集成的文本编辑程序,适合 与输入和编辑用Altera硬件描述语言编写的设计文件,MAX + PLUS II可以对这 些语言表达的逻辑进行综合,并将其映射到Altera的任何器件中。采用语言描述 的优点是效率较高,结果也较容易仿真,信号观察也较方便,但语言输入必须依 赖综合器。 (3)波形输入 波形编辑程序(MAX+PLUS II Waveform Editor)用于建立和 编辑波形设计文件及输入仿真向量和功能测试向量。波形编辑还有分析仪的功 能,设计者可以通过它查看仿真结果。 波形设计输入最适合于时序和重复的函数。MAX+PLUS II Compile

10、r采用先 进的波形综合法,可以根据用户定义的输入/输出波形自动生成逻辑关系。 (4)低层编辑 低层编辑程序(MAX+PLUS II F loorpian Editor)简化了向器件 引脚和逻辑单元分配逻辑的过程。设计方案中使用的表示每种器件的图形很容 易进行逻辑布局,高层的和详细器件视图都可以使用设计者可以在对设计进行 编译之前分配引脚和逻辑单元,编译之前分配引脚和逻辑单元,编译后再来察 看或修改结果。 低层编译允许设计者观察器件中所有已分配的逻辑。任何节点或引脚都可以 - 6 - 被拉到新的位置。可以把逻辑分配给专用引脚和逻辑单元,也可以分配给器件 中更加合适的区域。 (5)层次设计输入 层

11、次设计可包含几种不同格式建立的设计文件,例如原理 图输入、HDL设计输入、波形设计输入和EDIF网络表输入等。MAX+PLUSII在 设计方案中支持多级层次,这种灵活性设计者可以采用最适合设计中每个部分 的设计输入方法。MAX+PLUSII层次显示程序可以显示方案的层次结构,允许 设计者穿越层次,自动打开适合于每个设计文件的编辑。 (6)网表输入库 MAX+PLUSII COMPILER可以与其他EDA工具接口。采用 这种方法输入,可以把其他软件系统上设计的电路直接移植起来,不必重新输 入。MAX+PLUSII软件可以接受的网表有EDIF格式、VHDL格式及VERLIOG格 式等。在用网表输入

12、时,必须注意在两个系统中所采用库的对应关系,所有库 单元必须一一对应,才可以成功读入网表。 2.1.2 设计处理 MAX+PLUS II 处理一个设计时,MAX+PLUS II Compile在设计文件中读 取信息并产生编辑文件和仿真文件,定时分析程序(Timing Analyzer)可分析 设计的定时,信息处理程序(Mesage Processor)可自动定位错误。 (1)自动错位定位 MAX+PLUS II 的 Mesage Processor 与 MAX+PLUS II所 有应用程序通信,可以给出信息(错误、警告等) 。设计者可利用他自动打开有 错误的文件,并一高亮度方式显示错误位置。

13、(2)逻辑综合与试配 MAX+PLUS II Compiler的逻辑综合(Logic Synthesis) 模块对设计方案进行逻辑综合并能看到设计实现的真实结果,该模块选择合适 的逻辑化简算法,去除剩余逻辑,确保尽可能有效地使用器件的逻辑资源,还 可设计方案中没用的逻辑。 逻辑综合选择有助于设计人员引导逻辑综合的结果。Altera提供, NORMAL(正常) 、FAST(快速) 、时钟到输出的延时、建立时间、和时钟频 率等。设计者可以为选定的逻辑功能指定定时要求,也可以把设计作为一个事 例来指定定时要求。Fitter的报告文件提供详细信息一说明设计的定时要求是如 何实现的。 - 7 - (4)

14、设计规则检查 MAX+PLUS II Compiler 包括设计规则检查器 (Design Doctor)。该程序将检查项目中的所有设计文件,以发现在编辑器件中 可能存在的可靠性不好的逻辑。 设计规则可靠性高,涉及到含有异步输入、行波时钟、以时钟为基础的多 级逻辑、置位与清除的配置及竞争条件等的逻辑。 (5)多器件划分 如果一个设计文件较大,一个器件放不下的话,可以 自动或由用户控制将一个大的设计文件划分成几个小文件,装人多个器件中。 注意:注意:划分时尽量减少器件的数量及减少器件通信的引脚数目。 (6)工业标准输出格式 MAX+PLUSII Compiler可以建立多种仿真环境里 的网表,这

15、些网表包含结合后的功能,以及其他标准校验工具进行器件或板极 仿真时使用的定时信息。 以下接口可供使用: EDIF 接口 建立EDIF200和EDIF300网表。 Verilog接口 建立与Verilog-XL仿真器一起使用的Verilog网表。 VHDL接口 建立与VHDL仿真器一起使用的VHDL网表。 (7)编程文件的产生 装配程序(Assembler)模块为一个已编译的设计 创建一个或多个编程目标文件(.pof) 、SRAM目标文件(.sof)或JEDEC文件 (.jed) 。MAX+PLUSII编译器使用这些文件和标准的A 硬件对器件进行编程。 使用工业标准的其他编程设备也可对器件编程。

16、此外,MAX+PLUSII可以产生I 格式的十六进制文件(.hex) 、T文本文件(.ttf)和配置FLEX8000器件使用的串 行位流文件(.sbf) 。 2.1.3 设计校验 设计校验过程包括设计仿真和定时分析,其作用是测试逻辑操作和设计的内 部定时。 (1)仿真 编译成功的设计不一定完成正确,只是通过仿真才能验证电路 是否正达到设计要求。Simulation可分为三种仿真,即逻辑特性 (Functional)仿 真、时延特性 (Timing)仿真和链接(Linked)仿真,仿真器利用编译器产生的数 据文件工作。 - 8 - MAX+PLUS II提供了功能编译选项。此时,只运行仿真网表的

17、提取,而不 作布局线,所以,此时的仿真没有延时信息,所有的延时均为零延时,而可以 预测所有内信号,对于初步的功能检测非常方便。 功能检查完成后,需进行后仿真。MAX+PLUS II的仿真具有很强的灵活性, 可以控制对单器件或多器件设计的仿真,仿真器使用编译期间生产的二进制仿 真网表进行功能和定时的仿真,或把组和连接起来的多个器件作为一个设计进 行仿真。 可以使用简明的向量输入语言定义输入激励,也可以使用 MAX+PLUS II 的波形编辑程序直接画出波形。仿真结果可以在波形编辑器中看到,也可以作 为波形文件或文本打印出来。 (2)定时分析 MAX+PLUS II的定时分析器(Timing An

18、alyzer)可以计算点 到点的器件延时矩阵,确定器件引脚上建立时间与保持时间要求,还可以计算 最高的时钟频率。MAX+PLUS II的设计输入工具与Timing Analyzer集成在一起, 这样只需简单地将设计中的起点和终端加上标志即可确定最短与最长的传播延 时。此外,Message Processor可以找出Timing Analyzer在设计文件中已证实的关 键路径,并在适当的设计编辑器中加以显示。 2.22.2 MAX+PLUSMAX+PLUS IIII 软件的设计流程软件的设计流程 由前面叙述可知,MAX+PLUS II 软件设计的流程应包括以下几个部分, 如图2-2所示。 设计输

19、入 项目编译 设计仿真 器件编程 系统测试 设计修改 - 9 - 图 2-2 (1)设计输入 可以采用原理图输入、HDL语言描述、EDIF网表读入等方 式。 (2)编译 主要完成器件的选择及适配,逻辑的综合及器件的装入,延时信 息的提取。 (3)前仿真 此时为0延时模式,主要为检验输入是否有误。 (4)后仿真 将编译产生的延时信息加入到设计中,进入布局布线后的仿真, 是与实际器件工作时情况基本相同的仿真。 (5)编程验证 用后仿真确认的配置文件经EPROM或编程电缆配置CPLD, 加入实际激励,进行测试,以检查是否完成预定功能。 以上各步如果出现错误的现象,则需重新回到设计输入阶段,改成错误输

20、入或 调整电路并重上述过程。 2.32.3 VHDLVHDL 语言简介语言简介 VHDL 是在 7080 年代中,由美国国防部资助的 VHSIC 项目开发的产品。在 这个语言首次开发出来时,其目标仅是一个使电路文本化的一种标准,使人们 采用文本方式描述的设计能够被其他人所理解。VHDL 于 1987 年由 IEEE 1076 标准所确认,1993 年 IEEE 1076 标准被升级、更新,新的 VHDL 标准为 IEEE 1164,1996 年 IEEE 1076.3 成为 VHDL 综合标准。现在,VHDL 已成为一个数字 电路和系统的描述、建模、综合的工业标准,在电子产业界,无论是 ASI

21、C 设计 人员,还是系统级设计人员,都需要学习 VHDL 来提高他们的工作效率。利用 VHDL 及自顶向下设计方法在大型数字系统设计中被广泛采用,在设计中可采用 较抽象的语言来描述系统结构,然后细化成各模块,最后借助编译器将 VHDL 描 述综合为门级。 2.3.1 VHDL 的基本结构 1.VHDL 的组成 一个 VHDL 设计由若干个 VHDL 文件构成,每个文件主要包含如下三个部分 中的一个或全部: 程序包(Package) ; - 10 - 实体(Entity) ; 结构体(Architecture) 。 一个完整的 VHDL 设计必须包含一个实体和一个与之对应的结构体,一个实 体可对

22、应多个结构体,以说明采用不同方法来描述电路。 2. 程序包(Package) 程序包是用来单纯罗列 VHDL 语言中所要用到的信号定义、常数定义、数据 类型、元件语句、函数定义和过程定义等,它是一个可编译的设计单元,也是 库结构中的一个层次。 一个程序包由两大部分组成:包头(Header)和包体(Package Body) ,其 中包体是一个可选项,也就是说,程序包可以只由包头构成。一般包头列出所 有项的名称,而在包体具体给出各项的细节。 3.库(Library) 库是专门存放预先编译好的程序包(package)的地方。在 VHDL 语言中, 库的说明总是放在设计单元的最前面: LIBRARY

23、 库名; 这样,在设计单元内的语句就可以使用库中的数据。由此可见,库的好处 就在于使设计者可以共享已经编译过的设计结果。在 VHDL 语言中可以存在多个 不同的库,但是库和库之间是独立的,不能互相嵌套。实际中一个库就对应一 个目录,预编译程序包的文件就放在此目录中。用户自建的库即为设计文件所 在目录,库名与目录名的对应关系可在编译软件中指定。 4.实体(Entity) 实体是 VHDL 设计中最基本的模块,VHDL 表达的所有设计均与实体有关。 设计的最顶层是顶层实体。如果设计分层次,那么在顶层实体中将包含较低级 别的实体。 实体中定义了该设计所需的输入/输出信号,信号的输入/输出类型被称为

24、端口模式,同时实体中还定义他们的数据类型。 5.结构体(Architecture) 结构体是 VHDL 设计中最主要部分,它具体地指明了该基本设计单元的行为、 元件及内部的连接关系,也就是说它定义了设计单元具体的功能。结构体对其 - 11 - 基本设计单元的输入输出关系可以用 3 种方式进行描述,即行为描述(基本设 计单元的数学模型描述) 、寄存器传输描述(数据流描述)和结构描述(逻辑元 件连接描述) 。不同的描述方式,只体现在描述语句上,而结构体的结构是完全 一样的。 一个完整的、能被综合实现的 VHDL 设计必须有一个实体和对应的结构体, 一个实体可以对应一个或多个结构体,由于结构体是对实

25、体功能的具体描述, 因此它一定要跟在实体的后面,通常先编译实体后才能对结构体进行编译。 2.3.1 CPLD/FPGA FPGA(Field Programmable Gates Array 现场可编程门阵列,内部结构 为门阵列构成静态存储器(SRAM) 。该 SRAM 可构成函数发生器,即查找表,通 过查找表可实现逻辑函数功能) ,CPLD(Complex Programmable Logic Device 复杂可编程逻辑器件,内部结构为“与或阵列” 。该结构来自于典型的 PAL、GAL 器件的结构。任意一个组合逻辑都可以用“与或”表达式来描述, 所以该“与或阵列”结构能实现大量的组合逻辑功

26、能) 。FPGA 具有体系结构和 逻辑单元灵活、集成度高以及适用范围宽 FPGA 等特点。兼容了 PLD 和通用门阵 列的优点,可实现较大规模的电路,编程也很灵活。与门阵列等其它 ASIC 相比, 它又具有设计开发什么是周期短、设计制造成本低、开发工具先进、标准产品 无需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原 型设计和产品生产(一般在 10,000 件以下)之中。几乎所有应用门阵列、PLD 和 中小规模通用数字集成电路的场合均可应用 FPGA。CPLD 它具有编程灵活、集成 度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设 计者的硬件经验要求低、标

27、准产品无需测试、保密性强、价格大众化等特点, 可实现较大规模的电路设计。 硬件描述语言是 EDA 技术的重要组成部分,VHDL 是电子设计的主流硬件描 述语言。 VHDL 的英文全名是 Very-High-Speed Integrated Circuit Hardware Description Language,诞生于 1982 年。1987 年底, VHDL 被 IEEE ( The Institute of Electrical and Electronics Engineers)和美国国防部确认为 - 12 - 标准硬件描述语言。自 IEEE 公布了 VHDL 的标准版本(IEEE-1

28、076)之后,各 EDA 公司相继推出了自己的 VHDL 设计环境,或宣布自己的设计工具可以和 VHDL 接口。此后 VHDL 在电子设计领域得到了广泛的接受,并逐步取代了原有的非标 准硬件描述语言。1993 年,IEEE 对 VHDL 进行了修订,从更高的抽象层次和系 统描述能力上扩展 VHDL 的内容,公布了新版本的 VHDL,即 IEEE 标准的 1076- 1993 版本。现在,VHDL 作为 IEEE 的工业标准硬件描述语言,又得到众多 EDA 公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。VHDL 主要 应用于数字电路的设计中,尤其是在(FPGA/CPLD/ispPL

29、S 和 IASIC 等芯片的设 计中应用更加广泛。(本次设计是关于 CPLD 的设计) 2.3.2 VHDL 的优点 VHDL 主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具 有硬件特征的语句外,VHDL 的语言形式和描述风格与句法十分类似于一般的计 算机高级语言。VHDL 的程序结构特点是将一项设计实体(可以是一个元件、一 个电路模块或一个系统)分成外部和内部两个基本点部分,其中外部为可见部 分,即系统的端口,而内部则是不可视部分,即设计实体的内部功能和算法完 成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他 的设计就可以直接调用这个实体。这种将设计实体分成

30、内外部分的概念是 VHDL 系统设计的基本点。应用 VHDL 进行工程设计的优点是多方面的,具体如下: 1) 设计技术齐全、方法灵活、支持广泛。VHDL 语言可以支持自上至下和 基于库的设计法,而且还支持同步电路、异步电路及其他随机电路的设计。目 前大多数 EDA 工具都支持 VHDL 语言。 2) VHDL 具有更强的系统硬件描述能力, VHDL 具有多层次描述系统硬件功 能的能力,其描述对象可从系统的数学模型直到门级电路。 3) VHDL 语言可以与工艺无关编程。在用 VHDL 语言设计系统硬件时,没 有嵌入与工艺有关的信息。当门级或门级以上层次的描述通过仿真检验以后, 再用相应的工具将设

31、计映射成不同的工艺。这样,在工艺更新时,就无须修改 原设计程序,只要改变相应的映射工具。 4) VHDL 语言标准、规范,易于共享和复用 - 13 - 3 3 总体设计总体设计 3.13.1 系统框图系统框图 键盘输入弹跳消除电路键盘译码电 路 按键数据缓 冲器 键盘扫描电路 工作时钟脉冲 信号 密码锁存器 比较器 多路选通器 七段译码器 时钟发生器扫描信号发生器 CLK 七段码输出 比较结果输出 修改密码时输入 开锁时输入 图 3-1 系统框图 - 14 - 3.23.2 系统说明系统说明 3.2.1 系统原理 键盘扫描电路用来产生扫描信号,扫描信号 KY32KY0 按照 1110 - 11

32、01 - 1011 - 0111 - 1110的规律依次变化,通过输出 KX22KX0 来检测是否有键按 下,如扫描信号示 1101,表示正在扫描 4 ,5 ,6 这三个键,如果这三个键多没 被按下,则 KX20 输出为 111,如果数字键 4 按下,KX20 将会输出为 011。按键输入信号,若被按下的是数字键,则解码成相应的 BCD 码,若被按下 的是功能键,则解码成 4 位二进制的码字,由密码锁控制电路作相应的动作。 为防止每次扫描产生新的按键数据覆盖前面的数据,通过按键数据缓冲器将整 个键盘扫描后的结果记录下来。当按下数字键时,输入的数字在最右边的数码 管中显示,数码管原先的数据向左移

33、动一位;如果不慎输入错误,则按清除键 清除所输入的数字,重新开始输入四位数字。由于此处密码设置为四位,如果 超过四位,则后面的被忽略。输入四位密码后,按下激活电锁键,则将所输入 的四位设置为电锁密码。解锁的过程是先输入四位数字,然后按下解除电锁键, 如果输入的四位数字与密码相同,则开锁。反之打不开锁。按键数据缓冲器所 存储的数据经由多路选通器到七段译码电路, 将其转换成七段显示器的显示码, 转送到七段显示器, 多路选通器与显示管选择必须同步。由于设计的是 4 位数 的数字密码锁, 一位十进制数需要 4 个二进制位表示, 所以寄存器必须是 16 位的。因为是以扫描的方式轮流被点亮的, 因此显示缓

34、冲器上的数据必须一组 一组地分开传送, 每次送 4 个位。 3.2.2 各部分作用 (1)键盘输入 本设计选用的是 43 矩阵键盘,它是用 4 条 I/O 线作为行线,3 条 I/O 线 作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键,当某 键被按下时,该按键的接点会连接行线和列线,这样有按键按下时行线呈现逻 辑 0 的状态,未按下时则呈现逻辑 1 状态。键盘电路的工作原理是通过行线送 入扫描信号,然后从列线读取状态判断是否有按键按下。其方法是依次给行线 - 15 - 送低电平,检查列线的输出。如果列线信号为高电平,则代表低电平信号所在 的行中无按键按下;如果列线输入为低电平,

35、则低电平信号所在的行和出现低 电平的列的交点处有按键按下。扫描信号由 KY3KYO 进入键盘,变化的顺序依 次是:11101101101101111110,每次扫描一行,依序循环。假设现在 扫描信号为 1101,即扫描“4” 、 “5” 、 “ 6”这一排按键,如果这排当中没有按 键被按下的话,则列扫描信号 KX2-KXO 读出的值为 111;反之,当“6”按键被 按下时则由 KX2-KXO 读出的值为 110,其它依次类推。由于矩阵式键盘是无法独 自地完成按键工作的,要搭配时序产生电路、键盘扫描电路、弹跳消除电路、 键盘译码电路才能可靠工作。键盘上的有效数据是 0 到 9 这十个数字键和两个

36、 功能键(*键:修改密码键;#键:输入数字小于四位时按下此键表示清除键, 输入数字等于四位时表示开锁键) 。 (2)弹跳消除电路 因为本次设计的按键采用机械式开关结构,在开关切换的瞬间会在接触点 出现来回弹跳的现象,这种弹跳现象可能造成误动作而影响到正确性。本设计中 采用延时的软件方法消除抖动,若采样信号检测到输入由“1”变到“0”或由 “0”变为“1”,先延时 2 个周期 ,仍旧检测到是“0”或“1”,则说明按键状 态确实发生了变化,否则当作抖动处理,不予理会。这样就消除了抖动。 (3)键盘译码电路 键盘中的按键可分为数字按键和功能按键,每个按健都有自己相应的作用, 比如#键可以清除密码和开

37、锁,*键可以设置密码。数字按键主要用来输入数字, 键盘所产生的输出(KX2-KXO)无法直接拿来使用,因此必须由键盘译码电路来规 划每个按键的输出形式,以便执行相应的动作。 (4)按键数据缓冲器 按键数据缓冲器将整个键盘扫描完毕后的结果记录下来,防止后面所得的 数据覆盖前面扫描得到的数据。 (5)键盘扫描电路 键盘扫描电路是用于产生 KY3-KY0 信号,即键盘的行扫描信号。每扫描一 排按键,就检查一次是否有按键被按下,如果这排没有按键被按下就忽略。反 之,如果出现被按下的键则立即进行按键编码的动作,且将编码的结果存储于 - 16 - 寄存器中。扫描停留在每个状态的时间大约为 10ms。更短的

38、停留时间容易采集 到陡动信号,会干扰判断。而太长的停留时间则容易丢失某些较快的按键动作。 (6)密码锁存器 输入控制电路信号由按键数据缓冲器产生的,在按下解锁信号后其全部数 据送入比较器,解锁后,如果按下更改密码按键,则把所有数据送入预存密码 寄存器。密码锁存器是一个 16 位的寄存器,负责保存密码。 (7)比较器 当按下数字键时,输入的数字在最右边的数码管中显示,数码管原先的数据 向左移动一位;如果不慎输入错误,则按清除键清除所输入的数字,重新开始输入 四位数字。由于此处密码设为四位,如果超过四位,则后面的被忽略。输入四位 密码后,按下激活电锁键,则将所输入的四位设置为电锁密码。解锁的过程是

39、先 输入四位数字,然后按下解除电锁键,如果输入的四位数字与密码相同,则开锁。 反之打不开锁。 (8)多路选通器 多路选通器将按键数据缓冲器中的输入密码与扫描信号发生器中的密码逐 位进行比较, 当对应位数相同时,数值比较器的输出 B = 1 然后进行下一位比 较, 否则 B=0 ,密码错误信号 ERROR = 1 ,由计算器 C2 记录密码错误次数, 比 较到哪位。用记算器 C1 的输出又作为多路选通器位选线, 当输入到扫描信号 发生器中的 4 位二进制密码与按键数据缓冲器中设定的 4 位二进制密码完全相 同, 比较结束, 位数比较器输出 M= 1 ,这时,如果按开锁按键 TRY = 1 ,密码

40、锁 就会打开 OPEN= 1 ,如果开锁时三次密码输入不对,则报警。 (9)七段译码器 七段译码器用于把多路选通器输出的四位二进制数变为可以被数码管直接 反应出来的气短码。七段译码器设置数码管的显示数值为 09。 (10)时钟发生器 时钟产生器包含了一个计数器模块和一个译码输出模块,是通过计数器模 块实现分频。从 12MHZ 的全局时钟得到 10HZ 的时钟,进行 120000 倍的分频。 译码器的输出采用了寄存器锁存输出,为了消除毛刺。 - 17 - (11)扫描信号发生器 扫描信号用于选择片选信号,片选信号依次并循环地选通各个 LED 管时钟 发生器,通过对全局时钟的分频得到扫描模块所需的

41、时钟。 - 18 - 3.33.3 总体电路说明总体电路说明 3.3.1 总体电路图 图 3-2 总体电路图 - 19 - 3.3.2 总体电路图工作原理说明 CLK_1K 为时钟信号,KEY_IN 为按键输入信号,DATA_N 为数字键键数据, DATA_F 为功能键数据,FLAG_N 为数字键数据标志,FLAG_F 为功能键数据标志, CQD 为键盘输入采样时钟,KSEL 为键盘扫描信号,CSR 为按键位置。DATA_N 为 数据键数据,DATA_F 为功能键数据,CLK 为时钟信号, FLAG_N 为数据键数据 标志,FLAG_F 为功能键数据标志,ENLOCK 为开锁信号,DATA_B

42、CD 为输出信号。 CLK 为全局时钟,LD 为同步加载使能,WR 为写信号,ADDR 为地址输入,SDATA 为串行加载数据,DATA 为并行加载数,DARAOUT 为输出数据。 - 20 - 4 4 单元电路设计单元电路设计 4.14.1 单元电路图单元电路图 - 21 - 图 4-1 单元电路图 (1)显示缓冲器 图 4-2 显示缓冲器的程序源代码显示缓冲器的程序源代码 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY disp_buf IS PORT( clk :IN STD_LOGIC; -全局时钟 ld :IN STD_LOGIC;

43、 -同步加载使能 wr :IN STD_LOGIC; -写信号 addr :IN STD_LOGIC_VECTOR(3 DOWNTO 0); -地址输入 sdata :IN STD_LOGIC_VECTOR(3 DOWNTO 0); -串行加载数据 data :IN STD_LOGIC_VECTOR(15 DOWNTO 0); -并行加载数 dataout :OUT STD_LOGIC_VECTOR(15 DOWNTO 0); -输出数据 END disp_buf; ARCHITECTURE rtl OF disp_buf IS BEGIN -同步加载寄存器 - 22 - PROCESS(cl

44、k) BEGIN IF(clkevent AND clk=1)THEN -并行加载 IF(ld=1)THEN dataout dataout(3 DOWNTO 0) dataout(7 DOWNTO 4) dataout(11 DOWNTO 8) dataout(15 DOWNTO 12) dataout(3 DOWNTO 0)dataoutdataoutdataoutdataoutnull; END CASE; END PROCESS; END rtl; 波形图 4-5 如下: 图 4-5 多路选通器(MUX)的外部接口如上图所示。其中 DATAIN 为多路选通器的 数据输入,也是显示缓冲器

45、的输出。LEDADDR 为当前显示的 LED 管的地址,它 是扫描模块的输出。DATAOUT 为多路选通器的输出。 (3)时钟发生器 图 4-6 时钟发生器的程序源代码时钟发生器的程序源代码 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY led_clk_gen IS PORT(clk_4M :IN STD_LOGIC; - 25 - clk_scan :BUFFER STD_LOGIC_VECTOR(3 DOWNTO

46、 0); END led_clk_gen; ARCHITECTURE rtl OF led_clk_gen IS SIGNAL CLK,CLK_DEBOUNCE:STD_LOGIC; SIGNAL CLK_DISPLAY,CLK_KEYBOARD:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN COUNTER:block SIGNAL SEL:STD_LOGIC_VECTOR(3 DOWNTO 0); Signal Q:STD_LOGIC_VECTOR(22 DOWNTO 0); Signal S:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN

47、PROCESS(CLK_4M) BEGIN IF CLK_4MEvent AND CLK_4M=1 THEN Q1101-1011.0111 SELledselledselledselledselledseldoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=“0000000“; -其余 时候管子全部熄灭 end case; end process; end rtl; 波形图 4-11 如下: 图 4-11 显示部分的外部接口如上图所示。BCD 为 4 比特的 BCD 码输入,DOUT 为输 出,宽带为 7 为,即送到 LED 管显示用的七段码,即信号 a

48、、b、c、d、e、f 和 g。 - 30 - 4.24.2 显示缓存器工作原理显示缓存器工作原理 显示缓存器是一个存储量为 16 位的寄存器,它用于存储 LED 显示的内容。 所以 4 个数码管就需要 16 位的存储器。多路选通器用于从显示缓存器中选择出 某一个 LED 的内容用于显示。扫描信号用于选择片选信号,片选信号依次并循 环地选通各个 LED 管时钟发生器,通过对全局时钟的分频得到扫描模块所需的 时钟。七段译码模块把 4 位 BCD 码译成便于显示的七段码。该显示电路的工作 过程如下:寄存器所存储的数据经由数据选择器送到译码电路, 将其转换成七段 显示器的显示码, 转送到七段显示器,

49、数据选择与显示管选择必须同步。由于 设计的是 4 位数的数字密码锁, 一位十进制数需要 4 个二进制位表示, 所以显 示缓冲器必须是 16 位的寄存器。因为是以扫描的方式轮流被点亮的, 因此寄 存器上的数据必须一组一组地分开传送, 每次送 4 个位。 - 31 - 5 5 总结总结 5.15.1 设计的优缺点设计的优缺点 优点:本课题设计了一种新型的电子密码锁,其采用先进的 EDA 技术,利用 MAX +PLUX工作平台,使用了 CPLD/FPGA 芯片和 VHDL 语言。该密 码锁具有密码输入、密码清除、密码激活、电锁解除和密码更改等功能, 用一片复杂可编程逻辑芯片 CPLD/FPGA 实现,实现了所谓的片上系统, 可以极大减少其它分立元件或其它芯片的使用,有效地缩小了线路板面积, 增加了系统的可靠性,大大缩短了系统开发的周期。克服了传统电子密码 锁可靠性差、价格高的缺点,提高了系统的性价比。由于采用 VHDL 语 言进行层次化设计,用软件实现硬件电路,具有良好

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1