基于FPGA的电子密码锁的研制
随着社会物质财富的日益增长,安全防盗已成为人们所关注的焦点。然而传统机械弹子锁安全性低,密码量少且需时刻携带钥匙使其无法满足一些特定场合的应用要求,特别是在人员经常变动的公共场所,如办公室、宾馆、汽车、银行柜员机等地方。由于电子密码锁具有语音提示、防盗报警、易于系统升级与功能扩展的优势,越来越受到人们的青睐。目前使用的电子密码锁主要有两个方案:一是基于单片机用分立元件实现的,二是通过现代人体生物特征识别技术实现的,前者电路较复杂且灵活性差,无法满足应用要求;后者有其先进性但需考虑成本和安全性等诸多因素。基于此,本文设计了一种新型电子密码锁,采用FPGA芯片,利用先进的EDA技术、ALTERA公司的QUATUSII软件开发平台进行设计。系统采用VHDL硬件编程语言对系统建模,并利用状态机(FSM)实现对消抖电路及主控模块的设计[1]。
1 系统功能描述
本设计主要实现以下六个功能:
(1)初始密码设置:系统上电后输入4位数字并按“*”后密码设置成功系统进入上锁状态。为了实际需要,系统另设置了一个4位数的优先级密码,当用户忘记密码或被他人更改密码后,可以用优先级密码清除所设密码。
(2)密码更改:为了密码安全及避免误操作,只能在开锁状态下先输入旧密码后才能更改系统密码,然后输入4位新密码后按“*”。
(3)解锁:输入密码或优先级密码后按“#”,系统即解锁。
(4)密码保护:密码输入错误时,系统自动记录一次错误输入,当错误输入次数等于3次时,系统报警并使键盘失效5分钟,以免密码被盗。
(5)清除输入错误:当输入数位小于4位时可以按“*”清除前面所有的输入值,清除为“0000”。
(6)系统复位:按“*”和“#”后系统即复位到初始状态。考虑到实际情况,系统只在密码更改状态和系统初始状态下才能复位。
2 系统设计思路
本文采用自顶向下的模块化设计方法,先对系统级进行功能描述,再进行功能模块的划分,最后分别对各个子模块进行VHDL建模。所设计的电子密码锁系统结构如图1所示。
2.1 时钟产生模块
此模块主要功能是产生时钟信号和键盘扫描信号。主要产生三个时钟信号(16 Hz、64 Hz、100 kHz),分别为系统各个功能模块提供时钟驱动信号。其中键盘扫描模块包括在时钟产生模块中,用来产生扫描信号。由于要产生多个时钟信号,因此该模块的VHDL程序分别用三个进程来处理。
密码输入一般采用机械式和触摸式两种键盘。由于机械式键盘具有成本低、结构简单、可靠性高、应用广泛等优点,本设计采用机械式3×4键盘矩阵。其按键分布及键值编码如图2所示。其中‘*’、‘#’为多功能组合键。键盘扫描电路用来产生扫描信号KH[3..0],其按照1110-1101-1011-0111...的规律循环变化,并通过KC[2..0]来检测是否有键按下。例如,当扫描信号为1011时,键6、7、8所对应的行为低电平,此时若8键被按下,则KC2为低电平,KC[2..0]输出为011。如果没有键被按下,则KC[2..0]输出为111。其他键也是类似原理。特别值得注意的是键盘扫描电路扫描时钟的确立,如果扫描时钟不合适,将产生键按下时反应太慢,或KC[2..0]产生错误的输出。一般为20 Hz,本设计通过实验证明扫描时钟取16 Hz较为合适。
2.2 按键消抖模块
本设计采用机械键盘,其缺点是易产生抖动,因此键盘输出KC[2..0]必须经过消抖电路后才能加入到键盘编码模块,以避免多次识别。此模块采用状态机设计,其状态转换图如图3所示。只有当连续检测到3次低电平输入,模块才输出一次低电平。消抖电路的时钟选择很关键,选择不当则不能正常工作。因为键盘扫描电路的时钟是16 Hz且扫描信号为4组循环输出,所以消抖电路要能够在4个键盘扫描时钟内检测出是否有键按下就必须设置其时钟信号至少为键盘扫描时钟的4倍。本设计采用64 Hz作为消抖模块的时钟驱动信号,实验证明能达到设计要求。
2.3 键盘编码模块
上述的键盘中可分为数字键和功能键,其中数字键用来输入数字,但键盘所产生的信号KC[2..0]并不能直接用于键盘输入处理模块,因此必须由键盘编码电路对数字按键的输出形式进行规划。同时多功能键‘*’、‘#’也分别被规划为“1010”和“1011”。另外,在系统规划时,也将系统复位电路规划在此模块内,复位信号是由键盘编码模块和系统主控模块输出的系统复位辅助信号mm共同作用产生,从而实现只能在密码更改状态和系统初始状态下才能进行系统复位,确保系统安全可靠。
2.4 按键输入处理模块
按键输入处理模块用来储存每次按键产生的值,以免覆盖前面输入的数据,此模块使用串行移位寄存器对依次输入的4位十进制数字进行存储。按键输入超过4位时,后面的输入将被忽略。
2.5 显示模块
为了节省I/O管脚和芯片内部资源,本设计采用动态扫描的方法进行显示。模块用100 kHz时钟信号和人眼的视觉暂留效应使4位数码管看起来像是同时点亮。图4是根据VHDL代码所绘制的显示模块框图。其中多路数据选择器是由按键次数(NC)控制选择哪一个数码管和哪一组输入数据。
- 51单片机-电脑密码锁与系统监控(12-01)
- 51单片机的LCD1602液晶屏密码锁汇编程序(11-28)
- 32. 电子密码锁设计(11-18)
- 密码锁课程设计(11-18)
- 基于单片机的电子密码锁(04-01)
- 基于ATMega16单片机的密码锁的设计(01-07)