基于FPGA的数字密码锁

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于F P G A的数字密码

LG GROUP system office room 【LGA16H-LGYY-LGUA8Q8-LGA162】
CPLD/FPGA课程设计
项目名称:基于FPGA的数字密码锁设计
专业班级:
学生学号:
学生姓名:
指导老师:
2016年6月4日
摘要
本设计是基于现场可编程门阵列FPGA 器件的电子密码锁的设计。

通过Verilog 语言控制4位二进制数,组成数字排列,形成一个简单的数字密码锁,假设预设密码为4位数:0000,当输入正确时输出为1、输入错误时输出为0。

同时输出输入的次数,当3次以上输入错误时,输出一个报警信号,即使第四、五次输入正确也输出报警信号。

本设计利用Modelsim软件编写Verilog HDL硬件描述语言程序以实现输入密码、开锁、报警功能。

通过仿真调试,利用可编程器件FPGA的电子密码锁的设计基本达到了预期目的。

关键词:现场可编程门阵列;数字密码锁;Verilog HDL;
Abstract
This design is the electronic code lock field programmable gate array FPGA devices based design. By Verilog language control 4-bit binary number, composed of figures arranged to form a simple digital lock, assuming that the default password is 4 digits: 0000, correct output when the input is 1, the output of the input error to zero. At the same time the number of input and output, and when more than three times the input error, an alarm signal is output, even if the fourth and fifth also enter the correct output alarm signal.
This design uses Modelsim software write Verilog HDL hardware description language program to implement a password lock, alarm function. The simulation debugging, using the programmable device FPGA design basic electronic locks to achieve the desired purpose.
Key words: FPGA;The digital combination lock;Verilog HDL;
目录
摘要 (I)
Abstract (II)
第1章所选项目的研究意义 (1)
概述 (1)
数字密码锁的研究现状 (2)
数字密码锁的应用 (3)
数字密码锁的困难 (3)
本文研究意义 (3)
设计思路 (4)
第2章设计方案 (5)
功能定义 (5)
模块设计 (5)
第3章系统软件设计 (7)
设计概括 (7)
设计流程 (7)
密码存储模块 (7)
编码模块 (8)
比较模块 (8)
主要程序模块 (9)
第4章软件仿真 (14)
仿真过程 (14)
仿真结果 (15)
仿真分析 (16)
仿真过程 (17)
结论 (18)
参考文献 (19)
附录1 程序代码 (20)
项目创新及特色 (26)
第1章所选项目的研究意义
概述
数字密码锁是一个小型的数字系统,与普通机械锁相比, 具有许多独特的优点: 保密性好, 防盗性强, 可以不用钥匙, 记住密码即可开锁等。

在人们平时生活中,贵重物品或个人信息资料大多数都已加锁的方式进行保管。

如果使用传统的机械锁进行对物品及资料的保管,那么人们要携带很多把钥匙在身上,携带非常不便,而且钥匙丢失将对物品保管的安全性大打折扣,也为人们的生活及心情带来不便。

随着生活质量的不断提高,加强家庭防盗安全变得非常重要,但传统机械锁的构造过于简单,很容易被打开,从而降低了安全性。

数字密码锁因为它的保密性很高,安全系数也非常高,再加上其不需要携带避免了丢失的可能,省去了因钥匙丢失而需要换锁的麻烦,受到了越来越多的人的欢迎。

随着人们对高科技产品也越来越推崇,在当今社会科技的高度集中和创新,人们对日常生活中保护自身及财产安全的物品非常追捧,对其安全性的要求也非常的高。

为了达到人们对锁具安全性的高要求,加强锁具的安全保密性,用密码锁来取代传统机械锁的锁具是必然趋势。

数字密码锁比传统机械锁具更加的安全[1]。

锁具发展到现在已有若干年的历史了,锁是用于保管物品的器件,用来关住某种器物的一种器具。

其必须用钥匙才能打开。

所以在人们的日常生活中离不开锁,这使得我们队锁具的结构和原理也多少有些了解,因此,就有了不借用钥匙就打开锁的方法。

锁具都存在致命的弱点,比如锁芯采用常见的铜、锌、铝等材料容易遭到暴力破坏,还有就是锁具制作工艺的技术落后,从而导致防盗功能缺失,目前,国内市场的锁具,实际上都不具备真正的防盗功能,在惯偷面前用几件简单工具就可以轻松打开这些锁,其实不是他们多么的高明,而是一般锁具的原理过于简单,面对这一社会现状,新时代提出了锁具必须改革的迫切需求[2]。

安全防盗已成为人们所关注的焦点。

然而传统机械弹子锁安全性低,密码量少且需时刻携带钥匙使其无法满足一些特定场合的应用要求,特别是在人员经常变动的公共场所,目前使用的电子密码锁主要有两个方案:一是基于单片机用分立元件实现的,二是通过现代人体生物特征识别技术实现的,前者电路较复杂且灵活性差,无法满足应用要求;后者有其先进性但需考虑成本和安全性等诸多因素。

基于此,本文设计了一种新型电子密码锁,采用FPGA芯片,目前以硬件描述语言(Verilog 或
VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流[3]。

这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。

在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。

FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。

但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。

厂商也可能会提供便宜的但是编辑能力差的FPGA。

因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。

另外一种方法是用CPLD(复杂可编程逻辑器件备)[4]。

因此,随着电子技术的飞速发展数字密码锁的产生是必然,其在使用的方便性、防盗报警功能、智能管理等方面都是传统机械锁无法比拟的,在对安全性有较高要求的设施及场所中得到了广泛应用。

数字密码锁的研究现状
现如今,随着高新技术的涌入,对传统锁具进行了很大的的改进,锁具的防盗性能得到了充分的加强,由传统锁具改进的智能密码锁已成为现如今安防系统中最强大的组成部分,它的作用是每一个传统机械锁具无法取代的。

由于其在市场中巨大的潜力,国内外许多的公司都投入很大的人力、物力来从事智能数字密码锁的研究开发生产。

目前,市场上比较先进的智能电子密码锁分别有:IC卡电子密码锁、射频卡式电子密码锁、红外遥控电子密码锁、指纹识别电子密码锁和瞳孔识别电子密码锁等。

IC 卡电子密码锁成本低,体积小,卡片本身无须电源等优点占领了一定的市场份额,但是由于有机械接触,会产生接触磨损,而且使用不太方便,在一定程度上限制了它的应用;射频卡式电子密码锁是非接触式电子密码锁,成本也不太高,体积跟IC卡密码锁相当,卡片使用感应电源,重量很轻,技术成熟,受到了广泛的欢迎,但是与IC卡电子密码锁相比,成本偏高;指纹识别电子密码锁和瞳孔识别电子密码锁可靠性很高,安全性是目前应用系统中最高的,但是成本高昂,还没进入大众化使用阶段[5]。

在国外,美国、日本、德国的电子密码锁保密性较好,并结合感应卡技术,生物识别技术,使电子密码锁系统得到了飞跃式的发展。

这几个国家的密码锁识别的密码更复杂,并且综合性比较好,已经进入了成熟期,出现了感应卡式密码锁,指纹式密码锁,虹膜密码锁,面部识别密码锁,序列混乱的键盘密码锁等各种技术的系统,它
们在安全性,方便性,易管理性等方面都各有特长,新型的电子密码锁系统的应用也越来越广。

数字密码锁的应用
密码锁具有安全性高、成本低、功耗低、易操作等优点。

在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步[6]。

随着大规模集成电路技术的发展,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛[7].随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC 卡辨认)已在国内外相继面世。

但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。

而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。

加上其成本较高,一定程度上限制了这类产品的普及和推广。

鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流[8]。

数字密码锁的困难
HDL语言的程序设计和控制函数的调用
编写Verilog HDL语言时,输入4位密码未能和程序预设密码进行比较,无论密码输入正确与否,锁均不打开,而且报警计数器也不进行+1操作。

在程序编译时,函数调未能调用成功。

2.报警程序模块的设计
计数器+1操作进行时,系统中断,从而导致系统重置,计数器又从0开始进行+1操作,导致系统不报警。

3.用Modelsim仿真软件波形时,为准确输出正确波形
在程序编写时,未考虑初始密码,导致波形错误。

本文研究意义
电子杂志、报刊经常刊登有密码开关、密码锁这样的电路,大多数是使用常用的数字电路,如CD4017,然后通过不同的连接方式实现密码控制功能。

这种电路的特点就是密码修改只能通过改变电路的连接来实现,密码很容易被破解,电路复杂,故障
率高。

本制作是针对这些电路而设计的,将以往的以单片机实现设计改为可编程器件FPGA利用Verilog HDL编程实现电子密码锁的设计。

这种设计移动方便。

基于FPGA 的电子密码锁具有保密强、灵活性高、适用范围广等特点,它在键盘上输入,与打电话差不多,因而易于掌握,其突出优点是“密码”是记在被授权人脑子里的数字和字符,既准确又可靠,不会丢失(除了忘记),难以被窃(除非自己泄露)。

但是密码不能太简单,太简单了就容易被他人在键盘上试探出来,或者可能被旁观者窥测出来,造成保密性不足。

当然,密码又不能太复杂,太复杂了可能自己都糊涂了,或者输入密码操作成功率低,造成使用不便。

因此,为了发扬优点、克服弱点,本设计采用“任意设定数字密码”技术使得被授权人可以根据自己的需要或喜好设定密码,常用常新,在输入密码的过程中,当连续三次出现密码错误时,则系统会长时间报警不止,这时必须按复位方可停止。

本设计的FPGA电子密码锁的特点是:体积小、功耗低、价格便宜、安全可靠,维护和升级都十分方便,具有较好的应用前景。

它与传统锁具的不同之处在于:它与可编程逻辑器件实现系统的设计,应用简洁清晰的Verilog HDL语言实现设计编程思想,能够实现适时、智能控制管理功能,特别是在系统的扩展上有很好的优势[9]。

设计思路
基于FPGA实现的数字密码锁设计中,主要包括4大部分:FPGA器件、密码存储、译码电路、报警电路。

其中FPGA为主控部分,将消除同步模块、计数器模块、控制器模块都用Verilog HDL语言写入FPGA中代替了传统复杂的电路设计,也省去了很多繁琐的调试步骤。

只有这些模块在Modelsim平台通过了仿真,就可以实现传统电路模块的功能。

本次设计的数字密码锁主要是利用软件的编程来对主控模块的实现。

当通过按键输入密码后,就把输入的信号送给FPGA,FPGA经过里面个模块的处理后传给了各输出电路模块。

密码存储器主要是用来存储密码和防止电源掉电而导致密码锁的数据丢失和提高密码锁的安全性。

对于本次密码锁的初步设计,首先要有一个大体的思路。

本次设计采用FPGA为核心器件,通过Modelsim对其进行程序仿真,组成的完整系统。

程序通过采集输入信息,与FPGA的存储值进行比较,如果密码正确,则开锁电路打开;如果密码错误,锁不打开,并且计数器进行+1操作;累计3次输入密码错误,给警报一个高电平,让其报警。

第2章设计方案
功能定义
数字密码锁具体功能如下:
(1)用户初次使用,可按下am_en键进行密码设置。

(2)开锁时一次完整的输入密码,当输入的密码与设置的密码相同时密码锁打开,即lockopen为高电平,连接的绿灯亮;否则密码锁关闭,即warn_en为高电平,连接的红灯亮。

(3)当输入错误的次数>3时,密码锁强制自动关闭。

表 2-1 数字密码锁的FPGA引脚定义
Input rst复位信号高电平有效
Input am_en密码设置键高电平有效
密码输入
Input cipher_in
[3:0]
Input Enter确定键高电平有效
Output Return清除键高电平有效
Output warn_en密码错误或输入次>3高电平有效
模块设计
密码设置或修改模块
用户初次使用密码锁时可通过按am_en键进行密码设置,先输入初始密码0000,则进入密码设置,高电平有效。

密码是二进制的四位数字密码。

以后修改密码时,按am_en键,然后输入旧密码,正确时方可进入密码设置选项,否则重新开始。

1.密码输入模块
开锁时,一次完整输入密码后,按下enter键进行密码验证,高电平有效,看输入的数字是否等于原密码的值,密码正确时开锁,否则关闭。

当输入有误时,按下return键,清除输入的数字,重新输入
2.密码输入次数计数模块
开始时count=0,当输入密码按下enter键时且密码错误时count+1,当conut>3时,密码锁强制自动关闭。

当输入的密码正确时,count不计数。

3.显示模块
当密码输入正确时,lockopen为高电平,绿色发光二极管灯亮,当密码输入错误时或者当count>3时,warn_en为高电平,红色发光二极管灯亮。

第3章系统软件设计
设计概括
本系统主要集中在以FPGA以核心外围扩展设计,整个电路主要电子锁具的组成框图是以可编程逻辑器件(FPGA)为核心,配以相应硬件电路,完成密码的设置、存贮、识别和驱动电磁执行器并检测其驱动电流值、报警等功能。

FPGA接收键入的代码,并与存贮在闪存中的密码进行比较,如果密码正确,则驱动电磁执行器开锁;如果密码不正确,则允许操作人员重新输入密码,最多可输入三次;如果三次都不正确,则通过FPGA产生报警。

设计流程
实现系统大量逻辑电路的集成,在设计中使用了现场可编程逻辑门阵列器件(FPGA)。

FPGA主要实现以下逻辑功能:键盘处理、设置密码、解码开门以及报警等控制功能[10]。

密码存储模块
在数字密码锁中,密码存储模块是它的密码规定电路,其功能有两个:一个是将存储的密码输出到比较模块中与外部输入的数字进行比较操作,另一个是存储用户修改后的密码。

密码存储模块的地址选择信号由计数器模块电路来进行选择。

模为三的计数器模块电路控制信号RESET和时钟信号CNP是由控制器模块来提供的。

下面给出密码存储模块的流程图。

如图3-1所示
图3-1 密码存储流程图
更改初始密码am_en,首先输入4位2进制的初始密码,程序判定和初始密码一致,执行更改密码的程序;否则继续输入密码,直至输入正确。

输入4位2进制数后,寄存器存储新密码。

编码模块
在保险柜密码器中,由于密码数字是由外接键盘输入的信号,因此这里需要把它转换成4位BCD码送入到比较器中,这时需要采用10线至4线编码器来完成这样的转换。

因为前级消抖同步模块的输出是高电平,因此A0—A9这10个数字的输入信号经过消抖同步后应该是高电平有效。

对于编码器的输出来说,B4是MSB,B1是LSB。

在密码器中,编码模块的顶层原理图如图3-16所示。

比较模块
在数字密码锁中,比较模块的主要功能是对编成模块的输出4位数据和密码存储模块的输出4位数据进行比较,然后将比较的结果送入到控制器模块的DEF端口上。

比较器的具体工作原理是:当比较结果相等时,DEP的输出为1;当比较结果不相等时,DEP的输出为0。

比较密码正确后,即可开锁。

流程图如图3-2所示。

图3-2 解锁流程图
首先输入4位2进制密码,输入密码正确,绿灯亮并开锁;输入密码不正确,计数器N自加1,判定N是否大于3,如果大于3,红灯亮,系统报警;否则继续输入密码,直至N大于3。

在这3次中,输入密码正确,计数器N重置,绿灯亮并开锁。

主要程序
输入密码为1000、再输入0000
initial begin
#10 rst=1;
#10 rst=0;
#10 am_en=0;
st(rst), ount(count),
.warn_en(warn_en),
.cipher_in(cipher_in),
.am_en(am_en));
initial begin
#10 rst=1; //rst赋值1
#10 rst=0; //rst赋值0
#10 am_en=0;
//10时间单位后,am_en赋值0,在主程序里,有判定am的值来执行if循环#10 cipher_in=4'b1000; //置cipher为1000,此时输入错误#10 cipher_in=4'b0000; //置cipher为1000,此时输入错误#10 rst=1; //rst赋值1
#10 rst=0; //rst赋值0
#10 am_en=1;
//10时间单位后,am_en赋值0,在主程序里,有判定am的值来执行if循环#10 cipher_in=4'b0000; //置cipher为0000,此时输入错误#10 cipher_in=4'b1000; //置cipher为1000,此时输入错误 #10 am_en=0;
//10时间单位后,am_en赋值0,在主程序里,有判定am的值来执行if循环#10 cipher_in=4'b0000; //置cipher为0000,此时输入错误#10 cipher_in=4'b0001; //置cipher为0001,此时输入错误#10 cipher_in=4'b1000; //置cipher为1000,此时输入错误
end
endmodule
项目创新及特色
1、从测试结果分析可知,本装置采用较低成本的器件设计制作,且误差较小,完全满足用户的基本要求。

2、本装置结构简单、体积小、性能稳定,操作容易、使用方便,可以安装在不同的门上,具有一定推广应用价值。

3、本系统结合了现在最有发展前景的FPGA设计的电子密码锁系统,安全可靠,科技含量高,易于扩展。

相关文档
最新文档