电子密码锁设计.doc
《电子密码锁设计.doc》由会员分享,可在线阅读,更多相关《电子密码锁设计.doc(37页珍藏版)》请在咨信网上搜索。
电子密码锁设计 电子密码锁设计 摘要:本课题设计的主要是基于CPLD/FPGA来实现电子密码锁的设计,主要包括输入、控制和输出三大模块。其中输出部分由显示缓冲器、多路选通器、显示模块、时钟发生器、扫描信号发生器组成。显示缓存器是一个存储量为16位的寄存器,它用于存储LED显示的内容。多路选通器用于从显示缓存器中选择出某一个LED的内容用于显示。扫描信号用于选择片选信号,片选信号依次并循环地选通各个LED管时钟发生器,通过对全局时钟的分频得到扫描模块所需的时钟。显示模块由七段译码器和七段显示器组成。总体上输出部分电路的设计都是基于VHDL语言来实现的。 关键词:电子密码锁 FPGA 硬件描述语言 EDA 目录 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/FPGA 11 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.1设计的优缺点 32 5.2可以改进的地方 32 5.3结语 32 参考文献 34 致谢 35 1 引言 随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,又要使用方便,这也是制锁者长期以来研制的主题。随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。据有关资料介绍,电子密码锁的研究从20世纪30年代就开始了,在一些特殊场所早就有所应用。这种锁是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就是为提高锁的安全性。由于电子锁的密钥量(密码量)极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。但较实用的还是按键式电子密码锁。 目前使用的电子密码锁大部分是基于单片机技术,以单片机为主要器件,其编码器与解码器的生成为软件方式。在实际应用中,由于程序容易跑飞,系统的可靠性能较差。基于现场可编程逻辑门阵列FPGA器件的电子密码锁,用FPGA器件构造系统,所有算法完全由硬件电路来实现,使得系统的工作可靠性大为提高。 本课题设计的电子密码锁是基于CPLD/FPGA。电子密码锁主要由输入部分,控制部分和输出部分组成。其中输入部分包括4×4矩阵键盘、弹跳消除电路、键盘译码电路、键盘扫描电路;控制部分包括按键存储电路、密码存储电路、比较电路;输出部分包括多路选通器、七段译码器、扫描信号发生器。该密码锁具有密码输入、密码清除、密码激活、电锁解除和密码更改等功能,用一片复杂可编程逻辑芯片CPLD实现,因此它体积小、功耗低、价格便宜,维护和升级都十分方便,具有较好的应用前景主要应用有:汽车锁,门锁,保险柜,仓库。 2 概述 2.1 MAX+PLUSⅡ的概述 Altera公司的MAX+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内存、1GB以上硬盘,10.x版需64MB内存、2GB以上硬盘。 MAX+PLUSⅡ的设计过程可用图2-1表示: 设计输入 项目编译 功能时序仿真项目校正 编程/配置 (可以使用原理图或文本输入设计要求) (用于检验设计输入是否正确) (用于检验所设计的电路功能是否符合设计要求) (将正确的设计通过计算机下载到硬件电路上,使其具有与设计电路相符的逻辑功能) 图2-1 MAX+PLUSⅡ设计流程图 为使设计者快速掌握MAX + PLUS II软件的使用,我们首先介绍MAX + PLUS II软件的设计流程,它是由设计输入、设计处理、设计校验和器件编程四部分组成的。 2.1.1 设计输入 MAX + PLUS II软件的设计输入方法有多种多样,主要包括文本输入方式、原理图设计输入方式、波形设计输入方式、层次设计输入方式和低层设计输入方式。另外还可以利用第三方EDA工具生成的网络表文件输入。输入法不同,生成的设计文件也不同,设计者可以根据自己的需要灵活掌握。 (1)原理图输入 利用MAX + PLUS II提供的各种原理图库进行设计输入是一种最为直接的、也是我们最容易掌握的一种方法。使用该方法时,通过采用自顶向下的设计方式,将大规模的电路分成若干小块进行设计。该方法虽然效率较低,但容易实现仿真,便于信号的观察和电路的调整。 (2)硬件描述语言输入 MAX + PLUS II包含一个集成的文本编辑程序,适合与输入和编辑用Altera硬件描述语言编写的设计文件,MAX + PLUS II可以对这些语言表达的逻辑进行综合,并将其映射到Altera的任何器件中。采用语言描述的优点是效率较高,结果也较容易仿真,信号观察也较方便,但语言输入必须依赖综合器。 (3)波形输入 波形编辑程序(MAX+PLUS II Waveform Editor)用于建立和编辑波形设计文件及输入仿真向量和功能测试向量。波形编辑还有分析仪的功能,设计者可以通过它查看仿真结果。 波形设计输入最适合于时序和重复的函数。MAX+PLUS II Compiler采用先进的波形综合法,可以根据用户定义的输入/输出波形自动生成逻辑关系。 (4)低层编辑 低层编辑程序(MAX+PLUS II F loorpian Editor)简化了向器件引脚和逻辑单元分配逻辑的过程。设计方案中使用的表示每种器件的图形很容易进行逻辑布局,高层的和详细器件视图都可以使用设计者可以在对设计进行编译之前分配引脚和逻辑单元,编译之前分配引脚和逻辑单元,编译后再来察看或修改结果。 低层编译允许设计者观察器件中所有已分配的逻辑。任何节点或引脚都可以被拉到新的位置。可以把逻辑分配给专用引脚和逻辑单元,也可以分配给器件中更加合适的区域。 (5)层次设计输入 层次设计可包含几种不同格式建立的设计文件,例如原理图输入、HDL设计输入、波形设计输入和EDIF网络表输入等。MAX+PLUSII在设计方案中支持多级层次,这种灵活性设计者可以采用最适合设计中每个部分的设计输入方法。MAX+PLUSII层次显示程序可以显示方案的层次结构,允许设计者穿越层次,自动打开适合于每个设计文件的编辑。 (6)网表输入库 MAX+PLUSII COMPILER可以与其他EDA工具接口。采用这种方法输入,可以把其他软件系统上设计的电路直接移植起来,不必重新输入。MAX+PLUSII软件可以接受的网表有EDIF格式、VHDL格式及VERLIOG格式等。在用网表输入时,必须注意在两个系统中所采用库的对应关系,所有库单元必须一一对应,才可以成功读入网表。 2.1.2 设计处理 MAX+PLUS II 处理一个设计时,MAX+PLUS II Compile在设计文件中读取信息并产生编辑文件和仿真文件,定时分析程序(Timing Analyzer)可分析设计的定时,信息处理程序(Mesage Processor)可自动定位错误。 (1)自动错位定位 MAX+PLUS II 的 Mesage Processor 与 MAX+PLUS II所有应用程序通信,可以给出信息(错误、警告等)。设计者可利用他自动打开有错误的文件,并一高亮度方式显示错误位置。 (2)逻辑综合与试配 MAX+PLUS II Compiler的逻辑综合(Logic Synthesis)模块对设计方案进行逻辑综合并能看到设计实现的真实结果,该模块选择合适的逻辑化简算法,去除剩余逻辑,确保尽可能有效地使用器件的逻辑资源,还可设计方案中没用的逻辑。 逻辑综合选择有助于设计人员引导逻辑综合的结果。Altera提供,NORMAL(正常)、FAST(快速)、时钟到输出的延时、建立时间、和时钟频率等。设计者可以为选定的逻辑功能指定定时要求,也可以把设计作为一个事例来指定定时要求。Fitter的报告文件提供详细信息一说明设计的定时要求是如何实现的。 (4)设计规则检查 MAX+PLUS II Compiler 包括设计规则检查器(Design Doctor)。该程序将检查项目中的所有设计文件,以发现在编辑器件中可能存在的可靠性不好的逻辑。 设计规则可靠性高,涉及到含有异步输入、行波时钟、以时钟为基础的多级逻辑、置位与清除的配置及竞争条件等的逻辑。 (5)多器件划分 如果一个设计文件较大,一个器件放不下的话,可以自动或由用户控制将一个大的设计文件划分成几个小文件,装人多个器件中。 注意:划分时尽量减少器件的数量及减少器件通信的引脚数目。 (6)工业标准输出格式 MAX+PLUSII Compiler可以建立多种仿真环境里的网表,这些网表包含结合后的功能,以及其他标准校验工具进行器件或板极仿真时使用的定时信息。 以下接口可供使用: l EDIF 接口 建立EDIF200和EDIF300网表。 l Verilog接口 建立与Verilog-XL仿真器一起使用的Verilog网表。 l VHDL接口 建立与VHDL仿真器一起使用的VHDL网表。 (7)编程文件的产生 装配程序(Assembler)模块为一个已编译的设计创建一个或多个编程目标文件(.pof)、SRAM目标文件(.sof)或JEDEC文件(.jed)。MAX+PLUSII编译器使用这些文件和标准的A 硬件对器件进行编程。使用工业标准的其他编程设备也可对器件编程。此外,MAX+PLUSII可以产生I格式的十六进制文件(.hex)、T文本文件(.ttf)和配置FLEX8000器件使用的串行位流文件(.sbf)。 2.1.3设计校验 设计校验过程包括设计仿真和定时分析,其作用是测试逻辑操作和设计的内部定时。 (1)仿真 编译成功的设计不一定完成正确,只是通过仿真才能验证电路是否正达到设计要求。Simulation可分为三种仿真,即逻辑特性 (Functional)仿真、时延特性 (Timing)仿真和链接(Linked)仿真,仿真器利用编译器产生的数据文件工作。 MAX+PLUS II提供了功能编译选项。此时,只运行仿真网表的提取,而不作布局线,所以,此时的仿真没有延时信息,所有的延时均为零延时,而可以预测所有内信号,对于初步的功能检测非常方便。 功能检查完成后,需进行后仿真。MAX+PLUS II的仿真具有很强的灵活性,可以控制对单器件或多器件设计的仿真,仿真器使用编译期间生产的二进制仿真网表进行功能和定时的仿真,或把组和连接起来的多个器件作为一个设计进行仿真。 可以使用简明的向量输入语言定义输入激励,也可以使用 MAX+PLUS II的波形编辑程序直接画出波形。仿真结果可以在波形编辑器中看到,也可以作为波形文件或文本打印出来。 (2)定时分析 MAX+PLUS II的定时分析器(Timing Analyzer)可以计算点到点的器件延时矩阵,确定器件引脚上建立时间与保持时间要求,还可以计算最高的时钟频率。MAX+PLUS II的设计输入工具与Timing Analyzer集成在一起,这样只需简单地将设计中的起点和终端加上标志即可确定最短与最长的传播延时。此外,Message Processor可以找出Timing Analyzer在设计文件中已证实的关键路径,并在适当的设计编辑器中加以显示。 2.2 MAX+PLUS II软件的设计流程 由前面叙述可知,MAX+PLUS II 软件设计的流程应包括以下几个部分,如图2-2所示。 设计输入 设计修改 项目编译 设计仿真 器件编程 系统测试 图 2-2 (1)设计输入 可以采用原理图输入、HDL语言描述、EDIF网表读入等方式。 (2)编译 主要完成器件的选择及适配,逻辑的综合及器件的装入,延时信息的提取。 (3)前仿真 此时为0延时模式,主要为检验输入是否有误。 (4)后仿真 将编译产生的延时信息加入到设计中,进入布局布线后的仿真,是与实际器件工作时情况基本相同的仿真。 (5)编程验证 用后仿真确认的配置文件经EPROM或编程电缆配置CPLD,加入实际激励,进行测试,以检查是否完成预定功能。 以上各步如果出现错误的现象,则需重新回到设计输入阶段,改成错误输入或调整电路并重上述过程。 2.3 VHDL语言简介 VHDL是在70~80年代中,由美国国防部资助的VHSIC项目开发的产品。在这个语言首次开发出来时,其目标仅是一个使电路文本化的一种标准,使人们采用文本方式描述的设计能够被其他人所理解。VHDL于1987年由IEEE 1076标准所确认,1993年IEEE 1076标准被升级、更新,新的VHDL标准为IEEE 1164,1996年IEEE 1076.3成为VHDL综合标准。现在,VHDL已成为一个数字电路和系统的描述、建模、综合的工业标准,在电子产业界,无论是ASIC设计人员,还是系统级设计人员,都需要学习VHDL来提高他们的工作效率。利用VHDL及自顶向下设计方法在大型数字系统设计中被广泛采用,在设计中可采用较抽象的语言来描述系统结构,然后细化成各模块,最后借助编译器将VHDL描述综合为门级。 2.3.1 VHDL的基本结构 1.VHDL的组成 一个VHDL设计由若干个VHDL文件构成,每个文件主要包含如下三个部分中的一个或全部: 程序包(Package); 实体(Entity); 结构体(Architecture)。 一个完整的VHDL设计必须包含一个实体和一个与之对应的结构体,一个实体可对应多个结构体,以说明采用不同方法来描述电路。 2. 程序包(Package) 程序包是用来单纯罗列VHDL语言中所要用到的信号定义、常数定义、数据类型、元件语句、函数定义和过程定义等,它是一个可编译的设计单元,也是库结构中的一个层次。 一个程序包由两大部分组成:包头(Header)和包体(Package Body),其中包体是一个可选项,也就是说,程序包可以只由包头构成。一般包头列出所有项的名称,而在包体具体给出各项的细节。 3.库(Library) 库是专门存放预先编译好的程序包(package)的地方。在VHDL语言中,库的说明总是放在设计单元的最前面: LIBRARY 库名; 这样,在设计单元内的语句就可以使用库中的数据。由此可见,库的好处就在于使设计者可以共享已经编译过的设计结果。在VHDL语言中可以存在多个不同的库,但是库和库之间是独立的,不能互相嵌套。实际中一个库就对应一个目录,预编译程序包的文件就放在此目录中。用户自建的库即为设计文件所在目录,库名与目录名的对应关系可在编译软件中指定。 4.实体(Entity) 实体是VHDL设计中最基本的模块,VHDL表达的所有设计均与实体有关。设计的最顶层是顶层实体。如果设计分层次,那么在顶层实体中将包含较低级别的实体。 实体中定义了该设计所需的输入/输出信号,信号的输入/输出类型被称为端口模式,同时实体中还定义他们的数据类型。 5.结构体(Architecture) 结构体是VHDL设计中最主要部分,它具体地指明了该基本设计单元的行为、元件及内部的连接关系,也就是说它定义了设计单元具体的功能。结构体对其基本设计单元的输入输出关系可以用3种方式进行描述,即行为描述(基本设计单元的数学模型描述)、寄存器传输描述(数据流描述)和结构描述(逻辑元件连接描述)。不同的描述方式,只体现在描述语句上,而结构体的结构是完全一样的。 一个完整的、能被综合实现的VHDL设计必须有一个实体和对应的结构体,一个实体可以对应一个或多个结构体,由于结构体是对实体功能的具体描述,因此它一定要跟在实体的后面,通常先编译实体后才能对结构体进行编译。 2.3.1 CPLD/FPGA FPGA(Field Programmable Gates Array 现场可编程门阵列,内部结构为门阵列构成静态存储器(SRAM)。该SRAM可构成函数发生器,即查找表,通过查找表可实现逻辑函数功能) ,CPLD(Complex Programmable Logic Device 复杂可编程逻辑器件,内部结构为“与或阵列”。该结构来自于典型的PAL、GAL器件的结构。任意一个组合逻辑都可以用“与—或”表达式来描述,所以该“与或阵列”结构能实现大量的组合逻辑功能)。FPGA具有体系结构和逻辑单元灵活、集成度高以及适用范围宽FPGA等特点。兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。与门阵列等其它ASIC相比,它又具有设计开发什么是周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产(一般在10,000件以下)之中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA。CPLD它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点,可实现较大规模的电路设计。 硬件描述语言是EDA技术的重要组成部分,VHDL是电子设计的主流硬件描述语言。 VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。1987年底, VHDL被IEEE ( The Institute of Electrical and Electronics Engineers)和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本(IEEE-1076)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本。现在,VHDL作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。VHDL主要应用于数字电路的设计中,尤其是在(FPGA/CPLD/ispPLS和IASIC等芯片的设计中应用更加广泛。(本次设计是关于CPLD的设计) 2.3.2 VHDL的优点 VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项设计实体(可以是一个元件、一个电路模块或一个系统)分成外部和内部两个基本点部分,其中外部为可见部分,即系统的端口,而内部则是不可视部分,即设计实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的,具体如下: 1) 设计技术齐全、方法灵活、支持广泛。VHDL语言可以支持自上至下和基于库的设计法,而且还支持同步电路、异步电路及其他随机电路的设计。目前大多数EDA工具都支持VHDL语言。 2) VHDL具有更强的系统硬件描述能力, VHDL具有多层次描述系统硬件功能的能力,其描述对象可从系统的数学模型直到门级电路。 3) VHDL语言可以与工艺无关编程。在用VHDL语言设计系统硬件时,没有嵌入与工艺有关的信息。当门级或门级以上层次的描述通过仿真检验以后,再用相应的工具将设计映射成不同的工艺。这样,在工艺更新时,就无须修改原设计程序,只要改变相应的映射工具。 4) VHDL语言标准、规范,易于共享和复用 3 总体设计 3.1系统框图 键盘输入 弹跳消除电路 键盘译码电路 按键数据缓冲器 键盘扫描电路 工作时钟脉冲信号 密码锁存器 比较器 多路选通器 七段译码器 时钟发生器 扫描信号发生器 CLK 七段码输出 比较结果输出 修改密码时输入 开锁时输入 图3-1 系统框图 3.2系统说明 3.2.1系统原理 键盘扫描电路用来产生扫描信号,扫描信号KY32KY0 按照1110 - 1101 - 1011 - 0111 - 1110⋯⋯的规律依次变化,通过输出KX22KX0来检测是否有键按下,如扫描信号示1101,表示正在扫描4 ,5 ,6 这三个键,如果这三个键多没被按下,则KX[2∶0 ]输出为111,如果数字键4 按下,KX[2∶0 ]将会输出为011。按键输入信号,若被按下的是数字键,则解码成相应的BCD 码,若被按下的是功能键,则解码成4 位二进制的码字,由密码锁控制电路作相应的动作。为防止每次扫描产生新的按键数据覆盖前面的数据,通过按键数据缓冲器将整个键盘扫描后的结果记录下来。当按下数字键时,输入的数字在最右边的数码管中显示,数码管原先的数据向左移动一位;如果不慎输入错误,则按清除键清除所输入的数字,重新开始输入四位数字。由于此处密码设置为四位,如果超过四位,则后面的被忽略。输入四位密码后,按下激活电锁键,则将所输入的四位设置为电锁密码。解锁的过程是先输入四位数字,然后按下解除电锁键,如果输入的四位数字与密码相同,则开锁。反之打不开锁。按键数据缓冲器所存储的数据经由多路选通器到七段译码电路, 将其转换成七段显示器的显示码, 转送到七段显示器, 多路选通器与显示管选择必须同步。由于设计的是4位数的数字密码锁, 一位十进制数需要4个二进制位表示, 所以寄存器必须是16 位的。因为是以扫描的方式轮流被点亮的, 因此显示缓冲器上的数据必须一组一组地分开传送, 每次送4个位。 3.2.2各部分作用 (1)键盘输入 本设计选用的是4×3矩阵键盘,它是用4条I/O线作为行线,3条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键,当某键被按下时,该按键的接点会连接行线和列线,这样有按键按下时行线呈现逻辑0的状态,未按下时则呈现逻辑1状态。键盘电路的工作原理是通过行线送入扫描信号,然后从列线读取状态判断是否有按键按下。其方法是依次给行线送低电平,检查列线的输出。如果列线信号为高电平,则代表低电平信号所在的行中无按键按下;如果列线输入为低电平,则低电平信号所在的行和出现低电平的列的交点处有按键按下。扫描信号由KY3—KYO进入键盘,变化的顺序依次是:1110—1101—1011—0111—1110,每次扫描一行,依序循环。假设现在扫描信号为1101,即扫描“4”、“5”、“ 6”这一排按键,如果这排当中没有按键被按下的话,则列扫描信号KX2-KXO读出的值为111;反之,当“6”按键被按下时则由KX2-KXO读出的值为110,其它依次类推。由于矩阵式键盘是无法独自地完成按键工作的,要搭配时序产生电路、键盘扫描电路、弹跳消除电路、键盘译码电路才能可靠工作。键盘上的有效数据是0到9这十个数字键和两个功能键(*键:修改密码键;#键:输入数字小于四位时按下此键表示清除键,输入数字等于四位时表示开锁键)。 (2)弹跳消除电路 因为本次设计的按键采用机械式开关结构,在开关切换的瞬间会在接触点出现来回弹跳的现象,这种弹跳现象可能造成误动作而影响到正确性。本设计中采用延时的软件方法消除抖动,若采样信号检测到输入由“1”变到“0”或由“0”变为“1”,先延时2个周期 ,仍旧检测到是“0”或“1”,则说明按键状态确实发生了变化,否则当作抖动处理,不予理会。这样就消除了抖动。 (3)键盘译码电路 键盘中的按键可分为数字按键和功能按键,每个按健都有自己相应的作用,比如#键可以清除密码和开锁,*键可以设置密码。数字按键主要用来输入数字,键盘所产生的输出(KX2-KXO)无法直接拿来使用,因此必须由键盘译码电路来规划每个按键的输出形式,以便执行相应的动作。 (4)按键数据缓冲器 按键数据缓冲器将整个键盘扫描完毕后的结果记录下来,防止后面所得的数据覆盖前面扫描得到的数据。 (5)键盘扫描电路 键盘扫描电路是用于产生KY3-KY0信号,即键盘的行扫描信号。每扫描一排按键,就检查一次是否有按键被按下,如果这排没有按键被按下就忽略。反之,如果出现被按下的键则立即进行按键编码的动作,且将编码的结果存储于寄存器中。扫描停留在每个状态的时间大约为10ms。更短的停留时间容易采集到陡动信号,会干扰判断。而太长的停留时间则容易丢失某些较快的按键动作。 (6)密码锁存器 输入控制电路信号由按键数据缓冲器产生的,在按下解锁信号后其全部数据送入比较器,解锁后,如果按下更改密码按键,则把所有数据送入预存密码寄存器。密码锁存器是一个16位的寄存器,负责保存密码。 (7)比较器 当按下数字键时,输入的数字在最右边的数码管中显示,数码管原先的数据向左移动一位;如果不慎输入错误,则按清除键清除所输入的数字,重新开始输入四位数字。由于此处密码设为四位,如果超过四位,则后面的被忽略。输入四位密码后,按下激活电锁键,则将所输入的四位设置为电锁密码。解锁的过程是先输入四位数字,然后按下解除电锁键,如果输入的四位数字与密码相同,则开锁。反之打不开锁。 (8)多路选通器 多路选通器将按键数据缓冲器中的输入密码与扫描信号发生器中的密码逐位进行比较, 当对应位数相同时,数值比较器的输出B = 1 然后进行下一位比较, 否则B=0 ,密码错误信号ERROR = 1 ,由计算器C2 记录密码错误次数, 比较到哪位。用记算器C1 的输出又作为多路选通器位选线, 当输入到扫描信号发生器中的4 位二进制密码与按键数据缓冲器中设定的4 位二进制密码完全相同, 比较结束, 位数比较器输出M= 1 ,这时,如果按开锁按键TRY = 1 ,密码锁就会打开OPEN= 1 ,如果开锁时三次密码输入不对,则报警。 (9)七段译码器 七段译码器用于把多路选通器输出的四位二进制数变为可以被数码管直接反应出来的气短码。七段译码器设置数码管的显示数值为0~9。 (10)时钟发生器 时钟产生器包含了一个计数器模块和一个译码输出模块,是通过计数器模块实现分频。从12MHZ的全局时钟得到10HZ的时钟,进行120000倍的分频。译码器的输出采用了寄存器锁存输出,为了消除毛刺。 (11)扫描信号发生器 扫描信号用于选择片选信号,片选信号依次并循环地选通各个LED管时钟发生器,通过对全局时钟的分频得到扫描模块所需的时钟。 3.3总体电路说明 3.3.1总体电路图 图3-2 总体电路图 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_BCD为输出信号。CLK为全局时钟,LD为同步加载使能,WR为写信号,ADDR为地址输入,SDATA为串行加载数据,DATA为并行加载数,DARAOUT为输出数据。 4 单元电路设计 4.1单元电路图 图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; --同步加载使能 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 --同步加载寄存器 PROCESS(clk) BEGIN IF(clk'event AND clk='1')THEN --并行加载 IF(ld='1')THEN dataout<=data; ELSIF(wr='1')THEN --串行加载 CASE addr IS WHEN "0000"=> dataout(3 DOWNTO 0)<=sdata; WHEN "0001"=> dataout(7 DOWNTO 4)<=sdata; WHEN "0010"=> dataout(11 DOWNTO 8)<=sdata; WHEN "0100"=> dataout(15 DOWNTO 12)<=sdata; WHEN OTHERS=> dataout(3 DOWNTO 0)<=sdata; END CASE; END IF; END IF; END PROCESS; END rtl; 波形图4-3如下: 图 4-3 显示缓冲器是一个可以同步并行加载信号,并且可以写入LED管数据的寄存器组。其外部接口如上图所示。其中CLK为全局时钟,LD为同步加载使能信号,DATA为并行加载数据,DATAOUT为寄存器输出,ADDR为单LED管数据写入的地址,SDATA为单LED管数据写入的数据,WR为写入信号。 (2)多路选通器 图 4-4 多路选通器的程序源代码 LIBRARY IEEE; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ledmux IS PORT( datain :IN STD_LOGIC_VECTOR(15 DOWNTO 0); --输入数据 ledaddr :IN STD_LOGIC_VECTOR(3 DOWNTO 0); --地址 dataout :OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); --输出数据 END ledmux; ARCHITECTURE rtl OF ledmux IS BEGIN --多路选通器 PROCESS(datain,ledaddr) BEGIN CASE ledaddr IS WHEN"0000"=>dataout<=datain(3 DOWNTO 0); WHEN"0001"=>dataout<=datain(7 DOWNTO 4); WHEN"0010"=>dataout<=datain(11 DOWNTO 8); WHEN"0100"=>dataout<=datain(15 DOWNTO 12); WHEN OTHERS=>null; END CASE; END PROCESS; END rtl; 波形图4-5如下: 图4-5 多路选通器(MUX)的外部接口如上图所示。其中DATAIN为多路选通器的数据输入,也是显示缓冲器的输出。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; clk_scan :BUFFER STD- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 密码锁 设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文