课程设计fpga密码锁

合集下载

基于FPGA的数字密码锁

基于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密码锁

课程设计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课设

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的现场可编程功能,也正是利用这一点,可以将更新后的设计下载到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的电子密码锁是新型现代化安全管理系统,微机自动识别技术和现代安全管理措施技术,包括生物技术、通信技术、电子和机械电等诸多新技术都在其中体现,重要部门出入口安全防范问题因此得到了解决。

基于FPGA的电子密码锁系统的设计

基于FPGA的电子密码锁系统的设计

目录第1章绪论1.1 国内外现状及其发展1.2 电子密码锁的系统简介1.3 系统设计要求1.4 本课题的研究目的和意义第2章现场可编程门阵列FPGA2.1 FPGA的基本结构2.1.1 可配置存储器2.1.2 可配置逻辑块(CLB)2.1.3 输入/输出块(IOB)2.1.4 可编程内部连线(PI)2.2 FPGA的设计流程2.3 VHDL硬件描述语言第3章电子密码锁的设计与仿真3.1 硬件设备3.2 密码锁输入电路3.3 密码锁控制电路3.4 系统有关编译和仿真结论参考文献附录基于FPGA的电子密码锁系统的设计随着电子技术的发展,具有防盗报警等功能的电子密码锁代替密码量少、安全性差的机械式密码锁已是必然趋势。

电子密码锁与普通机械锁相比,具有许多独特的优点:保密性好,防盗性强,可以不用钥匙,记住密码即可开锁等。

目前使用的电子密码锁大部分是基于单片机技术,以单片机为主要器件,其编码器与解码器的生成为软件方式。

在实际应用中,由于程序容易跑飞,系统的可靠性能较差。

本文主要阐述了一种基于现场可编程门阵列FPGA器件的电子密码锁的设计方法。

用FPGA器件构造系统,所有算法完全由硬件电路来实现,使得系统的工作可靠性大为提高。

由于FPGA具有现场可编程功能,当设计需要更改时,只需更改FPGA中的控制和接口电路,利用EDA工具将更新后的设计下载到FPGA中即可,无需更改外部电路的设计,大大提高了设计的效率。

因此,采用FPGA开发的数字系统,不仅具有很高的工作可靠性,而且升级也极其方便。

本文采用EDA技术,利用Quartus II工作平台和硬件描述语言,设计了一种电子密码锁,并通过一片FPGA芯片实现。

关键词:电子密码锁FPGA 硬件描述语言EDA第1章绪论1.1 国内外现状及其发展随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。

锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,又要使用方便,这也是制锁者长期以来研制的主题。

fpga电子密码锁课程设计

fpga电子密码锁课程设计

fpga电子密码锁课程设计一、课程目标知识目标:1. 学生能理解FPGA的基本原理和电子密码锁的工作机制;2. 学生能掌握使用硬件描述语言(HDL)进行数字电路设计和实现的方法;3. 学生能了解数字电路中常见的加密算法,并运用到电子密码锁的设计中;4. 学生能分析并解决电子密码锁在实际应用中可能遇到的问题。

技能目标:1. 学生能运用所学知识,设计并实现一个基于FPGA的电子密码锁;2. 学生能熟练使用相关硬件描述语言和开发工具,完成电子密码锁的编程与调试;3. 学生能通过实际操作,提高动手能力和团队协作能力;4. 学生能通过课程项目,培养创新思维和问题解决能力。

情感态度价值观目标:1. 学生能够认识到科技对社会和生活的重要性,增强学习科技的兴趣和责任感;2. 学生能够在课程学习中,培养勇于探索、积极进取的精神;3. 学生能够通过团队协作,学会互相尊重、沟通与协作,培养良好的团队精神;4. 学生能够关注电子密码锁在安全领域的应用,提高对国家和社会安全的意识。

二、教学内容1. 数字电路基础:回顾数字电路的基本概念,重点掌握组合逻辑电路和时序逻辑电路的设计原理;教材章节:第一章 数字逻辑基础2. FPGA原理与应用:介绍FPGA的基本结构、工作原理以及编程方法;教材章节:第二章 可编程逻辑器件及其编程技术3. 硬件描述语言(HDL):学习硬件描述语言的基本语法和编程技巧;教材章节:第三章 硬件描述语言VHDL/Verilog基础4. 加密算法:讲解常见的加密算法,如AES、DES等,分析其原理和实现方法;教材章节:第四章 数字信号处理与加密算法5. 电子密码锁设计与实现:结合所学知识,设计并实现一个基于FPGA的电子密码锁;教材章节:第五章 数字系统设计实例分析与综合6. 课程项目与实践:以小组形式进行项目实践,完成电子密码锁的设计、编程、调试和测试;教材章节:第六章 数字系统项目实践教学内容安排和进度:第1周:数字电路基础复习第2周:FPGA原理与应用学习第3-4周:硬件描述语言学习第5周:加密算法学习第6-8周:电子密码锁设计与实现第9-10周:课程项目与实践,成果展示与评价。

基于fpga的数字密码锁设计与实现

基于fpga的数字密码锁设计与实现

一、概述在当今信息技术高度发达的时代,数字密码锁已成为人们生活中常见的安全保障措施之一。

随着FPGA(可编程逻辑门阵列)技术的不断成熟和普及,基于FPGA的数字密码锁设计与实现已经成为一个备受关注的研究方向。

本文将探讨基于FPGA的数字密码锁的设计原理、实现过程以及相关技术细节,为相关领域的研究和应用提供参考。

二、数字密码锁的基本原理1.数字密码锁的基本功能数字密码锁是一种利用密码验证来进行身份识别和门禁控制的设备。

其基本功能包括输入密码、密码验证和门禁控制等。

2.数字密码锁的工作原理数字密码锁通常由键盘、控制单元和执行单元等组成,其工作原理是用户通过键盘输入密码,控制单元接收并验证密码的正确性,然后执行单元根据验证结果控制门禁的开启或关闭。

三、基于FPGA的数字密码锁设计1.基于FPGA的数字密码锁的优势相比传统的基于单片机或嵌入式系统的数字密码锁,基于FPGA的数字密码锁具有更高的灵活性和可扩展性。

FPGA可以根据实际需求进行灵活的硬件逻辑设计,同时兼容多种通信协议和接口,使得其在数字密码锁设计中具有显著的优势。

2.基于FPGA的数字密码锁的设计原理基于FPGA的数字密码锁主要包括密码输入模块、密码验证模块和门禁控制模块。

密码输入模块负责接收用户输入的密码,密码验证模块根据预设的密码进行验证,门禁控制模块根据验证结果控制门禁的开启或关闭。

3.基于FPGA的数字密码锁的设计流程(1)确定需求:明确数字密码锁的功能和性能要求。

(2)硬件设计:设计数字密码锁的硬件逻辑,包括键盘接口、密码验证逻辑和门禁控制逻辑。

(3)软件设计:设计数字密码锁的用户界面和控制逻辑。

(4)综合与实现:将硬件和软件进行综合,实现数字密码锁的功能。

四、基于FPGA的数字密码锁的实现1.硬件设计(1)键盘接口设计:采用矩阵式键盘接口,利用FPGA内部的GPIO 接口进行连接。

(2)密码验证逻辑设计:采用逻辑门设计密码验证逻辑,包括密码存储、密码输入和密码比对等功能。

基于FPGA的数字密码锁

基于FPGA的数字密码锁

基于F P G A的数字密码锁精选文档TTMS system office room 【TTMS16H-TTMS2A-TTMS8Q8-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;目录第1章所选项目的研究意义概述数字密码锁是一个小型的数字系统,与普通机械锁相比, 具有许多独特的优点: 保密性好, 防盗性强, 可以不用钥匙, 记住密码即可开锁等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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 位二进制密码出现输入错误,那么锁不能开启,同时,蜂鸣器发出报警信号。

直到按下复位开关,报警才停止。

此时,数字锁又自动进入等待下一次开锁的状态。

(3)密码修改为防止任意进行密码修改,必须在正确输入密码后,才能重新设置密码。

输入正确密码后,锁打开,就可直接进行修改密码的操作。

修改密码实质就是用输入的新密码去取代原来的旧密码,按确定按键ok, 存储新密码。

(4)报警对50M晶振进行分频,实现对蜂鸣器的控制(5)数码显示八段数码管是电子开发过程中常用的输出显示设备。

在本设计中使用的是8个四位一体、共阴极型八段数码管。

其单个静态数码管如下图所示。

由于八段数码管公共端连接到VCC(共阳极型),当数码管的中的一个段被输入低电平,则相应的这一段被点亮。

反之则不亮。

四位一体的八段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。

八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。

单个数码管管脚示意图本实验通过计数信号count控制数码管亮的个数,用temp信号控制数码管的动态扫描显示,以实现每输入一位密码,数码管显示左移一位。

4.软件仿真(1)密码输入正确时,蜂鸣器不响,beep=1。

(默认密码为0000),仿真图如下:(2)密码输入错误时(0001),蜂鸣器响,beep=0。

(默认密码为0000),仿真图如下:四、实验总结这次密码锁的设计过程表明,用VHDL可以快速、灵活地设计出符合要求的密码锁控制器,而且操作简单。

可以实现密码输入、密码校验、密码设置和更改等功能。

设计过程能够在设计完成后在QuartusⅡ环境下进行电路的模拟仿真,反馈结果可以验证程序设计的可行性与可靠性。

本密码锁控制器设置的是4位密码,在系统复位后,输入一个完整的密码串,输入完后,系统会进行比对,如果发现密码吻合,则开门,如果输入的密码串都是错误的,则系统报警。

这样的设计可以很好的满足人们的日常需求。

同时,密码锁还具有密码修改功能,方便操作,使得密码锁的使用更加安全、便捷。

在软件、硬件设计和仿真过程中间我们也遇到不少问题,但最终还是把它们解决了,使得设计符合要求。

除了自己思考设计之外,这与和同学的同心协力的合作与讨论是分不开的的。

相互的探讨使得我们的思路更加开阔,解决问题的办法也更多。

总之,此次课程设计让我收益良多,同时因为有了实践操作,对EDA技术能够更好的掌握和应用了。

附:VHDL程序总代码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:out std_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'; --开锁信号signal beep1,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";beginprocess(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' thenshuru<='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' thenkeyin(1)<='0' ;count<=count+1;elsif keyen2='0' thenkeyin(1)<='1' ;count<=count+1;end if;end if;if count="010" thenif keyen1='0' thenkeyin(2)<='0' ;count<=count+1;elsif keyen2='0' thenkeyin(2)<='1' ;count<=count+1;end if;end if;if count="011" thenif keyen1='0' thenkeyin(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"thentemp<="00";elsetemp<=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" ;FPGA实验报告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";else seg<="11111001";end if;when others =>null;end case ;elsedig<="11111111" ;seg<="11111111";end if;end if;end process ; end rt1;。

相关文档
最新文档