基于FPGA的数字密码锁.doc

上传人:小** 文档编号:16966127 上传时间:2020-11-05 格式:DOC 页数:30 大小:457.22KB
返回 下载 相关 举报
基于FPGA的数字密码锁.doc_第1页
第1页 / 共30页
基于FPGA的数字密码锁.doc_第2页
第2页 / 共30页
基于FPGA的数字密码锁.doc_第3页
第3页 / 共30页
点击查看更多>>
资源描述
CPLD/FPGA课程设计项目名称: 基于FPGA的数字密码锁设计 专业班级: 学生学号: 学生姓名: 指导老师: 2016年6月4日摘 要本设计是基于现场可编程门阵列FPGA 器件的电子密码锁的设计。通过Verilog语言控制4位二进制数,组成数字排列,形成一个简单的数字密码锁,假设预设密码为4位数:0000,当输入正确时输出为1、输入错误时输出为0。同时输出输入的次数,当3次以上输入错误时,输出一个报警信号,即使第四、五次输入正确也输出报警信号。本设计利用Modelsim软件编写Verilog HDL硬件描述语言程序以实现输入密码、开锁、报警功能。 通过仿真调试,利用可编程器件FPGA的电子密码锁的设计基本达到了预期目的。关键词: 现场可编程门阵列;数字密码锁;Verilog HDL;AbstractThis 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;目 录摘 要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 程序代码20项目创新及特色26基于FPGA的数字密码锁(CPLD/FPGA课程设计)第1章 所选项目的研究意义1.1 概述数字密码锁是一个小型的数字系统,与普通机械锁相比, 具有许多独特的优点: 保密性好, 防盗性强, 可以不用钥匙, 记住密码即可开锁等。在人们平时生活中,贵重物品或个人信息资料大多数都已加锁的方式进行保管。如果使用传统的机械锁进行对物品及资料的保管,那么人们要携带很多把钥匙在身上,携带非常不便,而且钥匙丢失将对物品保管的安全性大打折扣,也为人们的生活及心情带来不便。随着生活质量的不断提高,加强家庭防盗安全变得非常重要,但传统机械锁的构造过于简单,很容易被打开,从而降低了安全性。数字密码锁因为它的保密性很高,安全系数也非常高,再加上其不需要携带避免了丢失的可能,省去了因钥匙丢失而需要换锁的麻烦,受到了越来越多的人的欢迎。随着人们对高科技产品也越来越推崇,在当今社会科技的高度集中和创新,人们对日常生活中保护自身及财产安全的物品非常追捧,对其安全性的要求也非常的高。为了达到人们对锁具安全性的高要求,加强锁具的安全保密性,用密码锁来取代传统机械锁的锁具是必然趋势。数字密码锁比传统机械锁具更加的安全1。锁具发展到现在已有若干年的历史了,锁是用于保管物品的器件,用来关住某种器物的一种器具。其必须用钥匙才能打开。所以在人们的日常生活中离不开锁,这使得我们队锁具的结构和原理也多少有些了解,因此,就有了不借用钥匙就打开锁的方法。锁具都存在致命的弱点,比如锁芯采用常见的铜、锌、铝等材料容易遭到暴力破坏,还有就是锁具制作工艺的技术落后,从而导致防盗功能缺失,目前,国内市场的锁具,实际上都不具备真正的防盗功能,在惯偷面前用几件简单工具就可以轻松打开这些锁,其实不是他们多么的高明,而是一般锁具的原理过于简单,面对这一社会现状,新时代提出了锁具必须改革的迫切需求2。安全防盗已成为人们所关注的焦点。然而传统机械弹子锁安全性低,密码量少且需时刻携带钥匙使其无法满足一些特定场合的应用要求,特别是在人员经常变动的公共场所,目前使用的电子密码锁主要有两个方案:一是基于单片机用分立元件实现的,二是通过现代人体生物特征识别技术实现的,前者电路较复杂且灵活性差,无法满足应用要求;后者有其先进性但需考虑成本和安全性等诸多因素。基于此,本文设计了一种新型电子密码锁,采用FPGA芯片,目前以硬件描述语言(Verilog 或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流3。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。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.Verilog HDL语言的程序设计和控制函数的调用编写Verilog HDL语言时,输入4位密码未能和程序预设密码进行比较,无论密码输入正确与否,锁均不打开,而且报警计数器也不进行+1操作。在程序编译时,函数调未能调用成功。2.报警程序模块的设计计数器+1操作进行时,系统中断,从而导致系统重置,计数器又从0开始进行+1操作,导致系统不报警。3.用Modelsim仿真软件波形时,为准确输出正确波形在程序编写时,未考虑初始密码,导致波形错误。1.3 本文研究意义电子杂志、报刊经常刊登有密码开关、密码锁这样的电路,大多数是使用常用的数字电路,如CD4017,然后通过不同的连接方式实现密码控制功能。这种电路的特点就是密码修改只能通过改变电路的连接来实现,密码很容易被破解,电路复杂,故障率高。本制作是针对这些电路而设计的,将以往的以单片机实现设计改为可编程器件FPGA利用Verilog HDL编程实现电子密码锁的设计。这种设计移动方便。基于FPGA的电子密码锁具有保密强、灵活性高、适用范围广等特点,它在键盘上输入,与打电话差不多,因而易于掌握,其突出优点是“密码”是记在被授权人脑子里的数字和字符,既准确又可靠,不会丢失(除了忘记),难以被窃(除非自己泄露)。但是密码不能太简单,太简单了就容易被他人在键盘上试探出来,或者可能被旁观者窥测出来,造成保密性不足。当然,密码又不能太复杂,太复杂了可能自己都糊涂了,或者输入密码操作成功率低,造成使用不便。因此,为了发扬优点、克服弱点,本设计采用“任意设定数字密码”技术使得被授权人可以根据自己的需要或喜好设定密码,常用常新,在输入密码的过程中,当连续三次出现密码错误时,则系统会长时间报警不止,这时必须按复位方可停止。本设计的FPGA电子密码锁的特点是:体积小、功耗低、价格便宜、安全可靠,维护和升级都十分方便,具有较好的应用前景。它与传统锁具的不同之处在于:它与可编程逻辑器件实现系统的设计,应用简洁清晰的Verilog HDL语言实现设计编程思想,能够实现适时、智能控制管理功能,特别是在系统的扩展上有很好的优势9。1.4 设计思路基于FPGA实现的数字密码锁设计中,主要包括4大部分:FPGA器件、密码存储、译码电路、报警电路。其中FPGA为主控部分,将消除同步模块、计数器模块、控制器模块都用Verilog HDL语言写入FPGA中代替了传统复杂的电路设计,也省去了很多繁琐的调试步骤。只有这些模块在Modelsim平台通过了仿真,就可以实现传统电路模块的功能。本次设计的数字密码锁主要是利用软件的编程来对主控模块的实现。当通过按键输入密码后,就把输入的信号送给FPGA,FPGA经过里面个模块的处理后传给了各输出电路模块。密码存储器主要是用来存储密码和防止电源掉电而导致密码锁的数据丢失和提高密码锁的安全性。 对于本次密码锁的初步设计,首先要有一个大体的思路。本次设计采用FPGA为核心器件,通过Modelsim对其进行程序仿真,组成的完整系统。程序通过采集输入信息,与FPGA的存储值进行比较,如果密码正确,则开锁电路打开;如果密码错误,锁不打开,并且计数器进行+1操作;累计3次输入密码错误,给警报一个高电平,让其报警。第2章 设计方案2.1 功能定义数字密码锁具体功能如下: (1)用户初次使用,可按下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密码设置或修改模块用户初次使用密码锁时可通过按am_en键进行密码设置,先输入初始密码0000,则进入密码设置,高电平有效。密码是二进制的四位数字密码。以后修改密码时,按am_en键,然后输入旧密码,正确时方可进入密码设置选项,否则重新开始。1.密码输入模块开锁时,一次完整输入密码后,按下enter键进行密码验证,高电平有效,看输入的数字是否等于原密码的值,密码正确时开锁,否则关闭。当输入有误时,按下return键,清除输入的数字,重新输入2.密码输入次数计数模块开始时count=0,当输入密码按下enter键时且密码错误时count+1,当conut3时,密码锁强制自动关闭。当输入的密码正确时,count不计数。3.显示模块当密码输入正确时,lockopen为高电平,绿色发光二极管灯亮,当密码输入错误时或者当count3时,warn_en为高电平,红色发光二极管灯亮。25第3章 系统软件设计3.1 设计概括本系统主要集中在以FPGA以核心外围扩展设计,整个电路主要电子锁具的组成框图是以可编程逻辑器件(FPGA)为核心,配以相应硬件电路,完成密码的设置、存贮、识别和驱动电磁执行器并检测其驱动电流值、报警等功能。 FPGA接收键入的代码,并与存贮在闪存中的密码进行比较,如果密码正确,则驱动电磁执行器开锁;如果密码不正确,则允许操作人员重新输入密码,最多可输入三次;如果三次都不正确,则通过FPGA产生报警。3.2 设计流程实现系统大量逻辑电路的集成,在设计中使用了现场可编程逻辑门阵列器件(FPGA)。FPGA主要实现以下逻辑功能:键盘处理、设置密码、解码开门以及报警等控制功能10。3.2.1 密码存储模块在数字密码锁中,密码存储模块是它的密码规定电路,其功能有两个:一个是将存储的密码输出到比较模块中与外部输入的数字进行比较操作,另一个是存储用户修改后的密码。密码存储模块的地址选择信号由计数器模块电路来进行选择。模为三的计数器模块电路控制信号RESET和时钟信号CNP是由控制器模块来提供的。下面给出密码存储模块的流程图。如图3-1所示 输入密码密码正确YN存储密码输入新密码am_en键 图3-1 密码存储流程图 更改初始密码am_en,首先输入4位2进制的初始密码,程序判定和初始密码一致,执行更改密码的程序;否则继续输入密码,直至输入正确。输入4位2进制数后,寄存器存储新密码。3.2.2 编码模块在保险柜密码器中,由于密码数字是由外接键盘输入的信号,因此这里需要把它转换成4位BCD码送入到比较器中,这时需要采用10线至4线编码器来完成这样的转换。因为前级消抖同步模块的输出是高电平,因此A0A9这10个数字的输入信号经过消抖同步后应该是高电平有效。对于编码器的输出来说,B4是MSB,B1是LSB。在密码器中,编码模块的顶层原理图如图3-16所示。3.2.3 比较模块在数字密码锁中,比较模块的主要功能是对编成模块的输出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、再输入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_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 /置位设置,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; /输入密码正确,警报不累计 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; /警报此时为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=amend_cipher) /判断输入密码和初始密码是否相等 j=j+1; /相等,则j+1 else j=j; /否则j值不变 end 2b01:begin /j=01时,执行下列程序 amend_cipher=cipher_in; /把输入密码赋值给初始密码 j=j+1; /j自加1 end default: j=0; /否则次数为0,即0次 end第4章 软件仿真4.1 仿真过程本设计在Modelsim下仿真,通过Verilog HDL语言控制。打开Modelsim界面,如图4-1所示。图4-1 ModelSim页面在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 仿真过程分析结论本设计主要是用硬件描述语言 Verilog HDL为主要的编译语言,以ModelSim开发系统为设计工具,设计了一种具有密码输入密码输入正确开锁和输入错误达到三次后报警等功能的数字电子密码锁。同时介绍了阐述数字密码锁的工作原理、个工作模块的组成及功能介绍和数字密码锁的软件实现方法,在ModelSim环境下进行的模拟仿真,反馈结果都能够看出验证程序设计的可行性和可靠性,对该数字密码锁进行的时序仿真所得出的结果都表明:该电路能够实现本设计所要求的功能。设计的数字密码锁控制器设置的是4位密码,在系统复位后,用户需按键4次,输入完整的一个密码串,在输入完后,系统将会进行比较,如果发现密码正确,则开锁,如果连续输入密码错误达到三次系统就会报警。这样的设计可以很好的满足人们的日常需求,可以对保管的器物可以安心。同时,本设计中的数字密码锁还具备密码修改功能,操作简单,使得密码锁的使用更加安全、便捷。参考文献1刘昌华EDA技术与应用:基于Quartus和VHDLM北京:北京航空航天大学出版社,20122任葛荣可编程智能电子锁控制器的设计与实现D广东:华南理工大学,20113赵鑫VHDL与数字电路设计M北京:机械工业出版社,2005:275-2764王金明数字系统设计与VerilogHDLM北京:电子工业出版社,200915贾熹滨数字逻辑基础与Verilog硬件描述语言M北京:清华大学出版社,20126于斌,谢文龙ModelSim电子系统分析及仿真M北京:电子工业出版社,201427于斌,米秀杰 ModelSim电子系统分析及仿真M北京:电子工业出版社,2014128于斌ModelSim电子系统分析及仿真M北京:电子工业出版社,201429成超原4位数字密码锁设计(密码设置及验证电路)D武汉:华中科技大学文华学院,201210刘潇婷基于FPGA的红外遥控电子密码锁的实现D大连:大连海事大学,2010附录1 程序代码module latch(cipher_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-s3代表输入密码错误的次数 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重置为0end else if(!am_en) begin /if(rst)为0,再判断初始密码am_en case(state_out) s0: if(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; /警报此时为1 state=s3; /密码输错3次 end /结束if循环嵌套 default:state=s0; /否则次数为0,即0次 endcase end /结束if循环嵌套 end /结束if循环嵌套 always(state or posedge rst) if(rst) begin /if(rst)为1,重置 i=1; /i置位1 state_out=0; /state_out置位0end /结束if循环嵌套 else begin i=i+1; /i和i自加1比较,值返回i state_out=state; /state_out和state比较,值返回state_out end /结束if循环嵌套 integer j; /定义整型 jalways(cipher_in or am_en or rst) if(rst) /如果rst为1,即高电平j=0; /j赋值为0elseif(am_en) /如果初始密码am_en为1,即高电平 case(j) /判断j的值 2b00:begin /j为00时,执行下列程序 if(cipher_in=amend_cipher) /如判断输入密码和初始密码是否相等 j=j+1; /相等,则j+1 else j=j; /否则j值不变 end /结束if循环嵌套 2b01:begin /j=01时,执行下列程序 amend_cipher=cipher_in; /把输入密码赋值给初始密码 end default: j=0; end /结束if循环嵌套 endcase endmodule 激励源代码module t_latch;/cipher_in,count,warn_en,rstreg rst,am_en; /定义reg型rst和am_enreg3:0cipher_in; /定义reg型4位cipherwire warn_en; /定义wire型warnwire 1:0count; /定义wire型2位countlatch unit(.rst(rst), /定义闩锁器 .count(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=4b1000; /置cipher为1000,此时输入错误#10 cipher_in=4b0000; /置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=4b0000; /置cipher为0000,此时输入错误#10 cipher_in=4b1000; /置cipher为1000,此时输入错误 #10 am_en=0; /10时间单位后,am_en赋值0,在主程序里,有判定am的值来执行if循环#10 cipher_in=4b0000; /置cipher为0000,此时输入错误#10 cipher_in=4b0001; /置cipher为0001,此时输入错误#10 cipher_in=4b1000; /置cipher为1000,此时输入错误endendmodule项目创新及特色1、从测试结果分析可知,本装置采用较低成本的器件设计制作,且误差较小,完全满足用户的基本要求。2、本装置结构简单、体积小、性能稳定,操作容易、使用方便,可以安装在不同的门上,具有一定推广应用价值。3、本系统结合了现在最有发展前景的FPGA设计的电子密码锁系统,安全可靠,科技含量高,易于扩展。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 临时分类 > 人力资源


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!