基于FPGA的电子密码锁的设计与实现

基于FPGA的电子密码锁的设计与实现

濮霞  陶炳坤 黄天辰

(陆军工程大学石家庄分校 车辆与电气工程系,河北 石家庄 050003)

 

摘要:以现场可编程逻辑器件(FPGA)为设计载体,以硬件描述语言(Verilog HDL)为主要表达方式,设计了一种基于FPGA的电子密码锁,它能够实现记忆和修改4位密码、多次输入密码错误时进行报警等功能,保密性和安全性能进一步增强,最后利用QuartusⅡ软件平台完成了电子密码锁的功能设计与仿真,并在FPGA芯片EP2C35F484C8上通过了验证。

关键词:电子密码锁;FPGA;电子设计自动化; Quartus II

中图分类号:TP391.9文献标识码:A

Design of reliable electronic password lock based on FPGA

Pu XiaTao BingkunHuang Tianchen

Electrical Engineering Department of Ordnance Engineering College , Hebei,  Shijiazhuang , 050003china

AbstractTaking the field programmable gate arrayFPGAas the design carrierand the hardware description languageVerilog HDLas the main expression modean electronic password lock based on FPGA was designed. It has functions of memorizing hanging 4-digit password and alarming in case of several input errors of password. Thereforeit further improved the secure and safety performance of password lock. The function design and simulation of the electronic password lock were achieved other software platform of QuartusⅡ.The design was successfully validated on FPGA chip EP2C35F484C8 .The validation result shows the password lock has the characteristics of high securitylow costlow power consumptionsimple operation and so on.

Keywordspassword lockFPGAQuartus

 


随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐然而市面上利用单片机控制的电子密码锁,也存在一些缺点:密码输入容易误操作;利用单片机设计的需要外围电路较多,这样安全性就差,容易破解密码;并且电路逻辑性相对较弱;电路结构复杂,要利用单独的存储器才能完成。本文给出了一种基于FPGA的四位电子密码锁实现方法,充分发挥了电子密码所安全性高、成本低、功耗低、易操作的优势。

二、电子密码锁的设计方案

设计的密码锁的功能:具有密码预置功能,并有上锁指示;密码串行输入,且输入过程中不提供密码数位信息;只有正好输入4位密码且密码完全正确时解锁成功,密码锁方可打开;密码输入过程中密码有误时,能对已经输入的密码清除以便重新输入密码;密码连续三次输入错误,开启报警;设置初始密码为6666,密码可以修改,在密码锁打开状态下,按下密码修改按键,输入新的密码即可修改密码。电子密码锁主要由四个部分组成:数字密码输入电路、密码锁控制电路、密码锁显示电路和密码锁报警电路。其中密码锁控制器的主要作用是接收输入密码并进行密码的验证操作,外围指示电路的主要作用是用来输入密码、显示输入的密码和根据密码验证的结果给出不同的信号显示或者启动报警装置,其中报警装置通采用扬声器。电子密码锁的组成框图如图1所示。本设计中采用一个4*4的通用数字机械式键盘作为该设计的输入设备。数字电子密码锁的显示信息电路可采用LED数码管上显示。

1 密码锁系统组成框图

综合考虑电子密码锁的性能、成本、功耗等多方面因素,本设计选用Cyclone II系列FPGA作为硬件载体,芯片型号为EP2C35F484C8

二、电子密码锁的电路实现

本设计采用了自顶向下的模块化设计方法,即从系统总体要求出发,自上而下地逐步将设计内容细化,结合功能强大的EDA工具和FPGA开发技术,使整个设计过程更加高效、开发成本更低。

2.1电子密码锁输入电路的设计

电子密码锁的输入电路由键盘扫描电路、按键消抖电路、键盘译码电路、按键数据缓存器以及4*4矩阵键盘组成,电子密码锁输入电路框图如图2所示。本电路采用三种不同频率的工作脉冲波形:系统时钟脉冲、按键消抖取样信号、键盘扫描信号

2 电子密码所输入电路框图

2.2电子密码锁控制电路的设计

密码锁的控制电路是整个电路的控制中心,主要完成对数字按键输入和功能按键输入的响应控制。

1)数字按键输入的响应控制

1)如果按下数字键,第一个数字会从显示器的最右端开始显示,此后每新按一个数字时,显示器上的数字必须左移一格,以便将新的数字显示出来。

2)假如要更改输入的数字,可以按倒退按键来消除前一个输入的数字,或者按清除键清除所有输入的数字,再重新输入四位数。

3)这里设计的是一个4位的电子密码锁,所以当输入的数字超过4个时,电路不予理会,而且不再显示第四个以后的数字。

2)功能按键输入的响应控制

1)清零键:清除先前的密码输入,在数码管上显示为“0000”。

2)解锁键::检查输入的密码是否正确,密码正确即

3)上锁键:密码处于锁定状态,键入密码值无效;

4)更改密码键:通过按键将当前密码值设为新的密码;

修改密码时要先输入之前的密码,即先解码后才能设定新密码。 代码中将初始代码设定为6666”,用户可进行修改。部分代码如下:

//----set and change of code----------

always@(posedge clk or negedge rst)

   if(!rst)

      begin

      codea<=4'd6;// the initial password

      codeb<=4'd6;

      codec<=4'd6;

      coded<=4'd6;

      end

//---change code----

else if(ctrin==3'b010)

begin

     if(!(lockstate==locked))

   begin

    codea<=numa;

    codeb<=numb;

    codec<=numc;

    coded<=numd;

  end

     else

       begin

     codea<=codea;

     codeb<=codeb;

     codec<=codec;

     coded<=coded;

   end

end  

2.3电子密码锁显示电路的设计

密码锁显示电路的设计比较简单,这里采用四个共阳极数码管动态扫描方式来实现。由于每个数码管需要连接的I/O口有9个,当数码管需要的数量比较多,采取静态显示需求的的I/O口就会成倍增加,为了节省FPGA芯片I/O口的使用,数码管动态扫描显示就成了设计者的选择。数码管动态扫描显示主要是靠人眼的视觉停留原理。数码管其实是一个一个亮过去的,每个数码管显示它该现实的数字,中间只间隔十毫秒,由于断电的那几毫秒数码管有余辉,人眼看过去好像整排数码管一直都是亮着的。

三、仿真结果

1.解锁仿真波形如图3所示

 

3 解锁仿真波形图

由图3可见,当ctrin=3’b100时,执行解码的操作。当输入密码“6666”,即{dataa,datab,datac,datad}={4’d6, 4’d6, 4’d6, 4’d6}时,输入密码正好与初始密码{codea,codeb,codec,coded}相符,解锁成功,lockstate0跳变为1led的状态变为2’b01,在图中方框处可见。

2.更改密码仿真波形如图4所示

4 更改密码仿真波形图

由图4可见,当ctrin=3’b010时,执行更改密码的操作,前提先前的密码必须解码成功。在图中lockstate=1满足条件。依次输入新密码“1234”,可看到密码值成功更改,即{codea,codeb,codec,coded}={4’d4,4’d3,4’d2,4’d1}

3.锁定仿真波形如图5所示

 5 上锁仿真波形图

由图5可见,当ctrin=3’b011时,执行上锁的功能。此时,lockstate1变为0led变为2’b10。当codein端口依次输入数值”5,6,7,8”时,数码管的显示数值{dataa,datab,datac,datad}保持{4’d0, 4’d0, 4’d0, 4’d0}不变,即为锁定状态。

4.清零仿真波形如图6所示

6 清零仿真波形图

由图6可见,当clear0变为1后,{dataa,datab,datac,datad}={4’d0, 4’d0, 4’d0, 4’d0},对显示进行清零。

上锁和清零操作虽然都是使{dataa,datab,datac,datad}变为0,但二者的不同之处在于,上锁后无法再次键入密码值,而清零是为了清除之前输入密码值,从而键入新的数值。变量实时的变化过程可通过工程中SignalTap文件观测。

四、下载与测试

Quartus90中,根据FPGA芯片EP2C35F484C8的引脚特性,利用EDA工具对电路进行综合、适配、引脚分配,最后对目标器件进行编程操作,通过编程电缆成功下载了sof文件,在实验板上进行硬件测试。在该编程操作中,矩阵键盘上的F键为解锁键,当键入正确的秘密时解锁成功,否则当按下错误密码超过三次时,密码锁控制电路驱动蜂鸣器发出滴滴的报警声。在解锁成功的基础上按下按键D可以修改密码。按键E进行锁定设置,按键F执行解锁任务。当解锁或修改密码时,若想修改输入值,可以通过按键C清除已输入的密码,重新输入。硬件测试结果表明,本设计最终成功实现了基于FPGA的一种智能电子密码锁。

五、结束语

Altera公司的Quartus II软件平台下使用Verilog HDL语言设计了一个四位数字电子密码锁。从仿真及硬件测试结果可以看出,所设计的电子密码锁具有很强的实用性,对于不同场合需要不同的密码位数,只需稍加修改即可实现,升级和维护都很方便。

 

参考文献

[1]陆继远.电子密码锁的FPGA实现[J].微计算机信息2011277):3-4

[2]李倩,梁亮基于FPGA的电子密码锁的设计与实现[J].机械与电子20115

[3] 王显海,贾金玲等.基于FPGA的电子密码锁的研制[J].微计算机与应用.2010.2616

[4] 李珍,王国宇等. 基于FPGA的可靠性电子密码锁设计[J].现代电子技术.2013.367

[5] 康浩,叶翔等. 基于FPGA的智能电子密码锁的设计[J].湖北理工学院学报.20146

[6] 阎石.数字电子技术基础[M].5.北京:高等教育出版社,2005

[7]潘松,黄继业.EDA技术实用教程[M].北京:科学出版社,2006

[8]刘克刚,复杂电子系统设计与实践[M]. 北京:电子工业出版社,2010

[9]曹昕燕等,EDA技术实验与课程设计[M]. 北京:清华大学出版社,2006

 

微信二维码
扫码添加微信咨询
QQ客服:1663286777
电话:137-1883-9017
收到信息将及时回复