基于FPGA的数字密码锁Word格式文档下载.docx
《基于FPGA的数字密码锁Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于FPGA的数字密码锁Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
在人们平时生活中,贵重物品或个人信息资料大多数都已加锁的方式进行保管。
如果使用传统的机械锁进行对物品及资料的保管,那么人们要携带很多把钥匙在身上,携带非常不便,而且钥匙丢失将对物品保管的安全性大打折扣,也为人们的生活及心情带来不便。
随着生活质量的不断提高,加强家庭防盗安全变得非常重要,但传统机械锁的构造过于简单,很容易被打开,从而降低了安全性。
数字密码锁因为它的保密性很高,安全系数也非常高,再加上其不需要携带避免了丢失的可能,省去了因钥匙丢失而需要换锁的麻烦,受到了越来越多的人的欢迎。
随着人们对高科技产品也越来越推崇,在当今社会科技的高度集中和创新,人们对日常生活中保护自身及财产安全的物品非常追捧,对其安全性的要求也非常的高。
为了达到人们对锁具安全性的高要求,加强锁具的安全保密性,用密码锁来取代传统机械锁的锁具是必然趋势。
数字密码锁比传统机械锁具更加的安全[1]。
锁具发展到现在已有若干年的历史了,锁是用于保管物品的器件,用来关住某种器物的一种器具。
其必须用钥匙才能打开。
所以在人们的日常生活中离不开锁,这使得我们队锁具的结构和原理也多少有些了解,因此,就有了不借用钥匙就打开锁的方法。
锁具都存在致命的弱点,比如锁芯采用常见的铜、锌、铝等材料容易遭到暴力破坏,还有就是锁具制作工艺的技术落后,从而导致防盗功能缺失,目前,国内市场的锁具,实际上都不具备真正的防盗功能,在惯偷面前用几件简单工具就可以轻松打开这些锁,其实不是他们多么的高明,而是一般锁具的原理过于简单,面对这一社会现状,新时代提出了锁具必须改革的迫切需求[2]。
安全防盗已成为人们所关注的焦点。
然而传统机械弹子锁安全性低,密码量少且需时刻携带钥匙使其无法满足一些特定场合的应用要求,特别是在人员经常变动的公共场所,目前使用的电子密码锁主要有两个方案:
一是基于单片机用分立元件实现的,二是通过现代人体生物特征识别技术实现的,前者电路较复杂且灵活性差,无法满足应用要求;
后者有其先进性但需考虑成本和安全性等诸多因素。
基于此,本文设计了一种新型电子密码锁,采用FPGA芯片,目前以硬件描述语言(Verilog或
VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流[3]。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。
但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。
厂商也可能会提供便宜的但是编辑能力差的FPGA。
因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。
另外一种方法是用CPLD(复杂可编程逻辑器件备)[4]。
因此,随着电子技术的飞速发展数字密码锁的产生是必然,其在使用的方便性、防盗报警功能、智能管理等方面都是传统机械锁无法比拟的,在对安全性有较高要求的设施及场所中得到了广泛应用。
1.2数字密码锁的研究现状
现如今,随着高新技术的涌入,对传统锁具进行了很大的的改进,锁具的防盗性能得到了充分的加强,由传统锁具改进的智能密码锁已成为现如今安防系统中最强大的组成部分,它的作用是每一个传统机械锁具无法取代的。
由于其在市场中巨大的潜力,国内外许多的公司都投入很大的人力、物力来从事智能数字密码锁的研究开发生产。
目前,市场上比较先进的智能电子密码锁分别有:
IC卡电子密码锁、射频卡式电子密码锁、红外遥控电子密码锁、指纹识别电子密码锁和瞳孔识别电子密码锁等。
IC卡电子密码锁成本低,体积小,卡片本身无须电源等优点占领了一定的市场份额,但是由于有机械接触,会产生接触磨损,而且使用不太方便,在一定程度上限制了它的应用;
射频卡式电子密码锁是非接触式电子密码锁,成本也不太高,体积跟IC卡密码锁相当,卡片使用感应电源,重量很轻,技术成熟,受到了广泛的欢迎,但是与IC卡电子密码锁相比,成本偏高;
指纹识别电子密码锁和瞳孔识别电子密码锁可靠性很高,安全性是目前应用系统中最高的,但是成本高昂,还没进入大众化使用阶段[5]。
在国外,美国、日本、德国的电子密码锁保密性较好,并结合感应卡技术,生物识别技术,使电子密码锁系统得到了飞跃式的发展。
这几个国家的密码锁识别的密码更复杂,并且综合性比较好,已经进入了成熟期,出现了感应卡式密码锁,指纹式密码锁,虹膜密码锁,面部识别密码锁,序列混乱的键盘密码锁等各种技术的系统,它们在安全性,方便性,易管理性等方面都各有特长,新型的电子密码锁系统的应用也越来越广。
1.2.1数字密码锁的应用
密码锁具有安全性高、成本低、功耗低、易操作等优点。
在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步[6]。
随着大规模集成电路技术的发展,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛[7].随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。
但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。
而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。
加上其成本较高,一定程度上限制了这类产品的普及和推广。
鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流[8]。
1.2.2数字密码锁的困难
1.VerilogHDL语言的程序设计和控制函数的调用
编写VerilogHDL语言时,输入4位密码未能和程序预设密码进行比较,无论密码输入正确与否,锁均不打开,而且报警计数器也不进行+1操作。
在程序编译时,函数调未能调用成功。
2.报警程序模块的设计
计数器+1操作进行时,系统中断,从而导致系统重置,计数器又从0开始进行+1操作,导致系统不报警。
3.用Modelsim仿真软件波形时,为准确输出正确波形
在程序编写时,未考虑初始密码,导致波形错误。
1.3本文研究意义
电子杂志、报刊经常刊登有密码开关、密码锁这样的电路,大多数是使用常用的数字电路,如CD4017,然后通过不同的连接方式实现密码控制功能。
这种电路的特点就是密码修改只能通过改变电路的连接来实现,密码很容易被破解,电路复杂,故障率高。
本制作是针对这些电路而设计的,将以往的以单片机实现设计改为可编程器件FPGA利用VerilogHDL编程实现电子密码锁的设计。
这种设计移动方便。
基于FPGA的电子密码锁具有保密强、灵活性高、适用范围广等特点,它在键盘上输入,与打电话差不多,因而易于掌握,其突出优点是“密码”是记在被授权人脑子里的数字和字符,既准确又可靠,不会丢失(除了忘记),难以被窃(除非自己泄露)。
但是密码不能太简单,太简单了就容易被他人在键盘上试探出来,或者可能被旁观者窥测出来,造成保密性不足。
当然,密码又不能太复杂,太复杂了可能自己都糊涂了,或者输入密码操作成功率低,造成使用不便。
因此,为了发扬优点、克服弱点,本设计采用“任意设定数字密码”技术使得被授权人可以根据自己的需要或喜好设定密码,常用常新,在输入密码的过程中,当连续三次出现密码错误时,则系统会长时间报警不止,这时必须按复位方可停止。
本设计的FPGA电子密码锁的特点是:
体积小、功耗低、价格便宜、安全可靠,维护和升级都十分方便,具有较好的应用前景。
它与传统锁具的不同之处在于:
它与可编程逻辑器件实现系统的设计,应用简洁清晰的VerilogHDL语言实现设计编程思想,能够实现适时、智能控制管理功能,特别是在系统的扩展上有很好的优势[9]。
1.4设计思路
基于FPGA实现的数字密码锁设计中,主要包括4大部分:
FPGA器件、密码存储、译码电路、报警电路。
其中FPGA为主控部分,将消除同步模块、计数器模块、控制器模块都用VerilogHDL语言写入FPGA中代替了传统复杂的电路设计,也省去了很多繁琐的调试步骤。
只有这些模块在Modelsim平台通过了仿真,就可以实现传统电路模块的功能。
本次设计的数字密码锁主要是利用软件的编程来对主控模块的实现。
当通过按键输入密码后,就把输入的信号送给FPGA,FPGA经过里面个模块的处理后传给了各输出电路模块。
密码存储器主要是用来存储密码和防止电源掉电而导致密码锁的数据丢失和提高密码锁的安全性。
对于本次密码锁的初步设计,首先要有一个大体的思路。
本次设计采用FPGA为核心器件,通过Modelsim对其进行程序仿真,组成的完整系统。
程序通过采集输入信息,与FPGA的存储值进行比较,如果密码正确,则开锁电路打开;
如果密码错误,锁不打开,并且计数器进行+1操作;
累计3次输入密码错误,给警报一个高电平,让其报警。
第2章设计方案
2.1功能定义
数字密码锁具体功能如下:
(1)用户初次使用,可按下am_en键进行密码设置。
(2)开锁时一次完整的输入密码,当输入的密码与设置的密码相同时密码锁打开,即lockopen为高电平,连接的绿灯亮;
否则密码锁关闭,即warn_en为高电平,连接的红灯亮。
(3)当输入错误的次数>
3时,密码锁强制自动关闭。
表2-1数字密码锁的FPGA引脚定义
Input
rst
复位信号
高电平有效
am_en
密码设置键
cipher_in[3:
0]
密码输入
Enter
确定键
Output
Return
清除键
warn_en
密码错误或输入次>
3
2.2模块设计
2.2.1密码设置或修改模块
用户初次使用密码锁时可通过按am_en键进行密码设置,先输入初始密码0000,则进入密码设置,高电平有效。
密码是二进制的四位数字密码。
以后修改密码时,按am_en键,然后输入旧密码,正确时方可进入密码设置选项,否则重新开始。
1.密码输入模块
开锁时,一次完整输入密码后,按下enter键进行密码验证,高电平有效,看输入的数字是否等于原密码的值,密码正确时开锁,否则关闭。
当输入有误时,按下return键,清除输入的数字,重新输入
2.密码输入次数计数模块
开始时count=0,当输入密码按下enter键时且密码错误时count+1,当conut>
当输入的密码正确时,count不计数。
3.显示模块
当密码输入正确时,lockopen为高电平,绿色发光二极管灯亮,当密码输入错误时或者当count>
3时,warn_en为高电平,红色发光二极管灯亮。
第3章系统软件设计
3.1设计概括
本系统主要集中在以FPGA以核心外围扩展设计,整个电路主要电子锁具的组成框图是以可编程逻辑器件(FPGA)为核心,配以相应硬件电路,完成密码的设置、存贮、识别和驱动电磁执行器并检测其驱动电流值、报警等功能。
FPGA接收键入的代码,并与存贮在闪存中的密码进行比较,如果密码正确,则驱动电磁执行器开锁;
如果密码不正确,则允许操作人员重新输入密码,最多可输入三次;
如果三次都不正确,则通过FPGA产生报警。
3.2设计流程
实现系统大量逻辑电路的集成,在设计中使用了现场可编程逻辑门阵列器件(FPGA)。
FPGA主要实现以下逻辑功能:
键盘处理、设置密码、解码开门以及报警等控制功能[10]。
3.2.1密码存储模块
在数字密码锁中,密码存储模块是它的密码规定电路,其功能有两个:
一个是将存储的密码输出到比较模块中与外部输入的数字进行比较操作,另一个是存储用户修改后的密码。
密码存储模块的地址选择信号由计数器模块电路来进行选择。
模为三的计数器模块电路控制信号RESET和时钟信号CNP是由控制器模块来提供的。
下面给出密码存储模块的流程图。
如图3-1所示
图3-1密码存储流程图
更改初始密码am_en,首先输入4位2进制的初始密码,程序判定和初始密码一致,执行更改密码的程序;
否则继续输入密码,直至输入正确。
输入4位2进制数后,寄存器存储新密码。
3.2.2编码模块
在保险柜密码器中,由于密码数字是由外接键盘输入的信号,因此这里需要把它转换成4位BCD码送入到比较器中,这时需要采用10线至4线编码器来完成这样的转换。
因为前级消抖同步模块的输出是高电平,因此A0—A9这10个数字的输入信号经过消抖同步后应该是高电平有效。
对于编码器的输出来说,B4是MSB,B1是LSB。
在密码器中,编码模块的顶层原理图如图3-16所示。
3.2.3比较模块
在数字密码锁中,比较模块的主要功能是对编成模块的输出4位数据和密码存储模块的输出4位数据进行比较,然后将比较的结果送入到控制器模块的DEF端口上。
比较器的具体工作原理是:
当比较结果相等时,DEP的输出为1;
当比较结果不相等时,DEP的输出为0。
比较密码正确后,即可开锁。
流程图如图3-2所示。
图3-2解锁流程图
首先输入4位2进制密码,输入密码正确,绿灯亮并开锁;
输入密码不正确,计数器N自加1,判定N是否大于3,如果大于3,红灯亮,系统报警;
否则继续输入密码,直至N大于3。
在这3次中,输入密码正确,计数器N重置,绿灯亮并开锁。
3.3主要程序
输入密码为1000、再输入0000
initialbegin
#10rst=1;
#10rst=0;
#10am_en=0;
//10时间单位后,am_en赋值0,在主程序里,有判定am的值来执行if循环
#10cipher_in=4'
b1000;
//置cipher为1000,此时输入错误
b0000;
//置cipher为0000,此时输入正确
重新置位,判断密码是否=初始密码
#10am_en=1;
//10时间单位后,am_en赋值1,在主程序里,有判定am的值来执行if循环
//输入0000,错误
//输入1000,错误
b0001;
//输入0001,错误
//输入1000,正确
寄存器定义//
parameters0=2'
b00,//定义参数的值,通过计时寄存器
s1=2'
b01,//s0-s3代表输入密码错误的次数
s2=2'
b10,
s3=2'
b11;
置位//
always@(cipher_inorposedgerst)
if(rst)begin//置位设置,if(rst)为1
state<
=0;
//将state重置为0
warn_en<
//将warn_en重置为0
count<
//将count重置为0
amend_cipher<
//将amend_cipher重置为0
i<
//将i重置为0
end
键入密码//
elseif(!
am_en)begin//if(rst)为0,不置位,判断初始密码am_en是否为0
case(state_out)
s0:
if(cipher_in==amend_cipher)begin
//判断键入密码是否等于初始密码,执行下列程序
=1;
//相同,count+1,密码正确
//输入密码正确,警报不累计
endelse
=s1;
//state=1,输入错误
s1:
if(cipher_in==amend_cipher)begin
//判断第二次键入密码是否等于初始密码,执行下列程序
=i;
//相同,count=i,密码正确
=s2;
//第二位输入密码错误
s2:
//判断第三次输入密码是否等于初始密码,执行下列程序
//相同,count=i,密码正确
=s3;
//第三位密码错误
s3:
begin
//警报此时为1
//密码输错3次
end//结束if循环嵌套
default:
state<
=s0;
//否则次数为0,即0次
endcase
end//结束键入密码循环
输入密码错误判定//
always@(cipher_inoram_enorrst)
if(rst)//if(rst)为1,重置
j<
//判定j<
=0,值返回到j,j=1
else//if(rst)为0
if(am_en)//如果初始密码为0
case(j)//j=1
2'
b00:
begin//第一位键入的密码
if(cipher_in==amend_cipher)
//判断输入密码和初始密码是否相等
j<
=j+1;
///相等,则j+1
else
=j;
//否则j值不变
end
b01:
begin//j=01时,执行下列程序
=cipher_in;
//把输入密码赋值给初始密码
j=j+1;
//j自加1
第4章软件仿真
4.1仿真过程
本设计在Modelsim下仿真,通过VerilogHDL语言控制。
打开Modelsim界面,如图4-1所示。
图4-1ModelSim页面
在Modelsim下新建工程:
Lock。
出现下图进行编写工程文件名。
如图4-2
图4-2新建工程
在文件名建立完成后就可以进行程序编写了,双击LockI和LockII,进行主程序及激励程序的编写。
如图4-3所示。
图4-3程序编写
编写后保存并编译,编译成功后,status为对勾状态。
若程序有错误,则不能编译。
如图4-4所示。
图4-4程序编译
程序编译成功后进行仿真如下图4-4:
图4-4成功编译
4.2仿真结果
数字密码锁仿真,如图4-5。
图4-5数字密码锁仿真设计
4.3仿真分析
如图4-6,黄线后边仿真的验证,当更改密码时,需先使am_en为高电平时,方可更改密码,输入旧密码,然后输入新密码,再次验证新密码,验证正确
图4-6仿真分析
4.3.1仿真过程
输入密码时,当第一次输入错误,第二次输入密码正确时,计数器count计数为2,验证正确。
当更改密码时,需先使am_en为高电平时,方可更改密码,输入旧密码,然后输入新密码,再次验证新密码,验证正确。
如图4-7所示。
图4-7仿真过程分析
结论
本设计主要是用硬件描述语言VerilogHDL为主要的编译语言,以ModelSim开发系统为设计工具,设计了一种具有密码输入密码输入正确开锁和输入错误达到三次后报警等功能的数字电子密码锁。
同时介绍了阐述数字密码锁的工作原理、个工作模块的组成及功能介绍和数字密码锁的软件实现方法,在ModelSim环境下进行的模拟仿真,反馈结果都能够看出验证程序设计的可行性和可靠性,对该数字密码锁进行的时序仿真所得出的结果都表明:
该电路能够实现本设计所要求的功能。
设计的数字密码锁控制器设置的是4位密码,在系统复位后,用户需按键4次,输入完整的一个密码串,在输入完后,系统将会进行比较,如果发现密码正确,