1、1摘要本课题设计的主要是基于CPLD/FPGA来实现电子密码锁的设计,主要包括输入、控制和输出三大模块。其中输出部分由显示缓冲器、多路选通器、显示模块、时钟发生器、扫描信号发生器组成。显示缓存器是一个存储量为16位的寄存器,它用于存储LED显示的内容。多路选通器用于从显示缓存器中选择出某一个LED的内容用于显示。扫描信号用于选择片选信号,片选信号依次并循环地选通各个LED管时钟发生器,通过对全局时钟的分频得到扫描模块所需的时钟。显示模块由七段译码器和七段显示器组成。总体上输出部分电路的设计都是基于VHDL语言来实现的。关键词电子密码锁FPGA硬件描述语言EDA2目录1引言32概述421MAXP
2、LUS的概述4211设计输入5212设计处理6213设计校验722MAXPLUSII软件的设计流程823VHDL语言简介9231CPLD/FPGA11232VHDL的优点123总体设计1331系统框图1332系统说明14321系统原理14322各部分作用1433总体电路说明18331总体电路图18332总体原理说明194单元电路设计2041单元电路图2042原理说明295总结3151设计的优缺点3152可以改进的地方3153结语31参考文献33致谢3431引言随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,
3、又要使用方便,这也是制锁者长期以来研制的主题。随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。据有关资料介绍,电子密码锁的研究从20世纪30年代就开始了,在一些特殊场所早就有所应用。这种锁是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就是为提高锁的安全性。由于电子锁的密钥量(密码量)极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。但较实用的还是按键式电子密码锁。目前使用的电子密码锁大部分是
4、基于单片机技术,以单片机为主要器件,其编码器与解码器的生成为软件方式。在实际应用中,由于程序容易跑飞,系统的可靠性能较差。基于现场可编程逻辑门阵列FPGA器件的电子密码锁,用FPGA器件构造系统,所有算法完全由硬件电路来实现,使得系统的工作可靠性大为提高。本课题设计的电子密码锁是基于CPLD/FPGA。电子密码锁主要由输入部分,控制部分和输出部分组成。其中输入部分包括44矩阵键盘、弹跳消除电路、键盘译码电路、键盘扫描电路;控制部分包括按键存储电路、密码存储电路、比较电路;输出部分包括多路选通器、七段译码器、扫描信号发生器。该密码锁具有密码输入、密码清除、密码激活、电锁解除和密码更改等功能,用一
5、片复杂可编程逻辑芯片CPLD实现,因此它体积小、功耗低、价格便宜,维护和升级都十分方便,具有较好的应用前景主要应用有汽车锁,门锁,保险柜,仓库。42概述21MAXPLUS的概述ALTERA公司的MAXPLUS开发系统是一个完全集成化、易学易用的可编程逻辑器件软件设计环境,可以在多种平台上运行,具有操作灵活、支持器件多、设计输入方法灵活多变的特点,是用户设计、开发以ALTERAPLD器件为核心的软件开发工具。MAXPLUS是MULTIPLEARRAYMATRIXANDPROGRAMMABLELOGICUSERSYSTEM的缩写,软件版本分基本版、商业版和学生版,学生版软件在功能上与商业版类似,仅
6、在可使用的芯片上受到限制。MAXPLUS的9X版和10X版均可安装在WIN95或WIN98/2000操作系统上,其中9X版需32MB内存、1GB以上硬盘,10X版需64MB内存、2GB以上硬盘。MAXPLUS的设计过程可用图21表示图21MAXPLUS设计流程图为使设计者快速掌握MAXPLUSII软件的使用,我们首先介绍MAXPLUSII软件的设计流程,它是由设计输入、设计处理、设计校验和器件编程四部分组设计输入项目编译功能时序仿真项目校正编程/配置(可以使用原理图或文本输入设计要求)(用于检验设计输入是否正确)(用于检验所设计的电路功能是否符合设计要求)(将正确的设计通过计算机下载到硬件电路
7、上,使其具有与设计电路相符的逻辑功能)5成的。211设计输入MAXPLUSII软件的设计输入方法有多种多样,主要包括文本输入方式、原理图设计输入方式、波形设计输入方式、层次设计输入方式和低层设计输入方式。另外还可以利用第三方EDA工具生成的网络表文件输入。输入法不同,生成的设计文件也不同,设计者可以根据自己的需要灵活掌握。(1)原理图输入利用MAXPLUSII提供的各种原理图库进行设计输入是一种最为直接的、也是我们最容易掌握的一种方法。使用该方法时,通过采用自顶向下的设计方式,将大规模的电路分成若干小块进行设计。该方法虽然效率较低,但容易实现仿真,便于信号的观察和电路的调整。(2)硬件描述语言
8、输入MAXPLUSII包含一个集成的文本编辑程序,适合与输入和编辑用ALTERA硬件描述语言编写的设计文件,MAXPLUSII可以对这些语言表达的逻辑进行综合,并将其映射到ALTERA的任何器件中。采用语言描述的优点是效率较高,结果也较容易仿真,信号观察也较方便,但语言输入必须依赖综合器。(3)波形输入波形编辑程序(MAXPLUSIIWAVEFORMEDITOR)用于建立和编辑波形设计文件及输入仿真向量和功能测试向量。波形编辑还有分析仪的功能,设计者可以通过它查看仿真结果。波形设计输入最适合于时序和重复的函数。MAXPLUSIICOMPILER采用先进的波形综合法,可以根据用户定义的输入/输出
9、波形自动生成逻辑关系。(4)低层编辑低层编辑程序(MAXPLUSIIFLOORPIANEDITOR)简化了向器件引脚和逻辑单元分配逻辑的过程。设计方案中使用的表示每种器件的图形很容易进行逻辑布局,高层的和详细器件视图都可以使用设计者可以在对设计进行编译之前分配引脚和逻辑单元,编译之前分配引脚和逻辑单元,编译后再来察看或修改结果。低层编译允许设计者观察器件中所有已分配的逻辑。任何节点或引脚都可以被拉到新的位置。可以把逻辑分配给专用引脚和逻辑单元,也可以分配给器件中更加合适的区域。6(5)层次设计输入层次设计可包含几种不同格式建立的设计文件,例如原理图输入、HDL设计输入、波形设计输入和EDIF网
10、络表输入等。MAXPLUSII在设计方案中支持多级层次,这种灵活性设计者可以采用最适合设计中每个部分的设计输入方法。MAXPLUSII层次显示程序可以显示方案的层次结构,允许设计者穿越层次,自动打开适合于每个设计文件的编辑。(6)网表输入库MAXPLUSIICOMPILER可以与其他EDA工具接口。采用这种方法输入,可以把其他软件系统上设计的电路直接移植起来,不必重新输入。MAXPLUSII软件可以接受的网表有EDIF格式、VHDL格式及VERLIOG格式等。在用网表输入时,必须注意在两个系统中所采用库的对应关系,所有库单元必须一一对应,才可以成功读入网表。212设计处理MAXPLUSII处理
11、一个设计时,MAXPLUSIICOMPILE在设计文件中读取信息并产生编辑文件和仿真文件,定时分析程序(TIMINGANALYZER)可分析设计的定时,信息处理程序(MESAGEPROCESSOR)可自动定位错误。(1)自动错位定位MAXPLUSII的MESAGEPROCESSOR与MAXPLUSII所有应用程序通信,可以给出信息(错误、警告等)。设计者可利用他自动打开有错误的文件,并一高亮度方式显示错误位置。(2)逻辑综合与试配MAXPLUSIICOMPILER的逻辑综合(LOGICSYNTHESIS)模块对设计方案进行逻辑综合并能看到设计实现的真实结果,该模块选择合适的逻辑化简算法,去除剩
12、余逻辑,确保尽可能有效地使用器件的逻辑资源,还可设计方案中没用的逻辑。逻辑综合选择有助于设计人员引导逻辑综合的结果。ALTERA提供,NORMAL(正常)、FAST(快速)、时钟到输出的延时、建立时间、和时钟频率等。设计者可以为选定的逻辑功能指定定时要求,也可以把设计作为一个事例来指定定时要求。FITTER的报告文件提供详细信息一说明设计的定时要求是如何实现的。(4)设计规则检查MAXPLUSIICOMPILER包括设计规则检查器(DESIGNDOCTOR。该程序将检查项目中的所有设计文件,以发现在编辑器件中可能存在的可靠性不好的逻辑。7设计规则可靠性高,涉及到含有异步输入、行波时钟、以时钟为
13、基础的多级逻辑、置位与清除的配置及竞争条件等的逻辑。(5)多器件划分如果一个设计文件较大,一个器件放不下的话,可以自动或由用户控制将一个大的设计文件划分成几个小文件,装人多个器件中。注意划分时尽量减少器件的数量及减少器件通信的引脚数目。(6)工业标准输出格式MAXPLUSIICOMPILER可以建立多种仿真环境里的网表,这些网表包含结合后的功能,以及其他标准校验工具进行器件或板极仿真时使用的定时信息。以下接口可供使用EDIF接口建立EDIF200和EDIF300网表。VERILOG接口建立与VERILOGXL仿真器一起使用的VERILOG网表。VHDL接口建立与VHDL仿真器一起使用的VHDL
14、网表。(7)编程文件的产生装配程序(ASSEMBLER)模块为一个已编译的设计创建一个或多个编程目标文件(POF)、SRAM目标文件(SOF)或JEDEC文件(JED)。MAXPLUSII编译器使用这些文件和标准的A硬件对器件进行编程。使用工业标准的其他编程设备也可对器件编程。此外,MAXPLUSII可以产生I格式的十六进制文件(HEX)、T文本文件(TTF)和配置FLEX8000器件使用的串行位流文件(SBF)。213设计校验设计校验过程包括设计仿真和定时分析,其作用是测试逻辑操作和设计的内部定时。(1)仿真编译成功的设计不一定完成正确,只是通过仿真才能验证电路是否正达到设计要求。SIMUL
15、ATION可分为三种仿真,即逻辑特性FUNCTIONAL仿真、时延特性TIMING仿真和链接LINKED仿真,仿真器利用编译器产生的数据文件工作。MAXPLUSII提供了功能编译选项。此时,只运行仿真网表的提取,而不作布局线,所以,此时的仿真没有延时信息,所有的延时均为零延时,而可以预测所有内信号,对于初步的功能检测非常方便。8功能检查完成后,需进行后仿真。MAXPLUSII的仿真具有很强的灵活性,可以控制对单器件或多器件设计的仿真,仿真器使用编译期间生产的二进制仿真网表进行功能和定时的仿真,或把组和连接起来的多个器件作为一个设计进行仿真。可以使用简明的向量输入语言定义输入激励,也可以使用MA
16、XPLUSII的波形编辑程序直接画出波形。仿真结果可以在波形编辑器中看到,也可以作为波形文件或文本打印出来。(2)定时分析MAXPLUSII的定时分析器(TIMINGANALYZER)可以计算点到点的器件延时矩阵,确定器件引脚上建立时间与保持时间要求,还可以计算最高的时钟频率。MAXPLUSII的设计输入工具与TIMINGANALYZER集成在一起,这样只需简单地将设计中的起点和终端加上标志即可确定最短与最长的传播延时。此外,MESSAGEPROCESSOR可以找出TIMINGANALYZER在设计文件中已证实的关键路径,并在适当的设计编辑器中加以显示。22MAXPLUSII软件的设计流程由前
17、面叙述可知,MAXPLUSII软件设计的流程应包括以下几个部分,如图22所示。图22(1)设计输入可以采用原理图输入、HDL语言描述、EDIF网表读入等方式。设计输入项目编译设计仿真器件编程系统测试设计修改9(2)编译主要完成器件的选择及适配,逻辑的综合及器件的装入,延时信息的提取。(3)前仿真此时为0延时模式,主要为检验输入是否有误。(4)后仿真将编译产生的延时信息加入到设计中,进入布局布线后的仿真,是与实际器件工作时情况基本相同的仿真。(5)编程验证用后仿真确认的配置文件经EPROM或编程电缆配置CPLD,加入实际激励,进行测试,以检查是否完成预定功能。以上各步如果出现错误的现象,则需重新
18、回到设计输入阶段,改成错误输入或调整电路并重上述过程。23VHDL语言简介VHDL是在7080年代中,由美国国防部资助的VHSIC项目开发的产品。在这个语言首次开发出来时,其目标仅是一个使电路文本化的一种标准,使人们采用文本方式描述的设计能够被其他人所理解。VHDL于1987年由IEEE1076标准所确认,1993年IEEE1076标准被升级、更新,新的VHDL标准为IEEE1164,1996年IEEE10763成为VHDL综合标准。现在,VHDL已成为一个数字电路和系统的描述、建模、综合的工业标准,在电子产业界,无论是ASIC设计人员,还是系统级设计人员,都需要学习VHDL来提高他们的工作效
19、率。利用VHDL及自顶向下设计方法在大型数字系统设计中被广泛采用,在设计中可采用较抽象的语言来描述系统结构,然后细化成各模块,最后借助编译器将VHDL描述综合为门级。231VHDL的基本结构1VHDL的组成一个VHDL设计由若干个VHDL文件构成,每个文件主要包含如下三个部分中的一个或全部程序包(PACKAGE);实体(ENTITY);结构体(ARCHITECTURE)。一个完整的VHDL设计必须包含一个实体和一个与之对应的结构体,一个实体可对应多个结构体,以说明采用不同方法来描述电路。102程序包(PACKAGE)程序包是用来单纯罗列VHDL语言中所要用到的信号定义、常数定义、数据类型、元件
20、语句、函数定义和过程定义等,它是一个可编译的设计单元,也是库结构中的一个层次。一个程序包由两大部分组成包头(HEADER)和包体(PACKAGEBODY),其中包体是一个可选项,也就是说,程序包可以只由包头构成。一般包头列出所有项的名称,而在包体具体给出各项的细节。3库(LIBRARY)库是专门存放预先编译好的程序包(PACKAGE)的地方。在VHDL语言中,库的说明总是放在设计单元的最前面LIBRARY库名;这样,在设计单元内的语句就可以使用库中的数据。由此可见,库的好处就在于使设计者可以共享已经编译过的设计结果。在VHDL语言中可以存在多个不同的库,但是库和库之间是独立的,不能互相嵌套。实
21、际中一个库就对应一个目录,预编译程序包的文件就放在此目录中。用户自建的库即为设计文件所在目录,库名与目录名的对应关系可在编译软件中指定。4实体(ENTITY)实体是VHDL设计中最基本的模块,VHDL表达的所有设计均与实体有关。设计的最顶层是顶层实体。如果设计分层次,那么在顶层实体中将包含较低级别的实体。实体中定义了该设计所需的输入/输出信号,信号的输入/输出类型被称为端口模式,同时实体中还定义他们的数据类型。5结构体(ARCHITECTURE)结构体是VHDL设计中最主要部分,它具体地指明了该基本设计单元的行为、元件及内部的连接关系,也就是说它定义了设计单元具体的功能。结构体对其基本设计单元
22、的输入输出关系可以用3种方式进行描述,即行为描述(基本设计单元的数学模型描述)、寄存器传输描述(数据流描述)和结构描述(逻辑元件连接描述)。不同的描述方式,只体现在描述语句上,而结构体的结构是完全一样的。11一个完整的、能被综合实现的VHDL设计必须有一个实体和对应的结构体,一个实体可以对应一个或多个结构体,由于结构体是对实体功能的具体描述,因此它一定要跟在实体的后面,通常先编译实体后才能对结构体进行编译。231CPLD/FPGAFPGA(FIELDPROGRAMMABLEGATESARRAY现场可编程门阵列,内部结构为门阵列构成静态存储器(SRAM)。该SRAM可构成函数发生器,即查找表,通
23、过查找表可实现逻辑函数功能),CPLD(COMPLEXPROGRAMMABLELOGICDEVICE复杂可编程逻辑器件,内部结构为“与或阵列”。该结构来自于典型的PAL、GAL器件的结构。任意一个组合逻辑都可以用“与或”表达式来描述,所以该“与或阵列”结构能实现大量的组合逻辑功能)。FPGA具有体系结构和逻辑单元灵活、集成度高以及适用范围宽FPGA等特点。兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。与门阵列等其它ASIC相比,它又具有设计开发什么是周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产
24、品生产一般在10,000件以下之中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA。CPLD它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点,可实现较大规模的电路设计。硬件描述语言是EDA技术的重要组成部分,VHDL是电子设计的主流硬件描述语言。VHDL的英文全名是VERYHIGHSPEEDINTEGRATEDCIRCUITHARDWAREDESCRIPTIONLANGUAGE,诞生于1982年。1987年底,VHDL被IEEETHEINSTITUTEOFELE
25、CTRICALANDELECTRONICSENGINEERS和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本(IEEE1076)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展12VHDL的内容,公布了新版本的VHDL,即IEEE标准的10761993版本。现在,VHDL作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件
26、描述语言。VHDL主要应用于数字电路的设计中,尤其是在(FPGA/CPLD/ISPPLS和IASIC等芯片的设计中应用更加广泛。(本次设计是关于CPLD的设计)232VHDL的优点VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项设计实体(可以是一个元件、一个电路模块或一个系统)分成外部和内部两个基本点部分,其中外部为可见部分,即系统的端口,而内部则是不可视部分,即设计实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设
27、计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的,具体如下1设计技术齐全、方法灵活、支持广泛。VHDL语言可以支持自上至下和基于库的设计法,而且还支持同步电路、异步电路及其他随机电路的设计。目前大多数EDA工具都支持VHDL语言。2VHDL具有更强的系统硬件描述能力,VHDL具有多层次描述系统硬件功能的能力,其描述对象可从系统的数学模型直到门级电路。3VHDL语言可以与工艺无关编程。在用VHDL语言设计系统硬件时,没有嵌入与工艺有关的信息。当门级或门级以上层次的描述通过仿真检验以后,再用相应的工具将设计映射成不同的工
28、艺。这样,在工艺更新时,就无须修改原设计程序,只要改变相应的映射工具。4VHDL语言标准、规范,易于共享和复用133总体设计31系统框图图31系统框图键盘输入弹跳消除电路键盘译码电路按键数据缓冲器键盘扫描电路工作时钟脉冲信号密码锁存器比较器多路选通器七段译码器时钟发生器扫描信号发生器CLK七段码输出比较结果输出修改密码时输入开锁时输入1432系统说明321系统原理键盘扫描电路用来产生扫描信号,扫描信号KY32KY0按照11101101101101111110的规律依次变化,通过输出KX22KX0来检测是否有键按下,如扫描信号示1101,表示正在扫描4,5,6这三个键,如果这三个键多没被按下,则
29、KX20输出为111,如果数字键4按下,KX20将会输出为011。按键输入信号,若被按下的是数字键,则解码成相应的BCD码,若被按下的是功能键,则解码成4位二进制的码字,由密码锁控制电路作相应的动作。为防止每次扫描产生新的按键数据覆盖前面的数据,通过按键数据缓冲器将整个键盘扫描后的结果记录下来。当按下数字键时,输入的数字在最右边的数码管中显示,数码管原先的数据向左移动一位;如果不慎输入错误,则按清除键清除所输入的数字,重新开始输入四位数字。由于此处密码设置为四位,如果超过四位,则后面的被忽略。输入四位密码后,按下激活电锁键,则将所输入的四位设置为电锁密码。解锁的过程是先输入四位数字,然后按下解
30、除电锁键,如果输入的四位数字与密码相同,则开锁。反之打不开锁。按键数据缓冲器所存储的数据经由多路选通器到七段译码电路,将其转换成七段显示器的显示码,转送到七段显示器,多路选通器与显示管选择必须同步。由于设计的是4位数的数字密码锁,一位十进制数需要4个二进制位表示,所以寄存器必须是16位的。因为是以扫描的方式轮流被点亮的,因此显示缓冲器上的数据必须一组一组地分开传送,每次送4个位。322各部分作用(1)键盘输入本设计选用的是43矩阵键盘,它是用4条I/O线作为行线,3条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键,当某键被按下时,该按键的接点会连接行线和列线,这样有按键
31、按下时行线呈现逻辑0的状态,未按下时则呈现逻辑1状态。键盘电路的工作原理是通过行线送入扫描信号,然后从列线读取状态判断是否有按键按下。其方法是依次给行线送低电平,15检查列线的输出。如果列线信号为高电平,则代表低电平信号所在的行中无按键按下;如果列线输入为低电平,则低电平信号所在的行和出现低电平的列的交点处有按键按下。扫描信号由KY3KYO进入键盘,变化的顺序依次是11101101101101111110,每次扫描一行,依序循环。假设现在扫描信号为1101,即扫描“4”、“5”、“6”这一排按键,如果这排当中没有按键被按下的话,则列扫描信号KX2KXO读出的值为111;反之,当“6”按键被按下
32、时则由KX2KXO读出的值为110,其它依次类推。由于矩阵式键盘是无法独自地完成按键工作的,要搭配时序产生电路、键盘扫描电路、弹跳消除电路、键盘译码电路才能可靠工作。键盘上的有效数据是0到9这十个数字键和两个功能键(键修改密码键;键输入数字小于四位时按下此键表示清除键,输入数字等于四位时表示开锁键)。(2)弹跳消除电路因为本次设计的按键采用机械式开关结构,在开关切换的瞬间会在接触点出现来回弹跳的现象,这种弹跳现象可能造成误动作而影响到正确性。本设计中采用延时的软件方法消除抖动,若采样信号检测到输入由“1”变到“0”或由“0”变为“1”,先延时2个周期,仍旧检测到是“0”或“1”,则说明按键状态
33、确实发生了变化,否则当作抖动处理,不予理会。这样就消除了抖动。(3)键盘译码电路键盘中的按键可分为数字按键和功能按键,每个按健都有自己相应的作用,比如键可以清除密码和开锁,键可以设置密码。数字按键主要用来输入数字,键盘所产生的输出KX2KXO无法直接拿来使用,因此必须由键盘译码电路来规划每个按键的输出形式,以便执行相应的动作。(4)按键数据缓冲器按键数据缓冲器将整个键盘扫描完毕后的结果记录下来,防止后面所得的数据覆盖前面扫描得到的数据。(5)键盘扫描电路键盘扫描电路是用于产生KY3KY0信号,即键盘的行扫描信号。每扫描一排按键,就检查一次是否有按键被按下,如果这排没有按键被按下就忽略。反之,如
34、果出现被按下的键则立即进行按键编码的动作,且将编码的结果存储于寄存器16中。扫描停留在每个状态的时间大约为10MS。更短的停留时间容易采集到陡动信号,会干扰判断。而太长的停留时间则容易丢失某些较快的按键动作。(6)密码锁存器输入控制电路信号由按键数据缓冲器产生的,在按下解锁信号后其全部数据送入比较器,解锁后,如果按下更改密码按键,则把所有数据送入预存密码寄存器。密码锁存器是一个16位的寄存器,负责保存密码。(7)比较器当按下数字键时,输入的数字在最右边的数码管中显示,数码管原先的数据向左移动一位如果不慎输入错误,则按清除键清除所输入的数字,重新开始输入四位数字。由于此处密码设为四位,如果超过四
35、位,则后面的被忽略。输入四位密码后,按下激活电锁键,则将所输入的四位设置为电锁密码。解锁的过程是先输入四位数字,然后按下解除电锁键,如果输入的四位数字与密码相同,则开锁。反之打不开锁。(8)多路选通器多路选通器将按键数据缓冲器中的输入密码与扫描信号发生器中的密码逐位进行比较,当对应位数相同时,数值比较器的输出B1然后进行下一位比较,否则B0,密码错误信号ERROR1,由计算器C2记录密码错误次数,比较到哪位。用记算器C1的输出又作为多路选通器位选线,当输入到扫描信号发生器中的4位二进制密码与按键数据缓冲器中设定的4位二进制密码完全相同,比较结束,位数比较器输出M1,这时,如果按开锁按键TRY1
36、,密码锁就会打开OPEN1,如果开锁时三次密码输入不对,则报警。(9)七段译码器七段译码器用于把多路选通器输出的四位二进制数变为可以被数码管直接反应出来的气短码。七段译码器设置数码管的显示数值为09。(10)时钟发生器时钟产生器包含了一个计数器模块和一个译码输出模块,是通过计数器模块实现分频。从12MHZ的全局时钟得到10HZ的时钟,进行120000倍的分频。译码器的输出采用了寄存器锁存输出,为了消除毛刺。(11)扫描信号发生器17扫描信号用于选择片选信号,片选信号依次并循环地选通各个LED管时钟发生器,通过对全局时钟的分频得到扫描模块所需的时钟。1833总体电路说明331总体电路图图32总体
37、电路图19332总体电路图工作原理说明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为输出数据。
38、204单元电路设计41单元电路图21图41单元电路图(1)显示缓冲器图42显示缓冲器的程序源代码LIBRARYIEEEUSEIEEESTD_LOGIC_1164ALLENTITYDISP_BUFISPORTCLKINSTD_LOGIC全局时钟LDINSTD_LOGIC同步加载使能WRINSTD_LOGIC写信号ADDRINSTD_LOGIC_VECTOR3DOWNTO0地址输入SDATAINSTD_LOGIC_VECTOR3DOWNTO0串行加载数据DATAINSTD_LOGIC_VECTOR15DOWNTO0并行加载数DATAOUTOUTSTD_LOGIC_VECTOR15DOWNTO0输出
39、数据ENDDISP_BUFARCHITECTURERTLOFDISP_BUFISBEGIN同步加载寄存器22PROCESSCLKBEGINIFCLKEVENTANDCLK1THEN并行加载IFLD1THENDATAOUTDATAOUT3DOWNTO0DATAOUT7DOWNTO4DATAOUT11DOWNTO8DATAOUT15DOWNTO12DATAOUT3DOWNTO0DATAOUTDATAOUTDATAOUTDATAOUTNULLENDCASEENDPROCESSENDRTL波形图45如下图45多路选通器(MUX)的外部接口如上图所示。其中DATAIN为多路选通器的数据输入,也是显示缓冲
40、器的输出。LEDADDR为当前显示的LED管的地址,它是扫描模块的输出。DATAOUT为多路选通器的输出。(3)时钟发生器图46时钟发生器的程序源代码LIBRARYIEEEUSEIEEESTD_LOGIC_1164ALLUSEIEEESTD_LOGIC_ARITHALLUSEIEEESTD_LOGIC_UNSIGNEDALLENTITYLED_CLK_GENISPORTCLK_4MINSTD_LOGIC25CLK_SCANBUFFERSTD_LOGIC_VECTOR3DOWNTO0ENDLED_CLK_GENARCHITECTURERTLOFLED_CLK_GENISSIGNALCLK,CLK
41、_DEBOUNCESTD_LOGICSIGNALCLK_DISPLAY,CLK_KEYBOARDSTD_LOGIC_VECTOR1DOWNTO0BEGINCOUNTERBLOCKSIGNALSELSTD_LOGIC_VECTOR3DOWNTO0SIGNALQSTD_LOGIC_VECTOR22DOWNTO0SIGNALSSTD_LOGIC_VECTOR1DOWNTO0BEGINPROCESSCLK_4MBEGINIFCLK_4MEVENTANDCLK_4M1THENQ110110110111SELLEDSELLEDSELLEDSELLEDSELLEDSELDOUTDOUTDOUTDOUTDOU
42、TDOUTDOUTDOUTDOUTDOUTDOUT“0000000“其余时候管子全部熄灭ENDCASEENDPROCESSENDRTL波形图411如下图411显示部分的外部接口如上图所示。BCD为4比特的BCD码输入,DOUT为输出,宽带为7为,即送到LED管显示用的七段码,即信号A、B、C、D、E、F和G。42显示缓存器工作原理显示缓存器是一个存储量为16位的寄存器,它用于存储LED显示的内容。所以4个数码管就需要16位的存储器。多路选通器用于从显示缓存器中选择出30某一个LED的内容用于显示。扫描信号用于选择片选信号,片选信号依次并循环地选通各个LED管时钟发生器,通过对全局时钟的分频得到
43、扫描模块所需的时钟。七段译码模块把4位BCD码译成便于显示的七段码。该显示电路的工作过程如下寄存器所存储的数据经由数据选择器送到译码电路,将其转换成七段显示器的显示码,转送到七段显示器,数据选择与显示管选择必须同步。由于设计的是4位数的数字密码锁,一位十进制数需要4个二进制位表示,所以显示缓冲器必须是16位的寄存器。因为是以扫描的方式轮流被点亮的,因此寄存器上的数据必须一组一组地分开传送,每次送4个位。315总结51设计的优缺点优点本课题设计了一种新型的电子密码锁,其采用先进的EDA技术,利用MAXPLUX工作平台,使用了CPLD/FPGA芯片和VHDL语言。该密码锁具有密码输入、密码清除、密
44、码激活、电锁解除和密码更改等功能,用一片复杂可编程逻辑芯片CPLD/FPGA实现,实现了所谓的片上系统,可以极大减少其它分立元件或其它芯片的使用,有效地缩小了线路板面积,增加了系统的可靠性,大大缩短了系统开发的周期。克服了传统电子密码锁可靠性差、价格高的缺点,提高了系统的性价比。由于采用VHDL语言进行层次化设计,用软件实现硬件电路,具有良好的可移植性,可随时在线更改逻辑设计及有关参数,充分体现现场可编程器件的优越性。因此它体积小、功耗低、价格便宜,维护和升级都十分方便,具有较好的应用前景。缺点由于输入模块采用的是机械式键盘,其可靠性不是太高,并且在很大程度上影响了其功能的扩展。52可以改进的
45、地方本设计基本达到了作为数字密码锁的绝大部分的功能,但是,还有许多不足或需要完善的地方。比如说采用的43键盘的通用机械键盘数量的限制,在很大程度上限制了其功能的扩展。若在系统中加入语音提示模块,在按下的按键的同时给出语音提示,开启或是关闭密码锁的同时给出语音提示,将会使该系统显得更加人性化,更加接近成为一个成熟的产品。53结语本次课题的基于CPLD/FPGA电子密码锁的设计使用MAXPLUS软件和VHDL语言设计电路,思路简单,功能明了;不仅可以进行逻辑仿真,还可以进行时序仿真;使用PLD器件不仅省去了电路制作的麻烦,还可以反复多次进行硬件实验,32非常方便地修改设计,且设计的电路保密性很强。
46、本次课题的基于CPLD/FPGA电子密码锁的设计实现了以下几个功能(1)数码输入每按下一个数字键,就输入一个数值,并在显示器上的显示出该数值,同时将先前输入的数据依序左移一个数字位置。(2)数码清除按下此键可清除前面所有的输入值,清除为“0000”。(3)密码更改按下此键时会将目前的数字设定成新的密码。(4)激活电锁按下此键可将密码锁上锁。(5)解除电锁按下此键会检查输入的密码是否正确,密码正确即开锁。33参考文献1VHDL硬件描述语言与数字逻辑电路设计/侯伯亨,顾新主编西安西安电子科技大学出版社,20042VHDL语言程序设计及应用/姜立冬主编北京北京邮电大学出版社,20013可编程逻辑系统
47、的VHDL设计技术/朱明程,孙普主编南京东南大学出版社,19984VHDL数字系统设计与高层次综合/林敏,方颖主编北京电子工业出版社,20025CPLD/FPGA可编程逻辑器件应用与开发/王道宪主编北京国防工业出版社,20056一种新型可编程密码锁/祖龙起,刘仁杰主编大连大连轻工业学院学报,200234致谢经过一个月的忙碌和工作,本次毕业设计已经接近尾声,作为一个大专生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及一起完成的同学们的支持,想要完成这个设计是难以想象的。在这里首先要感谢我的导师李老师。李老师平日里工作繁多,但在我做毕业设计的每个阶段,从开题报告到查阅资料,设计草案的确定和修改,中期检查,等整个过程中都给予了我悉心的指导。我的设计较为复杂烦琐,但是老师仍然细心地纠正这过程中的错误。除了敬佩老师的专业水平外,他的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作。其次要感谢和我一起作毕业设计的同学,他们在本次设计中勤奋工作,克服了许多困难来完成此次毕业设计,并承担了大部分的工作量。如果没有他们的努力工作,此次设计的完成将变得非常困难。然后还要感谢大学三年来所有的老师,为我们打下坚实的专业知识的基础;同时还要感谢所有的同学们,正是因为有了你们的支持和鼓励。此次毕业设计才会顺利完成。