基于VHDL的电子密码锁设计与仿真_第1页
基于VHDL的电子密码锁设计与仿真_第2页
基于VHDL的电子密码锁设计与仿真_第3页
基于VHDL的电子密码锁设计与仿真_第4页
基于VHDL的电子密码锁设计与仿真_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

基于VHDL的电子密码锁仿真设计目录中文摘要 IV关键词 IVAbstract VKeywords V第一章 引言 11.1 设计目的 11.2 设计意义 11.3 设计要求 21.4 相关领域概述 31.4.1QuartusII简介 31.4.2CPLD简介 4第二章 开发方案与论证 52.1开发方案 52.1.1并行开发方案 52.1.2串行开发方案 62.2方案论证 6第三章 电路模块功能设计 93.1受控电路 93.1.1键盘编码电路模块 93.1.2按键消抖电路模块 103.1.3密码比较电路模块 113.1.4密码比较计数器电路模块 113.1.5密码预置电路模块 123.1.6错误报警电路模块 123.1.7触发器电路模块 133.2控制器电路 13第四章 详细设计与模块仿真 174.1受控电路源程序与仿真 174.1.1键盘编码电路模块 174.1.2按键消抖电路模块 184.1.3密码比较电路模块 194.1.4比较计数器 194.1.5密码预置电路模块 204.1.5错误报警电路模块 214.1.6输出电路模块 224.2控制器电路源程序与仿真 224.3顶层文件的设计与实现 274.3.1编码预置模块 274.3.2顶层文件设计 28第五章 设计结果 315.1仿真测试 315.1.1仿真测试波形 315.1.2逻辑测试 33第六章总结与展望 356.1密码锁系统应用场合 356.2密码锁系统未来发展 356.3总结 36参考文献 37致谢 38附录 39附录AVHDL源代码 39A-1编码器 39A-2比较器 41A-3比较计数器 41A-4密码预置 42A-5报警计数器 43A-6触发器 44A-7输入 45附录B控制器逻辑图 47基于VHDL的电子密码锁设计与仿真中文摘要随着社会物质财富的不断积累,安全防盗以成为社会问题。而锁自古以来就是人们防盗的首选。要既能防盗又要实用方便。在当下技术环境下数字锁成为一种趋势。本设计采用EDA技术设计一个防盗数字密码锁,欲解决此问题。在QuartusII环境下采用VHDL硬件描述语言设计电子密码锁,阐述了其工作原理,给出了具体的电路图和仿真波形。该密码锁具有体积小、功耗低、保密性强、错误累积报警等功能。可应用于住宅、保险箱等需要防盗的场所,实用性较强。采用VHDL描述,产品的扩展性强,很容易于最新技术结合形成功能更加强大的系统。本系统采用矩阵键盘输入。密码由8位十进制数组成,密码多一位少一位都算错误,安全性有足够保障。并且当错误开锁次数达到3次报警器将鸣叫,形成一个连锁防盗系统。在错误尚未发生时,可通过复位回到密码输入状态,体现人性化的设计。在报警时,警报的切断只能由保安室或实用者不能接触的地方控制,为无关操作人员增加了心理威慑作用。关键词:QuartusII,VHDL,密码锁,电路仿真DesignandsimulationofdigitalcodedlockbasedonVHDLAbstractWiththeaccumulationofsocialmaterialwealth,thepreventionofthieveshasbecomeasocialproblem.Lockisalwaysthefirstchoicewhenpeopledealwiththieves.Itrequireslocknotonlytobeagainstwiththeft,butalsopracticalandconvenient.Underthecircumstanceofcurrenttechnology,numberspadlockisbecomingatrendamonglocks.ThisdesignmakesuseofEDAtechnologytodesignaburglardigitalcombinationlocktopreventfromthieves.ThisdesignwilluseVHDL(HardwareDescriptionLanguage)underthecircumstanceofQuartusIItoexpounditsworkingprincipleandprovidecircuitdiagramandsimulationwaveform.Thiscodedlockhasthecharacteristicofsmallsize,lowconsumption,highsecurityandthefunctionoferroraccumulationalarmetc.Thiskindoflockispracticalbecauseitcanbeusedinresidence,proofboxandotherplaceswherehavetheneedofpreventfromthieves.Thelockusematrixkeyboardtoinput.It’shasenoughsbecauseitspasswordconstitutesof8decimalnumbersanditwouldbewrongifthenumberismorethan8orlessthan8.It’shumanizationbecausetherewillbealarmifthereare3timeserrorswheninputthepassword.Thealarmcanonlybecutbypublicsecurityorwherebeyondthievestouch,whichwillmakethievesmoreafeard.Keywords:QuartusII,VHDL,codedlock,circuitsimulation引言随着社会物质财富的日益增长,安全防盗已成为社会问题。而锁自古以来就是把守门户的铁将军,人们对它要求甚高,既要安全可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。数字密码锁是实际生活中运用广泛的一种数字电路,主要功能是对某些操作进行加密保护,目的是避免无权人员使用某些设施或者进行越权操作。本章首先介绍本设计的目的、设计意义以及设计要求。然后简述相关领域的发展。设计目的硬件描述VHDL语言,描述能力强、覆盖面广、抽象能力强,采用VHDL建立硬件模型可以从繁琐的元件设计转向功能设计。用VHDL可以快速方便地设计出符合各种要求的数字密码锁,而且操作简单,密码的位数可适当增该,增强其安全性,且很容易做成ASIC芯片,设计过程达到高度自动化,设计完成后可在Quartus=2\*ROMANII环境下进行电路的模拟仿真。使设计成本尽可能降低。本次设计为开发一款体积小,功耗低,操作简易便于修改维护,具有良好应用前景的数字密码锁。设计意义在日常生活中和工作中,住宅的安全,单位的文件,和一些个人资料的保存。人们往往采用上锁的方法来解决。如果采用传统的机械锁,人们往往需要携带很多钥匙,既不方便,钥匙的丢失还会使安全性大打折扣。随着物质财富的积累和科学技术的发展,人们对锁的要求越来越高。密码锁代替机械锁成为一种趋势。密码锁具有安全性高、低成本、低功耗、易于操作,等等优点。在安保领域,有防盗报警功能的电子密码锁逐渐取代了传统机械密码锁。机械密码锁结构的复杂度和密码位数成正比成本高且安全性能差。而电子密码锁无论在技术上还是性能上都优于机械密码锁。当然,特定的使用环境除外。随着大规模集成电路技术的发展,特别是硬件描述语言(VHDL),出现了用微型智能密码锁,它是除了具有电子密码锁的功能外,还拥有了智能化管理,专家分析系统,从而使密码锁的作用,比如高安全性、可靠性,应用日益广泛的应用。人们对安全的重视和科学技术的发展,许多电子智能锁如,指纹识别、IC识别等已经出现在国内外。但是这些产品的特点需要一个特别的指纹或有效卡,成本相对较高不益于普及使用。针对当前技术和水平、市场接纳、电子密码锁是这类电子防盗产品的主流。设计要求根据实际需求数字密码锁应具有以下功能:采用8位十进制数字作为内置密码,修改密码必须重构逻辑。系统通电后必须给密码锁上锁,即按上锁键SETUP,表示密码锁准备就绪,可以接受外部输入的密码数字,这时用来指示密码锁工作情况的指示灯和扬声器处于不工作状态,系统处于上锁等待密码输入状态。开锁。开锁操作过程如下:I按下复位键START,此时系统各部分处于初始状态。II输入密码,一次键入8个十进制数字。III按下开锁键OPEN,若密码正确,锁被打开(用绿灯LD点亮表示);若密码不正确,锁不被打开(绿灯LD不亮)不提示错误(用红灯HD表示)。IV使用者按错号码,可在按开锁键OPEN以前按复位键START消除输入,重新输入密码。V开门成功事物处理完毕后,必须按下上锁键SETUP,是系统进入就绪状态。VI所有输入采用键盘输入。报警功能。系统允许错误开门2次,当第3次错误开门将报警。在报警状态,上锁键SETUP、复位键START、开门键OPEN、数字键0~9应不起作用,需用另一内部设置键解除锁定(ISETUP),该按键在实际应用中可放置在保安室或其他使用者不能接触的地方。在本设计中为描述方便,将内置与键盘中。相关领域概述本节将对电子密码锁的开发环境QuartusII和最后的实现环境CPLD进行简要介绍。1.4.1QuartusII简介本设计是基于QuartusII9.0的,在此对它作一些介绍。QuartusII[12]是Altera提供的FPGA/CPLD开发集成环境,Altera是世界上最大的可编程逻辑器件供应商之一。QuartusII在21世纪初推出,是Altera前一代FPGA/CPLD集成开发环境MAX+PLUSII的更新换代产品,其界面友好,使用便捷。QuartusII提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。Altera的QuartusII提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统(SOPC)设计的综合性环境和SOPC开发的基本设计工具,并为AlteraDSP开发包进行系统模型设计提供了集成综合环境。QuartusII设计工具完全支持VHDL、Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。QuartusII也可以利用第三方的综合工具,如LeonardoSpectrum、SynplifyPro、FPGACompilerII,并能直接调用这些工具。同样,QuartusII具有仿真功能,同时也支持第三方仿真工具,如ModelSim。此外,QuartusII与MATLAB和DSPBuilder结合,可以进行基于FPGA的DSP系统开发和数字通信模块的开发。QuartusII包括模块化得编译器。编译器包括的功能模块由分析/综合器(Analysis&Synthesis)、适配器(Fitter)、装配器(Assembler)、时序分析器(TimingAnalyzer)、设计辅助模块(DesignAssistant)、EDA网表文件生成器(EDANetlistWriter)、编辑数据接口(CompilerDatabaseInterface)等。可以通过选择StartCompiler来运行所有的编译器模块,也可以通过选择Start单独运行各个模块。还可以通过选择CompilerTool(Tools菜单),在CompilerTool窗口中运行该模块来启动编译器模块。在CompilerTool窗口中,可以打开该模块的设置文件或报告文件,或打开其他相关窗口。QuartusII编译器支持的硬件描述语言有VHDL、Verilog和AHDL。QuartusII支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的模块(元件)进行调用,从而解决了原理图与HDL混合输入设计的问题。在设计输入之后,QuartusII的编译器将给出设计输入的错误报告。可以使用QuartusII带有的RTLViewer观察综合后的RTL图。1.4.2CPLD简介CPLD(ComplexProgrammableLogicDevice)复杂可编程逻辑器件[12],是从PAL和GAL器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围。早期的CPLD大多采用EPROM编程技术,其编程过程与简单PLD一样,每次编程需要在专用或通过设备上运行。后来采用E2PROM和闪烁存储器技术,使CPLD具有了“在系统可编程(ISP)”特性。所谓在系统可编程是指未编程的ISP器件可以直接焊接在印制电路板上,然后通过计算机的数据传输端口和专用的编程电缆对焊接在电路板上的ISP器件直接多次编程,从而使器件具有所需要的逻辑功能。这种编程不需要使用专用的编程器,因为已将原来属于编程器的编程电路和升压电路集成在ISP器件内部。ISP技术使得调试过程不需要反复拨插芯片,从而不会产生引脚弯曲变形现象,提高了可靠性,而且可以随时对焊接在电路板上的ISP器件的逻辑功能进行修改,从而加快了数字系统的调试过程。目前。ISP已成为系统在线远程升级的技术手段。目前,绝大多数FPGA器件具有ISP功能。例如,Altera公司的MAX7000S(5V)、MAX7000A(3.3V)和MAX7000B(2.5V)系列,Xilinx公司的XC9500系列以及Lattice公司的CPLD器件等。开发方案与论证本章将首先介绍数字锁两种不同的开发方案,从方案的原理,实现的成本进行比较。然后论证本设计采用的方案——串行方案。2.1开发方案 开发方案有串行开发方案和并行开发方案下面分别介绍2.1.1并行开发方案并行开发方案,密码采用并行输入方式。密码输入完毕后再一次性比较。原理图如图2.1所示。图2.1并行开发原理图 数据通过键盘输入,消抖后编码存入数据缓冲器。在控制器的控制下与预存密码进行比较正确则开启密码锁。达到错误次数报警。2.1.2串行开发方案 串行开发方案,密码采用串行输入。边输入,边比较。多拨、少拨均视为错误。原理图如图2.2所示。图2.2串行开发原理图 数据通过键盘输入,消抖后编码。在控制器的控制下与预存密码进行比较正确则开启密码。否则视为错误开启,达到错误次数报警。2.2方案论证 串行开发所需硬件资源少,本设计采用串行开发方案。 依据上述对数字锁系统的功能要求,其系统整体框图如图2.3所示,它将系统划分为控制器和受控电路两部分,受控电路由消抖电路模块、编码器、比较器、密码预置、计数器、触发器等模块组成。数字密码锁控制系统的输入信号包括:数字密码键盘0~9,上锁键STEUP,复位键START,解除锁定键ISETUP,开锁键OPEN;输出信号包括:开门指示灯LD,错误指示灯HD,报警器BG。数字锁的密码采用3x4键盘输入,由于3x4键盘输出为行线/列线信号,所以首先经编码器编码(图中kr,kc为总线信号)将行线/列线信号变为相应0~9的8421BCD码并与原存储于系统中的密码相比较,因而需要有一个4位等值比较器,并将比较结果DEP反馈给控制器。图2.3数字密码锁系统电路整体框图编码器模块的作用是将键盘输入的信号编成BCD码,并且每键入一个数码,应向控制器送一个脉冲DATA_IN表示有数据输入。比较器模块的作用是将输入的密码和内置密码进行比较,并将结果DEP反馈给控制器。密码预置模块的作用是预置内部密码,因为内部预置密码采用8位十进制数,且用BCD码表示,需32个输入端送入,所以可选用32选4数据选择电路来选择密码。由于密码是串行输入,依次分别于一个预置码进行比较,因为8个十进制预置码是提前预置好的,所以还需要一个计数器来选择目前要比较第几个数据。32选4数据选择器的3位地址码用一个模8计数器控制。控制器向计数器提供一个清零信号RESET_CNP和时钟信号CNP,每次通过键盘输入一个密码数字,控制器向计数器提供一个时钟脉冲CNP,使计数器加1,当计数器到8时,说明8个密码数字已经比较完毕,此时计数器产生进位信号CO8反馈给控制器,控制器进入待启动状态或预警状态。由于输入都采用键盘输入,其按下时刻和持续时间长短是随机的,且存在因簧片反弹引起的电平抖动现象。必须在每个开关后面安排一个消抖同步模块,以保证系统能真确捕捉到输入脉冲。消抖同步模块的作用是保证系统能捕捉到输入脉冲,并保证没按一次键只形成一个宽度等于系统时钟周期的脉冲。报警计数器模块的作用是,每一次开启错误,控制器向报警计数器提供一个时钟信号HD,使计数器加1,当计数器到3时,说明错误次数达到3次,模3进位信号CO3反馈给控制器,控制器发出报警信号BG。解除锁定或正确开门后控制器向报警计数器发出清零信号ISETUP,使计数器清零。控制器模块在密码系统每收到一个输入的密码数字时,应向比较计数器发出一个时钟信号CNP。当密码系统在按下开锁键OPEN前收到第9个时钟信号时,应装入预警状态,等待按下开锁键OPEN后发出错误信号HD。因此,密码锁系统没输入一个密码数字,应向控制器送入一个脉冲DATA_IN,显然此信号也应同步,即形成宽度只占一个系统时钟的脉冲。密码锁系统的输出有开锁指示灯LD(绿灯)、错误指示灯HD(红灯)和扬声器。LD和HD由触发器控制。控制器分别向触发器提供一个置位信号S_LD、S_HD,按下上锁键时向触发器提供一个复位信号RESET_L,用来控制绿灯LD、红灯HD工作。电路模块功能设计数字密码锁系统电路设计采用自顶而下的设计方法。自顶而下设计方法的主要思想是对数字系统分模块,分层次进行设计,这样可以将复杂的设计划分成若干个相对简单的模块,不同的模块可完成数字系统中某一部分的具体功能,从而使电路设计大为简化。本章对个模块进行功能设计,即各模块的功能描述。将分受控电路和控制电路两部分描述。3.1受控电路受控电路的主要版块有,键盘编码电路模块、消抖电路模块、比较器模块、密码预置木块、比较计数器模块和报警计数模块3.1.1键盘编码电路模块 数字密码锁控制系统的输入信号包括:数字密码键盘0~9,复位键START,开锁键OPEN,上锁键SETUP,功能键ISETUP。 4*4矩阵式键盘完全能满足上述要求,且经济美观。根据需要,键盘布局如图3.1所示。图3.1键盘按键布局 根据4*4矩阵式键盘特点,采用行列式编码方式。为减少硬件的开销,只对数字0~9进行编码。行线kc送高电平(1111),列线kr送低电平(000)。当没有按键时,行线和列线是断开的。当有按键时,行线和列线信号将相应有所改变,据此,可对此类信号进行编码,达到识别的目的。键盘的输入原理如图3.2所示。图3.2键盘编码原理3.1.2按键消抖电路模块 由于本设计采用的是键盘输入,按键时手部的抖动,输入信号就会产生不稳定脉冲。如果信号不加以处理就可能会导致错误的信号识别。因此每个输入端就各需要一个消抖电路。也就是说,输入信号波形有抖动,但经过消抖之后,其输出也为正规的矩形波。 如图3.3所示的信号波形,在正常信号的上升沿和下降沿含有一些随即干扰信号,或随即抖动。为了去除这些抖动干扰脉冲,可采用如图3.4所示电路来实现这个目标。 图3.3信号上升与下降沿都含有随机干扰抖动信号 图3.4所示电路有2个上升沿D触发器和一个2输入与门构成。设key_in是输入信号,clk是消抖电路本身的工作时钟。2个D触发器连接成同步时序方式,即将他们的输入端都连在一起。输入信号以移位串行方式向前传递。信号的输出口是key_out。 当信号输入电路后,能在key_out输出脉冲信号的条件是,必须2个D触发器的输出端都同为1,从而2输入与门来输出高电平。由于干扰信号是一群宽度狭窄的随机信号,在串入是,很难同时时与门输出为1,而只有正常信号才有足够的宽度通过此电路,从而起到“滤波”功能。图3.4消抖电路3.1.3密码比较电路模块 密码验证用于将编码器转化后的8421BCD码与预置密码进行比较。因此只需要比较两组数据是否相等,不需要知道谁大谁小,所以采用等值比较器。设比较器的4个输入端为y0~y3,输出端为f0~f3,当比较两数正确时输出一个dep有效信号“1”给控制器,否则输出为“0”。如图3.5所示。图3.5密码验证3.1.4密码比较计数器电路模块本设计采用串行输入,所以还得有计数器,用于判断密码比较到第几个数字和密码是否输入完毕。计数器是一种累积脉冲的逻辑部件,clr为复位信号,高电平有效。当复位信号clr为低电平时,脉冲信号clk每来一个脉冲就计数一次,模8进位信号co8用于判断密码是否输入完毕,q[i]用于判断目前比较到第几个数字。设计如图3.6所示。图3.6密码比较计数器3.1.5密码预置电路模块 密码预置电路用于设置密码,本系统密码采用内置方式。修改密码需重够逻辑。密码预置需能判断需比较第几位密码。系统内置8位密码用8421BCD码表示则需要4位输出y0~y3。q[i]接收由密码比较计数器发来的信号用于判断比较第几位密码。设计如图3.7所示。图3.7密码预置3.1.6错误报警电路模块 在实际运用中,增加报警功能有他的必要。本系统采用3次错误报警设置。那么就需要一个模3计数器。同密码比较计数器原理基本一样。clr为复位信号,高电平有效。当复位信号clr为低电平时,脉冲信号clk每来一个脉冲计数一次,模3进位信号co3用于判断错误次数是否达到上限。设计如图3.8所示。图3.8报警计数器3.1.7触发器电路模块触发器是一个门输出电路,用LD表示密码锁打开,HD表示开启过程出错。控制器向该模块提供置数和复位信号(低电平有效),用于驱动两个指示灯和门电路工作。当复位信号RESET_L有效时,指示灯LD和HD熄灭。RESET_L为脉冲信号,门状态是一个连续状态,所以采用非门信号作为输出。设计图如图3.9所示。图3.9触发器3.2控制器电路 控制器是整个电子密码锁的核心。根据设计要求,可知控制器共有6个状态,即待锁状态A、上锁状态B、输入密码状态C、待启动装袋D、预警状态E和报警状态F。控制器模块工作状态流程图(简称ASM图)如图3.10所示。矩形框:工作状态菱形框:分支条件平行四边形框:条件输出开门键(OPEN)上锁(SETUP)解除锁定(ISETUP)上锁(STATR)图3.10控制器工作状态流程图待锁状态A待锁状态是指密码锁系统处于打开、报警后的状态。此时数字锁尚未“锁好”,还未进入正常运行,因此系统不接受除上锁键(SETUP)或解除锁定键(ISETUP)外的任何输入信号。当按下上锁键后,系统将进入上锁状态,且将开门标志灯LD、错误灯HD熄灭,警报器声音切断,因而需输入RESET_L复位信号。在图3-10待锁状态的流程中,当SETUP=1时进入第二状态,START=0时维持原状态;当SETUP=1时输出RESET_L复位信号。至于en使能信号,是用来控制数据输入信号DATA_IN、开门信号OPEN输入的,在本状态皆应无效且条件上锁SETUP无关,是一种无条件输出,因而标在算法状态框旁边,并用箭头↓表示无效。上锁状态B系统的第二状态实在按下上锁键SETUP以后,数字锁已“锁好”,系统正常运行,等待执行开锁状态。当按下START时,将转入开锁状态,开锁程序开始执行,等待输入密码数字,此时应将计数器清零,故在第二工作状态中有一条输出框,输出比较计数器清零信号RESER_CNP。输入密码状态C进入此状态时,en使能信号变为有效允许输入密码数字0~9或按下开锁键OPEN,故而在状态框旁边标有en↑。该状态每收到一个信号应线判断是密码数据信号DATA_IN还是开锁信号OPEN。如果是开锁信号OPEN则不符合开锁程序,应发出开锁错误信号,级发出红灯信号HD;若是密码信号,则控制器应向计数器发出时钟信号CNP,若DEP=0,意味着输入密码不对,应转入预警状态E,否则检查计数器状态是否已计到8,若模8信号CO8有效则表示已接受到8个正确密码,可转入下一状态待启动状态,否则返回本状态,继续接受其他密码。在转移到预警状态E或待启动状态D以前,如果收到复位信号SATRA,控制器发出比较计数器清零信号RESET_CNP,使计数器清零,则前面收到的密码无效,重新进行输入密码操作。待启动状态D在待启动状态,这时控制器将判断按键输入的是密码数字信号还是开锁信号,若是开锁信号OPEN,则发出绿灯信号LD,使绿灯点亮,启动开门续电器;若是数字密码信号,则进入预警状态。在待启动状态下,在接受信号以前如果按动复位键START,则控制器将发出比较计数器清零信号RESET_CNP并回到输入密码状态。预警状态E在预警状态,此时若按复位键,系统发出比较计数器清零信号RESET_CNP后,并使控制器回到输入密码状态。若按下开锁键OPEN,使红灯HD点亮,并向报警计数器发出时钟信号。错误状态F在此状态,每亮一次红灯HD,计数加1,按复位键SATRA返回到密码输入状态C。当计数器CO3有效为高电平时进入报警状态。报警状态G当报警计数器CO3有效,此时报警器鸣叫,须按解除锁定键I_SETUP方回到上锁状态。详细设计与模块仿真本章主要解决各功能模块的VHDL实现和其功能的仿真测试。4.1受控电路源程序与仿真受控电路在控制器的控制下完成相应的电路功能,在第三章我们完成了电路的功能设计,接下来将对各模块进行VHDL实现以及相应功能的仿真测试,测试是否达到设计要求。4.1.1键盘编码电路模块 该电路模块主要完成的是键盘的编码。VHDL源程序见附录A-1。 编码器电路的仿真波形如图4.1所示。从波形图可以看出,en是使能端,高电平有效,它由控制器的输出控制。当en=0是,输出为0;当en为高电平时,可以进行编码。当en=1时,按下相应的按键,输出即为输入数据对应的8421BCD码。dout端由于用来记录输入数据的个数,因此无论输入是否有效,只要有输入dout端就会产生高电平输出,以记录输入数据的个数。dout信号经消抖同步后送到控制器data_in输入端。图4.1编码器电路模块的仿真波形 通过VHDL源代码很容易得逻辑电路图如4.2所示。图4.2编码器电路模块逻辑电路4.1.2按键消抖电路模块本部分采用所用都是基本元件,宜采用图形设计输入方式,如图3-4所示。这里不在熬述。 消抖电路模块仿真波形如图4.3所示。由波形图可以看出,在一个上升沿检测到有按键时则不管这一时钟周期内有多少次抖动,只输出一个时钟周期宽度的脉冲信号。并且当按键一直持续多少个时钟周期时,输出信号仍为一个时钟周期宽度的单脉冲。图4.3消抖电路仿真波形 消抖电路逻辑电路图如图4.4所示.图4.4消抖电路逻辑电路4.1.3密码比较电路模块密码验证就是一个等值比较电路,将编码器转化后的8421BCD码与预置密码进行比较。VHDL源程序键附录A-2。 比较器电路模块仿真波形如图4.5所示。从比较器仿真波形可以看出,当两组数据y[3..0]与f[3..0]相等时输出端dep输出有效信号高电平给控制器,否则输出低电平。图4.5比较器仿真波形 比较器逻辑电路如图4.6所示。图4.6比较器逻辑电路4.1.4比较计数器因为是串行输入,密码比较还需要一个计数器器。VHDL源程序见附录A-3。 比较计数器电路模块的仿真波形如图4.7所示。从波形图可以看出,当复位信号clr为低电平时,时钟脉冲输入clk在上升沿有效,输出端q[2..0]进行8进制计数,并且当计数到8个数时,进位信号CO8转为高电平,表明密码输入完毕,可以开启密码锁。图4.7比较计数器仿真波形 比较计数器逻辑电路图如图4.8所示。图4.8比较计数器逻辑电路4.1.5密码预置电路模块 本设计采用内置密码设置,修改密码需重构逻辑。这里设定密码为八位数12345678,同时密码预置部分还需要判断比较到第几个数字。信号通过比较计数器获得。VHDL源程序见附录A-4。 密码预置电路模块仿真波形如图4.9所示。从波形可以看出,从比较计数器过来的信号q[2..0]能正确的控制预置密码的输出。图4.9密码预置电路仿真波形 密码预置电路模块逻辑电路图如图4.10所示。图4.10密码预置逻辑电路4.1.5错误报警电路模块当开门错误达到3次时,报警器将鸣叫。因此需要一个模3计数器。VHDL源程序见附录A-5。报警计数器电路模块的仿真波形如图4.11所示。从波形图可以看出,当复位信号clr为低电平时,时钟脉冲输入clk在上升沿有效,输出端q[1..0]进行1进制计数,并且当计数到3个数时,进位信号co3转为高电平,表明错误次数达到上限,开始报警。图4.11报警计数器仿真波形 报警计数器电路模块逻辑电路图如图4.12所示。图4.12报警计数器逻辑电路4.1.6输出电路模块 输出电路主要是一个门状态电路,采用两个RS触发器输出控制驱动电路。VHDL源程序见附录A-6。 触发器模块仿真波形如图4.13所示,在图中z1为控制器端输出的原始信号,将与其相反的qb信号加上非门为红灯和绿灯的驱动信号。图4.13触发器模块的仿真波形 触发器模块的逻辑电路如图4.14所示。图4.14触发器模块逻辑电路4.2控制器电路源程序与仿真 控制器是系统的最核心部分,对系统各模块的输入输出进行逻辑综合,从而达到设计要求。控制器是一个时序逻辑电路,是根据控制器详细工作流程图来设计。根据3.2工作流程图,可得出如图4.15MDS状态图。 图4-15说明如下: 1:SETUP2:SETUP3:SATRA4:START6:OPEN∙START8:OPEN∙10:OPEN11:DATA_IN∙13:DATA_IN∙START14:DATA_IN15:17:START∙OPEN18:CO3∙21:ISETUP22:ISETUP图4.15控制器MDS图采用一对一的方式,用7个触发器QA、QB、QC、QD、QE、QF、QG表示7个状态,则7个触发器的激励方程分别为QAQBQCQDQEQFQG各有关输出为 EN=Q RESET_L=SETUP RESET_CNP= CNP= HD=OPEN∙ LD=在编写源程序时采用VHDL的数据流描述方式,根据得出的各状态方程编写程序。控制器VHDL源程序如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitykong_zhi_qiis port(clk,setup,start,isetup,iopen,data_in,co8,co3,dep:instd_logic; reset_l:outstd_logic;--定义信号灯清零信号 ld:outstd_logic;--定义绿色信号灯 hd:outstd_logic;--定义红色信号灯 cnp:outstd_logic;--计数器脉冲信号 reset_cnp:outstd_logic;--计数器清零信号 en:outstd_logic;--键盘使能信号 qa,qb,qc,qd,qe,qf,qg:outstd_logic);--控制器状态信号,用于测试endkong_zhi_qi;architecturebehaveofkong_zhi_qiissignalqa1,qb1,qc1,qd1,qe1,qf1,qg1:std_logic; begin process(clk) begin if(clk'eventandclk='1')then qa1<=(notsetupandqa1)or(iopenand(notdata_in)and(notstart)andqd1)or((notqa1)and(notqb1)and(notqc1)and(notqd1)and(notqe1)and(notqf1)and(notqg1));--待锁状态A qb1<=(setupandqa1)or((notstart)andqb1)or(isetupandqg1);--待锁状态B qc1<=(startandqb1)or(qd1and(notdata_in)andstart)or(qe1andstart)or((notco3)andstartandqf1)or((notiopen)and(notstart)and(notdata_in)andqc1)or((notiopen)andstartandqc1)or((notiopen)and(notstart)anddata_inanddepand(notco8)andqc1);--输入密码状态C qd1<=((notiopen)and(notstart)anddata_inanddepandco8andqc1)or((notdata_in)and(notstart)and(notiopen)andqd1);--待启动状态D qe1<=((notiopen)and(notstart)anddata_inand(notdep)andqc1)or(data_inandqd1)or((notstart)and(notiopen)andqe1);--预警状态E qf1<=((notstart)andiopenandqe1)or(iopenandqc1)or((notstart)and(notco3)andqf1);--错误状态F qg1<=(co3andqf1)or((notisetup)andqg1);--报警状态G reset_cnp<=(qb1andstart)or(qc1and(notiopen)andstart)or(qd1and(notdata_in)andstart)or(qe1andstart)or(qf1and(notco3)andstart); en<=qc1orqd1orqe1orqf1; reset_l<=(setupandqa1)or(isetupandqg1); cnp<=data_inandqc1and(notiopen)and(notstart); hd<=(iopenandqc1)or(iopenandqe1and(notstart)); ld<=qd1andiopenand(notdata_in)and(notstart); endif; endprocess; qa<=qa1; qb<=qb1; qc<=qc1; qd<=qd1; qe<=qe1; qf<=qf1; qg<=qg1;endbehave; 控制器模块仿真波形如图4.16所示。图4.16控制器仿真波形 从图4.15系统的详细波形可以看出,当第一个时间脉冲clk到来时待锁状态qa变为高电平,按下上锁键setup后马上进入上锁状态qb,接着按下复位键start进入密码输入状态qc,此时一次键入预置密码12345678,从数据输入信号data_in可以看到没输入一位数字就有信号输入,并且比较结果dep变为高电平说明密码输入正确,当计数器时钟信号cnp计够8个数字时,模8进位信号co8和待启动状态qd同时变为高电平,此时按下开门键open门打开,同时开启指示灯ld变为高电平,系统进入待锁状态qa,如图4.15状态1。然后系统依次按上锁键setup和复位键start重新进行输入。如图4.15状态2,这是输入第八位密码错误,接着开锁,从波形图可以看出开门错误指示灯hd变为高电平。复位后再次键入正确密码,开门正确,如图4.15状态3。图4.15状态4是模拟当错误次数达到3次后系统进入报警状态qf此时出ISETUP外所有按键无效,此时只有按解除锁定键ISETUP才能回到上锁状态。 控制器逻辑图见附录B。4.3顶层文件的设计与实现 顶层文件采用图形化设计方式,将前面各模块调入连接构成。为减少系统图形界面的复杂性,首先设计编码预置模块,然后再设计顶层文件。4.3.1编码预置模块 该模块由编码器、比较器、比较计数器和密码预置构成。为了仿真方便再加入一个输入模块(实际中可去除)。该输入模块VHDL源程序见附录A-7。 编码预置模块原理图如图4.17所示。图4.17编码预置模块元件设计将编码预置模块元件化将得到如图4.18所示编码预置模块元件。方便顶层文件调用。图4.18编码预置模块元件4.3.2顶层文件设计 将前面设计好的各模块调入连接如图4.19所示。4x4键盘上的每个输入端首先通过消抖后进入系统,编码预置模块出来的信号dout也通过消抖电路后送入控制器。各消抖模块与控制器工作在同一时钟下。以期达到系统的同步。开门信号OPEN和控制器使能信号en通过一个与门后送入控制器,以确定开门动作实在键盘输入有效的情况下进行。其他个输入、输出端按系统AMS图进行链接。为了仿真测试的方便,可将控制器状态输出端qa~qg端也接一个输出,以便于在仿真测试中观察控制器所处状态,确定系统是否正确。 顶层文件的仿真波形将在5.1给出。现先给出逻辑图如图4.20所示。设计结果本章将对完成的数字锁结果进行展示,主要有功能仿真和逻辑测试。5.1仿真测试 仿真测试主要对密码锁系统进行功能测试和逻辑测试。测试系统功能是否达到设计要求,逻辑线路是否执行正确。5.1.1仿真测试波形功能测试,是直接对VHDL、原理图描述或其他描述形式的逻辑功能进行测试模拟,以了解其实现的功能是否满足设计要求的过程。仿真波形不涉及任何具体器件的硬件特性。不经历适配阶段,在设计项目编辑编译后即可进入门级仿真器进行模拟测试。直接进行功能仿真的好处是设计耗时短、对硬件库、综合器没有任何要求。(1)一次开门正确 按下列顺序键入按键值:上锁→复位→键入密码→开门。仿真波形如图5.1所示。从波形图可以看出。未上锁是系统处于待锁状态A(图中qa为高点平);当上锁后系统马上转到待锁状态B(图中qb为高电平,同时qa转为低电平);随后按下复位键,系统进入输入密码状态C(qc转为高点平),同时发出reset_cnp清零信号给比较计数器。En是能装置为高电平允许键入密码。在C状态,每收到一位密码,发出一次cnp计数,当正确比较脉冲dep为高电平时,继续C状态。系统当正确收到八位密码后,比较计数器发来CO8有效信号(高电平),同时dep有效,系统转到待启动状态D(qd为高点平,同时qc转为低电平)。在此状态系统收到开门信号open,门开启绿灯ld点亮,同时系统回到待锁状态A。(2)键入密码发现错误,复位后正确输入 按下列顺序键入按键值:上锁→复位→键入错误密码→复位→键入正确密码→开门。仿真波形如图5.2所示。从波形图可以看出,当系统收到密码信息时由于比较器给出dep为电平,系统判断密码输入错误,系统进入预警状态E(qe为高点平)。这时复位,系统再次进入输入密码状态C,后面波形同5.1状态。图5.1正确开门状态仿真波形图5.2先键入错误密码复位后再键入正确密码仿真波形(3)3次开门出错。 按下列顺序键入按键值:上锁→复位→键入错误密码→开门→复位→键入错误密码→开门→复位→键入错误密码→开门。仿真波形如图5.3所示。从波形图可以看出,每次错误开门系统都会进入错误状态F(qf为高电平)复位后再次进入密码输入状态C,当报警计数器CO8有效(高电平)表示错误次数达到上限,这时系统进入报警状态G,不在接受除解除锁定键外的任何输入。Baojing转为高电平,警报器鸣叫。图5.3三次开门错误报警波形图5.1.2逻辑测试 借鉴软件工程的知识,本环节对数字密码锁系统进行白盒测试。测试各语句是否都能执行,而不考虑是否正确执行。 本设计将采用基本路径测试方法。根据3-10流程图可得如下测试路径。路径1:待锁状态A→上锁NO;路径2:待锁状态A→上锁YES→待锁状态B→复位NO;路径3:待锁状态A→上锁YES→待锁状态B→复位YES→输入密码状态C→开门YES→错误状态F;路径4:待锁状态A→上锁YES→待锁状态B→复位YES→输入密码状态C→开门NO→复位YES;路径5:待锁状态A→上锁YES→待锁状态B→复位YES→输入密码状态C→开门NO→复位NO→输入密码NO;路径6:待锁状态A→上锁YES→待锁状态B→复位YES→输入密码状态C→开门NO→复位NO→输入错误密码;路径7:待锁状态A→上锁YES→待锁状态B→复位YES→输入密码状态C→开门NO→复位NO→输入正确密码;路径8:待锁状态A→上锁YES→待锁状态B→复位YES→输入密码状态C→开门NO→复位NO→输入正确密码→待启动状态D→输入密码YES→预警状态E→复位YES;路径9:待锁状态A→上锁YES→待锁状态B→复位YES→输入密码状态C→开门NO→复位NO→输入正确密码→待启动状态D→输入密码YES→预警状态E→复位NO→开门NO;路径10:待锁状态A→上锁YES→待锁状态B→复位YES→输入密码状态C→开门NO→复位NO→输入正确密码→待启动状态D→输入密码YES→预警状态E→复位NO→开门YES→错误状态F;路劲11:待锁状态A→上锁YES→待锁状态B→复位YES→输入密码状态C→开门NO→复位NO→输入正确密码→待启动状态D→复位YES;路径12:待锁状态A→上锁YES→待锁状态B→复位YES→输入密码状态C→开门NO→复位NO→输入正确密码→待启动状态D→复位NO→开门NO;路径13:待锁状态A→上锁YES→待锁状态B→复位YES→输入密码状态C→开门NO→复位NO→输入正确密码→待启动状态D→复位NO→开门YES;路径14:错误状态F不超过3次→复位NO;路径15:错误状态F不超过3次→复位YES;路径16:错误状态F达到3次→解除锁定NO;路径17:错误状态F达到3次→解除锁定YES;限于篇幅,具体测试过程省略。通过测试,确保每条路径都至少执行了一遍,测试系统内部动作是否按照设计的规定正常进行。测试结果显示,系统内部动作是按照设计规定正常进行。第六章总结与展望社会在发展,产品也要发展,本章将对数字锁得应用场合和发展方向进行一下展望。6.1密码锁系统应用场合 根据不同的应用场景,本系统稍作更改可适应多种场合。如果系统用于楼道系统,那么可根据不同用户设置不同密码,实现同门不同密。比如:对每个用户设置身份识别码,根据不同身份系统将调用不同密码。如果系统需要经常修改密码,可在系统密码设计部分加入FlashMemory实现动态存储密码功能,以实现不同的需求。如果系统用于保险柜,可将报警计数器更改为1次报警增加安全系数。如果系统用于高档家庭住宅,可将键盘部门改用触摸屏编码,增加时尚气息。当然还有很多应用场合,在这里不在熬述。6.2密码锁系统未来发展 随着科技的飞跃发展,越来越多的新技术诞生。必然给各行业带来不同的机遇。同样密码锁也一样。下面就这方面简述如下:IC卡密码锁IC卡(又称智能卡)具有存储量打、数据保密性好、抗干扰能力强、存储可靠、读卡设备简单、操作速度快、脱机工作能力强等优点。目前在金融、税务、交通、医疗等各个领域都有广泛的应用。IC卡电子密码锁目前已是成熟的产品,在酒店系统有广泛的应用。指纹密码锁指纹在这个世界上很难找到一样的,所以就把指纹识别技术运用到密码锁上,保密性强,易用。但由于算法过于复杂目前主要应用于军队,金融等高保密性行业。虹膜密码锁虹膜识别是目前比较新的识别技术,人眼虹膜也同指纹一样是独一无二的。并且不指纹更加不容易被复制。将人体虹膜作为密码将是一种有效可行的方法。目前虹膜识别技术还在发展阶段,将来必然是密码锁的又一发展方向。6.3总结 本设计设计了一个八位数字密码锁,使用Altera公司的QuartusII开发软件,硬件描述语言是VHDL。此八位数字密码锁具有如下几个特点: (1)“复位”键清零,“上锁”键上锁,“开门”键开锁,“解除锁定”键解除警报。“解除锁定”键可设置在安全的地方,保安室或使用者一时无法接触的地方。 (2)密码采用串行输入,只有密码位数正确,且都正确的情况下密码才有效。 (3)连续开锁三次错误后,报警系统启动。三次的设计拥有不错的“容错”功能,并有抗暴力破解能力。 (4)报警系统一旦启动,除“解除锁定”键外,所有的功能键都将无效。这是通过“解除锁定”可关闭报警系统。 本设计所设计的电子密码锁功能与性能方面来说还是比较简单的。由于本人知识的局限性,不能全方面考量实际中的一切问题,难免有所疏忽、遗漏。 通过本次设计,全面的锻炼了我的分析问题能力,解决问题能力。这将对我今后的工作产生莫大的影响。同时在理论方面,又上了一个台阶。参考文献[1]边计年,薛宏熙译.用VHDL设计电子线路[M].北京:清华大学出版社,2000.[2]黄正谨,徐坚等.CPLD系统设计技术入门与应用.北京:电子工业出版社,2002.[3]康华光.电子技术基础(第四版)[M].北京:高等教育出版社,1998.[4]梁宗善.新型集成块应用[M].武汉:华中理工大出版社,2004.[5]王振红.VHDL数字电路设计与应用实践教程[M].北京:机械工业出版社,2002.[6]谭会生.EDA技术综合应用事例与分析[M].西安:西安电子科技大学出版社,2000.[7]西.VHDL与复杂数字系统设计[M].西安:西安电子科技大学出版社,2003.[8]侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社,2004.[9]谭会生,瞿隧春.EDA技术综合应用实例与分析[M].西安:西安电子科技大学出版社,2004.[10]王道宪.CPLD/FPGA可编程逻辑器件应用与开发[M].北京:国防工业出版社,2005.[11]曾繁态,等著.EDA工程概论[M].北京:清华大学出版社,2003.[12]潘松,黄继业.EDA技术与VHDL[M].北京:清华大学出版社,2009.[13]颜昌银.嵌入式多电平逆变技术的研究[D].哈尔滨:哈尔滨工程大学,2008.[14]刘夫江.基于单片机和CPLD的等精度数字频率计设计[D].山东:山东大学,2007.[15]潘志浪.基于FPGA的DDS信号源的设计[D].武汉:武汉理工大学,2007.[16]申国政.基于FPGA的雷达激励器信号发生器的研究[D].哈尔滨:哈尔滨工业大学,2007.[17]王军.集成保护中数据同步采集的研究与实现[D].北京:北京交通大学,2008.[18]张旭方.软启动数字触发器研究[D].武汉:武汉理工大学,2008.[19]HuangJiwu.TheFeaturesofMicrocontrollerAT89C52andTechniqueofPortConnectionwithI2CSeriesBus[J].WUHANUNIVERSITYJOURNALOFNATURALSCIENCES.2000.(4):461-463.[20]PoloskyMA,CarciaEJ,AllenJJ.Surfacemicromachinedcounter2meshinggearsdiscriminationdevices.SAND29820256C.1998.致谢毕业设计是大学生活的最后一个课题,在感受收获的喜悦的同时,心中更是充满了感激之情。由衷的感谢导师对我的指导。设计从开题到定稿,都离不开栾老师的悉心教导。设计既是一个开发过程也是一个学习过程,在此过程中我受益匪浅。感谢学院的全体老师们在大学四年来对我的教导,感谢他们在学习和生活中给予我的关心和帮助!感谢我的家人!感谢父母多年的养育之恩!感谢他们对我各方面的关心、鼓励和支持!真心感谢所有给予我帮助和支持的师长和朋友们!在此,请允许我说声“谢谢!谢谢你们!”。附录附录AVHDL源代码A-1编码器LIBRARYieee;USEieee.std_logic_1164.all;USEieee.std_logic_unsigned.all;useieee.std_logic_arith.all;ENTITYjian_panIS PORT(en:INstd_logic; kr:INstd_logic_vector(3DOWNTO0); kc:INstd_logic_vector(2DOWNTO0); dout:OUTstd_logic; data:OUTstd_logic_vector(3DOWNTO0));ENDjian_pan;ARCHITECTUREoneOFjian_panISBEGIN PROCESS(en,kr,kc) BEGIN if(en='0')then dout<='0'; elsif(en='1')then if(kr="1111")then dout<='0'; data<="0000"; else dout<='1'; endif; if(kr="1110")then casekcis when"010"=>data<="1010";--0 whenothers=>null; endcase; elsif(kr="1101")then casekcis when"100"=>data<="0001";--1 when"010"=>data<="0010";--2 when"001"=>data<="0011";--3 whenothers=>null; endcase; elsif(kr="1011")then casekcis when"100"=>data<="0100";--4 when"010"=>data<="0101";--5 when"001"=>data<="0110";--6 whenothers=>null; endcase; elsif(kr="0111")then casekcis when"100"=>data<="0111";--7 when"010"=>data<="1000";--8 when"001"=>data<="1001";--9 whenothers=>null; endcase; endif; endif; endPROCESS;ENDone;A-2比较器Libraryieee;useieee.std_logic_1164.all;entitybi_jiao_qiis port(f,y:inbit_vector(3downto0); dep:outbit);endbi_jiao_qi;architectureoneofbi_jiao_qiis begin process(f,y) begin iff=ythen dep<='1'; else dep<='0'; endif; endprocess;endone;A-3比较计数器LIBRARYieee;USEieee.std_logic_1164.all;USEieee.std_logic_unsigned.all;ENTITYbi_jiao_ji_shu_qiISPORT(clk,clr:INstd_logic;--clr为复位信号高电平有效clk为计数脉冲 q:OUTstd_logic_vector(2DOWNTO0); co8:OUTstd_logic);ENDbi_jiao_ji_shu_qi;ARCHITECTUREoneOFbi_jiao_ji_shu_qiISSIGNALtmp:std_logic_vector(2DOWNTO0);BEGIN PROCESS(clk,clr) BEGIN IF(clr='1')THEN tmp<="000";co8<='0'; ELSIF(clk'eventANDclk='1')THEN IF(tmp="111")THEN co8<='1';tmp<="000"; ELSE tmp<=tmp+'1'; ENDIF; ENDIF; q<=tmp; ENDPROCESS;ENDone;A-4密码预置libraryieee;use

温馨提示

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

评论

0/150

提交评论