电子密码锁设计本科学位论文.docx

上传人:b****5 文档编号:30750370 上传时间:2023-08-20 格式:DOCX 页数:30 大小:165.26KB
下载 相关 举报
电子密码锁设计本科学位论文.docx_第1页
第1页 / 共30页
电子密码锁设计本科学位论文.docx_第2页
第2页 / 共30页
电子密码锁设计本科学位论文.docx_第3页
第3页 / 共30页
电子密码锁设计本科学位论文.docx_第4页
第4页 / 共30页
电子密码锁设计本科学位论文.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

电子密码锁设计本科学位论文.docx

《电子密码锁设计本科学位论文.docx》由会员分享,可在线阅读,更多相关《电子密码锁设计本科学位论文.docx(30页珍藏版)》请在冰豆网上搜索。

电子密码锁设计本科学位论文.docx

电子密码锁设计本科学位论文

电子密码锁设计

摘要:

本课题设计的主要是基于CPLD/FPGA来实现电子密码锁的设计,主要包括输入、控制和输出三大模块。

其中输出部分由显示缓冲器、多路选通器、显示模块、时钟发生器、扫描信号发生器组成。

显示缓存器是一个存储量为16位的寄存器,它用于存储LED显示的内容。

多路选通器用于从显示缓存器中选择出某一个LED的内容用于显示。

扫描信号用于选择片选信号,片选信号依次并循环地选通各个LED管时钟发生器,通过对全局时钟的分频得到扫描模块所需的时钟。

显示模块由七段译码器和七段显示器组成。

总体上输出部分电路的设计都是基于VHDL语言来实现的。

 

关键词:

电子密码锁FPGA硬件描述语言EDA

 

1引言

随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。

锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,又要使用方便,这也是制锁者长期以来研制的主题。

随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。

据有关资料介绍,电子密码锁的研究从20世纪30年代就开始了,在一些特殊场所早就有所应用。

这种锁是通过键盘输入一组密码完成开锁过程。

研究这种锁的初衷,就是为提高锁的安全性。

由于电子锁的密钥量(密码量)极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。

电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。

电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。

但较实用的还是按键式电子密码锁。

目前使用的电子密码锁大部分是基于单片机技术,以单片机为主要器件,其编码器与解码器的生成为软件方式。

在实际应用中,由于程序容易跑飞,系统的可靠性能较差。

基于现场可编程逻辑门阵列FPGA器件的电子密码锁,用FPGA器件构造系统,所有算法完全由硬件电路来实现,使得系统的工作可靠性大为提高。

本课题设计的电子密码锁是基于CPLD/FPGA。

电子密码锁主要由输入部分,控制部分和输出部分组成。

其中输入部分包括4×4矩阵键盘、弹跳消除电路、键盘译码电路、键盘扫描电路;控制部分包括按键存储电路、密码存储电路、比较电路;输出部分包括多路选通器、七段译码器、扫描信号发生器。

该密码锁具有密码输入、密码清除、密码激活、电锁解除和密码更改等功能,用一片复杂可编程逻辑芯片CPLD实现,因此它体积小、功耗低、价格便宜,维护和升级都十分方便,具有较好的应用前景主要应用有:

汽车锁,门锁,保险柜,仓库。

 

2概述

2.1MAX+PLUSⅡ的概述

Altera公司的MAX+PLUSⅡ开发系统是一个完全集成化、易学易用的可编程逻辑器件软件设计环境,可以在多种平台上运行,具有操作灵活、支持器件多、设计输入方法灵活多变的特点,是用户设计、开发以AlteraPLD器件为核心的软件开发工具。

MAX+PLUSⅡ是MultipleArrayMatrixandProgrammableLogicUserSystem的缩写,软件版本分基本版、商业版和学生版,学生版软件在功能上与商业版类似,仅在可使用的芯片上受到限制。

MAX+PLUSⅡ的9.x版和10.x版均可安装在WIN95或WIN98/2000操作系统上,其中9.x版需32MB内存、1GB以上硬盘,10.x版需64MB内存、2GB以上硬盘。

MAX+PLUSⅡ的设计过程可用图2-1表示:

图2-1MAX+PLUSⅡ设计流程图

为使设计者快速掌握MAX+PLUSII软件的使用,我们首先介绍MAX+PLUSII软件的设计流程,它是由设计输入、设计处理、设计校验和器件编程四部分组成的。

2.1.1设计输入

MAX+PLUSII软件的设计输入方法有多种多样,主要包括文本输入方式、原理图设计输入方式、波形设计输入方式、层次设计输入方式和低层设计输入方式。

另外还可以利用第三方EDA工具生成的网络表文件输入。

输入法不同,生成的设计文件也不同,设计者可以根据自己的需要灵活掌握。

(1)原理图输入利用MAX+PLUSII提供的各种原理图库进行设计输入是一种最为直接的、也是我们最容易掌握的一种方法。

使用该方法时,通过采用自顶向下的设计方式,将大规模的电路分成若干小块进行设计。

该方法虽然效率较低,但容易实现仿真,便于信号的观察和电路的调整。

(2)硬件描述语言输入MAX+PLUSII包含一个集成的文本编辑程序,适合与输入和编辑用Altera硬件描述语言编写的设计文件,MAX+PLUSII可以对这些语言表达的逻辑进行综合,并将其映射到Altera的任何器件中。

采用语言描述的优点是效率较高,结果也较容易仿真,信号观察也较方便,但语言输入必须依赖综合器。

(3)波形输入波形编辑程序(MAX+PLUSIIWaveformEditor)用于建立和编辑波形设计文件及输入仿真向量和功能测试向量。

波形编辑还有分析仪的功能,设计者可以通过它查看仿真结果。

波形设计输入最适合于时序和重复的函数。

MAX+PLUSIICompiler采用先进的波形综合法,可以根据用户定义的输入/输出波形自动生成逻辑关系。

(4)低层编辑低层编辑程序(MAX+PLUSIIFloorpianEditor)简化了向器件引脚和逻辑单元分配逻辑的过程。

设计方案中使用的表示每种器件的图形很容易进行逻辑布局,高层的和详细器件视图都可以使用设计者可以在对设计进行编译之前分配引脚和逻辑单元,编译之前分配引脚和逻辑单元,编译后再来察看或修改结果。

低层编译允许设计者观察器件中所有已分配的逻辑。

任何节点或引脚都可以被拉到新的位置。

可以把逻辑分配给专用引脚和逻辑单元,也可以分配给器件中更加合适的区域。

(5)层次设计输入层次设计可包含几种不同格式建立的设计文件,例如原理图输入、HDL设计输入、波形设计输入和EDIF网络表输入等。

MAX+PLUSII在设计方案中支持多级层次,这种灵活性设计者可以采用最适合设计中每个部分的设计输入方法。

MAX+PLUSII层次显示程序可以显示方案的层次结构,允许设计者穿越层次,自动打开适合于每个设计文件的编辑。

(6)网表输入库MAX+PLUSIICOMPILER可以与其他EDA工具接口。

采用这种方法输入,可以把其他软件系统上设计的电路直接移植起来,不必重新输入。

MAX+PLUSII软件可以接受的网表有EDIF格式、VHDL格式及VERLIOG格式等。

在用网表输入时,必须注意在两个系统中所采用库的对应关系,所有库单元必须一一对应,才可以成功读入网表。

2.1.2设计处理

MAX+PLUSII处理一个设计时,MAX+PLUSIICompile在设计文件中读取信息并产生编辑文件和仿真文件,定时分析程序(TimingAnalyzer)可分析设计的定时,信息处理程序(MesageProcessor)可自动定位错误。

(1)自动错位定位MAX+PLUSII的MesageProcessor与MAX+PLUSII所有应用程序通信,可以给出信息(错误、警告等)。

设计者可利用他自动打开有错误的文件,并一高亮度方式显示错误位置。

(2)逻辑综合与试配MAX+PLUSIICompiler的逻辑综合(LogicSynthesis)模块对设计方案进行逻辑综合并能看到设计实现的真实结果,该模块选择合适的逻辑化简算法,去除剩余逻辑,确保尽可能有效地使用器件的逻辑资源,还可设计方案中没用的逻辑。

逻辑综合选择有助于设计人员引导逻辑综合的结果。

Altera提供,NORMAL(正常)、FAST(快速)、时钟到输出的延时、建立时间、和时钟频率等。

设计者可以为选定的逻辑功能指定定时要求,也可以把设计作为一个事例来指定定时要求。

Fitter的报告文件提供详细信息一说明设计的定时要求是如何实现的。

(4)设计规则检查MAX+PLUSIICompiler包括设计规则检查器(DesignDoctor)。

该程序将检查项目中的所有设计文件,以发现在编辑器件中可能存在的可靠性不好的逻辑。

设计规则可靠性高,涉及到含有异步输入、行波时钟、以时钟为基础的多级逻辑、置位与清除的配置及竞争条件等的逻辑。

(5)多器件划分如果一个设计文件较大,一个器件放不下的话,可以自动或由用户控制将一个大的设计文件划分成几个小文件,装人多个器件中。

注意:

划分时尽量减少器件的数量及减少器件通信的引脚数目。

(6)工业标准输出格式MAX+PLUSIICompiler可以建立多种仿真环境里的网表,这些网表包含结合后的功能,以及其他标准校验工具进行器件或板极仿真时使用的定时信息。

以下接口可供使用:

●EDIF接口建立EDIF200和EDIF300网表。

●Verilog接口建立与Verilog-XL仿真器一起使用的Verilog网表。

●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+PLUSII提供了功能编译选项。

此时,只运行仿真网表的提取,而不作布局线,所以,此时的仿真没有延时信息,所有的延时均为零延时,而可以预测所有内信号,对于初步的功能检测非常方便。

功能检查完成后,需进行后仿真。

MAX+PLUSII的仿真具有很强的灵活性,可以控制对单器件或多器件设计的仿真,仿真器使用编译期间生产的二进制仿真网表进行功能和定时的仿真,或把组和连接起来的多个器件作为一个设计进行仿真。

可以使用简明的向量输入语言定义输入激励,也可以使用MAX+PLUSII的波形编辑程序直接画出波形。

仿真结果可以在波形编辑器中看到,也可以作为波形文件或文本打印出来。

(2)定时分析MAX+PLUSII的定时分析器(TimingAnalyzer)可以计算点到点的器件延时矩阵,确定器件引脚上建立时间与保持时间要求,还可以计算最高的时钟频率。

MAX+PLUSII的设计输入工具与TimingAnalyzer集成在一起,这样只需简单地将设计中的起点和终端加上标志即可确定最短与最长的传播延时。

此外,MessageProcessor可以找出TimingAnalyzer在设计文件中已证实的关键路径,并在适当的设计编辑器中加以显示。

2.2MAX+PLUSII软件的设计流程

由前面叙述可知,MAX+PLUSII软件设计的流程应包括以下几个部分,如图2-2所示。

设计输入

设计修改

项目编译

设计仿真

器件编程

系统测试

 

图2-2

(1)设计输入可以采用原理图输入、HDL语言描述、EDIF网表读入等方式。

(2)编译主要完成器件的选择及适配,逻辑的综合及器件的装入,延时信息的提取。

(3)前仿真此时为0延时模式,主要为检验输入是否有误。

(4)后仿真将编译产生的延时信息加入到设计中,进入布局布线后的仿真,是与实际器件工作时情况基本相同的仿真。

(5)编程验证用后仿真确认的配置文件经EPROM或编程电缆配置CPLD,加入实际激励,进行测试,以检查是否完成预定功能。

以上各步如果出现错误的现象,则需重新回到设计输入阶段,改成错误输入或调整电路并重上述过程。

2.3VHDL语言简介

VHDL是在70~80年代中,由美国国防部资助的VHSIC项目开发的产品。

在这个语言首次开发出来时,其目标仅是一个使电路文本化的一种标准,使人们采用文本方式描述的设计能够被其他人所理解。

VHDL于1987年由IEEE1076标准所确认,1993年IEEE1076标准被升级、更新,新的VHDL标准为IEEE1164,1996年IEEE1076.3成为VHDL综合标准。

现在,VHDL已成为一个数字电路和系统的描述、建模、综合的工业标准,在电子产业界,无论是ASIC设计人员,还是系统级设计人员,都需要学习VHDL来提高他们的工作效率。

利用VHDL及自顶向下设计方法在大型数字系统设计中被广泛采用,在设计中可采用较抽象的语言来描述系统结构,然后细化成各模块,最后借助编译器将VHDL描述综合为门级。

2.3.1VHDL的基本结构

1.VHDL的组成

一个VHDL设计由若干个VHDL文件构成,每个文件主要包含如下三个部分中的一个或全部:

程序包(Package);

实体(Entity);

结构体(Architecture)。

一个完整的VHDL设计必须包含一个实体和一个与之对应的结构体,一个实体可对应多个结构体,以说明采用不同方法来描述电路。

2.程序包(Package)

程序包是用来单纯罗列VHDL语言中所要用到的信号定义、常数定义、数据类型、元件语句、函数定义和过程定义等,它是一个可编译的设计单元,也是库结构中的一个层次。

一个程序包由两大部分组成:

包头(Header)和包体(PackageBody),其中包体是一个可选项,也就是说,程序包可以只由包头构成。

一般包头列出所有项的名称,而在包体具体给出各项的细节。

3.库(Library)

库是专门存放预先编译好的程序包(package)的地方。

在VHDL语言中,库的说明总是放在设计单元的最前面:

LIBRARY库名;

这样,在设计单元内的语句就可以使用库中的数据。

由此可见,库的好处就在于使设计者可以共享已经编译过的设计结果。

在VHDL语言中可以存在多个不同的库,但是库和库之间是独立的,不能互相嵌套。

实际中一个库就对应一个目录,预编译程序包的文件就放在此目录中。

用户自建的库即为设计文件所在目录,库名与目录名的对应关系可在编译软件中指定。

4.实体(Entity)

实体是VHDL设计中最基本的模块,VHDL表达的所有设计均与实体有关。

设计的最顶层是顶层实体。

如果设计分层次,那么在顶层实体中将包含较低级别的实体。

实体中定义了该设计所需的输入/输出信号,信号的输入/输出类型被称为端口模式,同时实体中还定义他们的数据类型。

5.结构体(Architecture)

结构体是VHDL设计中最主要部分,它具体地指明了该基本设计单元的行为、元件及内部的连接关系,也就是说它定义了设计单元具体的功能。

结构体对其基本设计单元的输入输出关系可以用3种方式进行描述,即行为描述(基本设计单元的数学模型描述)、寄存器传输描述(数据流描述)和结构描述(逻辑元件连接描述)。

不同的描述方式,只体现在描述语句上,而结构体的结构是完全一样的。

一个完整的、能被综合实现的VHDL设计必须有一个实体和对应的结构体,一个实体可以对应一个或多个结构体,由于结构体是对实体功能的具体描述,因此它一定要跟在实体的后面,通常先编译实体后才能对结构体进行编译。

2.3.1CPLD/FPGA

FPGA(FieldProgrammableGatesArray现场可编程门阵列,内部结构为门阵列构成静态存储器(SRAM)。

该SRAM可构成函数发生器,即查找表,通过查找表可实现逻辑函数功能),CPLD(ComplexProgrammableLogicDevice复杂可编程逻辑器件,内部结构为“与或阵列”。

该结构来自于典型的PAL、GAL器件的结构。

任意一个组合逻辑都可以用“与—或”表达式来描述,所以该“与或阵列”结构能实现大量的组合逻辑功能)。

FPGA具有体系结构和逻辑单元灵活、集成度高以及适用范围宽FPGA等特点。

兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。

与门阵列等其它ASIC相比,它又具有设计开发什么是周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产(一般在10,000件以下)之中。

几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA。

CPLD它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点,可实现较大规模的电路设计。

硬件描述语言是EDA技术的重要组成部分,VHDL是电子设计的主流硬件描述语言。

VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。

1987年底, VHDL被IEEE ( TheInstituteofElectricalandElectronicsEngineers)和美国国防部确认为标准硬件描述语言。

自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.2VHDL的优点

VHDL主要用于描述数字系统的结构、行为、功能和接口。

除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言。

VHDL的程序结构特点是将一项设计实体(可以是一个元件、一个电路模块或一个系统)分成外部和内部两个基本点部分,其中外部为可见部分,即系统的端口,而内部则是不可视部分,即设计实体的内部功能和算法完成部分。

在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。

这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。

应用VHDL进行工程设计的优点是多方面的,具体如下:

1)设计技术齐全、方法灵活、支持广泛。

VHDL语言可以支持自上至下和基于库的设计法,而且还支持同步电路、异步电路及其他随机电路的设计。

目前大多数EDA工具都支持VHDL语言。

2)VHDL具有更强的系统硬件描述能力,VHDL具有多层次描述系统硬件功能的能力,其描述对象可从系统的数学模型直到门级电路。

3)VHDL语言可以与工艺无关编程。

在用VHDL语言设计系统硬件时,没有嵌入与工艺有关的信息。

当门级或门级以上层次的描述通过仿真检验以后,再用相应的工具将设计映射成不同的工艺。

这样,在工艺更新时,就无须修改原设计程序,只要改变相应的映射工具。

4)VHDL语言标准、规范,易于共享和复用

3总体设计

3.1系统框图

图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)键盘扫描电路

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

当前位置:首页 > 人文社科 > 哲学历史

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1