FPGA基于verilog HDL的密码锁
基于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的密码锁
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 友好的图形界面及简便的使用方法。
《基于VHDL语言和FPGA的电子密码锁》范文
《基于VHDL语言和FPGA的电子密码锁》篇一一、引言随着科技的发展,电子密码锁已逐渐取代传统的锁具,成为了安全领域的重要组成部分。
而作为电子密码锁核心技术之一的FPGA(现场可编程门阵列)技术,以及VHDL语言编程的灵活性,更是对密码锁设计起到了重要的推动作用。
本文旨在详细探讨基于VHDL语言和FPGA的电子密码锁的设计与实现。
二、VHDL语言与FPGA概述VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述电子系统的结构和行为。
而FPGA则是一种可编程逻辑器件,其内部由许多可配置的逻辑单元组成,通过编程可以实现各种复杂的数字电路功能。
将VHDL语言与FPGA相结合,可以实现电子密码锁的高效、灵活和可定制的设计。
三、电子密码锁的设计要求在基于VHDL语言和FPGA的电子密码锁设计中,首先需要明确设计要求。
这些要求包括:高安全性、易于使用、良好的扩展性以及低成本等。
此外,密码锁应能抵抗各种常见的攻击方式,如暴力破解等。
四、基于VHDL的密码锁设计与实现基于VHDL语言的电子密码锁设计主要分为几个模块:密码输入模块、解码模块、控制模块和输出模块等。
密码输入模块负责接收用户输入的密码;解码模块对输入的密码进行解码,判断其是否正确;控制模块根据解码结果控制输出模块的开关状态;而整个系统则由FPGA实现。
在VHDL编程中,需要详细描述各个模块的功能、接口以及它们之间的通信方式。
例如,密码输入模块应能接收一定长度的密码输入,并将其传递给解码模块。
解码模块则根据预设的算法对密码进行解码,并将结果传递给控制模块。
控制模块根据解码结果控制输出模块的开关状态,以实现密码锁的开启或关闭。
五、FPGA的实现与优化在FPGA上实现电子密码锁时,需要利用FPGA的编程工具进行编程和配置。
首先,将VHDL代码编译成可在FPGA上运行的二进制代码;然后,将二进制代码下载到FPGA中,实现对电子密码锁的硬件配置。
基于-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.数字密码锁的工作原理数字密码锁通常由键盘、控制单元和执行单元等组成,其工作原理是用户通过键盘输入密码,控制单元接收并验证密码的正确性,然后执行单元根据验证结果控制门禁的开启或关闭。
三、基于FPGA的数字密码锁设计1.基于FPGA的数字密码锁的优势相比传统的基于单片机或嵌入式系统的数字密码锁,基于FPGA的数字密码锁具有更高的灵活性和可扩展性。
FPGA可以根据实际需求进行灵活的硬件逻辑设计,同时兼容多种通信协议和接口,使得其在数字密码锁设计中具有显著的优势。
2.基于FPGA的数字密码锁的设计原理基于FPGA的数字密码锁主要包括密码输入模块、密码验证模块和门禁控制模块。
密码输入模块负责接收用户输入的密码,密码验证模块根据预设的密码进行验证,门禁控制模块根据验证结果控制门禁的开启或关闭。
3.基于FPGA的数字密码锁的设计流程(1)确定需求:明确数字密码锁的功能和性能要求。
(2)硬件设计:设计数字密码锁的硬件逻辑,包括键盘接口、密码验证逻辑和门禁控制逻辑。
(3)软件设计:设计数字密码锁的用户界面和控制逻辑。
(4)综合与实现:将硬件和软件进行综合,实现数字密码锁的功能。
四、基于FPGA的数字密码锁的实现1.硬件设计(1)键盘接口设计:采用矩阵式键盘接口,利用FPGA内部的GPIO 接口进行连接。
(2)密码验证逻辑设计:采用逻辑门设计密码验证逻辑,包括密码存储、密码输入和密码比对等功能。
基于Verilog的FPGA的电子密码锁的设计
基于 FPGA 设计的电子密码锁是一个小型的数字系统,与普通机械锁相比,具有许多独特的优点:保密性好,防盗性强,可以不用钥匙,记住密码即可开锁等。
目前使用的电子密码锁大部份是基于单片机技术,以单片机为主要器件。
在实际应用中,程序容易跑飞,系统的可靠性较差。
本文介绍的一种基于现场可编辑门阵列 FPGA 器件的电子密码锁的设计方法,采用 VHDL 语言对系统进行描述,并在EP3C10E144C8 上实现。
通过仿真调试,利用可编程逻辑器件 FPGA 的电子密码锁的设计基本达到了预期目的。
固然,该系统在一些细节的设计上还需要不断地完善和改进,特殊是对系统的扩展有很好的使用系统和设计的价值。
现场可编程门阵列; VHDL 语言;电子密码锁FPGA—based design of the electronic code lock is a small digitalsystem. It has many unique advantages:good privacy and security , it do not need the key but remember password to unlock, and so on while it compare to ordinary mechanical locks. At present, the electronic code lock is most used of SCM technology 。
In practice, however, the process easy run to fly。
So the reliability of this system is poor。
The paper introduced a field programmable gate arrays FPGA devices to design electronic password lock 。
基于FPGA和VHDL的数字密码锁的设计与实现
基于FPGA和VHDL的数字密码锁的设计与实现
自古以来人们对物品安全就十分重视,数字化的今天,电子锁正在逐步取代以往的机械锁被广泛运用在门禁、银行和保险柜。
然而,这些基于单片机的密码锁可靠性较差,而且功能拓展有限。
随着物联网技术的发展,人们对电子锁安全性和可靠性又提出了新的要求。
本文所述的FPGA,即现场
可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
由于其高集成度,使得电子产品在体积上大大缩减,且具有可靠、灵活、高效等特性,己备受设计师们的青睐。
1 系统概述
1.1 功能概述
(1)初始密码为000000,按C键设置密码,密码设置完成后按A
键即上锁。
(2)以4&TImes;4键盘为输入设备,按B键开始密码输入,串行输入6位密码,输入完成后按#键,确认密码输入完成。
七段数码管将显示用户。
基于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的数字密码锁
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;目录摘要................................................. 错误!未定义书签。
基于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密码锁设计
基于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的数字密码锁的设计学生姓名:江留胜学生学号:**********系别:电气信息工程学院专业:电子信息工程届别: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标准。
基于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 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 友好的图形界面及简便的使用方法.1.2所用硬件介绍硬件的总体设计:故由上图,将整个硬件电路部分主要分成五个部分,即:FPGA电路设计,数码管显示驱动电路设计,温度传感器电路设计,报警电路设计,键盘矩阵控制电路设计。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 友好的图形界面及简便的使用方法。
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、以上为整个系统的工作原理及状态。
1011 总体框图总原理图: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,fi led_alarm,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;endendcasee ndelsemain_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;endendcasee ndelsemain_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)b eginstate<=0; key_flag<=1'b0;e ndelseb egincase(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; //有按键时直接进入状态5 endelsebeginstate<=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;endendcasee nd/////////////////////////////////////////////////////////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) //1msbeginif(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,可知密码输入正确。