《基于VHDL的电子密码锁设计与仿真.docx》由会员分享,可在线阅读,更多相关《基于VHDL的电子密码锁设计与仿真.docx(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本科毕业论文(设计)论文(设计)题目:基于VHDL的电子密码锁设计与仿真 学 院: 计算机科学与信息 专 业: 信 息 安 全 班 级: 2007 级 学 号: 1 学生姓名: 姜 峰 指导教师: 栾 岚 年 月 日贵州大学本科毕业设计诚信责任书本人郑重声明:本人所呈交的毕业论文(设计),是在导师的指导下独立进行研究所完成。毕业论文(设计)中凡引用他人已经发表或未发表的成果、数据、观点等,均已明确注明出处。特此声明。设计作者签名: 日 期: 目录中文摘要IV关键词IVAbstractVKeywordsV第一章引言11.1设计目的11.2设计意义11.3设计要求21.4相关领域概述31.4.1
2、Quartus II 简介31.4.2 CPLD简介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
3、.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附录A VHDL源代码39A-1编码器39A-2 比较器41A-3 比较计数器41A-4 密码预置42A-5 报警计数器43A-6 触发器44A-
4、7 输入45附录B 控制器逻辑图47基于VHDL的电子密码锁设计与仿真中文摘要随着社会物质财富的不断积累,安全防盗以成为社会问题。而锁自古以来就是人们防盗的首选。要既能防盗又要实用方便。在当下技术环境下数字锁成为一种趋势。本设计采用EDA技术设计一个防盗数字密码锁,欲解决此问题。在Quartus II 环境下采用VHDL硬件描述语言设计电子密码锁,阐述了其工作原理,给出了具体的电路图和仿真波形。该密码锁具有体积小、功耗低、保密性强、错误累积报警等功能。可应用于住宅、保险箱等需要防盗的场所,实用性较强。采用VHDL描述,产品的扩展性强,很容易于最新技术结合形成功能更加强大的系统。本系统采用矩阵键
5、盘输入。密码由8位十进制数组成,密码多一位少一位都算错误,安全性有足够保障。并且当错误开锁次数达到3次报警器将鸣叫,形成一个连锁防盗系统。在错误尚未发生时,可通过复位回到密码输入状态,体现人性化的设计。在报警时,警报的切断只能由保安室或实用者不能接触的地方控制,为无关操作人员增加了心理威慑作用。关键词: Quartus II,VHDL,密码锁,电路仿真Design and simulation of digital coded lock based on VHDLAbstractWith the accumulation of social material wealth, the preve
6、ntion of thieves has become a social problem. Lock is always the first choice when people deal with thieves. It requires lock not only to be against with theft, but also practical and convenient. Under the circumstance of current technology, numbers padlock is becoming a trend among locks. This desi
7、gn makes use of EDA technology to design a burglar digital combination lock to prevent from thieves. This design will use VHDL (Hardware Description Language) under the circumstance of Quartus II to expound its working principle and provide circuit diagram and simulation waveform. This coded lock ha
8、s the characteristic of small size, low consumption, high security and the function of error accumulation alarm etc. This kind of lock is practical because it can be used in residence, proof box and other places where have the need of prevent from thieves. The lock use matrix keyboard to input. Its
9、has enough s because its password constitutes of 8 decimal numbers and it would be wrong if the number is more than 8 or less than 8. Its humanization because there will be alarm if there are 3 times errors when input the password. The alarm can only be cut by public security or where beyond thieves
10、 touch, which will make thieves more afeard.Keywords:Quartus II,VHDL,coded lock,circuit simulation第一章 引言随着社会物质财富的日益增长,安全防盗已成为社会问题。而锁自古以来就是把守门户的铁将军,人们对它要求甚高,既要安全可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。数字密码锁是实际生活中运用广泛的一种数字电路,主要功能是对某些操作进行加密保护,目的是避免无权人员使用某些设施或者进行越权操作。本章首先介绍本设计的目的、设计意义以及设计要求。然后简述相关领域的发展。1.1 设计目的硬件描
11、述VHDL语言,描述能力强、覆盖面广、抽象能力强,采用VHDL建立硬件模型可以从繁琐的元件设计转向功能设计。用VHDL可以快速方便地设计出符合各种要求的数字密码锁,而且操作简单,密码的位数可适当增该,增强其安全性,且很容易做成ASIC芯片,设计过程达到高度自动化,设计完成后可在Quartus II 环境下进行电路的模拟仿真。使设计成本尽可能降低。本次设计为开发一款体积小,功耗低,操作简易便于修改维护,具有良好应用前景的数字密码锁。1.2 设计意义在日常生活中和工作中,住宅的安全,单位的文件,和一些个人资料的保存。人们往往采用上锁的方法来解决。如果采用传统的机械锁,人们往往需要携带很多钥匙,既不
12、方便,钥匙的丢失还会使安全性大打折扣。随着物质财富的积累和科学技术的发展,人们对锁的要求越来越高。密码锁代替机械锁成为一种趋势。密码锁具有安全性高、低成本、低功耗、易于操作,等等优点。在安保领域,有防盗报警功能的电子密码锁逐渐取代了传统机械密码锁。机械密码锁结构的复杂度和密码位数成正比成本高且安全性能差。而电子密码锁无论在技术上还是性能上都优于机械密码锁。当然,特定的使用环境除外。随着大规模集成电路技术的发展,特别是硬件描述语言(VHDL),出现了用微型智能密码锁,它是除了具有电子密码锁的功能外,还拥有了智能化管理,专家分析系统,从而使密码锁的作用,比如高安全性、可靠性,应用日益广泛的应用。人
13、们对安全的重视和科学技术的发展,许多电子智能锁如,指纹识别、IC识别等已经出现在国内外。但是这些产品的特点需要一个特别的指纹或有效卡,成本相对较高不益于普及使用。针对当前技术和水平、市场接纳、电子密码锁是这类电子防盗产品的主流。1.3 设计要求根据实际需求数字密码锁应具有以下功能:1) 采用8位十进制数字作为内置密码,修改密码必须重构逻辑。2) 系统通电后必须给密码锁上锁,即按上锁键SETUP,表示密码锁准备就绪,可以接受外部输入的密码数字,这时用来指示密码锁工作情况的指示灯和扬声器处于不工作状态,系统处于上锁等待密码输入状态。3) 开锁。开锁操作过程如下:I 按下复位键START,此时系统各
14、部分处于初始状态。II 输入密码,一次键入8个十进制数字。III 按下开锁键OPEN,若密码正确,锁被打开(用绿灯LD点亮表示);若密码不正确,锁不被打开(绿灯LD不亮)不提示错误(用红灯HD表示)。IV 使用者按错号码,可在按开锁键OPEN以前按复位键START消除输入,重新输入密码。V 开门成功事物处理完毕后,必须按下上锁键SETUP,是系统进入就绪状态。VI 所有输入采用键盘输入。4) 报警功能。系统允许错误开门2次,当第3次错误开门将报警。在报警状态,上锁键SETUP、复位键START、开门键OPEN、数字键09应不起作用,需用另一内部设置键解除锁定(ISETUP),该按键在实际应用中
15、可放置在保安室或其他使用者不能接触的地方。在本设计中为描述方便,将内置与键盘中。1.4 相关领域概述本节将对电子密码锁的开发环境Quartus II和最后的实现环境CPLD进行简要介绍。1.4.1 Quartus II 简介本设计是基于Quartus II 9.0的,在此对它作一些介绍。QuartusII12是Altera提供的FPGA/CPLD开发集成环境,Altera是世界上最大的可编程逻辑器件供应商之一。QuartusII在21世纪初推出,是Altera前一代FPGA/CPLD集成开发环境MAX+PLUSII的更新换代产品,其界面友好,使用便捷。QuartusII提供了一种与结构无关的设
16、计环境,使设计者能方便地进行设计输入、快速处理和器件编程。Altera的QuartusII提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统(SOPC)设计的综合性环境和SOPC开发的基本设计工具,并为Altera DSP开发包进行系统模型设计提供了集成综合环境。QuartusII设计工具完全支持VHDL、Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。QuartusII也可以利用第三方的综合工具,如Leonardo Spectrum、Synplify Pro、FPGA Compiler II,并能直接调用这些工具。同样,Quartus II具有
17、仿真功能,同时也支持第三方仿真工具,如ModelSim。此外,Quartus II与MATLAB和DSP Builder结合,可以进行基于FPGA的DSP系统开发和数字通信模块的开发。Quartus II包括模块化得编译器。编译器包括的功能模块由分析/综合器(Analysis & Synthesis)、适配器(Fitter)、装配器(Assembler)、时序分析器(Timing Analyzer)、设计辅助模块(Design Assistant)、EDA网表文件生成器(EDA Netlist Writer)、编辑数据接口(Compiler Database Interface)等。可以通过选
18、择Start Compiler来运行所有的编译器模块,也可以通过选择Start单独运行各个模块。还可以通过选择Compiler Tool(Tools菜单),在Compiler Tool窗口中运行该模块来启动编译器模块。在Compiler Tool窗口中,可以打开该模块的设置文件或报告文件,或打开其他相关窗口。Quartus II编译器支持的硬件描述语言有VHDL、Verilog和AHDL。Quartus II支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的模块(元件)进行调用,从而解决了原理图与HDL混合输入设计的问题。在设计输入之后,Quartus II的编译器将给出
19、设计输入的错误报告。可以使用Quartus II带有的RTL Viewer观察综合后的RTL图。1.4.2 CPLD简介CPLD (Complex Programmable Logic Device)复杂可编程逻辑器件12,是从PAL和GAL器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围。早期的CPLD大多采用EPROM编程技术,其编程过程与简单PLD一样,每次编程需要在专用或通过设备上运行。后来采用E2PROM和闪烁存储器技术,使CPLD具有了“在系统可编程(ISP)”特性。所谓在系统可编程是指未编程的ISP器件可以直接焊接在印制电路板上,然后通过计算机的数据传输端口和
20、专用的编程电缆对焊接在电路板上的ISP器件直接多次编程,从而使器件具有所需要的逻辑功能。这种编程不需要使用专用的编程器,因为已将原来属于编程器的编程电路和升压电路集成在ISP器件内部。ISP技术使得调试过程不需要反复拨插芯片,从而不会产生引脚弯曲变形现象,提高了可靠性,而且可以随时对焊接在电路板上的ISP器件的逻辑功能进行修改,从而加快了数字系统的调试过程。目前。ISP已成为系统在线远程升级的技术手段。目前,绝大多数FPGA器件具有ISP功能。例如,Altera公司的MAX7000S(5V)、MAX7000A(3.3V)和MAX7000B(2.5V)系列,Xilinx公司的XC9500系列以及
21、Lattice公司的CPLD器件等。第二章 开发方案与论证本章将首先介绍数字锁两种不同的开发方案,从方案的原理,实现的成本进行比较。然后论证本设计采用的方案串行方案。2.1 开发方案开发方案有串行开发方案和并行开发方案下面分别介绍2.1.1 并行开发方案 并行开发方案,密码采用并行输入方式。密码输入完毕后再一次性比较。原理图如图2.1所示。图 2.1 并行开发原理图数据通过键盘输入,消抖后编码存入数据缓冲器。在控制器的控制下与预存密码进行比较正确则开启密码锁。达到错误次数报警。2.1.2 串行开发方案串行开发方案,密码采用串行输入。边输入,边比较。多拨、少拨均视为错误。原理图如图2.2所示。图
22、 2.2 串行开发原理图数据通过键盘输入,消抖后编码。在控制器的控制下与预存密码进行比较正确则开启密码。否则视为错误开启,达到错误次数报警。2.2 方案论证串行开发所需硬件资源少,本设计采用串行开发方案。依据上述对数字锁系统的功能要求,其系统整体框图如图2.3所示,它将系统划分为控制器和受控电路两部分,受控电路由消抖电路模块、编码器、比较器、密码预置、计数器、触发器等模块组成。数字密码锁控制系统的输入信号包括:数字密码键盘09,上锁键STEUP,复位键START,解除锁定键ISETUP,开锁键OPEN;输出信号包括:开门指示灯LD,错误指示灯HD,报警器BG。数字锁的密码采用3x4键盘输入,由
23、于3x4键盘输出为行线/列线信号,所以首先经编码器编码(图中kr,kc为总线信号)将行线/列线信号变为相应09的8421BCD码并与原存储于系统中的密码相比较,因而需要有一个4位等值比较器,并将比较结果DEP反馈给控制器。图 2.3 数字密码锁系统电路整体框图编码器模块的作用是将键盘输入的信号编成BCD码,并且每键入一个数码,应向控制器送一个脉冲DATA_IN表示有数据输入。比较器模块的作用是将输入的密码和内置密码进行比较,并将结果DEP反馈给控制器。密码预置模块的作用是预置内部密码,因为内部预置密码采用8位十进制数,且用BCD码表示,需32个输入端送入,所以可选用32选4数据选择电路来选择密
24、码。由于密码是串行输入,依次分别于一个预置码进行比较,因为8个十进制预置码是提前预置好的,所以还需要一个计数器来选择目前要比较第几个数据。32选4数据选择器的3位地址码用一个模8计数器控制。控制器向计数器提供一个清零信号RESET_CNP和时钟信号CNP,每次通过键盘输入一个密码数字,控制器向计数器提供一个时钟脉冲CNP,使计数器加1,当计数器到8时,说明8个密码数字已经比较完毕,此时计数器产生进位信号CO8反馈给控制器,控制器进入待启动状态或预警状态。由于输入都采用键盘输入,其按下时刻和持续时间长短是随机的,且存在因簧片反弹引起的电平抖动现象。必须在每个开关后面安排一个消抖同步模块,以保证系
25、统能真确捕捉到输入脉冲。消抖同步模块的作用是保证系统能捕捉到输入脉冲,并保证没按一次键只形成一个宽度等于系统时钟周期的脉冲。报警计数器模块的作用是,每一次开启错误,控制器向报警计数器提供一个时钟信号HD,使计数器加1,当计数器到3时,说明错误次数达到3次,模3进位信号CO3反馈给控制器,控制器发出报警信号BG。解除锁定或正确开门后控制器向报警计数器发出清零信号ISETUP,使计数器清零。控制器模块在密码系统每收到一个输入的密码数字时,应向比较计数器发出一个时钟信号CNP。当密码系统在按下开锁键OPEN前收到第9个时钟信号时,应装入预警状态,等待按下开锁键OPEN后发出错误信号HD。因此,密码锁
26、系统没输入一个密码数字,应向控制器送入一个脉冲DATA_IN,显然此信号也应同步,即形成宽度只占一个系统时钟的脉冲。密码锁系统的输出有开锁指示灯LD(绿灯)、错误指示灯HD(红灯)和扬声器。LD和HD由触发器控制。控制器分别向触发器提供一个置位信号S_LD、S_HD,按下上锁键时向触发器提供一个复位信号RESET_L,用来控制绿灯LD、红灯HD工作。第三章 电路模块功能设计数字密码锁系统电路设计采用自顶而下的设计方法。自顶而下设计方法的主要思想是对数字系统分模块,分层次进行设计,这样可以将复杂的设计划分成若干个相对简单的模块,不同的模块可完成数字系统中某一部分的具体功能,从而使电路设计大为简化
27、。本章对个模块进行功能设计,即各模块的功能描述。将分受控电路和控制电路两部分描述。3.1 受控电路 受控电路的主要版块有,键盘编码电路模块、消抖电路模块、比较器模块、密码预置木块、比较计数器模块和报警计数模块3.1.1 键盘编码电路模块数字密码锁控制系统的输入信号包括:数字密码键盘09,复位键START,开锁键OPEN,上锁键SETUP,功能键ISETUP。4*4矩阵式键盘完全能满足上述要求,且经济美观。根据需要,键盘布局如图3.1所示。图 3.1 键盘按键布局根据4*4矩阵式键盘特点,采用行列式编码方式。为减少硬件的开销,只对数字09进行编码。行线kc送高电平(1111),列线kr送低电平(
28、000)。当没有按键时,行线和列线是断开的。当有按键时,行线和列线信号将相应有所改变,据此,可对此类信号进行编码,达到识别的目的。键盘的输入原理如图 3.2 所示。图 3.2 键盘编码原理3.1.2按键消抖电路模块由于本设计采用的是键盘输入,按键时手部的抖动,输入信号就会产生不稳定脉冲。如果信号不加以处理就可能会导致错误的信号识别。因此每个输入端就各需要一个消抖电路。也就是说,输入信号波形有抖动,但经过消抖之后,其输出也为正规的矩形波。如图3.3所示的信号波形,在正常信号的上升沿和下降沿含有一些随即干扰信号,或随即抖动。为了去除这些抖动干扰脉冲,可采用如图3.4所示电路来实现这个目标。图 3.
29、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密码比较电路模块密码验证用于将编码器
30、转化后的8421BCD码与预置密码进行比较。因此只需要比较两组数据是否相等,不需要知道谁大谁小,所以采用等值比较器。设比较器的4个输入端为y0y3,输出端为f0f3,当比较两数正确时输出一个dep有效信号“1”给控制器,否则输出为“0”。如图3.5所示。图 3.5 密码验证3.1.4密码比较计数器电路模块本设计采用串行输入,所以还得有计数器,用于判断密码比较到第几个数字和密码是否输入完毕。计数器是一种累积脉冲的逻辑部件,clr为复位信号,高电平有效。当复位信号clr为低电平时,脉冲信号clk每来一个脉冲就计数一次,模8进位信号co8用于判断密码是否输入完毕,qi用于判断目前比较到第几个数字。设
31、计如图3.6所示。图 3.6 密码比较计数器3.1.5密码预置电路模块密码预置电路用于设置密码,本系统密码采用内置方式。修改密码需重够逻辑。密码预置需能判断需比较第几位密码。系统内置8位密码用8421BCD码表示则需要4位输出y0y3。qi接收由密码比较计数器发来的信号用于判断比较第几位密码。设计如图3.7所示。图 3.7 密码预置3.1.6错误报警电路模块在实际运用中,增加报警功能有他的必要。本系统采用3次错误报警设置。那么就需要一个模3计数器。同密码比较计数器原理基本一样。clr为复位信号,高电平有效。当复位信号clr为低电平时,脉冲信号clk每来一个脉冲计数一次,模3进位信号co3用于判
32、断错误次数是否达到上限。设计如图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。控制器模块工作状态流程图(简称
33、ASM图)如图3.10所示。 矩形框:工作状态 菱形框:分支条件 平行四边形框:条件输出开门键(OPEN) 上锁(SETUP) 解除锁定(ISETUP) 上锁(STATR)图 3.10 控制器工作状态流程图(1) 待锁状态A 待锁状态是指密码锁系统处于打开、报警后的状态。此时数字锁尚未“锁好”,还未进入正常运行,因此系统不接受除上锁键(SETUP)或解除锁定键(ISETUP)外的任何输入信号。当按下上锁键后,系统将进入上锁状态,且将开门标志灯LD、错误灯HD熄灭,警报器声音切断,因而需输入RESET_L复位信号。在图3-10待锁状态的流程中,当SETUP=1时进入第二状态,START=0时维持
34、原状态;当SETUP=1时输出RESET_L复位信号。至于en使能信号,是用来控制数据输入信号DATA_IN、开门信号OPEN输入的,在本状态皆应无效且条件上锁SETUP无关,是一种无条件输出,因而标在算法状态框旁边,并用箭头表示无效。(2) 上锁状态B 系统的第二状态实在按下上锁键SETUP以后,数字锁已“锁好”,系统正常运行,等待执行开锁状态。当按下START时,将转入开锁状态,开锁程序开始执行,等待输入密码数字,此时应将计数器清零,故在第二工作状态中有一条输出框,输出比较计数器清零信号RESER_CNP。(3) 输入密码状态C 进入此状态时,en使能信号变为有效允许输入密码数字09或按下
35、开锁键OPEN,故而在状态框旁边标有en。该状态每收到一个信号应线判断是密码数据信号DATA_IN还是开锁信号OPEN。如果是开锁信号OPEN则不符合开锁程序,应发出开锁错误信号,级发出红灯信号HD;若是密码信号,则控制器应向计数器发出时钟信号CNP,若DEP=0,意味着输入密码不对,应转入预警状态E,否则检查计数器状态是否已计到8,若模8信号CO8有效则表示已接受到8个正确密码,可转入下一状态待启动状态,否则返回本状态,继续接受其他密码。在转移到预警状态E或待启动状态D以前,如果收到复位信号SATRA,控制器发出比较计数器清零信号RESET_CNP,使计数器清零,则前面收到的密码无效,重新进
36、行输入密码操作。(4) 待启动状态D 在待启动状态,这时控制器将判断按键输入的是密码数字信号还是开锁 信号,若是开锁信号OPEN,则发出绿灯信号LD,使绿灯点亮,启动开门续电器;若是数字密码信号,则进入预警状态。在待启动状态下,在接受信号以前如果按动复位键START,则控制器将发出比较计数器清零信号RESET_CNP并回到输入密码状态。(5) 预警状态E 在预警状态,此时若按复位键,系统发出比较计数器清零信号RESET_CNP后,并使控制器回到输入密码状态。若按下开锁键OPEN,使红灯HD点亮,并向报警计数器发出时钟信号。(6) 错误状态F 在此状态,每亮一次红灯HD,计数加1,按复位键SAT
37、RA返回到密码输入状态C。当计数器CO3有效为高电平时进入报警状态。(7) 报警状态G当报警计数器CO3有效,此时报警器鸣叫,须按解除锁定键I_SETUP方回到上锁状态。第四章 详细设计与模块仿真本章主要解决各功能模块的VHDL实现和其功能的仿真测试。4.1 受控电路源程序与仿真 受控电路在控制器的控制下完成相应的电路功能,在第三章我们完成了电路的功能设计,接下来将对各模块进行VHDL实现以及相应功能的仿真测试,测试是否达到设计要求。4.1.1 键盘编码电路模块该电路模块主要完成的是键盘的编码。VHDL源程序见附录A-1。编码器电路的仿真波形如图4.1所示。从波形图可以看出,en是使能端,高电
38、平有效,它由控制器的输出控制。当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所示
39、。由波形图可以看出,在一个上升沿检测到有按键时则不管这一时钟周期内有多少次抖动,只输出一个时钟周期宽度的脉冲信号。并且当按键一直持续多少个时钟周期时,输出信号仍为一个时钟周期宽度的单脉冲。图 4.3 消抖电路仿真波形消抖电路逻辑电路图如图4.4所示.图 4.4 消抖电路逻辑电路4.1.3 密码比较电路模块 密码验证就是一个等值比较电路,将编码器转化后的8421BCD码与预置密码进行比较。VHDL源程序键附录A-2。比较器电路模块仿真波形如图4.5所示。从比较器仿真波形可以看出,当两组数据y3.0与f3.0相等时输出端dep输出有效信号高电平给控制器,否则输出低电平。图 4.5 比较器仿真波形比
40、较器逻辑电路如图4.6所示。图 4.6 比较器逻辑电路4.1.4 比较计数器因为是串行输入,密码比较还需要一个计数器器。VHDL源程序见附录A-3。比较计数器电路模块的仿真波形如图4.7所示。从波形图可以看出,当复位信号clr为低电平时,时钟脉冲输入clk在上升沿有效,输出端q2.0进行8进制计数,并且当计数到8个数时,进位信号CO8转为高电平,表明密码输入完毕,可以开启密码锁。图 4.7 比较计数器仿真波形比较计数器逻辑电路图如图4.8所示。图 4.8 比较计数器逻辑电路4.1.5 密码预置电路模块本设计采用内置密码设置,修改密码需重构逻辑。这里设定密码为八位数,同时密码预置部分还需要判断比
41、较到第几个数字。信号通过比较计数器获得。VHDL源程序见附录A-4。密码预置电路模块仿真波形如图4.9所示。从波形可以看出,从比较计数器过来的信号q2.0能正确的控制预置密码的输出。图 4.9 密码预置电路仿真波形密码预置电路模块逻辑电路图如图4.10所示。图 4.10 密码预置逻辑电路4.1.5 错误报警电路模块当开门错误达到3次时,报警器将鸣叫。因此需要一个模3计数器。VHDL源程序见附录A-5。报警计数器电路模块的仿真波形如图4.11所示。从波形图可以看出,当复位信号clr为低电平时,时钟脉冲输入clk在上升沿有效,输出端q1.0进行1进制计数,并且当计数到3个数时,进位信号co3转为高
42、电平,表明错误次数达到上限,开始报警。图 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 控制器电路源程序与仿真控制器是系统的最核心部分,对系统各模块的输入输出进行逻辑综合,从而达到设计要
43、求。控制器是一个时序逻辑电路,是根据控制器详细工作流程图来设计。根据3.2工作流程图,可得出如图4.15MDS状态图。图4-15说明如下:1: SETUP 2: SETUP 3: SATRA 4: START 5: OPENSTARTDATA_IN6: OPENSTART 7: OPENSTARTDATA_INDEPCO88: OPENSTARTDATA_INDEPCO8 9: OPENSTARTDATA_INDEP10: OPEN 11: DATA_INSTARTOPEN 12: DATA_INSTARTOPEN13: DATA_INSTART 14: DATA_IN 15: STARTOP
44、EN 16: START17: STARTOPEN 18:CO3START 19:CO3START 20:CO321:ISETUP 22:ISETUP图 4.15 控制器MDS图采用一对一的方式,用7个触发器QA、QB、QC、QD、QE、QF、QG表示7个状态,则7个触发器的激励方程分别为QA=SETUPQA+OPENDATA_INSTARAQD+QAQBQCQDQEQF QG QB=SETUPQA+STARTQB+ISETUPQG QC=STARTQB+QDDATA_INSTART+QESTART+CO3STARTQF+OPENSTARTDATA_INQC+OPENSTARTQC+ OPEN
45、STARTDATA_INDEPCO8QC QD=OPENSTARTDATA_INDEPCO8QC+DATA_INSTARTOPENQD QE=OPENSTARTDATA_INDEPQC+DATA_INQD+STARTOPENQE QF=STARTOPENQE+OPENQC+CO3STARTQF QG=CO3QF+ISETUPQG 各有关输出为EN=QC+QD+QE+QFRESET_L=SETUPQA+ISETUPQGRESET_CNP=QBSTART+QCOPENSTART+QDDATAINSTART+QE START+QFCO3STARTCNP=QCDATA_INOPENSTARTHD=OPENQC+OPENQESTARTLD=QDOPENDATA_INSTART在编写源程序时采用VHDL的数据流描述方式,根据得出的各状态方程编写程序。控制器VHDL源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity kong_zhi_qi isport(clk,setup,start,isetup,iopen,data_in,co8,co3,dep:in std_logic;res
限制150内