电子密码锁设计设计_第1页
电子密码锁设计设计_第2页
电子密码锁设计设计_第3页
电子密码锁设计设计_第4页
电子密码锁设计设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

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

2、 引言.22 概述.42.1 max+plus的概述.42.1.1 设计输入.52.1.2 设计处理.62.1.3 设计校验.72.2 max+plus ii 软件的设计流程.82.3vhdl 语言简介.92.3.1 cpld/fpga.112.3.2 vhdl 的优点.123 总体设计.133.1 系统框图.133.2 系统说明.143.2.1 系统原理.143.2.2 各部分作用.153.3 总体电路说明.183.3.1 总体电路图.183.3.2 总体原理说明.194 单元电路设计.204.1 单元电路图.204.2 原理说明.305 总结.325.1 设计的优缺点.325.2 可以改进

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

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

5、包括 44 矩阵键盘、弹跳消除电路、键盘译码电路、键盘扫描电路;控制部分包括按键存储电路、密码存储电路、比较电路;输出部分包括多路选通器、七段译码器、扫描信号发生器。该密码锁具有密码输入、密码清除、密码激活、电锁解除和密码更改等功能,用一片复杂可编程逻辑芯片 cpld 实现,因此它体积小、功耗低、价格便宜,维护和升级都十分方便,具有较好的应用前景主要应用有:汽车锁,门锁,保险柜,仓库。 - 4 -2 2 概述概述2.12.1 max+plusmax+plus的概述的概述altera 公司的 max+plus开发系统是一个完全集成化、易学易用的可编程逻辑器件软件设计环境,可以在多种平台上运行,具

6、有操作灵活、支持器件多、设计输入方法灵活多变的特点,是用户设计、开发以 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的设计过程可用图

7、 2-1 表示:设计输入项目编译功能时序仿真项目校正编程/配置(可以使用原理图或文本输入设计要求)(用于检验设计输入是否正确)(用于检验所设计的电路功能是否符合设计要求)(将正确的设计通过计算机下载到硬件电路上,使其具有与设计电路相符的逻辑功能)图 2-1 max+plus设计流程图- 5 - 为使设计者快速掌握max + plus ii软件的使用,我们首先介绍max + plus ii软件的设计流程,它是由设计输入、设计处理、设计校验和器件编程四部分组成的。2.1.1 设计输入max + plus ii软件的设计输入方法有多种多样,主要包括文本输入方式、原理图设计输入方式、波形设计输入方式、

8、层次设计输入方式和低层设计输入方式。另外还可以利用第三方eda工具生成的网络表文件输入。输入法不同,生成的设计文件也不同,设计者可以根据自己的需要灵活掌握。(1)原理图输入 利用max + plus ii提供的各种原理图库进行设计输入是一种最为直接的、也是我们最容易掌握的一种方法。使用该方法时,通过采用自顶向下的设计方式,将大规模的电路分成若干小块进行设计。该方法虽然效率较低,但容易实现仿真,便于信号的观察和电路的调整。(2)硬件描述语言输入 max + plus ii包含一个集成的文本编辑程序,适合与输入和编辑用altera硬件描述语言编写的设计文件,max + plus ii可以对这些语言

9、表达的逻辑进行综合,并将其映射到altera的任何器件中。采用语言描述的优点是效率较高,结果也较容易仿真,信号观察也较方便,但语言输入必须依赖综合器。(3)波形输入 波形编辑程序(max+plus ii waveform editor)用于建立和编辑波形设计文件及输入仿真向量和功能测试向量。波形编辑还有分析仪的功能,设计者可以通过它查看仿真结果。 波形设计输入最适合于时序和重复的函数。max+plus ii compiler采用先进的波形综合法,可以根据用户定义的输入/输出波形自动生成逻辑关系。(4)低层编辑 低层编辑程序(max+plus ii f loorpian editor)简化了向器

10、件引脚和逻辑单元分配逻辑的过程。设计方案中使用的表示每种器件的图形很容易进行逻辑布局,高层的和详细器件视图都可以使用设计者可以在对设计进行编译之前分配引脚和逻辑单元,编译之前分配引脚和逻辑单元,编译后再来察看或修改结果。 低层编译允许设计者观察器件中所有已分配的逻辑。任何节点或引脚都可以- 6 -被拉到新的位置。可以把逻辑分配给专用引脚和逻辑单元,也可以分配给器件中更加合适的区域。(5)层次设计输入 层次设计可包含几种不同格式建立的设计文件,例如原理图输入、hdl设计输入、波形设计输入和edif网络表输入等。max+plusii在设计方案中支持多级层次,这种灵活性设计者可以采用最适合设计中每个

11、部分的设计输入方法。max+plusii层次显示程序可以显示方案的层次结构,允许设计者穿越层次,自动打开适合于每个设计文件的编辑。(6)网表输入库 max+plusii compiler可以与其他eda工具接口。采用这种方法输入,可以把其他软件系统上设计的电路直接移植起来,不必重新输入。max+plusii软件可以接受的网表有edif格式、vhdl格式及verliog格式等。在用网表输入时,必须注意在两个系统中所采用库的对应关系,所有库单元必须一一对应,才可以成功读入网表。2.1.2 设计处理max+plus ii 处理一个设计时,max+plus ii compile在设计文件中读取信息并产

12、生编辑文件和仿真文件,定时分析程序(timing analyzer)可分析设计的定时,信息处理程序(mesage processor)可自动定位错误。(1)自动错位定位 max+plus ii 的 mesage processor 与 max+plus ii所有应用程序通信,可以给出信息(错误、警告等) 。设计者可利用他自动打开有错误的文件,并一高亮度方式显示错误位置。(2)逻辑综合与试配 max+plus ii compiler的逻辑综合(logic synthesis)模块对设计方案进行逻辑综合并能看到设计实现的真实结果,该模块选择合适的逻辑化简算法,去除剩余逻辑,确保尽可能有效地使用器件

13、的逻辑资源,还可设计方案中没用的逻辑。 逻辑综合选择有助于设计人员引导逻辑综合的结果。altera提供,normal(正常) 、fast(快速) 、时钟到输出的延时、建立时间、和时钟频率等。设计者可以为选定的逻辑功能指定定时要求,也可以把设计作为一个事例来指定定时要求。fitter的报告文件提供详细信息一说明设计的定时要求是如何实现的。- 7 - (4)设计规则检查 max+plus ii compiler 包括设计规则检查器(design doctor)。该程序将检查项目中的所有设计文件,以发现在编辑器件中可能存在的可靠性不好的逻辑。 设计规则可靠性高,涉及到含有异步输入、行波时钟、以时钟为

14、基础的多级逻辑、置位与清除的配置及竞争条件等的逻辑。 (5)多器件划分 如果一个设计文件较大,一个器件放不下的话,可以自动或由用户控制将一个大的设计文件划分成几个小文件,装人多个器件中。 注意:注意:划分时尽量减少器件的数量及减少器件通信的引脚数目。 (6)工业标准输出格式 max+plusii compiler可以建立多种仿真环境里的网表,这些网表包含结合后的功能,以及其他标准校验工具进行器件或板极仿真时使用的定时信息。 以下接口可供使用:edif 接口 建立edif200和edif300网表。verilog接口 建立与verilog-xl仿真器一起使用的verilog网表。 vhdl接口

15、建立与vhdl仿真器一起使用的vhdl网表。 (7)编程文件的产生 装配程序(assembler)模块为一个已编译的设计创建一个或多个编程目标文件(.pof) 、sram目标文件(.sof)或jedec文件(.jed) 。max+plusii编译器使用这些文件和标准的a 硬件对器件进行编程。使用工业标准的其他编程设备也可对器件编程。此外,max+plusii可以产生i格式的十六进制文件(.hex) 、t文本文件(.ttf)和配置flex8000器件使用的串行位流文件(.sbf) 。2.1.3 设计校验 设计校验过程包括设计仿真和定时分析,其作用是测试逻辑操作和设计的内部定时。 (1)仿真 编译

16、成功的设计不一定完成正确,只是通过仿真才能验证电路是否正达到设计要求。simulation可分为三种仿真,即逻辑特性 (functional)仿真、时延特性 (timing)仿真和链接(linked)仿真,仿真器利用编译器产生的数据文件工作。- 8 - max+plus ii提供了功能编译选项。此时,只运行仿真网表的提取,而不作布局线,所以,此时的仿真没有延时信息,所有的延时均为零延时,而可以预测所有内信号,对于初步的功能检测非常方便。 功能检查完成后,需进行后仿真。max+plus ii的仿真具有很强的灵活性,可以控制对单器件或多器件设计的仿真,仿真器使用编译期间生产的二进制仿真网表进行功能

17、和定时的仿真,或把组和连接起来的多个器件作为一个设计进行仿真。 可以使用简明的向量输入语言定义输入激励,也可以使用 max+plus ii的波形编辑程序直接画出波形。仿真结果可以在波形编辑器中看到,也可以作为波形文件或文本打印出来。(2)定时分析 max+plus ii的定时分析器(timing analyzer)可以计算点到点的器件延时矩阵,确定器件引脚上建立时间与保持时间要求,还可以计算最高的时钟频率。max+plus ii的设计输入工具与timing analyzer集成在一起,这样只需简单地将设计中的起点和终端加上标志即可确定最短与最长的传播延时。此外,message processo

18、r可以找出timing analyzer在设计文件中已证实的关键路径,并在适当的设计编辑器中加以显示。2.22.2 max+plusmax+plus iiii 软件的设计流程软件的设计流程由前面叙述可知,max+plus ii 软件设计的流程应包括以下几个部分,如图2-2所示。 设计输入项目编译设计仿真器件编程系统测试设计修改- 9 -图 2-2(1)设计输入 可以采用原理图输入、hdl语言描述、edif网表读入等方式。(2)编译 主要完成器件的选择及适配,逻辑的综合及器件的装入,延时信息的提取。(3)前仿真 此时为0延时模式,主要为检验输入是否有误。(4)后仿真 将编译产生的延时信息加入到设

19、计中,进入布局布线后的仿真,是与实际器件工作时情况基本相同的仿真。(5)编程验证 用后仿真确认的配置文件经eprom或编程电缆配置cpld,加入实际激励,进行测试,以检查是否完成预定功能。以上各步如果出现错误的现象,则需重新回到设计输入阶段,改成错误输入或调整电路并重上述过程。2.32.3 vhdlvhdl 语言简介语言简介vhdl 是在 7080 年代中,由美国国防部资助的 vhsic 项目开发的产品。在这个语言首次开发出来时,其目标仅是一个使电路文本化的一种标准,使人们采用文本方式描述的设计能够被其他人所理解。vhdl 于 1987 年由 ieee 1076标准所确认,1993 年 iee

20、e 1076 标准被升级、更新,新的 vhdl 标准为 ieee 1164,1996 年 ieee 1076.3 成为 vhdl 综合标准。现在,vhdl 已成为一个数字电路和系统的描述、建模、综合的工业标准,在电子产业界,无论是 asic 设计人员,还是系统级设计人员,都需要学习 vhdl 来提高他们的工作效率。利用vhdl 及自顶向下设计方法在大型数字系统设计中被广泛采用,在设计中可采用较抽象的语言来描述系统结构,然后细化成各模块,最后借助编译器将 vhdl 描述综合为门级。 2.3.1 vhdl 的基本结构1.vhdl 的组成一个 vhdl 设计由若干个 vhdl 文件构成,每个文件主要

21、包含如下三个部分中的一个或全部:程序包(package) ;- 10 -实体(entity) ;结构体(architecture) 。一个完整的 vhdl 设计必须包含一个实体和一个与之对应的结构体,一个实体可对应多个结构体,以说明采用不同方法来描述电路。2. 程序包(package)程序包是用来单纯罗列 vhdl 语言中所要用到的信号定义、常数定义、数据类型、元件语句、函数定义和过程定义等,它是一个可编译的设计单元,也是库结构中的一个层次。一个程序包由两大部分组成:包头(header)和包体(package body) ,其中包体是一个可选项,也就是说,程序包可以只由包头构成。一般包头列出所

22、有项的名称,而在包体具体给出各项的细节。3.库(library)库是专门存放预先编译好的程序包(package)的地方。在 vhdl 语言中,库的说明总是放在设计单元的最前面:library 库名;这样,在设计单元内的语句就可以使用库中的数据。由此可见,库的好处就在于使设计者可以共享已经编译过的设计结果。在 vhdl 语言中可以存在多个不同的库,但是库和库之间是独立的,不能互相嵌套。实际中一个库就对应一个目录,预编译程序包的文件就放在此目录中。用户自建的库即为设计文件所在目录,库名与目录名的对应关系可在编译软件中指定。4.实体(entity)实体是 vhdl 设计中最基本的模块,vhdl 表达

23、的所有设计均与实体有关。设计的最顶层是顶层实体。如果设计分层次,那么在顶层实体中将包含较低级别的实体。 实体中定义了该设计所需的输入/输出信号,信号的输入/输出类型被称为端口模式,同时实体中还定义他们的数据类型。5.结构体(architecture)结构体是 vhdl 设计中最主要部分,它具体地指明了该基本设计单元的行为、元件及内部的连接关系,也就是说它定义了设计单元具体的功能。结构体对其- 11 -基本设计单元的输入输出关系可以用 3 种方式进行描述,即行为描述(基本设计单元的数学模型描述) 、寄存器传输描述(数据流描述)和结构描述(逻辑元件连接描述) 。不同的描述方式,只体现在描述语句上,

24、而结构体的结构是完全一样的。一个完整的、能被综合实现的 vhdl 设计必须有一个实体和对应的结构体,一个实体可以对应一个或多个结构体,由于结构体是对实体功能的具体描述,因此它一定要跟在实体的后面,通常先编译实体后才能对结构体进行编译。2.3.1 cpld/fpgafpga(field programmable gates array 现场可编程门阵列,内部结构为门阵列构成静态存储器(sram) 。该 sram 可构成函数发生器,即查找表,通过查找表可实现逻辑函数功能) ,cpld(complex programmable logic device 复杂可编程逻辑器件,内部结构为“与或阵列” 。

25、该结构来自于典型的pal、gal 器件的结构。任意一个组合逻辑都可以用“与或”表达式来描述,所以该“与或阵列”结构能实现大量的组合逻辑功能) 。fpga 具有体系结构和逻辑单元灵活、集成度高以及适用范围宽 fpga 等特点。兼容了 pld 和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。与门阵列等其它 asic 相比,它又具有设计开发什么是周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产(一般在 10,000 件以下)之中。几乎所有应用门阵列、pld 和中小规模通用数字集成电路的场合均可应用 fpga。c

26、pld 它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点,可实现较大规模的电路设计。硬件描述语言是 eda 技术的重要组成部分,vhdl 是电子设计的主流硬件描述语言。vhdl 的英文全名是 very-high-speed integrated circuit hardware description language,诞生于 1982 年。1987 年底, vhdl 被 ieee ( the institute of electrical and electronics engineer

27、s)和美国国防部确认为- 12 -标准硬件描述语言。自 ieee 公布了 vhdl 的标准版本(ieee-1076)之后,各eda 公司相继推出了自己的 vhdl 设计环境,或宣布自己的设计工具可以和 vhdl接口。此后 vhdl 在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准硬件描述语言。1993 年,ieee 对 vhdl 进行了修订,从更高的抽象层次和系统描述能力上扩展 vhdl 的内容,公布了新版本的 vhdl,即 ieee 标准的 1076-1993 版本。现在,vhdl 作为 ieee 的工业标准硬件描述语言,又得到众多 eda公司的支持,在电子工程领域,已成为事实上的通

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

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

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

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

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

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

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

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

36、o)无法直接拿来使用,因此必须由键盘译码电路来规划每个按键的输出形式,以便执行相应的动作。(4)按键数据缓冲器按键数据缓冲器将整个键盘扫描完毕后的结果记录下来,防止后面所得的数据覆盖前面扫描得到的数据。(5)键盘扫描电路键盘扫描电路是用于产生 ky3-ky0 信号,即键盘的行扫描信号。每扫描一排按键,就检查一次是否有按键被按下,如果这排没有按键被按下就忽略。反之,如果出现被按下的键则立即进行按键编码的动作,且将编码的结果存储于- 16 -寄存器中。扫描停留在每个状态的时间大约为 10ms。更短的停留时间容易采集到陡动信号,会干扰判断。而太长的停留时间则容易丢失某些较快的按键动作。(6)密码锁存

37、器输入控制电路信号由按键数据缓冲器产生的,在按下解锁信号后其全部数据送入比较器,解锁后,如果按下更改密码按键,则把所有数据送入预存密码寄存器。密码锁存器是一个 16 位的寄存器,负责保存密码。(7)比较器当按下数字键时,输入的数字在最右边的数码管中显示,数码管原先的数据向左移动一位;如果不慎输入错误,则按清除键清除所输入的数字,重新开始输入四位数字。由于此处密码设为四位,如果超过四位,则后面的被忽略。输入四位密码后,按下激活电锁键,则将所输入的四位设置为电锁密码。解锁的过程是先输入四位数字,然后按下解除电锁键,如果输入的四位数字与密码相同,则开锁。反之打不开锁。(8)多路选通器 多路选通器将按

38、键数据缓冲器中的输入密码与扫描信号发生器中的密码逐位进行比较, 当对应位数相同时,数值比较器的输出 b = 1 然后进行下一位比较, 否则 b=0 ,密码错误信号 error = 1 ,由计算器 c2 记录密码错误次数, 比较到哪位。用记算器 c1 的输出又作为多路选通器位选线, 当输入到扫描信号发生器中的 4 位二进制密码与按键数据缓冲器中设定的 4 位二进制密码完全相同, 比较结束, 位数比较器输出 m= 1 ,这时,如果按开锁按键 try = 1 ,密码锁就会打开 open= 1 ,如果开锁时三次密码输入不对,则报警。(9)七段译码器七段译码器用于把多路选通器输出的四位二进制数变为可以被

39、数码管直接反应出来的气短码。七段译码器设置数码管的显示数值为 09。(10)时钟发生器时钟产生器包含了一个计数器模块和一个译码输出模块,是通过计数器模块实现分频。从 12mhz 的全局时钟得到 10hz 的时钟,进行 120000 倍的分频。译码器的输出采用了寄存器锁存输出,为了消除毛刺。- 17 -(11)扫描信号发生器扫描信号用于选择片选信号,片选信号依次并循环地选通各个 led 管时钟发生器,通过对全局时钟的分频得到扫描模块所需的时钟。- 18 -3.33.3 总体电路说明总体电路说明3.3.1 总体电路图图 3-2 总体电路图- 19 -3.3.2 总体电路图工作原理说明clk_1k

40、为时钟信号,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 为输出数据。- 2

41、0 -4 4 单元电路设计单元电路设计4.14.1 单元电路图单元电路图- 21 -图 4-1 单元电路图(1)显示缓冲器 图 4-2显示缓冲器的程序源代码显示缓冲器的程序源代码library ieee;use ieee.std_logic_1164.all;entity disp_buf isport( 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(

42、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 isbegin -同步加载寄存器- 22 - process(clk) begin if(clkevent and clk=1)then -并行加载 if(ld=1)then dataout dataout(3 downto 0) dataout(7 downto 4) datao

43、ut(11 downto 8) dataout(15 downto 12) dataout(3 downto 0)dataoutdataoutdataoutdataoutnull; end case; end process;end rtl; 波形图 4-5 如下: 图 4-5多路选通器(mux)的外部接口如上图所示。其中 datain 为多路选通器的数据输入,也是显示缓冲器的输出。ledaddr 为当前显示的 led 管的地址,它是扫描模块的输出。dataout 为多路选通器的输出。(3)时钟发生器 图 4-6时钟发生器的程序源代码时钟发生器的程序源代码library ieee;use ie

44、ee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity led_clk_gen isport(clk_4m :in std_logic; - 25 - clk_scan :buffer std_logic_vector(3 downto 0); end led_clk_gen;architecture rtl of led_clk_gen issignal clk,clk_debounce:std_logic;signal clk_display,clk_keyboard

45、:std_logic_vector(1 downto 0);begincounter:blocksignal sel:std_logic_vector(3 downto 0);signal q:std_logic_vector(22 downto 0);signal s:std_logic_vector(1 downto 0);begin process(clk_4m) begin if clk_4mevent and clk_4m=1 then q=q+1; end if; end process; clk_debounce=q(0); clk_keyboard=q(5 downto 4);

46、 -产生键盘的扫描信号 clk_display1101-1011.0111 sel= 1110 when clk_keyboard=0 else 1101 when clk_keyboard=1 else 1011 when clk_keyboard=2 else 0111 ; clk_scan=sel; end block counter;end rtl;- 26 -波形图 4-7 如下: 图 4-7时钟发生器用于产生扫描时钟,其外部接口如图所示。时钟发生器的输入时全局时钟 clk,输出信号时扫描时钟 clk_scan。clk_scan 是 300hz 的时钟。(4)扫描信号发生器 图 4-

47、8扫描信号发生器的程序源代码扫描信号发生器的程序源代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity ledscan isport( clk_scan :in std_logic; -扫描时钟,周期 300hz ledaddr :out std_logic_vector(3 downto 0); -当前显示 led 的地址,用于多路选通 ledsel :out std_logic_vector(3 downto 0); -输出扫描信号 end ledscan;architecture rt

48、l of ledscan is signal cnt :integer range 0 to 3;begin- 27 - -计数器进程 process(clk_scan) begin if(clk_scanevent and clk_scan=1) then if(cnt=cnthigh) then cnt=0; else cnt=cnt+1; end if; end if; end process; -当前显示 led 管地址 ledaddrledselledselledselledselledsel=0001; end case; end process;end rtl;波形图 4-9 如

49、下:- 28 - 图 4-9 扫描信号发生器的外部接口如上图所示。其中 clk_scan 为扫描时钟,ledaddr 为当前在现实的 led 地址,ledsel 为输出片选信号。(5)显示模块 图 4-10显示模块的程序源代码显示模块的程序源代码library ieee;use ieee.std_logic_1164.all;entity decoder7 is port( bcd :in std_logic_vector(3 downto 0); -二进制输入 dout :out std_logic_vector(6 downto 0); -译码输出end decoder7;architec

50、ture rtl of decoder7 issignal indata:std_logic_vector(3 downto 0);beginindatadoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=0000000; -其余时候管子全部熄灭 end case; end process;end rtl; 波形图 4-11 如下: 图 4-11显示部分的外部接口如上图所示。bcd 为 4 比特的 bcd 码输入,dout 为输出,宽带为 7 为,即送到 led 管显示用的七段码,即信号 a、b、c、d、e、f和 g。 - 30 -4.24.2 显示缓存器

51、工作原理显示缓存器工作原理显示缓存器是一个存储量为 16 位的寄存器,它用于存储 led 显示的内容。所以 4 个数码管就需要 16 位的存储器。多路选通器用于从显示缓存器中选择出某一个 led 的内容用于显示。扫描信号用于选择片选信号,片选信号依次并循环地选通各个 led 管时钟发生器,通过对全局时钟的分频得到扫描模块所需的时钟。七段译码模块把 4 位 bcd 码译成便于显示的七段码。该显示电路的工作过程如下:寄存器所存储的数据经由数据选择器送到译码电路, 将其转换成七段显示器的显示码, 转送到七段显示器, 数据选择与显示管选择必须同步。由于设计的是 4 位数的数字密码锁, 一位十进制数需要 4 个二进制位表示, 所以显示缓冲器必须是 16 位的寄存器。因为是以扫描的方式轮流被点亮的, 因此寄存器上的数据必须一组一组地分开传

温馨提示

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

评论

0/150

提交评论