FPGA基于verilog HDL的密码锁

合集下载

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

FPGA基于verilog HDL的密码锁

EDA课程设计课设密码锁名称:课设2014.6.23——7.5 日期:姓陈飞名:学110250101号:哈尔滨工业大学(威海)信电学院电子信息工程2014.6一. 所用软件与硬件介绍1.1所用软件介绍QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

QuartusII可以在XP、Linux以及Unix上使用,除了可以使用TCL脚本完成设计流程外,提供了完善的用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。

此外,QuartusII 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。

目前Altera已经停止了对MaxplusII 的更新支持,QuartusII 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。

Altera在QuartusII 中包含了许多诸如SignalTapII、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII 友好的图形界面及简便的使用方法。

FPGA基于某verilog HDL的密码锁

FPGA基于某verilog HDL的密码锁

EDA课程设计课设名称:密码锁课设日期: 2014.6.23——7.5 姓名:陈飞学号:110250101哈尔滨工业大学(威海)信电学院电子信息工程2014.6一. 所用软件与硬件介绍1.1所用软件介绍QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

QuartusII可以在XP、Linux以及Unix上使用,除了可以使用TCL脚本完成设计流程外,提供了完善的用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。

此外,QuartusII 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。

目前Altera已经停止了对MaxplusII 的更新支持,QuartusII 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。

Altera在QuartusII 中包含了许多诸如SignalTapII、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII 友好的图形界面及简便的使用方法。

基于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的电子密码锁是新型现代化安全管理系统,微机自动识别技术和现代安全管理措施技术,包括生物技术、通信技术、电子和机械电等诸多新技术都在其中体现,重要部门出入口安全防范问题因此得到了解决。

基于Verilog语言的8位数字密码锁设计

基于Verilog语言的8位数字密码锁设计

基于Verilog语言的8位数字密码锁设计本科学生学年论文题目:8位数字密码锁设计学院:电子工程学院年级:2011级专业:电子科学与技术(光电子)姓名: 李思远学号:20112508指导教师:林连东2011年5月28日8位数字密码锁设计摘要本文简述了VHDL语言的功能及其特点,并以8位串行数字锁设计为例,介绍了在QUARTUS II 6. 0开发软件下,利用VHDL硬件描述语言设计数字逻辑电路的过程和方法。

关键词:VHDL语言数字锁QUARTUS II 6.0 硬件描述语言数字逻辑电路AbstractThis paper describes the function and characteristics of VHDL language, and eight serial number lock design as an example, this paper introduces QUARTUS II 6・ 0 software development in of VHDL hardware design of digital logic circuit process and method.Keywords: VHDL language QUARTUS II 6・ 0 hardware description language, digitallogic circuit8位数字密码锁设计第一章前言Abstract第二章密码锁系统的设计2.1设计要求2.2设计分析 (5)第三章软件设计 (6)第四章软件仿真及验证 (10)12参考文献 (13)致谢 (14)第一章前言电子密码锁系统主要由电子锁体、电子密匙等部分组成,一把电子密匙里能存放多组开锁密码,用户在使用过程中能够随时修改开锁密码,更新或配制钥匙里开锁密码。

一把电子锁可配制多把钥匙。

语音方面的广泛应用,使得具有语音播放的电子密码锁使用起来更加方便。

fpga简易四位密码锁的代码

fpga简易四位密码锁的代码

FPGA简易四位密码锁的代码一、概述在现代社会中,密码锁被广泛应用于各种场合,如家庭、商业和工业等。

密码锁的使用方便、安全性高,受到了人们的青睐。

FPGA (Field Programmable Gate Array)作为一种灵活可编程的硬件设备,可以用来实现各种数字逻辑电路,包括密码锁。

本文将介绍如何使用FPGA实现一个简易的四位密码锁,并提供相应的代码。

二、硬件设计1. 需要的硬件- FPGA开发板- 数字键盘- LED数码管2. 硬件连接- 将数字键盘通过连接线连接到FPGA开发板上的GPIO端口,用于输入密码;- 将LED数码管通过连接线连接到FPGA开发板上的GPIO端口,用于显示密码输入状态。

三、软件设计1. Verilog代码设计```verilog// 模块声明module password_lock (input wire clk, // 时钟信号input wire rst, // 复位信号input wire [3:0] key_in, // 数字键盘输入output reg [3:0] led_out // LED数码管输出);// 代码实现reg [3:0] password = 4'b1101; // 设定密码为1101always (posedge clk or posedge rst) beginif (rst) beginled_out <= 4'b1111; // 置LED数码管输出为1111end else beginif (key_in == password) beginled_out <= 4'b0000; // 如果输入密码正确,则LED数码管输出为0000end else beginled_out <= 4'b1111; // 如果输入密码错误,则LED数码管输出为1111endendendendmodule```2. 实现原理说明- 模块声明中指定了模块的输入和输出端口;- 代码实现中首先设定了一个四位的密码,然后在时钟信号的作用下判断输入的密码是否与设定的密码相匹配,如果匹配则将LED数码管输出为0000,表示密码正确;否则输出为1111,表示密码错误。

基于-VerilogHDL的数字密码锁的设计

基于-VerilogHDL的数字密码锁的设计

基于Verilog HDL的数字密码锁设计是一种常见的数字电路设计项目,它可以帮助学生理解数字逻辑电路和Verilog HDL的应用。

下面将详细介绍数字密码锁的设计方案。

一、系统结构设计数字密码锁主要由数字键盘、数码管显示、密码比对模块和控制逻辑组成。

数字键盘用于输入密码,数码管显示用于显示密码输入状态和开锁结果,密码比对模块用于比对输入的密码和预设的密码是否一致,控制逻辑用于控制整个系统的运行。

二、硬件设计1. 数字键盘:数字键盘采用矩阵式键盘,通过扫描按键来获取用户输入的密码。

2. 数码管显示:数码管用于显示密码输入状态,例如显示“请输入密码”、“密码正确”或“密码错误”等信息。

3. 密码比对模块:密码比对模块接收输入的密码和预设的密码,在Verilog HDL中实现密码比对逻辑。

4. 控制逻辑:控制逻辑用于控制密码输入、比对和显示的流程,以及控制门锁的开关。

三、Verilog HDL设计1. 数字键盘输入模块:编写Verilog HDL代码来接收数字键盘输入的密码。

2. 密码比对模块:编写Verilog HDL代码来比对输入的密码和预设的密码,输出比对结果。

3. 数码管控制模块:编写Verilog HDL代码来控制数码管的显示,根据密码比对结果显示相应的信息。

四、系统功能设计1. 密码输入功能:用户通过数字键盘输入密码。

2. 密码比对功能:系统对输入的密码进行比对,判断密码是否正确。

3. 显示功能:数码管显示密码输入状态和开锁结果。

五、仿真与综合完成Verilog HDL代码设计后,进行仿真验证,确保系统能够正常工作。

然后进行综合和布局布线,生成FPGA可编程文件。

六、总结与展望通过数字密码锁的设计,学生可以深入理解数字逻辑电路、Verilog HDL语言的应用,并且掌握数字密码锁系统的设计原理。

未来,可以进一步优化系统功能,增加更多的安全性和便利性功能,提升系统的性能和可靠性。

基于FPGA的红外遥控电子密码锁的实现的开题报告

基于FPGA的红外遥控电子密码锁的实现的开题报告

基于FPGA的红外遥控电子密码锁的实现的开题报告一、选题背景随着科技的不断发展,物联网技术得到广泛应用。

在智能家居领域中,电子密码锁成为了保障家庭安全的重要设备。

随着技术的发展,电子密码锁除了传统的输入密码方式,还可以通过红外遥控方式开锁。

本项目采用FPGA实现基于红外遥控的电子密码锁。

二、项目简介本项目主要实现以下功能:1. 通过红外遥控对电子密码锁进行开锁操作;2. 实现多个用户的密码验证功能;3. 实现密码修改功能;4. 实现锁定和解锁功能。

三、项目设计与实现本项目采用Verilog HDL进行设计。

具体实现流程如下:1. 确定所需红外遥控编码和解码方式;2. 设计密码存储器和密码验证逻辑;3. 设计密码修改逻辑;4. 设计锁定和解锁逻辑;5. 基于FPGA进行硬件实现。

四、项目意义本项目可以应用于家庭安全领域中,为用户提供更加便捷和安全的电子密码锁使用方式。

同时,该项目也提供了一种基于FPGA的红外遥控应用实现方法。

五、预期结果本项目预计可以实现基于红外遥控的电子密码锁,并能够实现多个用户密码储存和验证功能,同时也能够提供密码修改、锁定和解锁等基本功能。

六、进度安排本项目进度按照以下安排:1. 第1周~第2周:学习红外遥控编码和解码知识;2. 第3周~第4周:设计密码存储器和密码验证逻辑;3. 第5周~第6周:设计密码修改逻辑;4. 第7周~第8周:设计锁定和解锁逻辑;5. 第9周~第10周:进行硬件实现;6. 第11周~第12周:进行实验测试和性能优化;7. 第13周~第14周:撰写论文和提交论文。

七、团队合作方式本项目可以分为硬件和软件两个部分,团队成员根据自己的专业方向进行分工。

另外,每周团队成员可以进行一次小组会议,共同商讨项目进展和遇到的问题。

同时,利用在线协作平台进行实时交流和文件共享。

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

基于FPGA的数字密码锁

基于FPGA的数字密码锁

CPLD/FPGA课程设计项目名称:基于FPGA得数字密码锁设计专业班级:学生学号:学生姓名:指导老师:2016年6月4日摘要本设计就是基于现场可编程门阵列FPGA器件得电子密码锁得设计。

通过Veril og语言控制4位二进制数,组成数字排列,形成一个简单得数字密码锁,假设预设密码为4位数:0000,当输入正确时输出为1、输入错误时输出为0.同时输出输入得次数,当3次以上输入错误时,输出一个报警信号,即使第四、五次输入正确也输出报警信号。

本设计利用Modelsim软件编写Verilog HDL硬件描述语言程序以实现输入密码、开锁、报警功能. 通过仿真调试,利用可编程器件FPGA得电子密码锁得设计基本达到了预期目得.关键词:现场可编程门阵列;数字密码锁;Verilog HDL;AbstractThisdesign is the electroniccodelock fieldprogrammable gatearrayFPGA devices baseddesign、ByVeriloglanguage control 4—bit binary number, posed 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 outputof the inputerror 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,evenif thefourth andfifthalso enter thecorrect output alarm signal、Thisdesignuses Modelsim softwarewriteVerilog HDLhardware descriptionlanguage program to implement apasswordlock, alarm function、The simulation debugging, using theprogrammabledevice FPGA design basic electronic locks to achieve the desired purpose、Keywords:FPGA;The digital bination lock;Verilog HDL;目录摘要................................................. 错误!未定义书签。

毕业设计(论文)-基于FPGA的四位电子密码锁

毕业设计(论文)-基于FPGA的四位电子密码锁

基于FPGA的四位电子密码锁摘要随着电子技术的发展,具有防盗报警等功能的电子密码锁代替密码量少、安全性差的机械式密码锁已是必然趋势。

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

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

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

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

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

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

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

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

关键词:电子密码锁;FPGA;硬件描述语言;EDAFour FPGA-based electronic lockABSTRACTWith the development of electronic technology, electronic password lock with burglar alarm and other functions replacing less password and poor security mechanical code lock is an inevitable trend. compared electronic password lock with ordinary mechanical locks, it has many unique advantages :confidentiality, and security in nature, do not use the key, remember password can unlock it etc .Most electronic password locks we used now is based upon SCM technology ,SCM is its mainly device ,and the creating of encoding and decoding devices is the fashion of Software mode. In practical application, the reliability of the system may be worse because of easy running fly of the programme.This paper mainly expatiates a design method of electronic password lockbased upon Field Programmable Gate Array device. We use FPGA devices to construct system , all of the algorithm entirely achieved by the hardware circuit , because of FPGA has the function of ISP , when the design needs to be changed We only need to change the control and interface circuit of FPGA,EDA tools are used to download the updated design to FPGA without changing the design of the external circuit , this greatly enhance the efficiency of the design .Therefore , we use FPGA to empolder the digital system has not only high reliability but also extremely convenient of upgrading and improvement .In this paper ,we use EDA technology , Quartus II platform and hardware description language designing an electronic password lock ,and it achieved through an FPGA chip.Key words:electronic password lock;FPGA;hardware description language;EDA目录摘要 (I)ABSTRACT (Ⅱ)1 绪论 (1)1.1国内外现状及其发展 (1)1.2电子密码锁的系统简介 (2)1.3系统设计要求 (2)1.4本课题的研究目的和意义 (3)2FPGA与VHDL硬件描述语言 (4)2.1FPGA的相关介绍 (4)2.2VHDL硬件描述语言 (6)2.2.1 VHDL语言的基本结构 (6)3电子密码锁的设计与实现 (8)3.1电子密码锁设计要求 (8)3.2总体设计思想 (8)3.3子模块的设计思想及实现 (9)3.3.1输入模块的设计与实现 (9)3.3.2控制电路设计与实现 (13)3.3.3显示模块设计与实现 (17)3.3.4电子密码锁的系统实现 (18)4电子密码锁的时序仿真 (19)4.1电子密码锁的设计流程 (19)4.2系统主要模块的仿真 (19)总结 (23)结束语 (24)参考文献 (25)附录 (26)1 绪论1.1 国内外现状及其发展随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。

基于Verilog HDL密码锁设计

基于Verilog HDL密码锁设计

基于Verilog HDL密码锁设计摘要随着科技的发展数字电路的各种产品广泛应用,传统的机械锁由于其构造的简单,安全性不高,电子密码锁其保密性高,使用灵活性好,安全系数高,使用方便,将会是未来使用的趋势。

本设计使用EDA设计使设计过程廷到高度自动化,其具有强大的设计功能、测试、仿真分析、管理等功能。

使用EDA环境完成电路的系统综合设计和仿真。

用VHDL可以更加快速、灵活地设计出符合各种要求的密码锁。

本设计基于Verilog HDL语言来设计密码锁,先介绍设计要求和整体设计思想,随后对所使用各模块分别为蜂鸣器模块、显示模块、控制模块、顶层模块进行了介绍,给出各个模块的主要代码,在对各个模块的功能进行仿真。

关键字密码锁 Verilog HDL Quartus II总体设计密码锁分为四个模块:①顶层模块、②显示模块、③蜂鸣器模块、④控制模块。

其中由顶层模块调其他分模块来实现密码锁功能。

密码锁功能:1.由12个拨码开关设置三位密码(0-9)2.再输入密码开锁,密码正确,指示灯亮开锁成功。

3.密码输入错误,蜂鸣器响五秒,表示开锁失败。

设计思路:本设计以007为万能密码在忘记密码时开锁使用。

开始时密码锁处于关闭的状态,输入万能密码将锁打开。

在锁处于打开的状态时设计密码,此时指示灯处于亮的状态,说明锁处于开的状态。

设置好密码后按关闭拨码使锁关闭,指示灯处于灭的状态。

再输入三位数字进行开琐,如果输入的密码正确则指示灯亮,表示开琐成功,否则蜂鸣器发出响声,并持续五秒钟,表示开锁失败。

总体框图input n0,n1,n2,n3,n4,n5,n6,n7,n8,n9;input set,close;input clk1,clk2,clk3;output lock,alarm,ss1,ss0;output[6:0] Q;reg lock,alarm;reg ss0,ss1;reg[6:0] Q;wire[3:0] X1,X2,X3;wire X4,X5;codeu1(.lock(lock),.warning(X4),.num1(X1),.num2(X2),.num3(X3),.clk(clk1), .n0(n0),.n1(n1),.n2(n2),.n3(n3),.n4(n4),.n5(n5),.n6(n6),.n7(n7),.n8(n 8),.n9(n9),.set(set),.close(close));showu2(.A(X1),.B(X2),.C(X3),.clk(clk2),.Q(Q[6:0]),.ss1(ss1),.ss0(ss0)); speaker u3(.ENA(X4),.CLK2(clk3),.COUT(alarm));endmodule2.蜂鸣器模块蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用各类电子产品中作发声器件。

基于VerilogHDL密码锁设计

基于VerilogHDL密码锁设计

基于Verilog HDL密码锁设计摘要随着科技的发展数字电路的各种产品广泛应用,传统的机械锁由于其构造的简单,安全性不高,电子密码锁其保密性高,使用灵活性好,安全系数高,使用方便,将会是未来使用的趋势。

本设计使用EDA设计使设计过程廷到高度自动化,其具有强大的设计功能、测试、仿真分析、管理等功能。

使用EDA环境完成电路的系统综合设计和仿真。

用VHDL可以更加快速、灵活地设计出符合各种要求的密码锁。

本设计基于Verilog HDL语言来设计密码锁,先介绍设计要求和整体设计思想,随后对所使用各模块分别为蜂鸣器模块、显示模块、控制模块、顶层模块进行了介绍,给出各个模块的主要代码,在对各个模块的功能进行仿真。

关键字密码锁 Verilog HDL Quartus II总体设计密码锁分为四个模块:①顶层模块、②显示模块、③蜂鸣器模块、④控制模块。

其中由顶层模块调其他分模块来实现密码锁功能。

密码锁功能:1.由12个拨码开关设置三位密码(0-9)2.再输入密码开锁,密码正确,指示灯亮开锁成功。

3.密码输入错误,蜂鸣器响五秒,表示开锁失败。

设计思路:本设计以007为万能密码在忘记密码时开锁使用。

开始时密码锁处于关闭的状态,输入万能密码将锁打开。

在锁处于打开的状态时设计密码,此时指示灯处于亮的状态,说明锁处于开的状态。

设置好密码后按关闭拨码使锁关闭,指示灯处于灭的状态。

再输入三位数字进行开琐,如果输入的密码正确则指示灯亮,表示开琐成功,否则蜂鸣器发出响声,并持续五秒钟,表示开锁失败。

总体框图图总体框图模块功能其及主要代码1.顶层模块实现几个模块的配合工作,它能实现对密码的设置和显示,同时在密码正确时时灯亮,在密码错误时蜂鸣器发出五秒钟的响声。

程序如下:moduledingceng(n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,set,close,clk1,clk2,clk3,lock, alarm,Q,ss1,ss0);input n0,n1,n2,n3,n4,n5,n6,n7,n8,n9;input set,close;input clk1,clk2,clk3;output lock,alarm,ss1,ss0;output[6:0] Q;reg lock,alarm;reg ss0,ss1;reg[6:0] Q;wire[3:0] X1,X2,X3;wire X4,X5;codeu1(.lock(lock),.warning(X4),.num1(X1),.num2(X2),.num3(X3),.clk(clk1), .n0(n0),.n1(n1),.n2(n2),.n3(n3),.n4(n4),.n5(n5),.n6(n6),.n7(n7),.n8(n 8),.n9(n9),.set(set),.close(close));showu2(.A(X1),.B(X2),.C(X3),.clk(clk2),.Q(Q[6:0]),.ss1(ss1),.ss0(ss0)); speaker u3(.ENA(X4),.CLK2(clk3),.COUT(alarm));endmodule2.蜂鸣器模块蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用各类电子产品中作发声器件。

基于Verilog HDL的数字密码锁的设计

基于Verilog HDL的数字密码锁的设计

成绩课程设计报告题目:基于Verilog HDL的数字密码锁的设计学生姓名:江留胜学生学号:**********系别:电气信息工程学院专业:电子信息工程届别:2013届指导教师:马立宪基于Verilog HDL的数字密码锁的设计学生:江留胜指导教师:马立宪电气信息工程学院电子信息工程1课程设计的任务与要求1.1 课程设计的任务设计一个6位的数字密码锁,利用Verilog HDL语言来实现,并使用QuartusⅡ进行仿真与调试。

1.2 课程设计的要求设计一个简单的数字密码锁,密码为6位,其功能:1、在内部设置密码,其密码用6位十进制数表示。

2、输入密码时,每次输入一位数,输入后按#进行确认。

3、当输入的密码顺序与设置的密码一致时,密码锁打开,否则,则报警。

4、具有重置密码的功能。

输入密码正确后按*号键输入要重的密码,按#号键确认密码的重置,连续输入两次,则密码重置成功。

使用Verilog HDL语言编写密码锁的开锁过程的程序,并借助QuartusⅡ软件对其进行仿真,观察实验波形。

1.3 课程设计的研究基础(设计所用的基础理论)密码锁就是要有一定的自我保护功能,并且能够定时更新防止破译的危险。

密码锁控制器是硬件与软件的结合。

Verilog HDL是一种优秀的硬件描述语言,它与C语言有许多相似之处,并继承和借鉴了C语言的多种操作符和语法结构,有C语言基础的人很快就能够学习并使用该语言。

在本次计中,系统开发平台为QuartusⅡ。

QuartusⅡ界面友好,使用便捷,被誉为业界最易用易学的EDA软件。

在QuartusⅡ上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。

在本次设计中,采用的硬件描述语言是Verilog HDL。

Verilog HDL也是目前应用最为广泛的硬件描述语言,并被IEEE采纳为IEEE#1064-1995标准。

基于FPGA的verilog的电子密码锁设计

基于FPGA的verilog的电子密码锁设计

基于FPGA的verilog的电子密码锁设计一、概述1.1 电子密码锁的现状随着我国对外开放的不断深入,高档建筑发展很快,高档密码锁具市场的前景乐观。

我国密码锁具行业对密码锁具高新技术的投入正逐年增大,高档密码锁的市场需求也逐年增加。

在安防工程中,锁具产品是关系到整个系统安全性的重要设备,所以锁具产品的优劣也关系了整个安防工程的质量和验收。

目前,市场上比较先进的智能电子密码锁分别有:IC卡电子密码锁、射频卡式电子密码锁、红外遥控电子密码锁、指纹识别电子密码锁和瞳孔识别电子密码锁等。

IC卡电子密码锁成本低,体积小,卡片本身无须电源等优点占领了一定的市场份额,但是由于有机械接触,会产生接触磨损,而且使用不太方便,在一定程度上限制了它的应用;射频卡式电子密码锁是非接触式电子密码锁,成本也不太高,体积跟IC卡密码锁相当,卡片使用感应电源,重量很轻,技术成熟,受到了广泛的欢迎,但是与IC卡电子密码锁相比,成本偏高;指纹识别电子密码锁和瞳孔识别电子密码锁可靠性很高,安全性是目前应用系统中最高的,但是成本高昂,还没进入大众化使用阶段。

在国外,美国、日本、德国的电子密码锁保密性较好,并结合感应卡技术,生物识别技术,使电子密码锁系统得到了飞跃式的发展。

这几个国家的密码锁识别的密码更复杂,并且综合性比较好,已经进入了成熟期,出现了感应卡式密码锁,指纹式密码锁,虹膜密码锁,面部识别密码锁,序列混乱的键盘密码锁等各种技术的系统,它们在安全性,方便性,易管理性等方面都各有特长,新型的电子密码锁系统的应用也越来越广。

基于FPGA的电子密码锁是新型现代化安全管理系统,它集微机自动识别技术和现代安全管理措施为一体,它涉及电子,机械,计算机技术,通讯技术,生物技术等诸多新技术。

它是解决重要部门出入口实现安全防范管理的有效措施,适用各种场合,如银行、宾馆、机房、军械库、机要室、办公间、智能化小区、工厂、家庭等。

在数字技术网络技术飞速发展的今天,电子密码锁技术得到了迅猛的发展。

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

EDA课程设计课设名称:密码锁课设日期: 2014.6.23——7.5 *名:**学号:*********哈尔滨工业大学(威海)信电学院电子信息工程2014.6一. 所用软件与硬件介绍1.1所用软件介绍QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

QuartusII可以在XP、Linux以及Unix上使用,除了可以使用TCL脚本完成设计流程外,提供了完善的用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。

此外,QuartusII 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。

目前Altera已经停止了对MaxplusII 的更新支持,QuartusII 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。

Altera在QuartusII 中包含了许多诸如SignalTapII、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII 友好的图形界面及简便的使用方法。

1.2所用硬件介绍硬件的总体设计:故由上图,将整个硬件电路部分主要分成五个部分,即:FPGA电路设计,数码管显示驱动电路设计,温度传感器电路设计,报警电路设计,键盘矩阵控制电路设计。

I.FPGA芯片的介绍在本次课程设计中选用Altera公司Cyclone II系列FPGA器件。

Altera公司2004年推出了新款Cyclone II系列FPGA器件。

Cyclone II FPGA 的成本比第一代Cyclone器件低30%,逻辑容量大了三倍多,可满足低成本大批量应用需求。

随着低复杂度FPGA器件成本的不断下降,具有灵活性和及时面市优势的FPGA与ASIC相比更有竞争性,在数字消费市场上的应用也急剧增加。

第一代Cyclone系列迄今发售了3百多万片,在全球拥有3,000多位客户,对大批量低成本数字消费市场有着巨大的影响,该市场消纳了三分之一的器件。

同时,Cyclone II器件系列也在电信、计算机外设、工业和汽车市场上获得了巨大的进步。

Cyclone II器件包含了许多新的特性,如嵌入存储器、嵌入乘法器、PLL和低成本的封装,这些都为诸如视频显示、数字电视(DTV)、机顶盒(STB)、DVD播放器、DSL调制解调器、家用网关和中低端路由器等批量应用进行了优化。

Cyclone II器件采用TSMC90nm低K绝缘材料工艺技术,这种技术结合Altera 低成本的设计方式,使之能够在更低的成本下制造出更大容量的器件。

这种新的器件比第一代Cyclone产品具有两倍多的I/O引脚,且对可编程逻辑,存储块和其它特性进行了最优的组合,具有许多新的增强特性低成本的配置器件编辑Altera为配置Cyclone II FPGA提供了低成本的串行配置器件。

这些串行配置器件定价为批量应用,成本是相应Cyclone II FPGA的10%。

四个串行配置器件(1Mbit,4Mbit,16Mbit和64Mbit)提供了节省空间的8脚和16脚SOIC封装。

器件中任何不用于配置的存储器可用于一般存储,进一步增强其价值。

IP编辑Altera也为Cylcone II器件客户提供了40多个可定制IP核,Altera和Altera Megafunction伙伴计划(AMPPSM)合作者提供的不同的IP核是专为Cyclone II架构优化的,包括:Nios II嵌入式处理器;DDR SDRAM控制器;FFT/IFFT;PCI编译器;FIR编译器;NCO编译器;POS-PHY编译器;Reed Solomon 编译器;Viterbi编译器等等。

II.数码管显示器液晶显示器按其功能可分为三类,笔段式液晶显示器,字符点阵式液晶显示器和图形点阵式液晶显示器。

前两种可以显示数字,字符,符号等。

而图形点阵式液晶显示器还可以显示汉子和任意图形,达到图文并茂的鲜果。

在本课程设计中,受到试验箱的限制,在这里使用的是基本的数码管显示。

当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。

如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。

LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。

小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。

发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。

常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。

二.系统设计2.1设计思想2.1.1课题背景众所周知,随着科学技术的发展,以及数字电路的各种产品广泛应用,传统意义上的机械锁应用领域有限,且方便性不高。

由于其构造简单,多数采用物理性结构且多数有常识的人对其构造了如指掌,安全性不高。

相对机械锁,电子密码锁其保密性高,使用灵活性好,安全系数高,可实时改变其密码,使用极其方便,在当今社会得到了极其广泛的应用,也将是未来发展的趋势。

本设计使用EDA设计,使设计过程得到高度自动化,其具有强大的设计、测试、仿真分析、管理等功能。

使用EDA环境完成电路的系统综合设计和仿真。

在数字信息技术高速发展的今天,越来越多的地方需要电子密码锁来进行信息的加密与保密,而这种功能是传统机械锁无法实现的,因此,电子密码锁的设计越来越重要。

其设计直接关系到其使用的安全性,灵活性,实用性,以及用户体验。

所以,在这个背景下,学会和掌握密码锁的设计是尤其重要的,而且要在这个基础上,不断提高其灵活,实用,及用户体验性。

2.1.2设计目的1.以往机械锁使用繁琐,安全性低,灵活性差,应用领域有限。

而密码锁可以应用于各个领域,如电子产品的保密,系统程序的保密等各种数字信息产品的加密保密。

还可通过外接物理系统,取代传统机械锁,应用于日常生活的方方面面,例如最基本的门锁。

可以说电子密码锁功能强大,安全性高,灵活性强,必将是未来发展的趋势。

本设计基于Verilog HDL语言来设计密码锁,可以快速、灵活地设计出符合各种要求的密码锁。

2.掌握FPGA的设计方法与应用。

2.2工作原理及系统框图1、四个键,确认键,开始复位键,解密键,更改密码键。

2、密码长度为5位,设置一个初始密码88888。

3、在系统上电时,输入88888(数码管同步显示),按下确认键即可开锁(密码正确,LED 灯亮)。

4、开锁状态下,按下更改密码键即可通过4*4矩阵键盘输入新密码。

5、新密码数据格式为0~F6、按确认键,新密码生效。

7、按下解密键,输入新密码,按下确认键可解锁。

8、重复上述步骤,输入新密码,即可开锁,且密码正确情况下LED 灯亮若密码不正确,则LED 灯不亮,锁闭,可继续输入密码,当三次输入密码错误时蜂鸣器响予以警告。

9、以上为整个系统的工作原理及状态。

10、实验参考框图。

11、总体框图如下总体框图调用部分顶层模块报警部分蜂鸣器密码设置4*4矩阵键盘 显示部分七段数码管LED 灯指示LED 灯提示电路 蜂鸣器报警电路输入按扭开关输入锁存电路密码存储电路开锁控制电路数码管显示电路 控制模块总原理图:2.3.子模块输入输出和功能密码锁分为六个个模块:①顶层模块、②数码显示模块、③蜂鸣器模块、④控制模块、⑤LED灯指示模块、⑥密码输入模块。

其中由顶层模块调其他分模块来实现密码锁功能。

1.顶层及控制模块实现几个模块的配合工作,它能实现对密码的设置和显示,同时在密码正确时LED 灯亮,错误三次时通过蜂鸣器发出警报。

2. 数码管显示模块数码管常用于电子产品的显示部分,原理简单易于实现,这里为5个密码,需要5个数码管来显示。

6个输入,其中CLK 为时钟信号,segData1--5为每个密码。

两个输出,segCtl[7..0]对数码管片选,segData[7..0]为译码后的段控制信号。

3、蜂鸣器模块蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用各类电子产品中作发声器件。

如图为其原理图:图 1.1 蜂鸣器原理图结构蜂鸣器功能实现:程序共有两个输入信号分别为ENA,clk,输出为COUT,密码输入错误三次,ENA置1,COUT置1,蜂鸣器响,需要注意的是,蜂鸣器模块时钟频率不能过快。

5.LED灯指示模块为了显示明显,用了所有LED,给同一pass_LED信号,低电平有效。

6.键盘输入模块实时动态扫描,输出按键有效值key_value[4..0],及按键标志位key_flag。

三.软件设计3.1程序流程图和状态机程序流程图:状态机:3.2程序清单(1)Dingceng模块moduledingceng(clk,key_GM,key_QR,key_JM,key_RST,key_ready,key_value,M1,M2,M3,M4,M5,filed_alar m,pass_led);input clk;input key_GM,key_QR,key_JM,key_RST,key_ready;input [4:0] key_value;output [3:0] M1;output [3:0] M2;output [3:0] M3;output [3:0] M4;output [3:0] M5;output filed_alarm;output pass_led;reg [3:0] M1;reg [3:0] M2;reg [3:0] M3;reg [3:0] M4;reg [3:0] M5;reg filed_alarm,pass_led;reg JM_flag;reg GM_flag;reg sign;reg [2:0] main_state;reg [3:0] Old1;reg [3:0] Old2;reg [3:0] Old3;reg [3:0] Old4;reg [3:0] Old5; //cun fang yuan shi mi mareg [2:0] Q,QQ;//ji lu mi ms shu ru ci shureg [1:0] try_times;parameter DD=3'b000,RS=3'b001,JM=3'b010,GM=3'b011,QR=3'b100;always@(posedge clk )if(!key_RST) main_state<=RS;elsebegincase(main_state)DD:beginif(!key_JM) main_state<=JM;else if((key_GM==0)&&(JM_flag==1))beginpass_led<=1;GM_flag<=1;filed_alarm<=0;main_state<=GM;endelsemain_state<=DD;endRS:beginM1<=0;M2<=0;M3<=0;M4<=0;M5<=0;Old1<=8;Old2<=8;Old3<=8;Old4<=8;Old5<=8;filed_alarm<=0;JM_flag<=0;try_times<=0;main_state<=DD;pass_led<=1;Q<=0; QQ<=0;sign<=0;endJM:beginif(key_ready==1) sign<=1;elseif(key_ready==0 && sign==1)beginsign<=0;case(Q)0:begin M1<=key_value;Q<=3'b001; main_state<=DD;end1:begin M2<=key_value;Q<=3'b010; main_state<=DD;end2:begin M3<=key_value;Q<=3'b011; main_state<=DD;end3:begin M4<=key_value;Q<=3'b100; main_state<=DD;end4:begin M5<=key_value;Q<=3'b000; main_state<=QR;endendcaseendelsemain_state<=JM;endGM:beginif(key_ready==1) sign<=1;elseif(key_ready==0 && sign==1)beginsign<=0;case(QQ)0:begin M1<=key_value;QQ<=3'b001; main_state<=DD;end1:begin M2<=key_value;QQ<=3'b010;main_state<=DD;end2:begin M3<=key_value;QQ<=3'b011; main_state<=DD;end3:begin M4<=key_value;QQ<=3'b100; main_state<=DD;end4:begin M5<=key_value;QQ<=3'b000; main_state<=QR;endendcaseendelsemain_state<=GM;endQR:if(key_QR==0)beginif(GM_flag==1)beginOld1<=M1;Old2<=M2;Old3<=M3;Old4<=M4;Old5<=M5;GM_flag<=0;main_state<=DD;endelseif((Old1==M1)&&(Old2==M2)&&(Old3==M3)&&(Old4==M4)&&(Old5==M5))beginpass_led<=0;filed_alarm<=0;try_times<=2'b00;JM_flag<=1;M1<=0;M2<=0;M3<=0;M4<=0;M5<=0;main_state<=DD;endelse if(try_times>2'b01)beginfiled_alarm<=1;pass_led<=1;try_times<=2'b00;main_state<=DD;M1<=0;M2<=0;M3<=0;M4<=0;M5<=0;endelsebegintry_times<=try_times+2'b01;pass_led<=1;filed_alarm<=0;main_state<=DD;M1<=0;M2<=0;M3<=0;M4<=0;M5<=0;endendelse main_state<=QR;default:;endcaseendendmodule(2)键盘模块keyboardmodule keyboard(clk,rst,inrow,outcol,//行输入,列读出key_value,//键值key_flag,);input clk,rst; //时钟25mhzinput [3:0] inrow;output [3:0] outcol;output [4:0] key_value;output key_flag;reg clock; //定义25时钟reg key_flag; //按键标志位reg jud_flag; //按键标志位reg [3:0] col; //行输入扫描值reg [3:0] inrow_reg; //寄存扫描列值reg [3:0] outcol_reg; //寄存扫描行值reg [2:0] state; //状态标志-判断是否有按键按下reg [4:0] key_value; //读取按键值reg [19:0] count;reg [7:0] keynum_1; //寄存扫描列值//产生25hz时钟always@(posedge clk)begincount<=count+1;if(count>=20'd50000)beginclock<=~clock;count<=0;endend//////////////////////////////////////////////通过6状态状态机完成对键盘的扫描:总确定是否有按键—>逐行扫描—>统一处理always@(posedge clock)if(rst==1)beginstate<=0; key_flag<=1'b0;endelsebegincase(state)0: //初值0begincol<=4'b0000; //行扫描输入值key_flag<=1'b0;if(inrow!=4'b1111) //有键按下beginstate<=1;col<=4'b1110; //开始扫描endelse state<=0; //总体判断是否有按键按下,确定按键标志位end1:beginif(inrow!=4'b1111)beginstate<=5; //有按键时直接进入状态5endelsebeginstate<=2;col<=4'b1101;endend2:beginif(inrow!=4'b1111)beginstate<=5;endelsebeginstate<=3;col<=4'b1011;endend3:beginif(inrow!=4'b1111)beginstate<=5;endelsebeginstate<=4;col<=4'b0111;endend4:beginif(inrow!=4'b1111)beginstate<=5;endelse state<=0;end5:beginif(inrow!=4'b1111)begininrow_reg<=inrow; //保存扫描行值//读得outcol_reg<=col; //保存扫描列值key_flag<=1'b1; //有键按下为1state<=0; //连续扫描状态5直至无按键按下,从0开始endelse state<=0;endendcaseend/////////////////////////////////////////////////////////always@(clock)beginif (keynum_1 == {outcol_reg,inrow_reg})begin //连续2次检测到的按键值相同,稳定jud_flag<=1;endelsebeginjud_flag<=0;keynum_1<={outcol_reg,inrow_reg};endend//对键盘扫描结果译码得到按键数值always@(posedge key_flag)begin// if(key_flag==1'b1)begincase({outcol_reg,inrow_reg})8'b1110_1110:begin key_value<=0;end8'b1110_1101:begin key_value<=1;end8'b1110_1011:begin key_value<=2;end8'b1110_0111:begin key_value<=3;end8'b1101_1110:begin key_value<=4;end8'b1101_1101:begin key_value<=5;end8'b1101_1011:begin key_value<=6;end8'b1101_0111:begin key_value<=7;end8'b1011_1110:begin key_value<=8;end8'b1011_1101:begin key_value<=9;end8'b1011_1011:begin key_value<=10;end8'b1011_0111:begin key_value<=11;end8'b0111_1110:begin key_value<=12;end8'b0111_1101:begin key_value<=13;end8'b0111_1011:begin key_value<=14;end8'b0111_0111:begin key_value<=15;enddefault: key_value <= 16; //无按键按下或无效按键组合endcaseendendassign outcol=col;endmodule(3)显示模块showmodule show(CLK,segData,segCtl,segData_1,segData_2,segData_3,segData_4,segData_5 );input CLK;output reg [7:0]segData;output reg [4:0]segCtl;input [3:0]segData_1;input [3:0]segData_2;input [3:0]segData_3;input [3:0]segData_4;input [3:0]segData_5;reg [7:0]segDataReg; //段选扫描reg [4:0]segCtlReg; //位选扫描reg [2:0]segState; //状态扫描//////////////////////////////////////////////////////////////////////////// reg [15:0]cnt1ms;reg clk1000Hz;always@(posedge CLK) //1ms beginif(cnt1ms==16'd12500)begincnt1ms<=16'b0;clk1000Hz<=~clk1000Hz;endelsecnt1ms=cnt1ms+16'b1;end/////////////////////////////////////////////////////////////////////////////// always@(posedge clk1000Hz) //状态扫描begincase(segState) //初值为03'b000:beginsegCtlReg<=5'b00001;segState<=segState+3'b001; //扫描下一状态segDataReg<=segData_1; //段选、位选同时传值end3'b001:beginsegCtlReg<=5'b00010;segState<=segState+3'b001;segDataReg<=segData_2;end3'b010:beginsegCtlReg<=5'b00100;segState<=segState+3'b001;segDataReg<=segData_3;end3'b011:beginsegCtlReg<=5'b01000;segState<=segState+3'b001;segDataReg<=segData_4;end3'b100:beginsegCtlReg<=5'b10000;segDataReg<=segData_5;segState<=3'b000;enddefault:;endcaseend////////////////////////////////////////////////////////////////////////////////// always@(posedge CLK)beginsegCtl<=segCtlReg; //位选段选同时赋值、数码管译码case(segDataReg)4'd15:segData<=8'b1000_1110;4'd14:segData<=8'b1000_0110;4'd13:segData<=8'b1010_0001;4'd12:segData<=8'b1100_0110;4'd11:segData<=8'b1000_0011;4'd10:segData<=8'b1010_0000;4'd9:segData<=8'b1001_0000;4'd8:segData<=8'b1000_0000;4'd7:segData<=8'b1111_1000;4'd6:segData<=8'b1000_0010;4'd5:segData<=8'b1001_0010;4'd4:segData<=8'b1001_1001;4'd3:segData<=8'b1011_0000;4'd2:segData<=8'b1010_0100;4'd1:segData<=8'b1111_1001;4'd0:segData<=8'b1100_0000;default:;endcaseendendmodule(4)蜂鸣模块speakermodule speaker(ENA,CLK2,COUT); //ENA为使能信号,CLK为时钟信号规定工作频率input ENA,CLK2;output COUT;reg COUT;reg [20:0] Clk_f;reg f;always@(posedge CLK2)beginif(Clk_f==2500)beginClk_f<=0;f<=~f;endelseClk_f<=Clk_f+1;endalways@(posedge CLK2 ) //CLK2为敏感信号beginif(ENA) //当ENA为1并且Q1小于6时执行下面的语句//ENA为0时,执行下面的语句COUT<=f;elseCOUT<=0;endendmodule四.调试及结果4.1模块仿真输入正确密码由pass_led为0,可知密码输入正确。

相关文档
最新文档