基于FPGA的电子密码锁控制电路设计

2019-01-18 12:45
石家庄职业技术学院学报 2018年6期
关键词:密码锁密码报警

熊 军 洲

(重庆电子工程职业学院 电子与物联网学院,重庆 401331)

随着社会的进步和生活水平的提高,人们的安全防范意识日益增强,在安防领域,具有报警防盗功能的电子密码正逐渐受到人们的青睐.与传统密码锁相比,电子密码锁具有安全性高、成本低、易操作等优点[1].电子密码锁的功能可以通过基于单片机的软件编程和基于FPGA(Field-Programmable Gate Array,现场可编程门阵列)[2]的硬件编程来实现.在实际应用中,基于单片机的电子密码锁运行过程中程序容易跑飞,导致系统的可靠性比较差.基于FPGA的电子密码锁的所有算法由硬件电路并行执行,且不存在程序跑飞的风险,使得系统的可靠性大为提高[3].Verilog HDL和VHDL是目前最流行的两种硬件描述语言,相比VHDL,Verilog HDL具有设计灵活,可读性好等特点.本文采用Verilog HDL来设计电子密码锁的控制电路.

1 电子密码锁的基本设计要求

设计一个具有较高安全性和较低成本的通用电子密码锁,具体功能要求如下:

(1)密码设置

在解锁状态下,按下预置键,可设置密码,输入4位十进制数字后按确认键,即可设置新密码,密码为一个4位的十进制数.

(2)密码输入

输入密码的过程中,短暂显示输入的数值,1 s后不再显示数值,数码管显示为“-”.

(3)清除输入

按下清除键可清除前面所有的输入值,清除为“0000”状态.

(4)正确解锁

按下确认键会检查输入的密码是否正确,密码正确即解锁.

(5)错误提示

确认输入后,如密码错误,则产生1 s的错误提示,而后可重新输入密码.

(6)电路报警

如果3次输入错误,则产生报警、锁死、禁止输入现象。按下复位键后,报警解除或报警时间结束,报警解除后恢复初始状态等待重新输入.

2 电子密码锁控制电路的设计方案

根据电子密码锁的设计目标及要求,电子密码锁控制电路整体设计如图1所示.设计的内容为虚线框中的部分,虚线框外则为附加的外围电路.实际的电子密码锁是由控制电路、附加的外围电路及其他机械装置构成.其中,控制电路的主要作用是接收键盘输入密码及其他控制信号并对输入的密码进行验证、修改或产生报警信号等.外围电路则用来输入密码和时钟信号,显示密码、解锁及启动报警装置等.

外围时钟信号经分频器分频后,产生新的时钟信号,分别提供给输入处理、控制模块、处理计算和显示驱动等模块.输入处理模块接收来自键盘的输入信号,处理后产生控制信号和密码,输出给控制模块.控制模块接收来自输入处理的信号,控制电子密码锁的实际运行,产生的信号输出给处理计算模块.处理计算模块存储设置的密码并产生解锁信号、报警信号和数字显示等.显示驱动根据处理计算模块提供的显示数字进行七段数码管译码,从而驱动外围的数码管.

图1电子密码锁控制电路整体设计框图

3 电子密码锁的设计模块组成

电子密码锁主要由分频模块、输入处理模块、控制模块、处理计算模块及显示驱动模块组成.

3.1 分频模块

此模块采用载有EP2C20F484C7芯片的Altera DE1开发板,外部时钟频率为50 MHz,经分频模块分频后,产生1 kHz的时钟信号,提供给输入处理模块、控制模块、处理计算模块和显示驱动模块.

3.2 输入处理模块

此模块对输入的信号进行处理,使之变为适合其他模块的信号.Altera DE1开发板上的10个开关键SW[0]-SW[9]构成十进制数字信号0~9,4个按键KEY[0]-KEY[3]分别为清除键、确认键、预置键和复位键.4个按键要做防抖处理.需要将开关键SW[0]-SW[9]变换为相应的十进制数字信号0~9,检测到开关有效(为“1”)时,除了产生相应的十进制数字外,还产生启动输入信号,用于指示控制模块进入密码输入状态,并且开关有效时产生一个输入有效信号.该信号为一个时钟周期,指示输入数字为一个时钟周期有效.

3.3 控制模块

控制模块是整个设计的控制中心,控制电子密码锁的运行,通过有限状态机来实现,状态转移如图2.状态机的状态采用独热码进行编码,控制模块根据当前状态和输入产生下一个状态,通过不同的状态控制各功能的有序运行.

图2控制模块状态转移图

状态机一共有7个状态:空闲状态、密码输入状态、确认输入状态、正常解锁状态、密码设置状态、密码错误状态和报警状态.电子密码锁启动后,控制模块状态机处于空闲状态,有密码输入时进入密码输入状态,密码输入完成后按下确认键,进入确认输入状态,如果在按下确认键前按下清除键则重新回到空闲状态.在确认输入状态下对比输入的密码和设置的密码是否一致,如果一致则进入正常解锁状态;如果不一致则判断是否错误.错误少于3次进入密码错误状态,错误3次则进入报警状态.正常解锁状态下,如果需要修改密码,可按下预置键进入密码设置状态,否则10 s后进入空闲状态,等待下一次的输入解锁.在密码设置状态下,可以修改密码,连续输入4位密码并铵下确认键,即可修改密码,若输入小于4位密码并按下确认键则修改不成功;若输入大于4位密码并按下确认键则前4位即为修改后的密码.在密码错误状态下,控制模块提示输入的密码出错,并重新回到空闲状态等待下一次的密码输入.在报警状态下,控制模块产生报警信号,并且电路锁死,在此期间输入无效,按下复位键或计时30 min后结束报警状态后,可重新返回空闲状态,等待下一次密码输入.

3.4 处理计算模块

处理计算模块根据控制模块的状态存储设置的密码产生电子密码锁的各种输出信号.处理计算模块在密码设置状态下将需要设置的密码存储在内部的ROM中,在确认状态下对比输入的密码和存储在ROM中的密码,如果相同则产生解锁信号,在密码错误状态下产生错误信号,在报警状态下产生报警信号保持30 min或直到状态切换为止.在密码输入和密码设置状态下,产生数字显示提供给显示驱动模块.

3.5 显示驱动模块

显示驱动模块共驱动4位数码管,在密码输入和密码设置时显示输入的数字提示,通过计时只显示1 s,然后显示变为“-”,每输入一位数字,数码管的显示向右移动一位.

4 电子密码锁控制电路的仿真验证

本文采用Quartus II+Modelsim[4]方式对密码锁的各项功能进行仿真验证,并通过Quartus II软件将实现的电路下载到装有EP2C20F484C7芯片的Altera DE1开发板,进行硬件测试验证.

4.1 密码设置仿真验证

密码设置的仿真波形如图3所示.

图3密码设置仿真波形

在UNLOCK(解锁)状态下预置密码,此时set(预置键)低电平有效,current_state(当前状态)转为SET(密码设置)状态.在SET状态下din(输入密码)“2018”,且每一位十进制密码保持din_val(一个时钟周期)有效,输入4位十进制密码后按下finish(确认键),finish低电平有效,输入的密码被固化在rom3-rom0中,为“2018”,此时密码设置成功,current_state转为IDLE(空闲)状态.

4.2 密码正确解锁仿真验证

密码输入正确的解锁仿真波形如图4所示.

图4密码正确解锁成功仿真波形

current_state处于IDLE状态时输入密码,current_state转为INPUT(密码输入)状态,此状态下din“2018”,由图4可知din依次与rom3~rom0中设置的密码相同,按下finish键,current_state转为UNLOCK(解锁)状态,在此状态下输出unlock_en(解锁信号).图4还显示了在密码输入过程中数码管disp3-disp0的显示信息,disp3-disp0分别显示din的数字,并且1 s后数码管驱动电路输出为“0111111”,显示符号为“-”.

4.3 清除输入仿真验证

清除输入密码的仿真波形如图5所示.

图5 清除输入仿真波形

current_state处于IDLE状态时,输入密码,current_state转为INPUT(密码输入)状态,此状态下din“123”后,按下clear(清除键),clear为低电平有效,current_state转为IDLE状态,清除之前输入的密码.

4.4 密码错误仿真验证

密码输入错误时的仿真波形如图6所示.

图6 密码错误仿真波形

current_state处于IDLE状态时,输入密码,current_state转为INPUT状态,此状态下din“9527”,由图6可以看出依次din与rom3-rom0中设置的密码不同.按下finish后,current_state转为ERROR(密码错误)状态,并且在此状态下发出error_en(错误信号).current_state保持1 s的ERROR状态后,转为IDLE状态,等待下一次的din.

4.5 电路报警仿真验证

电路报警的仿真如图7所示.

图7电路报警仿真波形

当密码错误输入3次后,电路产生报警.由图7可以看出,电路产生了2次error_en后,current_state在INPUT状态下进行第3次密码输入,密码输入错误,当按下finish后,current_state转为ALARM(报警)状态,并且产生alarm_en(报警信号).按下rst_n(复位键)后,current_state转为IDLE状态,报警解除.

5 结语

高可靠性是电子密码锁的重要设计指标.本文基于FPGA的硬件编程,采用硬件描述语言Verilog HDL对电子密码锁的控制电路进行设计,所有的功能均由硬件电路实现.由于FPGA具有重复编程的能力,当控制电路需要修改时,利用现有的接口,修改内部电路,验证通过后下载到配置芯片即可.该电子密码锁采用4位十进制密码设计,实现了密码设置、密码输入、清除设置、正确解锁、错误提示和电路报警等功能,满足设计要求和正常的用户需求.仿真结果表明,设计的电子密码锁控制电路灵活可靠,操作简单,后续还可进一步升级为安全系数更高的密码锁.

猜你喜欢
密码锁密码报警
密码里的爱
密码抗倭立奇功
LKD2-HS型列控中心驱采不一致报警处理
开启密码锁
数字密码锁的逻辑实现
密码藏在何处
2015款奔驰E180车安全气囊报警
夺命密码
死于密室的租住者
奔驰E260车安全气囊报警