基于FPGA的数字密码锁

0 前言
自古以来人们对物品安全就十分重视 , 数字化的今天 , 电子锁正在逐步取代以往的机械锁被广泛运用在门禁、银行和保险柜 。 然而 , 这些基于单片机的密码锁可靠性较差 , 而且功能拓展有限 。 随着物联网技术的发展 , 人们对电子锁安全性和可靠性又提出了新的要求 。 本文所述的FPGA,即现场可编程门阵列 , 它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物 。 由于其高集成度 , 使得电子产品在体积上大大缩减 , 且具有可靠、灵活、高效等特性 , 己备受设计师们的青睐 。
1 系统概述
1.1 功能概述
(1)初始密码为000000,按C键设置密码 , 密码设置完成后按A键即上锁 。
(2)以4×4键盘为输入设备 , 按B键开始密码输入 , 串行输入6位密码 , 输入完成后按#键 , 确认密码输入完成 。 七段数码管将显示用户所输入的数字 。
(3)密码输入正确 , 则开锁指示灯灭 , 若密码输入错误或位数不足 , 报警灯亮 。
(4)处于报警状态时 , 按*键可解除报警 。
(5)为保证安全 , 系统只有在开锁状态时 , 按C键 , 用户才可重新设置密码 。
1.2 系统结构
系统以4×4矩阵键盘为输入设备 , 七段数码管和指示灯为系统的输入显示和输出指示器 。 系统内部可分为以下几个模块:键盘扫描及消抖电路、分频电路、译码电路、编码器、寄存器、比较器、控制器、计数器 。 系统结构大致如图1所示 。

基于FPGA的数字密码锁

文章插图

按键所用开关为机械弹性开关 , 当机械触点断开、闭合时 , 由于机械触点的弹性作用 , 一个按键开关在闭合或断开时不会稳定地接通或立即断开 , 在电路上则会表现为连续地输入同一个值 。 因此在键盘扫描电路里加入了键盘消抖程序 。 为使用户能够看到自己所输入的密码 , 将七段数码管的显示电路也集中到了键盘扫描电路内 。 键盘扫描所用的时钟频率为1kHz,故将系统所用的1MHz的时钟分频为1kHz供键盘扫描用 , 以分频模块为例 , 其程序如下:
基于FPGA的数字密码锁

文章插图

1.3 状态机
状态机(FSM)在一个有限状态之下以目前电路所处的状态为准 , 一旦外加时序及输入信号来临 , 则以目前的状态及输入信号的变化状况为依据 , 产生下一次的状态及电位 。 状态机是密码锁的主要控制部分 , 如图2所示 , 状态分为7种 , S1:密码修改状态;S2:开锁状态;S3:闭锁状态:S4:密码输入正确状态:S5:密码输入状态;S6:密码输入错误状态;S7:报警状态 。
基于FPGA的数字密码锁

文章插图

系统上电时 , 处于开锁状态 , 当输入change信号时 , 系统进入修改密码状态;若输入lock信号 , 进入安锁状态 , 锁闭合;在安锁状态 , 输入start信号 , 进入输入密码状态;在输入密码状态 , 由ps_i_l密码脉冲作为计数时钟 , 计数值输出作为寄存器地址 , 当计数器计到6时 , 返回计数满信号cin,如果密码内容和长度均正确 , 进入密码初验正确状态 , 如果密码错误 , 进入密码初验错误状态;在密码初验正确状态 , 输入确认信号enter时 , 进入开锁状态;在密码初验错误状态 , 输入确认信号enter时 , 进入报警状态;在报警状态 , warn信号等于‘1",如果输入清楚报警信号off_al,则进入安锁状态 。 以开锁过程为例 , 其功能仿真波形如图3所示 。
【基于FPGA的数字密码锁】