基于fpga的数字密码锁_第1页
基于fpga的数字密码锁_第2页
基于fpga的数字密码锁_第3页
基于fpga的数字密码锁_第4页
基于fpga的数字密码锁_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于FPGA的数字密码锁设计摘要言控制4位二进制数,组成数字排列,形成一个简单的数字密码锁,假设预设密码为4位数:0000,当输入正确时输出为1、输入错误时输出为0。同时输出输入的次数,当3次以上输入错误时,输出一个报警信号,即使第四、五次输入正确也输出报警信号.本设计利用Modelsim软件编写VerilogHDL硬件描述语言程序以实现输入密码、AbstractThisdesignistheelectroniccodelockfieldprogrammablegatearrayFPGAdevicesbaseddesign。ByVeriloglanguagecontrol4-bitbinarynumber,composedoffiguresarrangedtoformasimpledigitallock,assumingthatthedefaultpasswordis4digits:0000,correctoutputwhentheinputis1,theoutputoftheinputerrortozero.Atthesametimethenumberofinputandoutput,andwhenmorethanthreetimestheinputerror,analarmsignalisoutput,evenifthefourthandfifthalsoenterthecorrectoutputalarmsignal。ThisdesignusesModelsimsoftwarewriteVerilogHDLhardwaredescriptionlanguageprogramtoimplementapasswordlock,alarmfunction。Thesimulationdebugging,using目录Abstract第1章所选项目的研究意义01。1概述01。2数字密码锁的研究现状11.2.1数字密码锁的应用21.2.2数字密码锁的困难21。3本文研究意义21.4设计思路3第2章设计方案42.1功能定义42。2模块设计4第3章系统软件设计63。1设计概括63。2设计流程63.2.1密码存储模块63.2.2编码模块73.3主要程序模块8第4章软件仿真134.1仿真过程134。2仿真结果154.3仿真分析154。3。1仿真过程16参考文献18附录1程序代码19项目创新及特色250第1章所选项目的研究意义数字密码锁是一个小型的数字系统,与普通机械锁相比,具有许多独特的优点:保密性好,防盗性强,可以不用钥匙,记住密码即可开锁等.在人们平时生活中,贵重物品或个人信息资料大多数都已加锁的方式进行保管。如果使用传统的机械锁进行对物品及资料的保管,那么人们要携带很多把钥匙在身上,携带非常不便,而且钥匙丢失将对物品保管的安全性大打折扣,也为人们的生活及心情带来不便。随着生活质量的不断提高,加强家庭防盗安全变得非常重要,但传统机械锁的构造过于简单,很容易被打开,从而降低了安全性。数字密码锁因为它的保密性很高,安全系数也非常高,再加上其不需要携带避免了丢失的可能,省去了因钥匙丢失而需要换锁的麻烦,受到了越来越多的人的欢迎。随着人们对高科技产品也越来越推崇,在当今社会科技的高度集中和创新,人们对日常生活中保护自身及财产安全的物品非常追捧,对其安全性的要求也非常的高.为了达到人们对锁具安全性的高要求,加强锁具的安全保密性,用密码锁来取代传统机械锁的锁具是必然趋势。数字密码锁比传统机械锁具更加的安全锁具发展到现在已有若干年的历史了,锁是用于保管物品的器件,用来关住某种器物的一种器具。其必须用钥匙才能打开.所以在人们的日常生活中离不开锁,这使得我们队锁具的结构和原理也多少有些了解,因此,就有了不借用钥匙就打开锁的方法。锁具都存在致命的弱点,比如锁芯采用常见的铜、锌、铝等材料容易遭到暴力破坏,还有就是锁具制作工艺的技术落后,从而导致防盗功能缺失,目前,国内市场的锁具,实际上都不具备真正的防盗功能,在惯偷面前用几件简单工具就可以轻松打开这些锁,其实不是他们多么的高明,而是一般锁具的原理过于简单,面对这一社会现状,新时代提出了锁具必须改革的迫切需求[21.安全防盗已成为人们所关注的焦点.然而传统机械弹子锁安全性低,密码量少且需时刻携带钥匙使其无法满足一些特定场合的应用要求,特别是在人员经常变动的公共场所,目前使用的电子密码锁主要有两个方案:一是基于单片机用分立元件实现的,二是通过现代人体生物特征识别技术实现的,前者电路较复杂且灵活性差,无法满足应用要求;后者有其先进性但需考虑成本和安全性等诸多因素。基于此,本文设计了一种新型电子密码锁,采用FPGA芯片,目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流31.这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA1里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价.厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)因此,随着电子技术的飞速发展数字密码锁的产生是必然,其在使用的方便性、防盗报警功能、智能管理等方面都是传统机械锁无法比拟的,在对安全性有较高要求的设施及场所中得到了广泛应用。1.2数字密码锁的研究现状现如今,随着高新技术的涌入,对传统锁具进行了很大的的改进,锁具的防盗性能得到了充分的加强,由传统锁具改进的智能密码锁已成为现如今安防系统中最强大的组成部分,它的作用是每一个传统机械锁具无法取代的.由于其在市场中巨大的潜力,国内外许多的公司都投入很大的人力、物力来从事智能数字密码锁的研究开发生产.目前,市场上比较先进的智能电子密码锁分别有:IC卡电子密码锁、射频卡式电子密码锁、红外遥控电子密码锁、指纹识别电子密码锁和瞳孔识别电子密码锁等。IC卡电子密码锁成本低,体积小,卡片本身无须电源等优点占领了一定的市场份额,但是由于有机械接触,会产生接触磨损,而且使用不太方便,在一定程度上限制了它的应用;射频卡式电子密码锁是非接触式电子密码锁,成本也不太高,体积跟IC卡密码锁相当卡片使用感应电源,重量很轻,技术成熟,受到了广泛的欢迎,但是与IC卡电子密码锁相比,成本偏高;指纹识别电子密码锁和瞳孔识别电子密码锁可靠性很高,安全性是目前应用系统中最高的,但是成本高昂,还没进入大众化使用阶段5。在国外,美国、日本、德国的电子密码锁保密性较好,并结合感应卡技术,生物识别技术,使电子密码锁系统得到了飞跃式的发展。这几个国家的密码锁识别的密码更复杂,并且综合性比较好,已经进入了成熟期,出现了感应卡式密码锁,指纹式密码锁,虹膜密码锁,面部识别密码锁,序列混乱的键盘密码锁等各种技术的系统,它们在安全性,方便性,易管理性等方面都各有特长,新型的电子密码锁系统的应用也越来越广。21.2。1数字密码锁的应用密码锁具有安全性高、成本低、功耗低、易操作等优点。在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步[61.随着大规模集成电路技术的发展,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛[7随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等.而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。加上其成本较高,一定程度上限制了这类产品的普及和推广。鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流[8]。1.VerilogHDL语言的程序设计和控制函数的调用编写VerilogHDL语言时,输入4位密码未能和程序预设密码进行比较,无论密码输入正确与否,锁均不打开,而且报警计数器也不进行+1操作。在程序编译时,函数调未能调用成功。2.报警程序模块的设计计数器+1操作进行时,系统中断,从而导致系统重置,计数器又从0开始进行+1操作,导致系统不报警。3。用Modelsim仿真软件波形时,为准确输出正确波形在程序编写时,未考虑初始密码,导致波形错误1.3本文研究意义电子杂志、报刊经常刊登有密码开关、密码锁这样的电路,大多数是使用常用的数字电路,如CD4017,然后通过不同的连接方式实现密码控制功能.这种电路的特点就是密码修改只能通过改变电路的连接来实现,密码很容易被破解,电路复杂,故障率高。本制作是针对这些电路而设计的,将以往的以单片机实现设计改为可编程器件FPGA利用VerilogHDL编程实现电子密码锁的设计。这种设计移动方便。基于FPGA的电子密码锁具有保密强、灵活性高、适用范围广等特点,它在键盘上输入,与打电话差不多,3因而易于掌握,其突出优点是“密码”是记在被授权人脑子里的数字和字符,既准确又可靠,不会丢失(除了忘记),难以被窃(除非自己泄露)。但是密码不能太简单,太简单了就容易被他人在键盘上试探出来,或者可能被旁观者窥测出来,造成保密性不足。当然,密码又不能太复杂,太复杂了可能自己都糊涂了,或者输入密码操作成功率低,造成使用不便。因此,为了发扬优点、克服弱点,本设计采用“任意设定数字密码”技术使得被授权人可以根据自己的需要或喜好设定密码,常用常新,在输入密码的过程中,当连续三次出现密码错误时,则系统会长时间报警不止,这时必须按复位方可停止.本设计的FPGA电子密码锁的特点是:体积小、功耗低、价格便宜、安全可靠,维护和升级都十分方便,具有较好的应用前景。它与传统锁具的不同之处在于:它与可编程逻辑器件实现系统的设计,应用简洁清晰的VerilogHDL语言实现设计编程思想,能够实现适时、智能控制管理功能,特别是在系统的扩展上有很好的优势[9]。基于FPGA实现的数字密码锁设计中,主要包括4大部分:FPGA器件、密码存储、译码电路、报警电路.其中FPGA为主控部分,将消除同步模块、计数器模块、控制器模块都用VerilogHDL语言写入FPGA中代替了传统复杂的电路设计,也省去了很多繁琐的调试步骤。只有这些模块在Modelsim平台通过了仿真,就可以实现传统电路模块的功能.本次设计的数字密码锁主要是利用软件的编程来对主控模块的实现。当通过按键输入密码后,就把输入的信号送给FPGA,FPGA经过里面个模块的处理后传给了各输出电路模块.密码存储器主要是用来存储密码和防止电源掉电而导致密码锁的数据丢失和提高密码锁的安全性.对于本次密码锁的初步设计,首先要有一个大体的思路。本次设计采用FPGA为核心器件,通过Modelsim对其进行程序仿真,组成的完整系统.程序通过采集输入信息,并且计数器进行+1操作;累计3次输入密码错误,给警报一个高电平,让其报警。4第2章设计方案2。1功能定义数字密码锁具体功能如下:(1)用户初次使用,可按下amen键进行密码设置。(2)开锁时一次完整的输入密码,当输入的密码与设置的密码相同时密码锁打开,即lockopen为高电平,连接的绿灯亮;否则密码锁关闭,即warn_en为高电平,连接的红(3)当输入错误的次数〉3时,密码锁强制自动关闭。复位信号高电平有效密码设置键高电平有效密码输入确定键高电平有效清除键高电平有效密码错误或输入次〉3高电平有效2.2模块设计2.2。1密码设置或修改模块用户初次使用密码锁时可通过按am_en键进行密码设置,先输入初始密码0000,则进入密码设置,高电平有效。密码是二进制的四位数字密码.以后修改密码时,按am_en键,然后输入旧密码,正确时方可进入密码设置选项,5否则重新开始。1。密码输入模块字是否等于原密码的值,密码正确时开锁,否则关闭.当输入有误时,按下return键,清除输入的数字,重新输入2。密码输入次数计数模块开始时count=0,当输入密码按下enter键时且密码错误时count+1,当conut>3时,密码锁强制自动关闭。当输入的密码正确时,count不计数.3。显示模块当密码输入正确时,lockopen为高电平,绿色发光二极管灯亮,当密码输入错误时或者当count)3时,warnen为高电平,红色发光二极管灯亮。6第3章系统软件设计3。1设计概括本系统主要集中在以FPGA以核心外围扩展设计,整个电路主要电子锁具的组成框图是以可编程逻辑器件(FPGA)为核心,配以相应硬件电路,完成密码的设置、存贮、识别和驱动电磁执行器并检测其驱动电流值、报警等功能.FPGA接收键入的代码,并与存贮在闪存中的密码进行比较,如果密码正确,则驱动电磁执行器开锁;如果密码不正确,则允许操作人员重新输入密码,最多可输入三次;如果三次都不正确,则通过FPGA产生报警。3.2设计流程实现系统大量逻辑电路的集成,在设计中使用了现场可编程逻辑门阵列器件(FPGA)。FPGA主要实现以下逻辑功能:键盘处理、设置密码、解码开门以及报警在数字密码锁中,密码存储模块是它的密码规定电路,其功能有两个:一个是将存储的密码输出到比较模块中与外部输入的数字进行比较操作,另一个是存储用户修改后的密码.密码存储模块的地址选择信号由计数器模块电路来进行选择。模为三的计数器模块电路控制信号RESET和时钟信号CNP是由控制器模块来提供的。下面给出密码存储模块的流程图.如图3—1所示7输入密码N密码正确输入新密码存储密码图3-1密码存储流程图更改初始密码am_en,首先输入4位2进制的初始密码,程序判定和初始密码一致,执行更改密码的程序;否则继续输入密码,直至输入正确。输入4位2进制数后,寄存器存储新密码。3.2.2编码模块在保险柜密码器中,由于密码数字是由外接键盘输入的信号,因此这里需要把它转换成4位BCD码送入到比较器中,这时需要采用10线至4线编码器来完成这样的转换。因为前级消抖同步模块的输出是高电平,因此A0—A9这10个数字的输入信号经过消抖编码模块的顶层原理图如图3-16所示.在数字密码锁中,比较模块的主要功能是对编成模块的输出4位数据和密码存储模块的输出4位数据进行比较,然后将比较的结果送入到控制器模块的DEF端口上.比较器的具体工作原理是:当比较结果相等时,DEP的输出为1;当比较结果不相等时,DEP的输出为0。基于FPGA的数字密码锁(CPLD/FPGA课程设计)8比较密码正确后,即可开锁.流程图如图3-2所示。输入密码N密码正确N+1NN>3Y开锁绿红灯亮图3-2解锁流程图首先输入4位2进制密码,输入密码正确,绿灯亮并开锁;输入密码不正确,计数器N自加1,判定N是否大于3,如果大于3,红灯亮,系统报警;否则继续输入密码,直至N大于3。在这3次中,输入密码正确,计数器N重置,绿灯亮并开锁.3.3主要程序输入密码为1000、再输入0000#10rst=1;#10rst=0:赋值0,在主程序里,有判定am的值来执行if循环#10cipher_in=4’b1000;//置cipher为1000,此时输入错9误#10rst=1;#10rst=0;#10am_en=1;赋值1,在主程序里,有判定am的值来执行if循环#10cipher_in=4’b0000;//输入0000,错误#10cipher_in=4’b1000;#10am_en=0;赋值0,在主程序里,有判定am的值来执行if循环#10cipher_in=4’b0000;//输入0000,错误#10cipher_in=4'b0001;//输入0001,错误#10cipher_in=4'b1000;//输入1000,正确parameters0=2'b00,//定义参数的值,通过计时寄存器s1=2'b01,/sO—s3代表输入密码错误的次数s2=2’b10,always@(cipher_inorposedgerst)warn_en<=0;count<=0;//将count重置为0i<=0;//将i重置为0case(state_out)if(cipher_in==amend_cipher)begin//判断键入密码是否等于初始密码,执行下列程序count<=1;//相同,count+1,密码正确warn_en<=0;//输入密码正确,警报不累计state〈=s1;//state=1,输入错误s1:if(cipher_in==amend_cipher)begin//判断第二次键入密码是否等于初始密码,执行下列程序warn_en<=0;//输入密码正确,警报不累计基于FPGA的数字密码锁(CPLD/FPGA课程设计)state<=s2;//第二位输入密码错误s2:if(cipher_in==amend_cipher)begin//判断第三次输入密码是否等于初始密码,执行下列程序warn_en<=0;//输入密码正确,警报不累计state<=s3;1/第三位密码错误warn_en<=1;//警报此时为1//密码输错3次//否则次数为0,即0次//结束键入密码循环输入密码错误判定//always@(cipher_inoram_enorrst)j<=0;//判定j<=0,值返回到j,j=1基于FPGA的数字密码锁(CPLD/FPGA课程设计)if(amen)case(j)2'b00:begin//如果初始密码为0//判断输入密码和初始密码是否相等else2'b01:begin//j=01时,执行下列程序amend_cipher<=cipher_in;//把输入密码赋值给初始密码default:j<=0;//否则次数为0,即0次基于FPGA的数字密码锁(CPLD/FPGA课程设计)第4章软件仿真4.1仿真过程本设计在Modelsim下仿真,通过VerilogHDL语言控制。打开Modelsim界面,如图4-1所示。前分书数考分书数考AT?nms44出现下图进行编写工程文件名.如图4—2基于FPGA的数字密码锁(CPLD/FPGA课程设计)jatchfloatfixibC:/modeltech_10.1a/examplesAockf,vC:/modeltech_10,la/examples/lockII.v图4—2新建工程在文件名建立完成后就可以进行程序编写了,双击LockI和LockⅡ,进行主程序及激励程序的编写。如图4-3所示.回C:/modeltech_10.la/examples/lodkL,v-Defauit123456789modulelatch(cipher_in,count,warn_en,rst,am_en);output[1:0]count;regwarn_en;reg[1:0]state,state_out;reg[1:0]count;//222222?2????reg[3:0]amend_cipher;图4-3程序编写如图4-4所示。露露tech_10,la/examples/YStatusTypeOrdeModifiedVeriog006/15/1605:14:27Verilog106/15/1605:14:46图4—4程序编译程序编译成功后进行仿真如下图4-4:基于FPGA的数字密码锁(CPLD/FPGA课程设计)ModelSim>]图4-4成功编译4。2仿真结果数字密码锁仿真,如图4—5。Waye-Defattlatch/stAlatch/warnenAJath/countQ04.3仿真分析54图4-5数字密码锁仿真设计如图4—6,黄线后边仿真的验证,当更改密码时,需先使am_en为高电平时,方可更改密码,输入旧密码,然后输入新密码,再次验证新密码,验证正确基于FPGA的数字密码锁(CPLD/FPGA课程设计)QHowrQHow图4—6仿真分析输入密码时,当第一次输入错误,第二次输入密码正确时,计数器count计数为2,验证正确。当更改密码时,需先使amen为高电平时,方可更改密码,输入旧密码,然后输入新密码,再次验证新密码,验证正确。如图4—7所示。004/t.Ltc/am.enAlatchstAtlatchwanen图4—7仿真过程分析结论本设计主要是用硬件描述语言VerilogHDL为主要的编译语言,以ModelSim开发系统为设计工具,设计了一种具有密码输入密码输入正确开锁和输入错误达到三次后报警等功能的数字电子密码锁。同时介绍了阐述数字密码锁的工作原理、个工作模块的组成及功能介绍和数字密码锁的软件实现方法,在ModelSim环境下进行的模拟仿真,反馈结果都能够看出验证程序设计的可行性和可靠性,对该数字密码锁进行的时序仿真所得出的结果都表明:该电路能够实现本设计所要求的功能。设计的数字密码锁控制器设置的是4位密码,在系统复位后,用户需按键4次,输入完整的一个密码串,在输入完后,系统将会进行比较,如果发现密码正确,则开锁,如果连续输入密码错误达到三次系统就会报警。这样的设计可以很好的满足人们的日常需求,可以对保管的器物可以安心。同时,本设计中的数字密码锁还具备密码修改功能,操作简单,使得密码锁的使用更加安全、便捷。参考文献[2]任葛荣.可编程智能电子锁控制器的设计与实现[D].广东:华南理工大学,2011.[3]赵鑫.VHDL与数字电路设计[M].北京:机械工业出版社,2005:275-276.[4]王金明.数字系统设计与Verilog.HDL[M].北京:电子工业出版社,2009.1.[5]贾熹滨.数字逻辑基础与Verilog硬件描述语言[M].北京:清华大学出版社,2012.[6]于斌,谢文龙.ModelSim电子系统分析及仿真[M].北京:电子工业出版社,2014.2.[7]于斌,米秀杰.ModelSim电子系统分析及仿真[M].北京:电子工业出版社,2014.12.[8]于斌.ModelSim电子系统分析及仿真[M].北京:电子工业出版社,2014.2[9]成超原.4位数字密码锁设计(密码设置及验证电路)[D].武汉:华中科技大学文华学院[10]刘潇婷.基于FPGA的红外遥控电子密码锁的实现[D].大连:大连海事大学,2010.附录1程序代码modulelatch(cipher_in,count,warn_en,rst,am_en);input[3:0]cipher_in;//定义输入变量:4位密码outputwarn_en;//定义输出变量,警告regwarnen;1/定义警告为reg型变量reg[1:0]state,state_out;//reg型2位变量reg[1:0]count://reg型2位变量reg[3:0]amend_cipher;//reg型4位变量parametersO=2'b00//定义参数的值,通过计时寄存器代表输入密码错误的次数integeri;//定义有符号位变量always@(cipher_inorposedgerst)if(rst)begin//rst为1,进行复位state<=0;//将state重置为0count<=0;//将count重置为0amend_cipher(=0;//将amend_cipher重置为0i<=0;//将i重置为0elseif(!am_en)begincase(state_out)//if(rst)为0,再判断初始密码am_enif(cipher_in==amend_cipher)begin//判断键入密码是否等于初始密码,执行下列程序warn_en(=0;1/输入密码正确,警报不累计state<=sl;//state=1,输入错误sl:if(cipher_in==amend_cipher)begin//判断第二次键入密码是否等于初始密码,执行下列程序warnen<=0;//输入密码正确,警报不累计state<=s2;//第二位输入密码错误s2:if(cipher_in==amend_cipher)begin//判断第三次输入密码是否等于初始密码,执行下列程序warn_en<=0;1/输入密码正确,警报不累计s3:beginwarn_en<=1;//警报此时为1state〈=s3;//密码输错3次default:state<=s0;//否则次数为0,即0次endcaseend//结束if循环嵌套always@(stateorposedgerst)if(rst)begin//if(r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论