课程设计fpga密码锁
基于FPGA的电子密码锁设计

基于FPGA的电子密码锁设计一、设计要求:1、开锁代码为8位二进制,当输入代码的位数和位值与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮开锁指示灯。
否则,系统进入“错误”状态,并发出报警信号。
2、开锁程序有设计者确定,并要求所内给定的密码可调,且预置方便,保密性好。
3、串行电子密码锁的报警方式是点亮指示灯,并使喇叭鸣叫报警,直到按下复位开关,报警才停止。
此时,电子密码锁又进入等待下一次开锁的状态。
二.设计说明与提示:1.该题目的主要任务是产生一个开锁信号OPEN,而开锁信号的形成条件是,输入代码和已设密码相同。
实现这种功能的电路构思有多种,本题目运用两片8位锁存器,一片存入密码,另一片输入开锁代码,通过比较的方式,若两者相等,则形成开锁信号。
2.在开锁信号产生时,要求输出声,光信号,声音的产生由开锁信号触动扬声器工作,光信号由开锁信号点亮LED指示灯。
3.用按钮开关的第一个动作信号触发一个5秒定时器,若5秒内无开锁信号产生,让扬声器发出特殊音响,以示警告,并输出一个信号推动LED不断闪烁。
三.设计思想:电子密码锁的系统结构框图分成两大部分:控制器和处理器。
整个系统的输入信号有一个时钟脉冲CLK ,输出信号有表示开锁,关锁信号的红灯,绿灯以及报警信号SPEAKER。
控制器中的所有按键按下时均为高电平,即高电平有效。
RW 为“密码设定”信号, OK 为“确定”信号, RED=‘0’GREED=‘1’为开锁信号CNT 表示上一位密码正确时,控制器给出的可进行下一位二进制密码比较的信号,OPEN=‘1’为控制器给出的锁开信号, OPEN=‘0’为控制器给出的密码错误信号。
处理器中有一个计数器,计数器C1用是用来记录从第一个按钮触动后的5秒内若未将锁打开(即输入正确密码时间超过5秒),则电路自动复位并进入自锁状态,使之无法再打开,并由扬声器发出持续20秒的报警信号。
四、设计程序与部分分析:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity lock_m isport(key:in std_logic_vector(7 downto 0);clk,clk1,ok,rw: in std_logic;red,green,speaker,rwled,okrw:out std_logic);end lock_m;architecture behav of lock_m issignal ok1,ok2,ok0,prr,start,pdan,rw1,rin:std_logic :='0';signal sbuf1,sbuf2,keyin:std_logic_vector(7 downto 0):="";signal mmst: std_logic_vector(7 downto 0):="";signal cnt:std_logic_vector(2 downto 0):="000";signal cnt1:std_logic_vector(4 downto 0):="00000";beginprocess(clk) ---定义个存储器将密码存放在keyin中beginif clk'event and clk='1' thenkeyin<=key;end if;end process;prr<=pdan or rw1 or rin or ok;st: process(keyin,prr,ok1) -----第一次修改密码beginif ok1='1' then start<='0';elsif (keyin/="" and prr='0') thenstart<='1';else start<='0';end if;end process;inkey: process(key,start,clk) ----输入密码时间进入记时状态beginif clk'event and clk='1' then ok1<='0';ok2<='0';if start='1' then sbuf1<=keyin; ----将密码放入rom1暂存器中if ok='1' then ok2<='1';elsif cnt="100" then cnt<="000" ;ok1<='1'; --5秒到将cnt值零将ok1值置高else cnt<=cnt+'1';end if ;else cnt<="000";sbuf1<=sbuf1; ----当start=‘1’时cnt永远保持‘0’end if;end if;end process;pandan : process(ok,ok1,ok2,clk,start) ---输入密码用于判断密码是否正确beginif ok2='1' or ok1='1' then pdan<='1'; ------开锁信号elsif clk'event and clk='1' thenif pdan='1' thenif cnt1="10011" thenpdan<='0'; --20秒后判断结束,进入等待外部输入状态elsecnt1<=cnt1+'1';end if;elsecnt1<="00000"; ---等待状态时cnt1一直为‘0’end if;end if;end process;comp: process(pdan,rw1,sbuf1,mmst,rin,clk1) -----显示程序beginif pdan='1' then ------开锁信号密码正确if sbuf1=mmst then -----红灯灭,绿灯亮red<='0';green<='1';rwled<='0';speaker<='0';okrw<='0';else ------密码错误red<='1';green<='0';rwled<='0';speaker<=clk1;okrw<='0';end if; ----红灯亮,绿灯灭,elsif rw1='1' then ----第一次修改密码显示状态red<='1';green<='0';rwled<='1';speaker<='0';okrw<='0';elsif rin='1' thenred<='0';green<='0';rwled<='1';speaker<='0'; okrw<='1';elsered<='1';green<='0';rwled<='0';speaker<='0';okrw<='0';end if;end process;rewrite:process(rw,keyin,ok0,clk,start,pdan,rin)beginif clk'event and clk='1' thenif ok0='1' then rw1<='0';elsif keyin="" and pdan='0' and rin='0' thenif rw='1' thenrw1<='1';end if;end if;end if;end process;process(rw1,ok,keyin,clk)beginif clk'event and clk='1' thenok0<='0';sbuf2<=keyin;if rw1='1' thenif ok='1' thenok0<='1';if mmst=sbuf2 thenrin<='1';elserin<='0';end if;end if;elseif rin='1' thenif ok='1' thenmmst<=sbuf2;rin<='0';else mmst<=mmst;end if;else null;end if;end if;end if;end process;end behav;五、仿真波形:(密码正确)密码锁默认的密码为“”,当我们第一次设置的密码为key=””,然后按OK键盘确认。
基于FPGA的数字密码锁

基于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;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;目录摘要 (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章所选项目的研究意义概述数字密码锁是一个小型的数字系统,与普通机械锁相比, 具有许多独特的优点: 保密性好, 防盗性强, 可以不用钥匙, 记住密码即可开锁等。
基于FPGA的数字密码锁之欧阳科创编

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第1章所选项目的研究意义1.1 概述数字密码锁是一个小型的数字系统,与普通机械锁相比, 具有许多独特的优点: 保密性好, 防盗性强, 可以不用钥匙, 记住密码即可开锁等。
课程设计fpga密码锁

FPGA实验报告一、实验目的1.设计一个密码锁2.加深FPGA电路原理的理解3.掌握VHDL语言的使用,学会用VHDL语言来编程解决实际问题4.学会使用EDA开发软件设计小型综合电路,掌握仿真的技巧5.学会应用开发系统实现硬件电路,检验电路的功能二、实验内容题目:电子密码锁内容:设计一个4位串行数字锁1.开锁代码为4位二进制,当输入代码的位数与锁内给定的密码一致,且按规定程序开锁时,方可开锁。
否则进入“错误”状态,发出报警信号。
2.锁内的密码可调,且预置方便,保密性好。
3.串行数字锁的报警,直到按下复位开关,才停下。
此时,数字锁又自动等待下一个开锁状态。
三、实验步骤1.系统总框图本系统的硬件部分主要由密码锁按键消抖模块,密码输入比较更改模块,密码显示模块、报警模块组成。
整体系统框图如下图所示。
2.密码锁的主要功能密码锁控制器的主要功能有:(1)密码输入:有二个按键来控制(分别代表0和1),每按下一个键,要求在数码管上显示,并依次左移。
(2)密码校验:如果有按键按下,直到松开该按键,如果密码校验正确,无变化,否则如果密码校验错误蜂鸣器响,表明密码错误。
(3)错误报警:密码输入错误开始报警。
(4)密码修改:输入密码正确后按按键输入要设置和更改的密码,按按键确认密码设置与更改,则密码设置成功。
3.密码锁的各个模块(1)按键消抖。
每按下一个键,仅产生一个信号脉冲,作为按键的使能信号,使能信号控制显示的数字。
(2)密码输入比较密码输入值的比较主要有两部分 ,密码位数和内容 ,任何一个条件不满足 ,都不能打开锁。
锁内密码为“0000” , key2 和 key1 置低电平 ,分别表示输入“1” 和“0” 。
输入密码前先按start 键,再依次正确输入0000,会在数码管逐一显示,按确认键,经检验 ,输入的密码等于锁内预先设置的密码密码锁开启信号,锁开启。
同时,可以进行密码修改。
若在输入密码的过程中 ,4 位二进制密码出现输入错误 ,那么锁不能开启 ,同时,蜂鸣器发出报警信号。
FPGA课设

FPGA课程设计—数字密码锁学院:专业班级:姓名:学号:页脚内容1FPGA基于Verilog HDL密码锁设计1. 摘要 (3)2. 题目来源: (4)3. 理论分析 (4)4. 实现过程 (5)4.1顶层模块 (5)4.2蜂鸣器模块 (7)4.3显示模块 (8)4.4控制模块 (13)5. 实验结果 (17)5.1顶层模块时序仿真: (17)5.2蜂鸣器时序仿真 (20)5.3显示模块时序仿真: (21)5.4控制模块时序仿真 (23)6. 总结 (27)7. 参考文献 (28)页脚内容21.摘要随着科技的发展数字电路的各种产品广泛应用,传统的机械锁由于其构造的简单,安全性不高,电子密码锁其保密性高,使用灵活性好,安全系数高,使用方便,将会是未来使用的趋势。
本设计使用FPGA设计使设计过程廷到高度自动化,其具有强大的设计功能、测试、仿真分析、管理等功能。
用Verilog HDL可以更加快速、灵活地设计出符合各种要求的密码锁。
本设计基于Verilog HDL语言来设计密码锁,先介绍设计要求和整体设计思想,随后对所使用各模块分别为蜂鸣器模块、显示模块、控制模块、顶层模块进行了介绍,给出各个模块的主要代码,在对各个模块的功能进行仿真。
随着现代科技的日益发展,智能化,自动化技术的成熟将会代替以往的人工手动控制。
密码锁不仅可以有效地提高人们的生活效率,节约生活资源,而且十分安全可靠。
电子密码锁运用电子电路控制机械部分,使两者紧密结合,从而避免了因为机械部分被破坏而导致开锁功能失常.大大增加了密码锁得防盗功能。
同时因为电子密码锁不需要携带钥匙,弥补了钥匙极易丢失和仿造的缺陷,方便了锁具的使用。
关键字:页脚内容3密码锁Verilog HDL Quartus II2.题目来源:本设计以007为万能密码在忘记密码时开锁使用。
开始时密码锁处于关闭的状态,输入万能密码将锁打开。
在锁处于打开的状态时设计密码,此时指示灯处于亮的状态,说明锁处于开的状态。
基于FPGA的电子密码锁的研究与设计

论文题目:基于FPGA的电子密码锁设计摘要普通的机械锁保密性不好,防盗性差,而且必须使用钥匙。
但是,基于FPGA设计的电子密码锁与普通的机械锁比较来说,就克服了这些不足之处。
该论文主要描述的是一种电子密码锁的设计方法,这种电子密码锁是基于现场可编程门阵列(FPGA)的电子密码锁。
由FPGA构造的电子密码锁系统中,硬件电路可以实现所有的算法,大幅度提高了西戎的工作可靠性。
为了提高设计的效率,可以在更改设计时只更改FPGA中的控制和接口电路,这是因为FPGA的现场可编程功能,也正是利用这一点,可以将更新后的设计下载到FPGA中,省去了更改外部电路设计的麻烦。
所以,这样的系统既可以使工作的可靠性增强也可以更加方便的升级。
系统所实现的功能:用户给电子密码锁设定一个密码,当使用本机键盘开锁时,该密码与用户设定的密码比较,如果密码正确,则开锁;如果密码不正确,用LED灯报警;允许用户重新输入密码。
关键词电子密码锁;FPGA;硬件描述语言;EDAAbstractFPGA-based design of electronic locks is a small digital system,compared with ordinary mechanical locks,has many unique advantages:confidentiality,security and strong,you can not have the keys,remember a password to unlock.This paper describes an approach based on field programmable gate array(FPGA)devices electronic locks design.Construct systems with FPGA devices,all algorithms entirely by hardware circuit to achieve,making the work system reliability greatly improved.As the FPGA with field-programmable function,when you need to change the design,just change the FPGA control and interface circuitry using EDA tools designed updated downloaded to the FPGA without the need to change the external circuit design,greatly improving the design efficiency.Therefore,the use of digital FPGA development system,not only has high reliability,but also extremely easy to upgrade.System implemented features:electronic locks user to set a password when using the keyboard lock,compared with the password set by the user's password,if the password is correct,then unlock;If the password is incorrect,the speaker alarm,allows the user to re- enter the password.Key wordsElectronic locks;FPGA;Hardware Description Language;EDA目录摘要 (I)Abstract (II)前言 (1)第一章概述 (2)1.1 课题背景 (2)1.2 课题研究的目的和意义 (2)1.3 国内外现状 (3)1.4 课题的主要研究工作 (4)第二章相关知识介绍 (5)2.1 FPGA的相关介绍 (6)2.1.1 可编程逻辑器件 (6)2.1.2 FPGA简介 (7)2.1.3 FPGA应用特点 (7)2.1.4 FPGA的设计流程 (9)2.2 硬件描述语言Verilog (11)2.2.1 Verilog语言简介 (11)2.2.2 Verilog语言的优点 (11)2.2.3 Verilog语言的基本结构 (12)2.3 QuartusⅡ软件开发工具 (12)第三章电子密码锁的总体设计 (14)3.1 设计要求 (14)3.2 系统原理框图 (14)3.3 系统主控制流程框图 (15)第四章电子密码锁的软件设计 (17)4.1 主要功能模块设计 (17)4.1.1 输入模块 (18)4.1.2 显示模块 (19)4.3 电子密码锁的仿真 (19)第五章电子密码锁的硬件实现 (24)5.1 电子密码锁的硬件模块实现 (24)5.2 硬件设备 (24)5.3 硬件的实现 (25)结论 (27)参考文献 (28)致谢 (30)前言基于FPGA的电子密码锁是新型现代化安全管理系统,微机自动识别技术和现代安全管理措施技术,包括生物技术、通信技术、电子和机械电等诸多新技术都在其中体现,重要部门出入口安全防范问题因此得到了解决。
密码锁verilog课程设计

密码锁v e r i l o g课程设计Last revision on 21 December 2020课程设计报告课程设计题目:4位串行数字密码锁学号学生姓名:谢渊良专业:通信工程班级:1421302指导教师:钟凯2017年 1月 5日1.摘要随着科技的发展数字电路的各种产品广泛应用,传统的机械锁由于其构造的简单,安全性不高,电子密码锁其保密性高,使用灵活性好,安全系数高,使用方便,将会是未来使用的趋势。
本设计使用EDA设计使设计过程廷到高度自动化,其具有强大的设计功能、测试、仿真分析、管理等功能。
使用EDA环境完成电路的系统综合设计和仿真。
用VHDL可以更加快速、灵活地设计出符合各种要求的密码锁。
本设计基于Verilog HDL语言来设计密码锁,先介绍设计要求和整体设计思想,随后对所使用各模块分别为键盘模块、连接模块、控制模块进行了介绍,给出各个模块的主要代码,在对各个模块的功能进行仿真。
关键字:密码锁 Verilog HDL2.设计内容设计一个4位数字密码锁子系统1)设计要求 开锁密码为4位二进制,当输入密码与锁内给定的密码一致时,方可开锁。
否则进入“错误”状态,发出报警信号。
2)锁内的密码可调。
3)串行数字密码锁的报警,直到按下复位开关,才停下。
此时,数字密码锁又自动等待下一个开锁状态。
3.系统设计本设计中,FPGA 系统采用硬件描述语言Verilog 按模块化方式进行设计,并用modersim 软件对各个模块进行编写仿真。
键盘模块键盘电路理想接口图:Set本模块采用2×2的扫描键盘电路,对输入信号进行采集,此模块的主要功能是每按下一个按键,flag 产生一个矩形波,作为连接模块的触发信号。
同时key_value 值为所按下键的编码值,与flag 一同传入连接模块。
实际设计接口图:flag键盘模块仿真图:跟据图中所示当输出kevalue :10值的时候,flag 出现一个矩形波。
课程设计fpga密码锁

FPGA实验报告一、实验目的1.设计一个密码锁2.加深FPGA电路原理的理解3.掌握VHDL语言的使用,学会用VHDL语言来编程解决实际问题4.学会使用EDA开发软件设计小型综合电路,掌握仿真的技巧5.学会应用开发系统实现硬件电路,检验电路的功能二、实验内容题目:电子密码锁内容:设计一个4位串行数字锁1.开锁代码为4位二进制,当输入代码的位数与锁内给定的密码一致,且按规定程序开锁时,方可开锁。
否则进入“错误”状态,发出报警信号。
2.锁内的密码可调,且预置方便,保密性好。
3.串行数字锁的报警,直到按下复位开关,才停下。
此时,数字锁又自动等待下一个开锁状态。
三、实验步骤1.系统总框图本系统的硬件部分主要由密码锁按键消抖模块,密码输入比较更改模块,密码显示模块、报警模块组成。
整体系统框图如下图所示。
2.密码锁的主要功能密码锁控制器的主要功能有:(1)密码输入:有二个按键来控制(分别代表0和1),每按下一个键,要求在数码管上显示,并依次左移。
(2)密码校验:如果有按键按下,直到松开该按键,如果密码校验正确,无变化,否则如果密码校验错误蜂鸣器响,表明密码错误。
(3)错误报警:密码输入错误开始报警。
(4)密码修改:输入密码正确后按按键输入要设置和更改的密码,按按键确认密码设置与更改,则密码设置成功。
3.密码锁的各个模块(1)按键消抖。
每按下一个键,仅产生一个信号脉冲,作为按键的使能信号,使能信号控制显示的数字。
(2)密码输入比较密码输入值的比较主要有两部分,密码位数和内容,任何一个条件不满足,都不能打开锁。
锁内密码为“0000” , key2 和key1 置低电平,分别表示输入“1” 和“0” 。
输入密码前先按start键,再依次正确输入0000,会在数码管逐一显示,按确认键,经检验,输入的密码等于锁内预先设置的密码密码锁开启信号,锁开启。
同时,可以进行密码修改。
若在输入密码的过程中,4 位二进制密码出现输入错误,那么锁不能开启,同时,蜂鸣器发出报警信号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FPGA实验报告一、实验目的1.设计一个密码锁2.加深FPGA电路原理的理解3.掌握VHDL语言的使用,学会用VHDI语言来编程解决实际问题4.学会使用EDA开发软件设计小型综合电路,掌握仿真的技巧5.学会应用开发系统实现硬件电路,检验电路的功能二、实验内容题目:电子密码锁内容:设计一个4 位串行数字锁1.开锁代码为4 位二进制,当输入代码的位数与锁内给定的密码一致,且按规定程序开锁时,方可开锁。
否则进入“错误”状态,发出报警信号。
2.锁内的密码可调,且预置方便,保密性好。
3.串行数字锁的报警,直到按下复位开关,才停下。
此时,数字锁又自动等待下一个开锁状态。
三、实验步骤1. 系统总框图本系统的硬件部分主要由密码锁按键消抖模块,密码输入比较更改模块,密码显示模块、报警模块组成。
整体系统框图如下图所示。
2.密码锁的主要功能密码锁控制器的主要功能有:(1)密码输入:有二个按键来控制(分别代表0和1),每按下一个键,要求在数码管上显示,并依次左移。
(2)密码校验:如果有按键按下,直到松开该按键,如果密码校验正确,无变化,否则如果密码校验错误蜂鸣器响,表明密码错误。
(3)错误报警:密码输入错误开始报警。
(4)密码修改:输入密码正确后按按键输入要设置和更改的密码,按按键确认密码设置与更改,则密码设置成功。
3.密码锁的各个模块(1)按键消抖。
每按下一个键,仅产生一个信号脉冲,作为按键的使能信号,使能信号控制显示的数字。
(2)密码输入比较密码输入值的比较主要有两部分,密码位数和内容,任何一个条件不满足,都不能打开锁。
锁内密码为0000”,key2和keyl置低电平,分别表示输入T和0”。
输入密码前先按start键,再依次正确输入0000,会在数码管逐一显示,按确认键,经检验,输入的密码等于锁内预先设置的密码密码锁开启信号,锁开启。
同时, 可以进行密码修改。
若在输入密码的过程中,4 位二进制密码出现输入错误, 那么锁不能开启, 同时,蜂鸣器发出报警信号。
直到按下复位开关, 报警才停止。
此时, 数字锁又自动进入等待下一次开锁的状态。
(3)密码修改为防止任意进行密码修改, 必须在正确输入密码后, 才能重新设置密码。
输入正确密码后, 锁打开, 就可直接进行修改密码的操作。
修改密码实质就是用输入的新密码去取代原来的旧密码,按确定按键ok, 存储新密码。
(4)报警对50M晶振进行分频,实现对蜂鸣器的控制(5)数码显示八段数码管是电子开发过程中常用的输出显示设备。
在本设计中使用的是8 个四位一体、共阴极型八段数码管。
其单个静态数码管如下图所示。
由于八段数码管公共端连接到VCC(共阳极型),当数码管的中的一个段被输入低电平,则相应的这一段被点亮。
反之则不亮。
四位一体的八段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。
八个数码管的a、b、c、d、e、f 、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。
10(细2<f)Nd)单个数码管管脚示意图本实验通过计数信号count控制数码管亮的个数,用temp信号控制数码管的动态扫描显示,以实现每输入一位密码,数码管显示左移一位。
4.软件仿真(1)密码输入正确时,蜂鸣器不响,beep=1。
(默认密码为0000), 仿真图如下:(2)密码输入错误时(0001),蜂鸣器响,beep=0。
(默认密码为0000),仿真图如下:四、实验总结这次密码锁的设计过程表明,用VHDL可以快速、灵活地设计出符合要求的密码锁控制器,而且操作简单。
可以实现密码输入、密码校验、密码设置和更改等功能。
设计过程能够在设计完成后在Quartus H环境下进行电路的模拟仿真,反馈结果可以验证程序设计的可行性与可靠性。
本密码锁控制器设置的是4 位密码,在系统复位后,输入一个完整的密码串,输入完后,系统会进行比对,如果发现密码吻合,则开门,如果输入的密码串都是错误的,则系统报警。
这样的设计可以很好的满足人们的日常需求。
同时,密码锁还具有密码修改功能,方便操作,使得密码锁的使用更加安全、便捷。
在软件、硬件设计和仿真过程中间我们也遇到不少问题,但最终还是把它们解决了,使得设计符合要求。
除了自己思考设计之外,这与和同学的同心协力的合作与讨论是分不开的的。
相互的探讨使得我们的思路更加开阔,解决问题的办法也更多。
总之,此次课程设计让我收益良多,同时因为有了实践操作,对EDA技术能够更好的掌握和应用了。
VHD程序总代码附:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity lock isport(key1,key2:in std_logic;clk,start,ok: in std_logic; beep:outstd_logic:='1';dig:out std_logic_vector(7 downto 0); seg:out std_logic_vector(7 downto 0) );按键时钟,开始,确定,复位正确,蜂鸣器信号数码管片选信号数码管片内显示end lock;architecture rt1 of lock issignal keyin,password:std_logic_vector(3 downto 0):="0000"; --signal open1:std_logic:='0'; -signalbeep1,keyen1,keyen2:std_logic:='1'; -signal shuru:std_logic; -signal count: std_logic_vector(2 downto 0):="000"; --数signal temp: std_logic_vector(1 downto 0):="00"; begin process(clk,key1)variable m:integer range 0 to 250000; -beginif clk'event and clk='1'thenif key1='0' thenif m=250000 then m:=m;else m:=m+1;end if;if m=249999 then keyen1<='0';else keyen1<='1';end if;else m:=0;end if;end if;end process; 输入密码,密码开锁信号蜂鸣器信号输入信号计数输入密码的位按键消抖process(clk,key2)variable a:integer range 0 to 250000; 按键消抖beginif clk'event and clk='1'thenif key2='0' thenif a=250000 then a:=a;else a:=a+1;end if;if a=249999 then keyen2<='0';else keyen2<='1';end if;else a:=0;end if;end if;end process;process(clk,start,ok) -- 密码输入, 比较, 修改模块beginif clk'event and clk='1'thenif start='0' then shuru<='1';count<="000";keyin<="0000"; open1<='0';beep1<='1';end if;if shuru='1' thenif count="000" thenif keyen1='0' thenkeyin(0)<='0' ;count<=count+1;elsif keyen2='0' thenkeyin(0)<='1' ;count<=count+1;end if;end if;if count="001" thenif keyen1='0' then keyin(1)<='0' ;count<=count+1;elsif keyen2='0' then keyin(1)<='1' ;count<=count+1;end if;end if;if count="010" thenif keyen1='0' thenkeyin(2)<='0' ;count<=count+1;elsif keyen2='0' then keyin(2)<='1' ; count<=count+1;end if;end if;if count="011" thenif keyen1='0' then keyin(3)<='0' ; count<=count+1; shuru<='0';elsif keyen2='0' thenkeyin(3)<='1' ; count<=count+1;shuru<='0';end if;end if;end if;if ok='0'and open1='0' thenif (keyin=password) and count="100" thenopen1<='1'; shuru<='1';elsebeep1<='0';open1<='0';end if;end if;if ok='0'and open1='1'thencount<="000"; password<=keyin;end if;end if;end process;process(clk,start,ok) - 块报警模variable g:integer range 0 to 25000;beginif clk'event and clk='1'thenif g=25000 theng:=0;elseg:=g+1;end if;if g<=12500 and beep1='0' thenbeep<='0'; elsebeep<='1'; end if; end if; end process;process(clk)variable n:integer range 0 to 2500; -- 计数模块beginif clk'event and clk='1'thenif n=2500 thenn:=0;if temp="11"then temp<="00"; else temp<=temp+1;end if;elsen:=n+1;end if;end if;end process;process(clk) -- 数码管显示模块beginif clk'event and clk='1'thenif count="001" thencase temp iswhen "00" => dig<="01111111" ;if keyin(0)='0'then seg<="11000000";else seg<="11111001";end if;when others =>seg<="11111111" ;end case ;elsif count="010" thencase temp iswhen "00" => dig<="01111111" ;if keyin(1)='0'then seg<="11000000";else seg<="11111001";end if;when "01" => dig<="10111111" ;if keyin(0)='0'then seg<="11000000";else seg<="11111001";end if;when others =>seg<="11111111" ;end case ;elsif count="011" thencase temp iswhen "00" => dig<="01111111" ;if keyin(2)='0'then seg<="11000000"; else seg<="11111001";end if;when "01" => dig<="10111111" ; if keyin(1)='0'then seg<="11000000"; else seg<="11111001";end if; when "10" => dig<="11011111" ; if keyin(0)='0'then seg<="11000000";else seg<="11111001";end if; when others =>seg<="11111111" ; end case ;elsif count="100" thencase temp iswhen "00" => dig<="01111111" ;if keyin(3)='0'then seg<="11000000"; else seg<="11111001";end if; when "01" => dig<="10111111" ;if keyin(2)='0'then seg<="11000000"; else seg<="11111001";end if; when "10" => dig<="11011111" ; if keyin(1)='0'then seg<="11000000"; else seg<="11111001";end if;when "11" => dig<="11101111" ; if keyin(0)='0'then seg<="11000000"; elseseg<="11111001";end if; when others =>null;end case ;elsedig<="11111111" ;seg<="11111111";end if;end if;end process ; end rt1;Welcome !!! 欢迎您的下载, 资料仅供参考!。