电子密码锁的计算机仿真设计.doc_第1页
电子密码锁的计算机仿真设计.doc_第2页
电子密码锁的计算机仿真设计.doc_第3页
电子密码锁的计算机仿真设计.doc_第4页
电子密码锁的计算机仿真设计.doc_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

西安石油大学本科毕业设计(论文)1 绪论在现代社会人们的日常生活中,各种电子密码锁的应用越来越广泛。本次论文是先进行一个四位的电子密码锁的编程设计,然后运用MAX+PlusII 软件进行计算机仿真以确保实现密码锁功能。本章将从以下几个方面先介绍一下电子密码锁的现状、发展情况,然后再简要介绍一下本次论文的研究方法和基本内容。1.1 课题背景及研究目的随着社会物质财富的日益增长和人们生活水平的提高,安全防盗已成为全社会最关心的问题之一。锁具是房门,保险箱等的主要配件。人们对锁的要求越来越高,既要安全可靠地防盗,又要使用方便。目前,门锁主要使用弹子锁,而弹子锁由于结构上的局限,其钥匙容易丢失,已难以满足当前社会管理和防盗要求,特别是在人员经常变动的公共场所,如办公室、宾馆等地方。保险箱主要使用机械密码锁,其结构较为复杂,制造精度要求高,成本高,且易出现故障。针对这些锁具给人们带来的不便,电子密码锁应运而生。电子密码锁具有结构简单,成本低,工作可靠,操作方便,保密度高等优点。由于其自身的优势,越来越受到人们的青睐,可应用于家庭,办公室,保险柜等需要有安全保障的场合。电子密码防盗锁用密码代替钥匙,不但省去了佩戴钥匙的烦恼,也从根本上解决了普通门锁保密性差的缺点。如果采用4位密码,则密码组合可达104,每增加1位,密码组合就增加10倍;同时可设多组密码,其中有一组是管理员密码,可以增加用户密码又清除所有用户密码1。电子密码锁的使用体现了人们消费水平、保安意识和科技水平的提高,而且避免了携带甚至丢失钥匙的麻烦。本次论文利用MAX+PlusII 软件仿真工作平台和VHDL编程语言,设计了一种电子密码锁。该电子密码锁具有预置密码和误码识别等功能,最终可用一片可编程逻辑器件FPGA/CPLD芯片实现,稍加修改就可以改变密码的位数和输入密码的次数,因而大大简化了系统结构,降低了成本,提高了系统的保密性和可靠性,升级和维护也都很方便,而且容易做成ASIC芯片,具有较好的应用前景。1.2 国内外研究状况目前,最常用的锁是20世纪50年代意大利人设计的机械锁,其机构简单、使用方便、价格便宜,但在使用中暴露了很多缺点:一是机械锁是靠金属制成的钥匙上的不同齿形与锁芯的配合来工作的。据统计,每4000把锁中就有两把锁的钥匙齿牙相同或类似,故安全性低。根据国外的统计资料,装有电子防盗装置的商业区或居民区盗窃犯罪率平均下降30%左右。二是钥匙一旦丢失,无论谁捡到都可以将锁打开。三是机械锁的材料大多为黄铜,质地较软,容易损坏。四是机械锁钥匙易于复制,不适于诸如宾馆等公共场所使用。出于安全、方便等方面的需要,许多智能锁(如指纹辨别、IC卡识别)已相继问世,但这类产品的特点是针对特定指纹或有效卡,只能适用于保密要求高且仅供个别人使用的箱、柜、房间等。另外,卡片式的IC卡易丢失,加上其成本一般较高,在一定程度上限制了这类产品的普及和推广。随着电子技术的发展,具有防盗报警等功能的电子密码锁代替密码量少、安全性差的机械式密码锁已是必然趋势。现代电子密码锁具有安全性高、成本低、功耗低、易操作等优点,在产品的普及和推广方面又比现代智能锁(如指纹辨别、IC卡识别)更具优势。目前设计电子密码锁的方法很多,例如用数字比较器等数字集成电路设计、用传统的PCB板设计、用PLC设计或者用单片机分离元件设计。但是目前使用的电子密码锁大部分是基于单片机使用分离元件实现的,以单片机为主要器件,其编码器与解码器的生成为软件方式,电路比较复杂,性能不够灵活2。在实际应用中,由于程序容易跑飞,系统的可靠性能较差且其成本较高3。而使用硬件描述语言VHDL可以更快速、灵活地设计出符合各种要求的电子密码锁,优于其他设计方法,使设计过程达到高度自动化,而且具有修改方便、设计周期短、易于调试、系统可靠性高等一系列优点。1.3 课题研究方法现代数字系统的设计多采用自顶向下的设计方法,属阶层式设计4。本文电子密码锁的设计,即采用自顶向下(Top-Down)的设计方法,使用可完全独立于目标器件芯片物理结构的硬件描述语言VHDL,首先,对密码锁的功能进行分析,从整体上了解该系统的工作情况并确定出方案来,然后,将系统划分阶层,从数据输入,译码显示,数据寄存,密码检测,密码存储,判断开锁,输出显示电路等各个模块进行构思分析。在做好系统分析的基础上,最后,在系统的基本功能级上对设计进行描述和定义,运用VHDL语言编写程序,并在MAX+PlusII 环境下进行编译和仿真直至达到系统的要求。综合结合多层次的仿真,在确保设计的可行性与正确性的前提下,完成功能确认。1.4 论文构成及研究内容本次毕业设计论文的内容是使用硬件描述语言VHDL编写程序,用可编程逻辑器件FPGA/CPLD实现一个四位电子密码锁,当输入的密码与锁内的密码一致时,绿灯亮,开锁;当输入的密码与锁内的密码不一致时,红灯亮,不能开锁。而且,密码可以由用户自行设置。本次毕业设计的主要内容如下为:(1)了解FPGA/CPLD的功能及特征,选用正确的芯片FPGA/CPLD是在PAL,GAL等逻辑器件的基础之上发展起来的,它们由逻辑块阵列,输入输出块和连线资源3部分组成。对用户而言,FPGA和CPLD的内部结构稍有不同但用法一样,因此在多数情况下不加以区分5。(2)掌握硬件描述语言VHDL电子密码锁的程序设计采用功能强大的通用硬件描述语言VHDL,它具有很强的行为描述能力,设计方法灵活,可以支持自顶向下(Top-Down)和基于库(Library-Based)的设计方法,硬件描述与具体的工艺技术和硬件结构无关,能轻易地改变设计的规模和结构,标准、规范易于共享与复用,易于向ASIC移植。(3)学会利用MAX+PlusII 软件进行程序仿真本设计采用的软件开发工具是美国Altera公司的MAX+PlusII,它具有原理图输入和文本输入(采用VHDL语言)两种输入手段,利用该工具所配备的编辑、编译、仿真综合、芯片编程等功能,可将设计电路图或电路描述程序变成基本的逻辑单元写入到可编程的芯片中(如FPGA/CPLD芯片),做成ASIC芯片。(4)利用MAX+PlusII 对系统进行软件程序仿真,进一步修改、调试程序;对仿真结果进行理论分析2 仿真设计基础本章将讲述电子密码锁计算机仿真设计的基础内容,包括硬件描述语言VHDL的介绍、仿真软件MAX+PlusII的应用简介以及可编程逻辑器件FPGA/CPLD芯片的概述。2.1 VHDL语言介绍VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,是超高速集成电路硬件描述语言的简称,诞生于1982年,它是目前标准化程度最高的一种硬件描述语言VHDL。最初由美国国防部提出,并把这个任务交给了TI,IBM和Intermetrics公司。1987年12月,IEEE接受VHDL为标准的HDL,这就是IEEEStd1076-1987LRM87。1993年,IEEE对VHDL进行了修订,增加了些功能,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,形成新的版本IEEEStd1076-1993LRM93。VHDL87和VHDL93不完全兼容,但可对VHDL87的源代码进行少量简单修改转变成合法的VHDL93代码。VHDL是一种全方位的硬件描述语言,包括从系统到电路的所有设计层次。在描述风格上,VHDL支持结构、数据流和行为三种描述形式的混合描述6。行为描述以过程语句来表达,数据流描述实际上是RTL级语言的扩展,因此VHDL几乎覆盖了以往各种语句描述语言的功能,整个自顶向下或由底向上的电路设计过程都可以用VHDL完成。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。VHDL除具备一般的HDL优点外,其特殊的优点是:(1)VHDL语言通用性好,支持面广。由于它是工业标准,凡大型CAD软件都推出支持VHDL的设计环境。因此用VHDL描述的设计文件,可用不同的设计工具。(2)VHDL语言重用性好,在用VHDL语言设计系统硬件时,没有嵌入与工艺有关的信息。当门级或门级以上的层次通过仿真验证后,再用相应的工具将设计映射成不同的工艺(如MOS,CMOS等)。这样,在工艺更新时,就无须修改原设计程序,只要改变相应的映射工具就行。因此VHDL设计模块便于在不同的设计场合重复使用。(3)VHDL语言可靠性好。VHDL文件兼技术文档与实体设计于一身,可读性好,既是技术说明,又是设计实现,从而保证了二者的一致性。(4)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(5)VHDL具有丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(6)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(7)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。(8)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。2.2 MAX+PlusII应用简介2.2.1 Max+PlusII概述Max+PlusII 是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件的供应商之一。Max+PlusII 界面友好,使用便捷,被誉为业界最易用易学的EDA软件。Max+PlusII 具有突出的灵活性和高效性,为设计者提供了多种可自由选择的设计方法和工具7。在Max+PlusII 上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。Max+PlusII 开发系统的特点:(1)开放的界面Max+PlusII支持与Cadence,Exemplarlogic,Mentor Graphics,Synplicty,Viewlogic和其它公司所提供的EDA工具接口。(2)与结构无关Max+PlusII系统的核心Complier支持Altera公司的FLEX10K、FLEX8000、FLEX6000、MAX9000、MAX7000、MAX5000和Classic可编程逻辑器件,提供了世界上唯一真正与结构无关的可编程逻辑设计环境。(3)完全集成化Max+PlusII的设计输入、处理与较验功能全部集成在统一的开发环境下,这样可以加快动态调试、缩短开发周期。(4)丰富的设计库Max+PlusII提供丰富的库单元供设计者调用,其中包括74系列的全部器件和多种特殊的逻辑功能(Macro-Function)以及新型的参数化的兆功能(Mage-Function)。(5)模块化工具设计人员可以从各种设计输入、处理和较验选项中进行选择从而使设计环境用户化。(6)硬件描述语言(HDL)Max+PlusII软件支持各种HDL设计输入选项,包括VHDL、Verilog HDL和Altera自己的硬件描述语言AHDL。(7)Opencore特征Max+PlusII软件具有开放核的特点,允许设计人员添加自己认为有价值的宏函数。2.2.2 Max+PlusII功能介绍(1)原理图输入MAX+PlusII软件具有图形输入能力,用户可以方便的使用图形编辑器输入电路图,图中的元器件可以调用元件库中元器件,除调用库中的元件以外,还可以调用该软件中的符号功能形成的功能块。图形编辑器窗口见图2-1。图2-1 图形编辑器窗口(2)硬件描述语言输入MAX+PlusII软件中有一个集成的文本编辑器,该编辑器支持VHDL,AHDL和Verilog硬件描述语言的输入,同时还有一个语言模板使输入程序语言更加方便,该软件可以对这些程序语言进行编译并形成可以下载配置数据。文本编辑器窗口见图2-2。图2-2 文本编辑器窗口(3)波形编辑器在进行逻辑电路的行为仿真时,需要在所设计电路的输入端加入一定的波形,波形编辑器可以生成和编辑仿真用的波形(*.SCF文件),使用该编辑器的工具条可以容易方便的生成波形和编辑波形。波形编辑器窗口如图2-3所示。使用时只要将欲输入波形的时间段用鼠标涂黑,然后选择工具条中的按钮,例如,如果要某一时间段为高电平,只需选择按钮“1” 。还可以使用输入的波形(*.WDF文件)经过编译生成逻辑功能块,相当于已知一个芯片的输入输出波形,但不知是何种芯片,使用该软件功能可以解决这个问题,设计出一个输入和输出波形相同CPLD电路。(4)管脚(底层)编辑窗口该窗口用于将已设计好逻辑电路的输入输出节点赋予实际芯片的引脚,通过鼠标的拖拉,方便的定义管脚的功能。(5)自动错误定位在编译源文件的过程中,若源文件有错误,Max+PlusII软件可以自动指出错误类型和错误所在的位置。图2-3 波形编辑器窗口(6)逻辑综合与适配该软件在编译过程中,通过逻辑综合(Logic Synthesizer)和适配(Fitter)模块,可以把最简单的逻辑表达式自动的吻合在合适的器件中。(7)设计规则检查选取CompileProcessingDesign Doctor菜单,将调出规则检查医生,该医生可以按照三种规则中的一个规则检查各个设计文件,以保证设计的可靠性。一旦选择该菜单,在编译窗口将显示出医生,用鼠标点击医生,该医生可以告诉你程序文件的健康情况。(8)多器件划分如果设计不能完全装入一个器件,编译器中的多器件划分模块,可自动的将一个设计分成几个部分并分别装入几个器件中,并保证器件之间的连线最少。(9)编程文件的产生编译器中的装配程序(Assembler)将编译好的程序创建一个或多个编程目标文件:EPROM配置文件(*.POF),例如,MAX7000系列SRAM文件(*.SCF),例如,FLEX8000系列的配置芯片EPROMJEDEC文件(*.JED)十六进制文件(*.HEX)文本文件(*.TTF)串行BIT流文件(*.SBF)(10)仿真当设计文件被编译好,并在波形编辑器中将输入波形编辑完毕后,就可以进行行为仿真了,通过仿真可以检验设计的逻辑关系是否准确。(11)分析时间该功能可以分析各个信号到输出端的时间延迟,可以给出延迟矩阵和最高工作频率。(12)器件编程当设计全部完成后,就可以将形成的目标文件下载到芯片中,实际验证设计的准确性。2.2.3 Max+PlusII设计过程使用Max+PlusII软件设计流程由以下几部分组成,如图2-4所示。(1)设计输入:可以采用原理图输入、HDL语言描述、EDIF网表输入及波形输入等几种方式。设计输入编 译在系统测试编 程修改设计仿真与定时分析图2-4 开发流程图(2)编译:先根据设计要求设定编译参数和编译策略,如器件的选择、逻辑综合方式的选择等。然后根据设定的参数和策略对设计项目进行网表提取、逻辑综合和器件适配,并产生报告文件、延时信息文件及编程文件,供分析仿真和编程使用。(3)仿真:仿真包括功能仿真、时序仿真和定时分析,可以利用软件的仿真功能来验证设计项目的逻辑功能是否正确。(4)编程与验证:用经过仿真确认后的编程文件通过编程器(Programmer)将设计下载到实际芯片中,最后测试芯片在系统中的实际运行性能。在设计过程中,如果出现错误,则需重新回到设计输入阶段,改正错误或调整电路后重复上述过程。如下所示,图2-5是Max+PlusII编译设计主控界面,它显示了Max+PlusII自动设计的各主要处理环节和设计流程,包括设计输入编辑、编译网表提取、数据库建立、逻辑综合、逻辑分割、适配、延时网表提取、编程文件汇编(装配)以及编程下载9个步骤。图2-5 编译主控界面2.3 FPGA/CPLD芯片概述现场可编程逻辑门阵列(FPGA:Field Programmable Gate Array)和复杂可编程逻辑器件(CPLD:Complex Programmable Logic Device)都是近年来发展迅速的大规模可编程专用集成电路(ASIC)。可编程ASIC器件的使用,是电子产品领域的一场革命。它使设计的电子产品达到小型化、微型化、集成化、高可靠性、低功耗以及成本低、重量轻、体积小、工作速度快、保密程度高,这些极大地提高了产品的性能价格比和竞争能力,而FPGA器件的现场可编程技术和CPLD器件的在系统可编程技术使可编程器件在使用上更为方便,并大大缩短了设计周期,减少了设计费用,降低了设计风险8。目前,FPGA和CPLD器件的应用已十分广泛,已成为电子系统设计的重要手段。FPGA/CPLD是在PAL,GAL等逻辑器件的基础之上发展起来的,它们由逻辑块阵列,输入输出块和连线资源3部分组成。对用户而言,FPGA和CPLD的内部结构稍有不同但用法一样,因此在多数情况下不加以区分。现场可编程逻辑门阵列FPGA是一种高集成度高密度的可编程逻辑器件,从Xilinx公司推出第一片FPGA以来,FPGA的集成密度和性能提高很快,其集成密度最高达100万门/片,系统性能可达200MHz。CPLD是由GAL发展起来的,其主体结构仍是与或陈列,自从1992年Latice公司1291高性能的具有在系统可编程ISP(In System Programmable)功能的CPLD出现以来,CPLD发展迅速。具有ISP功能的CPLD器件由于具有同FPGA器件相似的集成度和同样的易用性,在速度上还有一定的优势,使其在可编程逻辑器件技术的竞争中与FPGA并驾齐驱,共同发展。FPGA器件在结构上,由逻辑功能块排列为阵列,并由可编程的内部连线连接这些功能块来实现一定的逻辑功能。一般来说,FPGA芯片的结构可以分为三个部分:可配置的输入/输出模块(IOB: Input Output Block)、可配置逻辑块(CLB: Configurable Logic Blocks)和可编程内部连线资源(PIA: Programmable Interconnect Array)。CLB在器件中排列为阵列,组成了FPGA的核心阵列,完成用户指定的逻辑功能。每个CLB主要由一个组合逻辑、几个触发器、若干个多选一电路和控制单元组成。PIA位于芯片内部的逻辑块之间,经编程后形成连线网络,用于芯片内部逻辑间的相互连接,并在它们之间传递逻辑信息。IOB分布在芯片内部四周,在内部逻辑阵列与外部芯片封装引脚之间提供一个可编程接口,它主要由逻辑门、触发器和控制单元组成。CPLD器件是将多个可编程阵列逻辑(PAL)器件集成到一个芯片内,因而其具有类似PAL的结构。一般来说,CPLD器件至少包括以下三个部分:可编程逻辑功能块(FB)、可编程I/O单元、可编程内部连线。而FB中则包括有乘积项、宏单元等,有的CPLD还集成了RAM、FIFO或双口RAM等存储器,以适应DSI应用设计的要求。在开发、使用FPGA/CPLD器件的过程中,发现这类芯片还有很多方便使用、满足不同需求的优点,总结如下:(1)具有实现宏函数的嵌入式阵列,同时具有实现普通功能的逻辑阵列。这两类芯片都具有三态门,从而可以方便地实现总线结构。对于I/O驱动能力强的器件,可以在印刷线路板上直接驱动总线。(2)每个引脚都有一个独立的三态输出使能控制。每个I/O引脚都有漏极开路选择。每一种器件都有多种封装;每一种封装都有多种容量的器件,且引脚兼容,便于设计移植和升级。(3)提供异步的“乘积项”或者“和项”构成的寄存器的置位/复位信号。时钟信号可以由器件外部输入,也可以由内部产生异步时钟。时钟信号的有效边沿可以选择为上升沿,也可以选择为下降沿。(4)目前,大多数的FPGA和CPLD器件都具有符合IEEE1149.1技术规范的边界扫描测试(JTAC)电路,可以方便地进行芯片和板级的测试。提供一定的全局网线和缓冲器。全局网线由全局缓冲器驱动,为信号提供较短的延时和可忽略的扭曲。(5)每个I/O引脚口有单独的、可编程的指出电压摆率控制位,可配置成高摆率或低摆率输出。在速度要求低的情况下,采用低摆率可减小印制板上线间干扰和地线上的毛刺。遵守外围部件接口(PCI)技术规范,能够与PCI总线连接,实现复杂的PCI设计。(6)针对某种器件的某一种封装形式,都有不同速度等级的芯片,以满足不同速度要求的需要。FPGA/CPLD芯片的集成规模越来越大,它所能实现的功能也越来越强同时也可以实现系统集成。(7)FPGA/CPLD芯片在出厂之前都作过百分之百的测试,不需要设计人员承担投片风险。设计人员只需在自己的实验室里就可以通过相关的软硬件环境来完成芯片的最终功能指定,研制开发费用相对较低。(8)FPGA/CPLD芯片和EPROM配合使用时,用户可以反复地编程、擦除使用,或者在外围电路不动的情况下,用不同的EPROM就可以实现不同的功能,实现方案很容易改动,电路的设计周期很短9。3 电子密码锁设计本章将从电子密码锁设计的功能要求、结构组成、工作原理和实现方法等方面,进行系统分析构思并加以阐述。3.1 设计要求本次论文要求使用硬件描述语言VHDL设计一个四位密码的电子密码锁,并利用软件Max+PlusII进行功能和时序仿真,最终其应该达到的功能如下:1、密码输入:每按下一个键,要求在数码管上显示,并在显示器上的最右方显示出该数值,并将先前己经输入的数据依序左移一个数字位置。2、密码清除:清除密码输入,并将输入值置为“0000” ,即密码输入错误需要修改时,按下清除健,把前面所有的输入值清除为“0000”。3、上锁和开锁:按下开锁健把输入的数码和预存密码进行比较,当输入数码与锁内的密码一致时,绿灯亮,开锁;当输入的密码与锁内的密码不一致时,红灯亮,不能开锁。4、密码修改:将当前的输入值设为新的密码;而且,密码可以由用户自行设置并修改。在开锁的状态下需要修改密码时,输入4位数码,按下修改健,则自动将数码存入密码锁存器,并能将密码锁上锁。3.2 结构组成电子密码锁的整体结构组成如图3-1所示,主要分为三大部分:输入电路部分,控制电路部分和输出电路部分。其中,输入电路部分主要由键盘扫描电路、键盘消抖电路、键盘译码电路、按键数据缓存器,再加上外接的一个34矩阵式键盘所组成。控制电路部分是整个电子密码锁设计的核心环节,通过对各部分电路的联系融合,从而实现电子密码锁的各项功能。输出电路部分主要由七段LED显示电路实现。矩阵式键盘上的有效按键是十个数字键(0到9)和两个功能键(分别是“*”键:修改密码键;“#”键:输入数字小于四位时按下此键表示清除键,输入数字等于四位时表示开锁键)。图3-1 结构组成图3.3 工作原理具体工作过程说明:当在键盘上有一个按键被按下并被键盘扫描电路扫描到后,通过键盘消抖电路对其进行消除弹跳抖动,然后通过译码电路将此时的按键信号译码并送入数据缓存器,此时如果按下上锁键,数据缓存器中的数据就会送入密码锁存器成为当前密码。然后当下一次在键盘上有一个按键被按下时,就开始检测密码的正确与否,即当输入四位密码,并按下密码开锁键,就会启动比较器,将此时数据缓存器和密码锁存器中的数字进行比较,相等时绿灯亮,不等时红灯亮。同时,每次输入一位密码,输出电路都会通过多路选通器和七段译码器将密码显示到相应的LED上。如果按错按键,可以按下清除键清除已输入的数字。如果想修改密码,那就首先要开锁(用于防止他人随意更改密码),然后输入四位新密码,按下上锁键将密码存到密码锁存器当中,这时修改密码完成。在图3-1中矩阵式键盘上的有效按键0到9组成4位数字密码键,用于预置密码和开锁密码的编码,功能键“*”键是上锁键,即就是预置密码锁存键,功能键“#”键有开锁和清除密码两种功能。两个寄存器ACC(按键数据缓存器)和REG(密码锁存器)都是16位的。电子密码锁系统流程图如3-2所示。图3-2 系统流程图当有数字按键被按下时,系统信号源输出4MHz的时钟信号,经过时序产生电路,分频器产生键盘消抖取样信号,键盘扫描信号和七段显示器扫描信号,这些信号同时控制各个器件的工作,输入的第一个数字先经过BCD编码进行编码后,送入移位密码寄存器REG中先存储起来,同时在显示器即按键数据缓存器上显示刚输入的数字,用户开锁时,按开锁键“#”,输入到按键数据缓存器ACC中的4位密码和预存在REG中的4位密码进行比较,把比较的结果送入控制电路部分,控制电路部分发出脉冲信号来控制开锁电路和红绿灯显示。当ACC=REG时,通过开锁电路进行开锁,绿灯亮,开锁;当ACCREG时,红灯亮,不能开锁。3.4 操作实现方法综上所述,电子密码锁的具体实现方法如下:(1)当用户使用密码锁时,首先输入4位密码,然后按上锁键“*”,那么用户刚输入的4位密码就是预存密码。等下一次开锁时输入4位密码,按开锁键“#”后,输入的4位密码就和原来预存的密码进行比较。(2)当用户不小心按错数字时,按“#”键,可作清零处理,显示器显示为“0000”,重新输入4位密码。(3)当需要修改密码时,先要开锁,然后输入四位新密码,并按下密码修改键完成密码修改。(4)上、开锁:按下开锁健“#”把输入的数码和预存密码进行比较,当输入数码与锁内的密码一致时,绿灯亮,开锁;当输入的密码与锁内的密码不一致时,红灯亮,不能开锁,需要重新输入4位密码。4 主体电路设计本章将针对电子密码锁进行VHDL程序语言设计,并针对主体电路对每一部分编写程序并利用MAX+PlusII软件进行仿真。4.1 输入电路设计本次电子密码锁设计的输入电路的结构框图如图4-1所示,主要由键盘扫描电路、键盘消抖电路、键盘译码电路、按键数据缓存器,再加上外接的一个34矩阵式键盘所组成。图4-1 密码锁输入电路结构图4.1.1 矩阵式键盘工作原理矩阵式键盘是一种常见的输入装置,在计算机、电话、手机、微波炉等各工电子产品中被广泛应用。矩阵式键盘又叫行列式键盘,用带有I/O口的线组成行列结构,按键设置在行列的交点上。例如用22的行列结构可以构成有4个键的键盘,44的行列结构可以构成有16个键的键盘。这样,当按键数量平方增长时,I/O口线只是线性增长,这样就可以节省I/O口线10。如图4-2所示为一34矩阵式键盘。1234567890*#5经上拉电阻接VCCKEYC2.0KEYR3.0图-2 34矩阵式键盘矩阵式键盘的按键设置在行列线的交叉点,行、列线分别连接到按键开关的两端。其中列线通过上拉电阻接+5V的电压,即列线的输出被钳位到高电平状态。判断键盘中有无按键被按下是通过行线送入扫描信号,然后从列线读取状态得到的11。其方法是依次给行线送低电平,检查列线的输入。如果列线信号全为高电平,则代表低电平信号所在的行中无按键按下;如果列线有输入低电平,则低电平信号所在的行和出现低电平的列的交点处有按键被按下。由于矩阵式键盘是无法独自地完成按键工作的,因此需要搭配键盘扫描电路、键盘消抖电路、键盘译码电路及按键存储电路以完成正确的键盘输入工作。4.1.2 键盘扫描电路矩阵式键盘以行、列形式排列,键盘上的每一个按键是一个开关电路,当某键被按下时,该按键的接点会呈现逻辑0的状态,未按下时则呈现逻辑1状态。图中为4行3列,键盘的扫描可以以行扫或列扫方式进行12,图中为行扫方式,KEYR3-KEYR0为扫描信号。键盘扫描信号KEYR3与第一行相连,KEYR2与第二行相连,依此类推。很显然,扫描信号的变化顺序为:0111、1011、1101、1110,周而复始。在扫描的过程中,当有键按下时,对应的键位就为逻辑0状态,从而从KEYC2.0读出的键值相应列为0。具体情况如表4-1所示:表4-1 键盘扫描电路变化表KEYR3.0KEYC2.0对应的按键01110111101211031011011410151106110101171018110911100110101*110#若从KEYC2.0读出的值全为1时,表示没有键被按下,则不进行按键的处理。如果有键被按下,则将KEYC2.0读出的送至键盘译码电路进行译码。键盘扫描电路的作用是用来提供键盘扫描信号(表4-1中的KEYR3-KEYR0)的电路,扫描信号变化的顺序依次为0111-1011-1101-1110,周而复始。扫描时依序分别扫描四排按键,当扫描信号为1110时,扫描KEYR3这一排按键。当扫描信号为1101时,扫描KEYR2这一排按键。当扫描信号为1011时,扫描KEYR1这一排按键。当扫描信号为0111时,扫描KEYR0这一排按键。每扫描一排按键,就检查一次是否有按健被按下,如果这排没有按键被按下就忽略。反之,如果出现被按下的键,则立即进行按键盘编码的动作,且将编码的结果存储于寄存器中。下面是利用VHDL语言编写的键盘扫描电路的程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY scan IS PORT( CLK:IN STD_LOGIC; Q_OUT: OUT STD_LOGIC_VECTOR(19 DOWNTO 0); CNT_OUT: OUT STD_LOGIC_VECTOR(1 DOWNTO 0); CLK_SCAN: OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );END scan ;ARCHITECTURE a OF scan IS SIGNAL Q: STD_LOGIC_VECTOR(19 DOWNTO 0); SIGNAL CNT,S: STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL SEL: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(CLK) BEGIN IF CLKEVENT AND CLK=1 THEN Q=Q+1; END IF;END PROCESS; CNT=Q(4 DOWNTO 3); SEL=1110 WHEN S=0 ELSE 1101 WHEN S=1 ELSE 1011 WHEN S=2 ELSE 0111 WHEN S=3 ELSE 1111; S=CNT; CNT_OUT=CNT; Q_OUT=Q; CLK_SCAN=SEL;END a ;程序说明:(1)输入输出信号说明:CLK是数字系统主时钟频率信号,Q_OUT是用来表示CLK的计数结果,(以便比较两个脉冲波形间的频率关系,仿真结束后可删除,可以提高程序的简洁性),CNT_OUT即S信号是用来产生扫描信号的四个状态,CLK_SCAN是扫描结果信号。(2)程序中,利用WHENELSE语句将计数结果转换成键盘扫描信号,即1110-1101-1011-0111-1110依序循环下去。(3)程序中本来是用CNT=Q(18 DOWNTO 17)来产生键盘扫描及七段显示器电路的扫描信号,由于使用的Altera系统CLK时钟,是由石英晶体提供4MHz的原始时钟脉冲13,但在仿真时想要同时观察信号间的变化时间是非常不容易的事,所以仿真要花费较长的时间等待其结果。为了方便仿真波形、数据的比较,先需要将信号降频,因此改用较高频率的信号来取代,所以会出现CNT=Q(4 DOWNTO 3)语句。仿真结果如图4-3所示:图4-3 扫描电路时序仿真波形图仿真结果分析说明:(1)从仿真图中可以看出,利用CNT=Q(4 DOWNTO 3)实现了信号降频,便于实现键盘扫描信号(0-1-2-3,对应着E-D-B-7)。(2)仿真图里的CLK_SCAN(3 DOWNTO 0)是电路所产生的键盘扫描序列(E-D-B-7,即对应的1110-1101-1011-0111-1110,即KEYR3-KEYR0)。4.1.3 键盘消抖电路因为按键大多情况是机械式结构开关,在开关切换的瞬间会在接节点出现来回弹跳抖动的现象,对于激活关闭一般电器如开关日光灯、电视等一般电子用品,并不会有何影响,但对于灵敏度较高的电路,这种弹跳抖动现象却可能造成误动作而影响到正确性14。图4-4说明弹跳抖动现象可产生错误的抽样结果。按键信号取样信号取样结果图4-4 弹跳现象产生错误的抽样结果由图可见,虽然只是按下按键一次然后放掉,然而实际产生的按键信号却不只是跳动一次,经过取样的检查后,将会造成误判,以为键盘按了两次。如果调整取样频率,如图4-5所示,可以发现弹跳抖动现象获得了改善。按键信号取样信号取样结果图4-5 调整抽样频率后得到的抽样结果因此必须加上键盘消抖电路,避免误操作信号的发生。键盘消抖电路是通过调整取样信号频率实现的,所以其使用的脉冲信号的频率必须比其它电路使用的脉冲信号频率更高,通常将扫描电路或每个LED显示电路的工作频率定在24Hz左右,将键盘消抖电路的工作频率定在125Hz左右,两者的工作频率是通常的4倍或更高。按键发生抖动现象,其一是因为机械按键本身结构原因会引起抖动;其二是因为按键的时间长度不确定,可能从50ms到2s不等15。所以要实现键盘消抖电路,除了需要调整取样信号的频率外,还需要在键盘消抖电路的基础上再组合一个微分电路,目的是让每一次对按键反应的时间长度都维持在一个脉冲波形的时间长度16。下面是利用VHDL语言编写的键盘消抖电路的程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;LIBRARY ALTERA;USE ALTERA.MAXPLUS2.ALL;ENTITY debounce IS PORT( D_IN,CLK:IN STD_LOGIC; DD1,DD0,QQ1,QQ0:OUT STD_LOGIC; D_OUT,D_OUT1:OUT STD_LOGIC );END debounce ;ARCHITECTURE a OF debounce IS SIGNAL VCC,INV_D:STD_LOGIC; SIGNAL Q0,Q1:STD_LOGIC; SIGNAL D1,D0:STD_LOGIC;BEGIN VCC=1; INV_DVCC,Q=Q0,CLK=CLK,CLRN=INV_D,PRN=VCC); DFF2:DFF PORT MAP (D=VCC,Q=Q1,CLK=CLK,CLRN=Q0,PRN=VCC); PROCESS(CLK) BEGIN IF CLKEVENT AND CLK=1 THEN D0=NOT Q1; D1=D0; END IF;END PROCESS ;DD0=D0;DD1=D1;QQ1=Q1;QQ0=Q0;D_OUT=NOT(D1 AND NOT DO);D_OUT1=NOT Q1;END a ;程序说明:(1)输入输出信号说明:CLK是数字系统时钟频率信号即取样信号,D_IN是按键信号,D_OUT是取样结果信号。(2)程序中通过调用D触发器DFF1,DFF2模块来实现键盘的消抖。(3)程序中,使用D_OUT=NOT(D1 AND NOT DO)实现微分电路的目的,让每一次对按键反应的时间长度都维持一个脉冲波形的时间长度。仿真结果如图4-6所示:图4-6 消抖电路时序仿真波形图仿真结果分析:(1)从图可看出,原本前后弹跳抖动的按键信号D_IN经过键盘消抖电路处理后都已经被消除,得到的取样结果信号D_OUT将不会导致误操作信号的产生。(2)从图可看出,键盘消抖电路最终实现了消除弹跳抖动现象,一次按键不会再被当成是多次按键。4.1.4 键盘译码电路上述矩阵式键盘中的按健可分为数字按键和功能按键,每个按健都有自己相应的功能,比如输入密码、清除数码、设置密码、解除密码、上锁等。其中数字按健主要用来输入数字,但是键盘所产生的输出(KEYC2-KEYC0)无法拿来直接使用;另外不同的功能按健也担负不同的功能,比如“#”键可以清除密码和开锁,“*”键可以设置密码上锁。因此键盘扫描电路扫描得到的信号规律性不强,键盘扫描输出不能拿来直接使用17,必须对其进行译码才能使用,即必须由键盘译码电路来规划每个按健的输出形式,以便执行相应的动作。如表4-2所示,只要使用 casewhen 或 whenelse 语句,便可完成键盘译码电路设计。表4-2 键盘译码电路变化表KEYR3.0KEYC2.0对应的按键译码输出功能011101110001数码输入10120010数码输入11030011数码输入101101140100数码输入10150101数码输入11060110数码输入110101170111数码输入10181000数码输入11091001数码输入11

温馨提示

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

评论

0/150

提交评论