欢迎来到天天文库
浏览记录
ID:51409489
大小:791.00 KB
页数:8页
时间:2020-03-23
《基于FPGA的电子密码锁的设计.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、随着社会物质财富的日益增长,安全防盗已成为人们所关注的焦点。然而传统机械弹子锁安全性低,密码量少且需时刻携带钥匙使其无法满足一些特定场合的应用要求,特别是在人员经常变动的公共场所,目前使用的电子密码锁主要有两个方案:一是基于单片机用分立元件实现的,二是通过现代人体生物特征识别技术实现的,前者电路较复杂且灵活性差,无法满足应用要求;后者有其先进性但需考虑成本和安全性等诸多因素。基于此,本文设计了一种新型电子密码锁,采用FPGA芯片,目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测
2、试,是现代IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计
3、的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。1系统功能描述 本设计主要实现以下六个功能: (1)初始密码设置:系统上电后输入4位数字并按“*”后密码设置成功系统进入上锁状态。为了实际需要,系统另设置了一个4位数的优先级密码,当用户忘记密码或被他人更改密码后,可以用优先级密码清除所设密码。 (2)密码更改:为了密码安全及避免误操作,只能在开锁状态下先输入旧密码后才能更改系统密码,然后输入4位新密码后按“*”。 (3)解锁:输入密码或优先级密码后按“#”,系统
4、即解锁。 (4)密码保护:密码输入错误时,系统自动记录一次错误输入,当错误输入次数等于3次时,系统报警并使键盘失效5分钟,以免密码被盗。 (5)清除输入错误:当输入数位小于4位时可以按“*”清除前面所有的输入值,清除为“0000”。 (6)系统复位:按“*”和“#”后系统即复位到初始状态。考虑到实际情况,系统只在密码更改状态和系统初始状态下才能复位。2系统设计思路 VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构
5、特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。 本文采用自顶向下的模块化设计方法,先对系统级进行功能描述,再进行功能模块的划分,最后分别对各个子模块进行VHDL建模。所设计的电子密码锁系统结构如图1所示。键盘消抖键盘编码输入处理显示系统控制键盘矩阵时钟及扫描图1系统结构图 2.1时钟产生模块 此模块主要功能是产生时钟信号和键盘扫描信
6、号。主要产生三个时钟信号(16Hz、64Hz、100kHz),分别为系统各个功能模块提供时钟驱动信号。其中键盘扫描模块包括在时钟产生模块中,用来产生扫描信号。由于要产生多个时钟信号。密码输入一般采用机械式和触摸式两种键盘。由于机械式键盘具有成本低、结构简单、可靠性高、应用广泛等优点,其按键分布及键值编码如图2所示。其中‘*’、‘#’为多功能组合键。键盘扫描电路用来产生扫描信号KH,其按照1110-1101-1011-0111的规律循环变化,并通过KC来检测是否有键按下。其他键也是类似原理。特别值得注意的是键盘扫描电路扫描时钟的确立,如果扫描时钟不
7、合适,将产生键按下时反应太慢,或KC产生错误的输出。 2.2按键消抖模块 本设计采用机械键盘,其缺点是易产生抖动,因此键盘输出KC[20]必须经过消抖电路后才能加入到键盘编码模块,以避免多次识别。此模块采用状态机设计,其状态转换图如图3所示。只有当连续检测到3次低电平输入,模块才输出一次低电平。消抖电路的时钟选择很关键,选择不当则不能正常工作。因为键盘扫描电路的时钟是16Hz且扫描信号为4组循环输出,所以消抖电路要能够在4个键盘扫描时钟内检测出是否有键按下就必须设置其时钟信号至少为键盘扫描时钟的4倍。2.3键盘编码模块 上述的键盘中可分为数字
8、键和功能键,其中数字键用来输入数字,但键盘所产生的信号KC[20]并不能直接用于键盘输入处理模块,因此必须由键盘编码电路对数字按键的输出
此文档下载收益归作者所有