1 / 15
文档名称:

eda数字密码锁.doc

格式:doc   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

eda数字密码锁.doc

上传人:分享精品 2016/3/9 文件大小:0 KB

下载得到文件列表

eda数字密码锁.doc

相关文档

文档介绍

文档介绍:1 摘要: 随着数字技术飞速发展,具有防盗报警功能的数字密码锁代替安全性差的机械锁已成为必然的趋势。数字密码锁不但可以用来保管物品,还可以防止越权操作,例如银行自动柜员机、自动售货机、门卡系统等。基于 EDA 技术设计的电子密码锁,以其价格便宜、安全可靠、使用方便,受到了人们的普遍关注。而以现场可编程逻辑器件(FPGA) 为设计载体, 以硬件描述语言(VHDE) 为主要表达方式,以 Quartus Ⅱ开发软件和 KHF-3 型CPLD/FPGA 实验开发系统为设计工具设计的电子密码锁,由于其能够实现数码输入、数码清除、密码解除、密码更改、密码上锁和密码解除等功能,因此,能够满足社会对安全防盗的要求。◆关键词:FPGA ;VHDL ;数字密码锁;原理图; VHDL 源程序 1. 设计题目: 数字密码锁 2. 设计要求: 设计一个数字密码锁,用户可输入 4 位的二进制数,连续 3 次不正确则报警。***密码可手动预置,并可进行修改密码,取消报警。 3. 设计系统的功能要求与分析 系统的功能要求本次的设计主要是采用先进的 EDA 技术,利用 Quartus II 工作平台和 VHDL 设计语言的设计。为了更好地满足实际的需要,将 4 位二进制改为 3 位十进制。根据系统设计的要求, 可以用自顶向下的设计思路设计一个简易的数字密码锁,该锁应在收到 3 位与规定码相符的十进制数码时打开,使相应的指示灯点亮;若收到的代码与规定的不符或者***程序有误, 表示错误的指示灯点亮。由于设计的这个密码锁密码位数较少,所以必须给操作的人严格的次数限制。若连续三次没有输对,则表示操作的人不是该锁的使用者。此时报警铃长响,这时只有锁的使用者才能关取消报警。由于***密码可手动预置,故可在输入端加多一个按键, 在***状态下按下此按键后可以进行密码设置和修改密码。 系统的功能分析(1) 系统接通电源后处于***状态,此时可以通过手动预置三位十进制数密码,再按上锁 2 键将密码锁上锁,通过指示灯显示出上锁状态。(2) ***密码是 3位十进制数,可以通过系统预先设定。***时输入密码不足三位或超过三位,又或者密码错误均不能***。(3) ***程序由设计者确定,用户必须严格执行所规定的程序,方可***。(4) ***密码和程序正确,表示密码锁上锁的指示灯熄灭,此时处于***状态。(5) 系统允许用户在***过程中有 3次错误,连续输入密码错误或三次以后,报警灯亮而上锁灯也依然在亮,此时必须通过取消报警键解除报警才能进行其他操作。 4. 设计思路分析与方案选择 方案选择: 要设计一个数字密码锁,可以有多种实现方法,下面列出其中的两种: 方案一:采用键盘扫描的方法扫描键盘输入信号,扫描信号变化的顺序依次为1110 —1101 —1011 —0111 —1110 ……,周而复始。键盘一个数字输入键,每次扫描产生新的按键数据, 即采取串行左移输入数据。设计系统由密码锁输入模块、密码锁控制模块和错误报警模块三个部分组成。方案二: 直接采用并行输入数据,每一个按键代表一个十进制数。此系统则由密码锁控制模块、计数器 I模块、计数器 II模块、寄存器模块、比较器模块以及编码器模块六个部分组成。其中,控制模块是核心。经过比较,虽然方案一结构模块少,但程序过于复杂,难于理解和编译,而方案二虽然结构模块多了点,但易于读懂,而且操作过程简单,不易出现错误,故采用方案二设计本系统。 设计方案分析根据系统设计要求,系统设计采用自顶向下的设计方法。顶层设计采用原理图设计方式, 系统整体组装设计结构图如图( 1 )所示,它由密码锁控制模块、计数器 I 模块、计数器 II 模块、寄存器模块、比较器模块以及编码器模块六个部分组成。输入编码计数器 I 寄存器比较器 3 图( 1 )系统整体组装设计结构图 编码器部分其共有三个输入和两个输出端口,如图( 2) 图( 2 )编码器部分在时钟脉冲信号的作用下,当“ en=1 ”时,表示此时可以输入三个十进制数码,分别对应关系如下: "0000000001"=>"0000"; "0000000010"=>"0001"; "0000000100"=>"0010"; "0000001000"=>"0011"; "0000010000"=>"0100"; "0000100000"=>"0101"; "0001000000"=>"0110"; "0010000000"=>"0111"; "0100000000"=>"1000"; "1000000000"=>c"1001" 。即当“ key_in= 左边数”时,“ code_out= 右边数”。而当输入的数码等于系统设置密码时, “ ps_i=1 ”,否则“ ps_i=0 ”。 计