《基于FPGA的数字密码锁.doc》由会员分享,可在线阅读,更多相关《基于FPGA的数字密码锁.doc(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、. .CPLD/FPGA课程设计工程名称: 基于FPGA的数字密码锁设计 专业班级:学生学号:学生XX:指导教师:2021年6月4日. .word. .摘要本设计是基于现场可编程门阵列FPGA 器件的电子密码锁的设计。通过Verilog语言控制4位二进制数,组成数字排列,形成一个简单的数字密码锁,假设预设密码为4位数:0000,当输入正确时输出为1、输入错误时输出为0。同时输出输入的次数,当3次以上输入错误时,输出一个报警信号,即使第四、五次输入正确也输出报警信号。本设计利用Modelsim软件编写Verilog HDL硬件描述语言程序以实现输入密码、开锁、报警功能。 通过仿真调试,利用可编程
2、器件FPGA的电子密码锁的设计根本到达了预期目的。关键词:现场可编程门阵列;数字密码锁;Verilog HDL;. .word. .AbstractThis design is the electronic code lock field programmable gate array FPGA devices based design. By Verilog language control 4-bit binary number, posed of figures arranged to form a simple digital lock, assuming that the defau
3、lt 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 signa
4、l.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 bination lo
5、ck;Verilog HDL;. .word. .目 录摘 要IAbstractII第1章 所选工程的研究意义11.1 概述11.2 数字密码锁的研究现状21.2.1 数字密码锁的应用31.2.2 数字密码锁的困难31.3 本文研究意义31.4 设计思路4第2章 设计方案52.1 功能定义52.2 模块设计5第3章 系统软件设计73.1 设计概括73.2 设计流程73.2.1 密码存储模块73.2.2 编码模块83.2.3 比较模块83.3 主要程序模块9第4章 软件仿真144.1 仿真过程144.2 仿真结果154.3 仿真分析164.3.1 仿真过程17结 论18参考文献19附录1 程序代
6、码20工程创新及特色26. .word. .第1章 所选工程的研究意义1.1 概述数字密码锁是一个小型的数字系统,与普通机械锁相比, 具有许多独特的优点: XX性好, 防盗性强, 可以不用钥匙, 记住密码即可开锁等。在人们平时生活中,贵重物品或个人信息资料大多数都已加锁的方式进展保管。如果使用传统的机械锁进展对物品及资料的保管,那么人们要携带很多把钥匙在身上,携带非常不便,而且钥匙丧失将对物品保管的平安性大打折扣,也为人们的生活及心情带来不便。随着生活质量的不断提高,加强家庭防盗平安变得非常重要,但传统机械锁的构造过于简单,很容易被翻开,从而降低了平安性。数字密码锁因为它的XX性很高,平安系数
7、也非常高,再加上其不需要携带防止了丧失的可能,省去了因钥匙丧失而需要换锁的麻烦,受到了越来越多的人的欢送。随着人们对高科技产品也越来越推崇,在当今社会科技的高度集中和创新,人们对日常生活中保护自身及财产平安的物品非常追捧,对其平安性的要求也非常的高。为了到达人们对锁具平安性的高要求,加强锁具的平安XX性,用密码锁来取代传统机械锁的锁具是必然趋势。数字密码锁比传统机械锁具更加的平安1。锁具开展到现在已有假设干年的历史了,锁是用于保管物品的器件,用来关住某种器物的一种器具。其必须用钥匙才能翻开。所以在人们的日常生活中离不开锁,这使得我们队锁具的构造和原理也多少有些了解,因此,就有了不借用钥匙就翻开
8、锁的方法。锁具都存在致命的弱点,比方锁芯采用常见的铜、锌、铝等材料容易遭到暴力破坏,还有就是锁具制作工艺的技术落后,从而导致防盗功能缺失,目前,国内市场的锁具,实际上都不具备真正的防盗功能,在惯偷面前用几件简单工具就可以轻松翻开这些锁,其实不是他们多么的高明,而是一般锁具的原理过于简单,面对这一社会现状,新时代提出了锁具必须改革的迫切需求2。平安防盗已成为人们所关注的焦点。然而传统机械弹子锁平安性低,密码量少且需时刻携带钥匙使其无法满足一些特定场合的应用要求,特别是在人员经常变动的公共场所,目前使用的电子密码锁主要有两个方案:一是基于单片机用分立元件实现的,二是通过现代人体生物特征识别技术实现
9、的,前者电路较复杂且灵活性差,无法满足应用要求;后者有其先进性但需考虑本钱和平安性等诸多因素。基于此,本文设计了一种新型电子密码锁,采用FPGA芯片,目前以硬件描述语言Verilog 或VHDL所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进展测试,是现代 IC 设计验证的技术主流3。这些可编辑元件可以被用来实现一些根本的逻辑门电路比方AND、OR、XOR、NOT或者更复杂一些的组合功能比方解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器Flipflop或者其他更加完整的记忆块。FPGA一般来说比ASIC专用集成芯片的速度要慢,无法
10、完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比方可以快速成品,可以被修改来改正程序中的错误和更廉价的造价。厂商也可能会提供廉价的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD复杂可编程逻辑器件备4。因此,随着电子技术的飞速开展数字密码锁的产生是必然,其在使用的方便性、防盗报警功能、智能管理等方面都是传统机械锁无法比较的,在对平安性有较高要求的设施及场所中得到了广泛应用。1.2数字密码锁的研究现状现如今,随着高新技术的涌入,对传统锁具进展了很大的的改良,锁
11、具的防盗性能得到了充分的加强,由传统锁具改良的智能密码锁已成为现如今安防系统中最强大的组成局部,它的作用是每一个传统机械锁具无法取代的。由于其在市场中巨大的潜力,国内外许多的公司都投入很大的人力、物力来从事智能数字密码锁的研究开发生产。目前,市场上比较先进的智能电子密码锁分别有:IC卡电子密码锁、射频卡式电子密码锁、红外遥控电子密码锁、指纹识别电子密码锁和瞳孔识别电子密码锁等。IC卡电子密码锁本钱低,体积小,卡片本身无须电源等优点占领了一定的市场份额,但是由于有机械接触,会产生接触磨损,而且使用不太方便,在一定程度上限制了它的应用;射频卡式电子密码锁是非接触式电子密码锁,本钱也不太高,体积跟I
12、C卡密码锁相当,卡片使用感应电源,重量很轻,技术成熟,受到了广泛的欢送,但是与IC卡电子密码锁相比,本钱偏高;指纹识别电子密码锁和瞳孔识别电子密码锁可靠性很高,平安性是目前应用系统中最高的,但是本钱高昂,还没进入群众化使用阶段5。在国外,美国、日本、德国的电子密码锁XX性较好,并结合感应卡技术,生物识别技术,使电子密码锁系统得到了飞跃式的开展。这几个国家的密码锁识别的密码更复杂,并且综合性比较好,已经进入了成熟期,出现了感应卡式密码锁,指纹式密码锁,虹膜密码锁,面部识别密码锁,序列混乱的键盘密码锁等各种技术的系统,它们在平安性,方便性,易管理性等方面都各有特长,新型的电子密码锁系统的应用也越来
13、越广。1.2.1 数字密码锁的应用密码锁具有平安性高、本钱低、功耗低、易操作等优点。在平安技术防X领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克制了机械式密码锁密码量少、平安性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步6。随着大规模集成电路技术的开展,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的平安性、可靠性,应用日益广泛7.随着人们对平安的重视和科技的开展,许多电子智能锁指纹识别、IC 卡识别已在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡,只能适用于XX要求的箱、柜、
14、门等。而且指纹识识别器假设在公共场所使用存在容易机械损坏,IC卡还存在容易丧失、损坏等特点。加上其本钱较高,一定程度上限制了这类产品的普及和推广。鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流8。1.2.2 数字密码锁的困难1.Verilog HDL语言的程序设计和控制函数的调用编写Verilog HDL语言时,输入4位密码未能和程序预设密码进展比较,无论密码输入正确与否,锁均不翻开,而且报警计数器也不进展+1操作。在程序编译时,函数调未能调用成功。2.报警程序模块的设计计数器+1操作进展时,系统中断,从而导致系统重置,计数器又从0开场进展+1操作,导致系统不报警。3.
15、用Modelsim仿真软件波形时,为准确输出正确波形在程序编写时,未考虑初始密码,导致波形错误。1.3 本文研究意义电子杂志、报刊经常登载有密码开关、密码锁这样的电路,大多数是使用常用的数字电路,如CD4017,然后通过不同的连接方式实现密码控制功能。这种电路的特点就是密码修改只能通过改变电路的连接来实现,密码很容易被破解,电路复杂,故障率高。本制作是针对这些电路而设计的,将以往的以单片机实现设计改为可编程器件FPGA利用Verilog HDL编程实现电子密码锁的设计。这种设计移动方便。基于FPGA的电子密码锁具有XX强、灵活性高、适用X围广等特点,它在键盘上输入,与打差不多,因而易于掌握,其
16、突出优点是“密码是记在被授权人脑子里的数字和字符,既准确又可靠,不会丧失除了忘记,难以被窃除非自己泄露。但是密码不能太简单,太简单了就容易被他人在键盘上试探出来,或者可能被旁观者窥测出来,造成XX性缺乏。当然,密码又不能太复杂,太复杂了可能自己都糊涂了,或者输入密码操作成功率低,造成使用不便。因此,为了发扬优点、克制弱点,本设计采用“任意设定数字密码技术使得被授权人可以根据自己的需要或喜好设定密码,常用常新,在输入密码的过程中,当连续三次出现密码错误时,那么系统会长时间报警不止,这时必须按复位方可停顿。本设计的FPGA电子密码锁的特点是:体积小、功耗低、价格廉价、平安可靠,维护和升级都十分方便
17、,具有较好的应用前景。它与传统锁具的不同之处在于:它与可编程逻辑器件实现系统的设计,应用简洁清晰的Verilog HDL语言实现设计编程思想,能够实现适时、智能控制管理功能,特别是在系统的扩展上有很好的优势9。1.4 设计思路基于FPGA实现的数字密码锁设计中,主要包括4大局部:FPGA器件、密码存储、译码电路、报警电路。其中FPGA为主控局部,将消除同步模块、计数器模块、控制器模块都用Verilog HDL语言写入FPGA中代替了传统复杂的电路设计,也省去了很多繁琐的调试步骤。只有这些模块在Modelsim平台通过了仿真,就可以实现传统电路模块的功能。本次设计的数字密码锁主要是利用软件的编程
18、来对主控模块的实现。当通过按键输入密码后,就把输入的信号送给FPGA,FPGA经过里面个模块的处理后传给了各输出电路模块。密码存储器主要是用来存储密码和防止电源掉电而导致密码锁的数据丧失和提高密码锁的平安性。 对于本次密码锁的初步设计,首先要有一个大体的思路。本次设计采用FPGA为核心器件,通过Modelsim对其进展程序仿真,组成的完整系统。程序通过采集输入信息,与FPGA的存储值进展比较,如果密码正确,那么开锁电路翻开;如果密码错误,锁不翻开,并且计数器进展+1操作;累计3次输入密码错误,给警报一个高电平,让其报警。第2章 设计方案2.1 功能定义数字密码锁具体功能如下: 1用户初次使用,
19、可按下am_en键进展密码设置。2开锁时一次完整的输入密码,当输入的密码与设置的密码一样时密码锁翻开,即lockopen为高电平,连接的绿灯亮;否那么密码锁关闭,即warn_en为高电平,连接的红灯亮。 3当输入错误的次数3时,密码锁强制自动关闭。表 2-1 数字密码锁的FPGA引脚定义Inputrst复位信号高电平有效Inputam_en密码设置键高电平有效Inputcipher_in 3:0密码输入InputEnter确定键高电平有效OutputReturn去除键高电平有效Outputwarn_en密码错误或输入次3高电平有效2.2模块设计2.2.1密码设置或修改模块用户初次使用密码锁时可
20、通过按am_en键进展密码设置,先输入初始密码0000,那么进入密码设置,高电平有效。密码是二进制的四位数字密码。以后修改密码时,按am_en键,然后输入旧密码,正确时方可进入密码设置选项,否那么重新开场。1.密码输入模块开锁时,一次完整输入密码后,按下enter键进展密码验证,高电平有效,看输入的数字是否等于原密码的值,密码正确时开锁,否那么关闭。当输入有误时,按下return键,去除输入的数字,重新输入2.密码输入次数计数模块开场时count=0,当输入密码按下enter键时且密码错误时count+1,当conut3时,密码锁强制自动关闭。当输入的密码正确时,count不计数。3.显示模块
21、当密码输入正确时,lockopen为高电平,绿色发光二极管灯亮,当密码输入错误时或者当count3时,warn_en为高电平,红色发光二极管灯亮。. .word. .第3章 系统软件设计3.1 设计概括本系统主要集中在以FPGA以核心外围扩展设计,整个电路主要电子锁具的组成框图是以可编程逻辑器件FPGA为核心,配以相应硬件电路,完成密码的设置、存贮、识别和驱动电磁执行器并检测其驱动电流值、报警等功能。 FPGA接收键入的代码,并与存贮在闪存中的密码进展比较,如果密码正确,那么驱动电磁执行器开锁;如果密码不正确,那么允许操作人员重新输入密码,最多可输入三次;如果三次都不正确,那么通过FPGA产生
22、报警。3.2 设计流程实现系统大量逻辑电路的集成,在设计中使用了现场可编程逻辑门阵列器件FPGA。FPGA主要实现以下逻辑功能:键盘处理、设置密码、解码开门以及报警等控制功能10。3.2.1 密码存储模块在数字密码锁中,密码存储模块是它的密码规定电路,其功能有两个:一个是将存储的密码输出到比较模块中与外部输入的数字进展比较操作,另一个是存储用户修改后的密码。密码存储模块的地址选择信号由计数器模块电路来进展选择。模为三的计数器模块电路控制信号RESET和时钟信号P是由控制器模块来提供的。下面给出密码存储模块的流程图。如图3-1所示输入密码密码正确YN存储密码输入新密码am_en键 图3-1 密码
23、存储流程图 更改初始密码am_en,首先输入4位2进制的初始密码,程序判定和初始密码一致,执行更改密码的程序;否那么继续输入密码,直至输入正确。输入4位2进制数后,存放器存储新密码。3.2.2 编码模块在保险柜密码器中,由于密码数字是由外接键盘输入的信号,因此这里需要把它转换成4位BCD码送入到比较器中,这时需要采用10线至4线编码器来完成这样的转换。因为前级消抖同步模块的输出是高电平,因此A0A9这10个数字的输入信号经过消抖同步后应该是高电平有效。对于编码器的输出来说,B4是MSB,B1是LSB。在密码器中,编码模块的顶层原理图如图3-16所示。3.2.3 比较模块在数字密码锁中,比较模块
24、的主要功能是对编成模块的输出4位数据和密码存储模块的输出4位数据进展比较,然后将比较的结果送入到控制器模块的DEF端口上。比较器的具体工作原理是:当比较结果相等时,DEP的输出为1;当比较结果不相等时,DEP的输出为0。比较密码正确后,即可开锁。流程图如图3-2所示。输入密码密码正确N+1N3红灯亮 开锁YYNN绿灯亮图3-2 解锁流程图首先输入4位2进制密码,输入密码正确,绿灯亮并开锁;输入密码不正确,计数器N自加1,判定N是否大于3,如果大于3,红灯亮,系统报警;否那么继续输入密码,直至N大于3。在这3次中,输入密码正确,计数器N重置,绿灯亮并开锁。3.3 主要程序输入密码为1000、再输
25、入0000initial begin#10 rst=1;#10 rst=0;#10 am_en=0;/10时间单位后,am_en赋值0,在主程序里,有判定am的值来执行if循环#10 cipher_in=4b1000; /置cipher为1000,此时输入错误#10 cipher_in=4b0000; /置cipher为0000,此时输入正确重新置位,判断密码是否=初始密码#10 rst=1;#10 rst=0;#10 am_en=1;/10时间单位后,am_en赋值1,在主程序里,有判定am的值来执行if循环#10 cipher_in=4b0000; /输入0000,错误#10 cipher
26、_in=4b1000; /输入1000,错误#10 am_en=0;/10时间单位后,am_en赋值0,在主程序里,有判定am的值来执行if循环#10 cipher_in=4b0000; /输入0000,错误#10 cipher_in=4b0001; /输入0001,错误#10 cipher_in=4b1000; /输入1000,正确存放器定义/parameter s0=2b00,/定义参数的值,通过计时存放器 s1=2b01, /s0-s3代表输入密码错误的次数 s2=2b10, s3=2b11;置位/always(cipher_in or posedge rst)if(rst) begin
27、 /置位设置,if(rst)为1 state=0;/将state重置为0 warn_en=0; /将warn_en重置为0 count=0; /将count重置为0 amend_cipher=0; /将amend_cipher重置为0 i=0; /将i重置为0end键入密码/else if(!am_en) begin /if(rst)为0,不置位,判断初始密码am_en是否为0case(state_out) s0: if(cipher_in=amend_cipher) begin/判断键入密码是否等于初始密码,执行以下程序 count=1;/一样,count+1,密码正确 warn_en=0;
28、/输入密码正确,警报不累计 end else state=s1;/state=1,输入错误s1:if(cipher_in=amend_cipher) begin/判断第二次键入密码是否等于初始密码,执行以下程序 count=i; /一样,count=i,密码正确 warn_en=0;/输入密码正确,警报不累计 end else state=s2;/第二位输入密码错误 s2:if(cipher_in=amend_cipher) begin/判断第三次输入密码是否等于初始密码,执行以下程序 count=i;/一样,count=i,密码正确 warn_en=0;/输入密码正确,警报不累计 end e
29、lse state=s3;/第三位密码错误 s3:begin warn_en=1;/警报此时为1 state=s3; /密码输错3次 end /完毕if循环嵌套 default:state=s0; /否那么次数为0,即0次endcaseend /完毕键入密码循环输入密码错误判定/always(cipher_in or am_en or rst)if(rst) /if(rst)为1,重置j=0; /判定j=0,值返回到j,j=1else /if(rst)为0if(am_en) /如果初始密码为0 case(j) /j=1 2b00:begin /第一位键入的密码 if(cipher_in=ame
30、nd_cipher)/判断输入密码和初始密码是否相等 j=j+1; /相等,那么j+1else j=j;/否那么j值不变 end 2b01:begin /j=01时,执行以下程序 amend_cipher=cipher_in; /把输入密码赋值给初始密码 j=j+1; /j自加1end default: j=0; /否那么次数为0,即0次end第4章 软件仿真4.1 仿真过程本设计在Modelsim下仿真,通过Verilog HDL语言控制。翻开Modelsim界面,如图4-1所示。图4-1 ModelSim页面在Modelsim下新建工程:Lock。出现以下图进展编写工程文件名。如图4-2图
31、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 仿真过程输入密码时,当第
32、一次输入错误,第二次输入密码正确时,计数器count计数为2,验证正确。当更改密码时,需先使am_en为高电平时,方可更改密码,输入旧密码,然后输入新密码,再次验证新密码,验证正确。如图4-7所示。图4-7 仿真过程分析结论本设计主要是用硬件描述语言 Verilog HDL为主要的编译语言,以ModelSim开发系统为设计工具,设计了一种具有密码输入密码输入正确开锁和输入错误到达三次后报警等功能的数字电子密码锁。同时介绍了阐述数字密码锁的工作原理、个工作模块的组成及功能介绍和数字密码锁的软件实现方法,在ModelSim环境下进展的模拟仿真,反应结果都能够看出验证程序设计的可行性和可靠性,对该数
33、字密码锁进展的时序仿真所得出的结果都说明:该电路能够实现本设计所要求的功能。设计的数字密码锁控制器设置的是4位密码,在系统复位后,用户需按键4次,输入完整的一个密码串,在输入完后,系统将会进展比较,如果发现密码正确,那么开锁,如果连续输入密码错误到达三次系统就会报警。这样的设计可以很好的满足人们的日常需求,可以对保管的器物可以安心。同时,本设计中的数字密码锁还具备密码修改功能,操作简单,使得密码锁的使用更加平安、便捷。参考文献1X昌华EDA技术与应用:基于Quartus和VHDLM:航空航天大学,20212任葛荣可编程智能电子锁控制器的设计与实现D:华南理工大学,20213赵鑫VHDL与数字电
34、路设计M:机械工业,2005:275-2764王金明数字系统设计与VerilogHDLM:电子工业,202115贾熹滨数字逻辑根底与Verilog硬件描述语言M:清华大学,20216于斌,谢文龙ModelSim电子系统分析及仿真M:电子工业,202127于斌,米秀杰 ModelSim电子系统分析及仿真M:电子工业,2021128于斌ModelSim电子系统分析及仿真M:电子工业,202129成超原4位数字密码锁设计密码设置及验证电路D:华中科技大学文华学院,202110X潇婷基于FPGA的红外遥控电子密码锁的实现D:XX海事大学,2021附录1 程序代码module latch(cipher_
35、in,count,warn_en,rst,am_en);input rst,am_en; /定义输入变量:am_en、密码设置键input 3:0cipher_in; /定义输入变量:4位密码output warn_en; /定义输出变量,警告output1:0count; /定义计数reg warn_en; /定义警告为reg型变量reg1:0state,state_out; /reg型2位变量reg1:0count; /reg型2位变量reg3:0amend_cipher; /reg型4位变量parameter s0=2b00, /定义参数的值,通过计时存放器 s1=2b01, /s0-s
36、3代表输入密码错误的次数 s2=2b10, s3=2b11;integer i; /定义有符号位变量always(cipher_in or posedge rst) /置位模块if(rst) begin /rst为1,进展复位 state=0; /将state重置为0 warn_en=0; /将warn_en重置为0 count=0; /将count重置为0 amend_cipher=0; /将amend_cipher重置为0 i=0; /将i重置为0endelse if(!am_en) begin /if(rst)为0,再判断初始密码am_en case(state_out) s0: if(
37、cipher_in=amend_cipher) begin /判断键入密码是否等于初始密码,执行以下程序 count=1; /一样,count+1,密码正确 warn_en=0; /输入密码正确,警报不累计 end else state=s1; /state=1,输入错误 s1:if(cipher_in=amend_cipher) begin /判断第二次键入密码是否等于初始密码,执行以下程序 count=i; /一样,count=i,密码正确 warn_en=0; /输入密码正确,警报不累计 end else state=s2; /第二位输入密码错误 s2:if(cipher_in=amend_cipher) begin /判断第三次输入密码是否等于初始密码,执行以下程序 count=i; /一样,count=i,密码正确 warn_en=0; /输入密码正确,警报不累计 end else state=s3; /第三位密码错误 s3:begin warn_en=1;
限制150内