基于FGPA的数字密码锁设计
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所示。
按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合或断开时不会稳定地接通或立即断开,在电路上则会表现为连续地输入同一个值。因此在键盘扫描电路里加入了键盘消抖程序。为使用户能够看到自己所输入的密码,将七段数码管的显示电路也集中到了键盘扫描电路内。键盘扫描所用的时钟频率为1kHz,故将系统所用的1MHz的时钟分频为1kHz供键盘扫描用,以分频模块为例,其程序如下:
1.3 状态机
状态机(FSM)在一个有限状态之下以目前电路所处的状态为准,一旦外加时序及输入信号来临,则以目前的状态及输入信号的变化状况为依据,产生下一次的状态及电位。状态机是密码锁的主要控制部分,如图2所示,状态分为7种,S1:密码修改状态;S2:开锁状态;S3:闭锁状态:S4:密码输入正确状态:S5:密码输入状态;S6:密码输入错误状态;S7:报警状态。
系统上电时,处于开锁状态,当输入change信号时,系统进入修改密码状态;若输入lock信号,进入安锁状态,锁闭合;在安锁状态,输入start信号,进入输入密码状态;在输入密码状态,由ps_i_l密码脉冲作为计数时钟,计数值输出作为寄存器地址,当计数器计到6时,返回计数满信号cin,如果密码内容和长度均正确,进入密码初验正确状态,如果密码错误,进入密码初验错误状态;在密码初验正确状态,输入确认信号enter时,进入开锁状态;在密码初验错误状态,输入确认信号enter时,进入报警状态;在报警状态,warn信号等于‘1’,如果输入清楚报警信号off_al,则进入安锁状态。以开锁过程为例,其功能仿真波形如图3所示。
2 系统功能仿真
自上而下的设计方法,是现代电子系统的新型设计策略,它从设计的总体要求出发。本文用VHDL语言以系统的整体输入输出作为顶层实体描述,然后进行元件例化和位置映射。分别建立每个模块的VHDL文件,最后由系统进行整体的综合和功能仿真。
2.1 系统软件仿真
完成系统的整体设计后,再对顶层文件进行编译,然后建立Vector Waveform File,编辑输入波形后进行功能仿真,以密码输入错误为例,仿真结果如图4所示,设置密码为279235,系统处于闭锁状态时,按start键,开始输入密码8765413,密码输入错误,则系统还是处于闭锁状态,且warn变为高电平。
2.2 系统硬件测试
系统硬件测试环境用的是EP2C35F672C8,它采用672引脚的BGA封装,表1列出了该款FPGA的所有资源特性。
完成引脚分配后,通过JTAG调试接口将程序下载到芯片内,进行硬件测试,首先设置密码为654321然后上锁,以输入错误密码为例,输入235689然后按#}键,由图4可见,闭锁指示灯D3亮,表示未开锁,报警指示灯D4亮,表示密码输入错误。测试结果表明设计成功。
3 结束语
设计选用FPGA芯片、4×4矩阵键盘、七段数码管为主要硬件,设计了一种低功耗、体积小的密码锁,并在硬件上验证了其可靠性。由于FPGA的灵活性,密码长度可根据寄存器个数而随意改变,此设计在现代物联网技术中将有广泛应用。
评论