基于VHDL-4位电子密码锁的设计说明
4位数字密码锁毕业设计

4位数字密码锁毕业设计华中科技大学文华学院毕业设计(论文)题目:4位数字密码锁设计(密码设置及验证电路)学生姓名:学号:学部(系):信息科学与技术学部专业年级: 08通信工程指导教师:陈超原职称或学位:摘要:本设计利用FPGA作为核心控制板,用Verilog 硬件描述语言进行编程,利用计算机软硬件控制技术,设计一个基于FPGA的数字密码锁,能实现密码设定(如果密码没设定则默认密码为0000),密码输入及验证,当密码输入错误时报警或则指示灯亮;反之,密码输入正确时,另外一个指示灯亮。
将程序下载到Altera公司的Cyclone系列目标芯片EP2C5T144C8上调试通过,并观察实际现象,满足设计要求。
关键词:FPGA Verilog 数字密码锁AbstractThe design using the FPGA as the core of the control panel, Verilog hardware description language for programming, Computer hardware and software control technology, design an FPGA-based digital code lock, Set the password(if the password is not set then the default password is 000000), Password input and verification, Alarm or the light when the password input error; On the contrary, enter the correct password , a light. Program downloaded to the target chip EP2C5T144C8 Altera’s Cyclone series through debugging , and to observe the actual phenomenon , to meet the design requirements.Keywords: FPGA Verilog Digital code lock引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变得尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐,电子密码锁的使用体现了人们消费水平、保安意识和科技水平的提高,而且避免了携带甚至丢失钥匙的麻烦。
四位电子密码锁.

专业工程设计说明书题目:4位电子密码锁设计院(系):电子工程与自动化学院专业:测控技术与仪器(卓越)学生姓名:***学号:**********指导教师:**2015年1月16日锁是置于可启闭的器物上,用以关住某个确定的空间范围或某种器具的,必须以钥匙或暗码打开的扣件。
锁具发展到现在已有若干年的历史了,人们对它的结构、机理也研究得很透彻。
随着社会科技的进步,锁已发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。
当今安全信息系统应用越来越广泛,特别在保护机密、维护隐私和财产保护方面起到重大作用,而基于电子密码锁的安全系统是其中的组成部分,因此研究它具有重大的现实意义。
本设计由主控芯片51单片机,单片机时钟电路,矩阵键盘,数码管的动态显示,报警电路和开锁电路组成。
单片负责控制整个系统的执行过程。
关键词:AT89S51、时钟电路、矩阵键盘、数码管的动态显示、报警电路,开锁电路。
引言 (1)1课程设计题目 (1)2 系统设计 (2)2.1 总的系统设计结构图 (2)2.2系统硬件设计 (2)3 AT89S52最小系统设计 (3)3.1 时钟电路设计 (3)3.2 复位电路设计 (4)4 键盘及显示报警电路的硬件设计 (5)4.1 矩阵键盘电路设计 (5)4.2 显示电路硬件设计 (5)4.3 继电器驱动电路及报警电路设计 (6)4.3.1继电器简介 (6)4.3.2 固态继电器驱动电路设计 (7)4.3.3报警提示电路 (7)5 系统软件设计 (8)5.1主程序模块 (9)5.2密码比较判断模块 (9)5.3键盘扫描模块 (9)5.4修改密码模块 (10)5.5数码管液晶显示模块 (11)6 总体调试 (11)7 总结 (12)参考文献 (13)附录 (14)引言通过本次课设的理解与掌握:1、熟悉掌握单片机的结构及工作原理,锻炼独立设计、制作和调试单片机应用系统的软硬件开发的过程和方法。
2、通过MCS-51单片机应用系统的设计与编程应用,将理论知识和实际应用结合起来,加深对电子电路、电子元器件、印刷电路板等方面的知识,提高在软件编程、排错调试、焊接技术、相关设备的使用技能。
VHDL设计电子密码锁

( 六) 上市时间快,成本低。VHDL 语言描述快 捷,修改方 便,使 产 品 设 计 的 前 期 风 险 投 资 降 到 最 低,提高产品上市的速度,同时节省了人力。
三、电子密码锁的设计( 键盘和显示电路) 电子密码锁的设计将分成三个部分,键盘接口 电路的设计、密码锁的控制电路设计、输出七段显示 电路的设计。 ( 一) 键盘接口的设计 键盘上的每一个按键其实是一个开关电路,当 某键被按下时,该按键的接点会呈现逻辑 0 的状态, 反之,未被按下时则呈现逻辑 1 状态。扫描信号由 KY3 ~ KY0 进入键盘,变化顺序为 1110 →1101 → 1011 →0111→1110 的状态。每次扫描一排,依次的 周而复始。 若从 KX2 ~ KX0 读出皆为 1 时,代表该列没有 按键按下,则不进行按键编码的动作,反之,有按键 按下时,应将 KX2 ~ KX0 读出值送至译码电路. 且 将编码结果存储于寄存器中。 1. 时序产生电路———是用一个自由计数器来产 生各种需要的频率。 2. 键盘扫描电路———提供键盘扫描信号。 3. 弹跳消除电路———按键抖动会引起一次按键 被误读多次,为了避免这种情况的发生,该电路可以 在键闭合 稳 定 时 读 取 按 键 的 状 态,确 保 键 的 一 次 闭合。 4. 键盘译码电路———除了负责将键盘送出的数 据进行译码之外,另一任务是在译码同时,判断按下 的键盘是数字见还是功能键。 5. 键盘存储电路———因为次扫描会产生新的按 键数据,可能会覆盖前面数据,所以需要一个按键存 储电路,用移动寄存器构成。
一、引言 随着生产和科学技术的发展,复杂的逻辑系统 越来越广泛地运用于科学和工程实践当中。那么这 样一来,必然要求整个电路从设计规模和复杂程度 上有一个大幅度的提高而封装尺寸则尽量要求做到 微小化。为此,生产商必须采用少量的 IC 器件和面 积尽可能小的 PCB 板来研制高集成化的复杂系统。 但是,从设计的角度来看,以往采用的那种电原理图 的设计输入的门级描述方法却严重制约了产品的开 发能力。随着半导体技术的不断进步,现代电子产 品的复杂度也在日益加大,一个电子系统可能由数 万个中小规模通用集成电路构成,这就带来了体积 大、功耗大、可靠性差的问题,解决这一问题的有效 方法就 是 采 用 ASIC ( Application Specific Integrated Circuits) 芯片进行设计。 二、VHDL 的特点 可编程 ASIC 也称为可编程逻辑器件( Programmable Logic Device) 。可编程逻辑器件是 70 年代发 展起来的一种新型逻辑器件,当初主要用以解决数 字系统中各类存储问题,发展至今已经成为实现数 字系统的一种重要手段。可编程逻辑器件实现了设 计阶段的硬件仿真( Emulation) ,使得微电子设计实 现了早期集成和软硬件联合验证。设计者可以快速 地创建一个芯片设计的硬件模型,利用仿真软件将
四位电子密码锁.

专业工程设计说明书题目:4位电子密码锁设计院(系):电子工程与自动化学院专业:测控技术与仪器(卓越)学生姓名:***学号:**********指导教师:**2015年1月16日锁是置于可启闭的器物上,用以关住某个确定的空间范围或某种器具的,必须以钥匙或暗码打开的扣件。
锁具发展到现在已有若干年的历史了,人们对它的结构、机理也研究得很透彻。
随着社会科技的进步,锁已发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。
当今安全信息系统应用越来越广泛,特别在保护机密、维护隐私和财产保护方面起到重大作用,而基于电子密码锁的安全系统是其中的组成部分,因此研究它具有重大的现实意义。
本设计由主控芯片51单片机,单片机时钟电路,矩阵键盘,数码管的动态显示,报警电路和开锁电路组成。
单片负责控制整个系统的执行过程。
关键词:AT89S51、时钟电路、矩阵键盘、数码管的动态显示、报警电路,开锁电路。
引言 (1)1课程设计题目 (1)2 系统设计 (2)2.1 总的系统设计结构图 (2)2.2系统硬件设计 (2)3 AT89S52最小系统设计 (3)3.1 时钟电路设计 (3)3.2 复位电路设计 (4)4 键盘及显示报警电路的硬件设计 (5)4.1 矩阵键盘电路设计 (5)4.2 显示电路硬件设计 (5)4.3 继电器驱动电路及报警电路设计 (6)4.3.1继电器简介 (6)4.3.2 固态继电器驱动电路设计 (7)4.3.3报警提示电路 (7)5 系统软件设计 (8)5.1主程序模块 (9)5.2密码比较判断模块 (9)5.3键盘扫描模块 (9)5.4修改密码模块 (10)5.5数码管液晶显示模块 (11)6 总体调试 (11)7 总结 (12)参考文献 (13)附录 (14)引言通过本次课设的理解与掌握:1、熟悉掌握单片机的结构及工作原理,锻炼独立设计、制作和调试单片机应用系统的软硬件开发的过程和方法。
2、通过MCS-51单片机应用系统的设计与编程应用,将理论知识和实际应用结合起来,加深对电子电路、电子元器件、印刷电路板等方面的知识,提高在软件编程、排错调试、焊接技术、相关设备的使用技能。
四位密码锁电路课程设计报告

四位密码锁电路课程设计报告一、设计要求设计一种四位密码锁电路,需要具备以下功能:1. 开关控制:设有一个开关,可以开启或关闭密码锁电路。
2. 设置密码:密码为四位数字,可以自由设置。
3. 输入密码:密码通过数码管实时显示,可以输入四位数字的密码。
4. 锁定/解锁:输入正确的密码后,可以解锁,否则锁定密码锁。
5. 报警提示:在输入错误密码超过三次的情况下,会有报警提示。
二、电路设计1. 功能分析要实现以上要求的四位密码锁设计,可以将电路分为以下部分:1.1 时钟信号控制器:使用定时器生成一个,50ms的定时器中断来产生时钟信号,控制键盘扫描和密码输送。
1.2 数码管驱动:使用74LS47电路进行数码管动态扫描驱动。
同时,用4094低频同步移位寄存器输出数码管所显示的数字。
1.3 锁控制电路:使用继电器电路来实现锁的控制。
1.4 按键输入电路:使用74LS74 D触发器和IP3386A电位器来实现按键的输入。
1.5 密码比较电路:使用四路与非门来进行密码的比较操作。
1.6 报警提示:使用蜂鸣器进行声音提示。
2. 详细设计2.1 时钟信号控制器时钟信号控制器由XTAL时钟电路、定时器电路和键盘扫描电路组成。
2.1.1XTAL时钟电路XTAL时钟电路的工作原理是在石英晶体的两端加了一对金属片,当晶体被振动时,金属片之间产生的压电效应会生成一个稳定的频率和幅度的交变电压信号,这个信号的频率稳定高,精度高。
因此本电路选用4MHZ的外接石英晶体。
2.1.2 定时器电路定时器电路主要由1个555定时器芯片构成。
555定时器芯片是一种多功能集成电路,主要有两种工作方式:单稳态和多稳态。
本电路采用555定时器来实现一个50ms定时器。
2.1.3 键盘扫描电路键盘采用4×3的矩阵键盘,采用行列扫描方式进行扫描。
用74LS74 D触发器将键盘的行信号和处理器的时钟信号连接,通过对D触发器读写的方式来实现行信号的输入和输出。
设计四数字电子密码锁.doc

数字电子密码锁一、设计目的与要求:目的:掌握矩阵式键盘的工作原理、设计方法;掌握译码器的应用;掌握状态机的设计方法,掌握数码管的控制。
要求:设计一个数字电子密码锁,密码为3 位,密码锁由键盘控制,显示采用数码管及LED灯。
功能:1、密码输入:每按下一个数字键,要求在数码管上显示,并依次左移;输入错误时,按退格键,清除前一个输入的数字;输入完毕,按确认键。
2、开锁:按开锁键,检查输入的密码是否正确,正确才开锁,成功。
3、上锁:按上锁键,可以直接上锁或者设定新密码上锁。
4、密码修改:按下修改键,必须先核对原密码,正确后可以输入3位数字,设为新的密码。
5、报警:开锁输入密码,连续错误三次,则禁止输入密码,并发出报警信号,用红灯一直亮表示。
6、解除报警:按复位键,解除报警状态,实际应用中复位键设置在其他部位,不可设置在键盘上。
7、万能密码:电锁维护者使用,在程序中暂时统一设置为999。
8、其他要求:输入键盘为矩阵式,不使用直接式;条件允许时可以使用语音模块代替指示灯的表示。
二、电路组成:为达到以上功能,可将数字电子密码锁分为以下几个模块:1、键盘接口电路:键盘矩阵、键盘扫描、键盘消抖、键盘译码及按键存储。
2、密码锁控制电路:数字按键输入、存储及清除;功能按键的设计:退格键、确认键、开锁键、上锁键、修改键、解除报警键;密码清除、修改与存储。
密码锁的上锁与开锁。
3、输出显示电路BCD译码、动态扫描电路、指示灯电路(或者为语音控制电路)。
三、功能电路的设计:1、键盘接口电路:图1(1)矩阵式键盘工作原理:矩阵式键盘是一种常见的输入装置,在计算机、电话、手机、微波炉等各工电子产品中被广泛应用。
如图2所示为一4×4 矩阵式键盘。
矩阵式键盘以行、列形式排列,图中为4 行4 列,键盘上的每一个按键盘其实是一个开关电路,当某键被按下时,该按键所对应的位置就呈现逻辑0的状态,键盘的扫描可以以行扫或列扫方式进行,图中为行扫方式,KEYR3—KEYR0 为扫描信号,其中的某一位为0即扫描其中的一行,具体见表1。
基于VHDL语言有限状态机的电子密码锁设计
设计 , 按功能划分为若干模块, 然后对每一个模块进 一步细分, 直 至得 到简单 易实现 的子模块 ,最后分别对各个子模块进行 V HDL建模 。所设计的 电子密码锁 F P G A 内部系统结构框 图 如图 1 所示 。系统主要 由 6个模块构成 , 分别是控制模块、 计 数器模块 、 寄存器模块 、 比较模块 、 编码模块和显示模块 。
・密码脉冲 ( p s i ) 作为计数 时钟 , 计数
值 输 出作 为 寄 存 器 的地 址 , 当 计 数器 计 到 4时 , 计 数 器计 满 信 号c i n = l , 如 果 通 过 比较模 块 比较 密 码 正 确 的 话 , 则 进 入 密码 初 验正确状态 , 如果密码错误 , 则进入密码初验错误状态; 在 密
2 . 1控 制模 块 的设计 与 实现
控 制模 块是整个系统的核心,其主 要作 用是接 收按键 和 其 他模块传 递来的信 号,然后 根据 系统的功能产 生相 应的控 制 信号并送 到相 关的模块 ,同时控制钥匙信 号 ( 开锁或上锁) 和报警信号。控制模块采用有限状态机进行设计,根据系统
还包括无线二维码识别器、教学网络服务平台的设计及各部 件之间的多种无线通信对接、 音视频互动输 出等 , 并且学习平 台的有效利用还离不开二维码教学资源的制作及相应网络资
源的建设 。
[ 4 ] 徐凯, 钱燕, 魏宗群, 蔡俊 , 仇捷. 基于 T MS 3 2 0 D M3 6 5的 3 G 实时视频传输 系统 设计 与实现[ J ] . 浙江农业科学, 2 0 1 2 基金项 目: 淮安信息职业技术学院科研基 金项 目“ 基于物联网 的互动学习平 台研 发( 课题编号: h x y q 2 0 1 3 0 1 3 ) ” 研 究成果 。 作者简介: 龚佑红 ( 1 9 8 0 . ) , 女, 湖北公安人, 硕士 , 讲师 , 工程
《基于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中,实现对电子密码锁的硬件配置。
VHDL密码锁实验报告
华南师范大学实验报告****: ***学号: ***********_专业: 通信工程年级班级: 11级电通6C课程名称: 可编程数字系统实验项目: VHDL设计一密码锁试验时间: 2013年05月18日****: ***一、课程设计目的熟悉EDA工具,掌握用VHDL语言进行数字系统设计的基本方法和流程,提高工程设计实践能力。
二、设计任务设计一密码锁,用VHDL语言描述,用QuartusII工具编译和综合,并在实验板上实现,撰写实验报告。
数字锁即电子密码锁,锁内有预置密码,如果输入代码与锁内密码一致,锁被打开;否则,应封闭开锁电路,若多次输入错误密码,应发出报警信号。
三、功能要求与技术指标本设计设计一个4 位数字锁,并验证其操作。
1、基本功能:(1 )开锁密码为4 位十进制数,通过按钮输入密码,输入的密码在4个数码管上显示,若与锁内预置的密码一致,输出开锁信号(以点亮一个LED灯表示开锁)。
(2)按钮开关输入须消抖处理。
2、扩展功能:(1)用户可以设置锁内的密码;(2)若输入密码三次不正确,输出报警信号,报警信号可以通过闪烁LED或某个数码管上小数点指示。
(3)设置一个复位按键,忘记密码后可通过该复位按键恢复出厂原始密码,如原始密码为“1234”;(4)其它实用功能。
四、设计原理在数字电路设计中,自顶向下设计方法的主要思想是对数字系统进行划分,将复杂的设计原理简化为相对简单的模块设计,不同的模块用来完成数字系统中某一部分的具体功能。
此密码锁的设计可以分为以下几个模块:密码锁原理框图五、系统分析1、根据原理框图:系统大致可分为时钟模块,显示模块,控制模块。
时钟模块:密码锁的工作时钟由外部晶振提供,时钟频率为50Mhz。
对CLK进行分频输出三路时钟CLK1Khz,CLK1,CLK2,频率分别为1Khz,5hz,1hz。
由此,时钟分频模块原理框图如下:显示模块:数码管动态扫描模块以及数码管显示模块的时钟频率分别由CLK1Khz 和CLK提供。
VHDL电子密码锁课程设计
VHDL电子密码锁课程设计一、课程目标知识目标:1. 学生能理解VHDL语言的基本语法和程序结构,掌握利用VHDL进行数字电路设计的基本方法。
2. 学生能够描述电子密码锁的工作原理,了解其电路组成和功能模块。
3. 学生能够运用所学知识,设计并实现一个简单的电子密码锁程序。
技能目标:1. 学生能够运用VHDL语言进行代码编写,培养编程实践能力。
2. 学生通过课程设计,提高问题分析、解决能力,培养创新思维和团队协作能力。
3. 学生能够运用仿真软件对设计的电子密码锁进行功能验证,提高实际操作能力。
情感态度价值观目标:1. 学生通过课程学习,培养对电子技术和数字电路设计的兴趣,提高学习积极性。
2. 学生在课程实践中,树立正确的工程观念,认识到技术发展对社会进步的重要性。
3. 学生在团队协作中,学会尊重他人、沟通协作,培养良好的团队合作精神。
本课程旨在帮助学生将理论知识与实践相结合,通过电子密码锁的设计与实现,提高学生的编程能力、问题解决能力和团队协作能力,培养学生对电子技术的兴趣和正确价值观。
二、教学内容1. VHDL语言基础:包括VHDL的基本语法、数据类型、运算符、信号与变量、进程和顺序语句等,对应教材第1-3章内容。
2. 数字电路设计方法:介绍组合逻辑电路和时序逻辑电路的设计方法,包括触发器、计数器等基本电路的设计,对应教材第4-5章内容。
3. 电子密码锁原理:分析电子密码锁的工作原理,包括密码设置、验证机制和开锁逻辑等,对应教材第6章实例分析部分。
4. VHDL代码编写:根据电子密码锁的原理,指导学生进行VHDL代码编写,实现密码设置、验证和开锁功能,对应教材第7章编程实践部分。
5. 功能仿真与验证:教授学生使用仿真软件进行电子密码锁的功能验证,确保设计的正确性,对应教材第8章仿真技术部分。
6. 课程设计与实践:安排课程设计任务,指导学生分组进行电子密码锁的设计、编程、仿真和调试,培养学生实践能力和团队协作精神。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
理工大学本科实验报告题目:基于VHDL 4位电子密码锁的设计课程名称:数字电路课程设计学院(系):电子信息与电气工程专业:电子英强班级:学生:学号:完成日期:2013.7.8成绩:2013 年7 月08 日题目:基于VHDL 4位电子密码锁的设计1 设计要求○1电子密码锁为4位8421BCD码,多于4位,密码只取前4位。
○2在输入密码错误,给出一个错误信号,有三次输入机会,若三次密码都输入错误,则给出一个报警信号,此后只能由密码管理员取消报警信号。
○3在输入密码正确的情况下,可以再次设定密码。
○4每次输入一个密码,将显示在7段数码管上,并依次左移。
○5每次输入密码的时候,按取消(cancel)键可以取消这次密码的输入,课重新输入4位密码。
2 设计分析及系统方案设计在实验室DE2开发板的条件下,考虑到key键只有4个,可以用switch开关来实现密码输入模块,用switch[9]~switch[0] 来实现数字9~0的输入,并通过译码模块将其转化为8421BCD码,由8421BCD码来驱动7段数码管作为密码锁的显示模块。
每按一个键,产生一个上升沿,给4个数码管做时钟,实现没输入一个数左移一位的效果。
为了实现密码输入多于4位,可以构造一个模为4的计数器来控制只取前4位密码。
共有三次输入密码的机会,可以构造一个模为3的计数器来控制。
密码比较模块:当按下确定键(yes)键,则将输入的密码和置密码进行比较。
密码输入模块:当输入密码正确时,再输入密码,利用重置密码键(set_psw)直接将其赋值给置的密码psw即可实现。
LED显示模块,用来显示密码输入的正确与否。
若输入密码与置密码一致,则锁打开,输出一个高电平给LEDG,绿灯亮,密码错误则输出一个高电平给LEDR,红灯亮。
综合上述分析,本系统的硬件部分主要由密码锁输入译码模块、密码锁显示模块、密码锁控制模块、密码比较和重置模块和LED显示模块五个部分组成。
3系统以及模块硬件电路设计说明:1. 密码锁显示模块:段数码管是电子开发过程中常用的输出显示设备。
在本设计中使用的是4个四位一体、共阳极型七段数码管。
其单个静态数码管如右图所示。
2.密码输入和译码模块:用switch[9]~[0]实现数字9到0的输入。
clk Clk_in分频器密码锁输入和译码start resetNum[9]至Num[0]Out0Out1Out2Out3 q(4 downto 0)CancelOut_q(15 downto 0)Psw(15 downto 0)DE2开发板上使用的元件的管脚编号如下: 端口名 FPGA 管脚 说明alarm pin_af23 报警信号,红灯亮 cancel pin_v1 取消密码输入 clk pin_n2 50MHz 时钟 correct pin_ae22 密码正确,绿灯亮 num[0] pin_n25 输入数字0到9num[1] pin_n26 num[2] pin_p25 num[3] pin_ae14 num[4] pin_af14 num[5] pin_ad13 num[6] pin_ac13 num[7] pin_c13 num[8] pin_b13 num[9] pin_a13 out0[0] pin_af10 u0数码管 out0[1] pin_ab12 out0[2] pin_ac12 out0[3] pin_ad11 out0[4]pin_ae11CorrectOut_erroralarmyes密码比较和重置Set_psw4 系统的VHDL设计说明1.分频模块,即做一个模5000的计数器,从而将50MHz的时钟转化为10000Hz的时钟。
2.密码锁输入和译码,显示模块。
switch[9]~switch[0]模拟数字9~0的输入,例如switch[9]为高电平,而其他为低电平,则通过程序译码为9,同时产生一个clock时钟上升沿,由于人操作的时间必定大于0.00001s(即10000Hz 的时钟周期),所以在下次按键是,clock已经回到低电平,此后再按键clock 又产生一个上升沿。
由此构造的clock时钟可以为左移寄存器当时钟。
3.密码显示模块:switch改变一次,即每输入一个数,译码产生一个四位的BCD码,来驱动数码管。
并随着clock上升沿,依次左移显示。
4.密码比较和重置模块:在输入了4位密码后,16位BCD码已经保存在out_q里,通过与置密码比较即可。
数码管的真值表(0代表亮,1代表不亮)VHDL源代码○1.主程序coded_lock代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity coded_lock isport(clk: in std_logic;start:in std_logic;reset:in std_logic;num:in std_logic_vector(9 downto 0);out3,out2,out1,out0:out std_logic_vector(6 downto 0);correct: buffer std_logic;yes:in std_logic;--admin:in std_logic;set_psw:std_logic;alarm: out std_logic;cancel: in std_logic;out_error: buffer std_logic);end;architecture behave of coded_lock is--******************************************************************* component decoder is --显示译码器的元件例化port(qq:in std_logic_vector(3 downto 0);result: out std_logic_vector(6 downto 0));end component;--******************************************************************* signal out_q: std_logic_vector(15 downto 0):="11111";--out_q为4位密码锁的8421BCD码signal q:std_logic_vector(3 downto 0);--输入一个9~0的数字,q为其8421BCD码signal clock : std_logic:='0';--每按一次键,clock输出一个上升沿signal counter: integer range 0 to 2:=0;--模为3的计数器signalt4: integer range 0 to 4:=0;--模为5的计数器signal enable: std_logic:='1';--当输错3次密码,则此使能端为0,使无法译码signal psw:std_logic_vector(15 downto 0):="10110";--默认密码为9876signal clk_in: std_logic;--5000分频之后的时钟begin--******************************************************************* process(clk_in,start,reset,enable)beginif reset='0' thenclock<='0';elsif rising_edge(clk_in) thenif start='1' and enable='1' thencase num is --按个键,clock来一个上升沿when "1000000000"=>q<="1001";clock<='1';when "010*******"=>q<="1000";clock<='1';when "0010000000"=>q<="0111";clock<='1';when "0001000000"=>q<="0110";clock<='1';when "0000100000"=>q<="0101";clock<='1';when "0000010000"=>q<="0100";clock<='1';when "0000001000"=>q<="0011";clock<='1';when "0000000100"=>q<="0010";clock<='1';when "0000000010"=>q<="0001";clock<='1';when "0000000001"=>q<="0000";clock<='1';when others =>q<="1111";clock<='0';end case;else null;end if;end if;end process;--***************************************************************** --左移进程,按下一个按键则clock输出一个高电平,显示译码器左移process(clock,yes,start,reset,cancel)beginif reset='0' thencorrect<='0';out_error<='0';counter<=0;enable<='1';alarm<='0';out_q<="11111";elsif cancel='1' thencorrect<='0';out_error<='0';out_q<="00000";cnt4<=0; --使计数器清零,重新开始译码elsif start='0' thencnt4<=0;out_q<="00000";elseif rising_edge(clock) thenift4=4 thennull;elseout_q<=out_q(11 downto 0) & q;cnt4<=cnt4+1;end if;end if;if falling_edge(yes) thenif out_q=psw thencorrect<='1';out_error<='0';alarm<='0';elsif counter=2 thencorrect<='0';out_error<='1';alarm<='1';enable<='0';elsecorrect<='0';out_error<='1';alarm<='0';counter<=counter+1;end if;end if;end if;end process;--******************************************************************* process(correct,set_psw) --重新设置密码的进程beginif falling_edge(set_psw) thenif correct='1' then --输入密码正确才可以重新设置密码psw<=out_q;end if;end if;end process;--***************************************************************--分频模块:将50Mz 的时钟分频为10000Hzprocess(clk)variable tem:integer range 0 to 4999;beginif rising_edge(clk) thenif tem=4999 thenclk_in<='1';tem:=0;elsetem:=tem+1;clk_in<='0';end if;end if;end process;--******************************************************************* u3:component decoder port map(qq=>out_q(15 downto 12),result=>out3);u2:component decoder port map(qq=>out_q(11 downto 8),result=>out2);u1:component decoder port map(qq=>out_q(7 downto 4),result=>out1);u0:component decoder port map(qq=>out_q(3 downto 0),result=>out0); end behave;○2.decoder代码:library ieee;use ieee.std_logic_1164.all;entity decoder isport(qq:in std_logic_vector(3 downto 0);result: out std_logic_vector(6 downto 0));end;architecture reg of decoder isbeginprocess(qq)begincase qq iswhen "0000"=>result<="1000000";when "0001"=>result<="1111001";when "0010"=>result<="0100100";when "0011"=>result<="0110000";when "0100"=>result<="0011001";when "0101"=>result<="0010010";when "0110"=>result<="0000010";when "0111"=>result<="1111000";when "1000"=>result<="0000000";when "1001"=>result<="0010000";when others=>result<="1111111";end case;end process;end reg;5 结论以及结果说明计算机平台为window 7 64bit旗舰版,软件调试环境为QuartusⅡ6.0.使用的硬件芯片为EP2C35F672C6.下面试各个模块的仿真图:图1图1显示了密码输入和显示模块所实现的功能。