VHDL课程设计—数字密码锁电路.doc
文本预览下载声明
VHDL课程设计——
数字密码锁
班级:计052—2班
学号:200525502204
姓名:杨彦涛
指导老师:沈春华
日期:2007-1
设计要求
设计一个简易的数字密码锁,该锁应在收到3位与规定码相符的十进制数码时打开,使相应的指示灯点亮;若收到的代码与规定的不符或者开锁程序有误,表示错误的只是灯点亮。
系统功能描述
系统接通电源后,首先按动setup键后方投入运行。运行时标志开门的指示灯和报警灯、铃皆不工作,系统处于安锁状态。
开锁代码是3位十进制数,可以通过系统预先设定。开锁时输入代码不足三位或超过三位均不能开锁。
开锁程序由设计者确定,用户必须严格执行所规定的程序,方可开锁。
开锁代码和程序正确,表示数字锁打开的指示灯亮。
允许用户在开锁过程中有1次错误(输入代码错误或开锁程序错误),只要出错,表示错误的指示灯必定点亮。如果有2次错误,则报警器——喇叭名叫,以示情况异常。
开锁程序为:
按启动键(start)启动开锁程序,此时系统内部分处于初始状态。
依次键入十进制码。
按开门键(open)准备开门。
若按上述程序执行且拨号正确,则开门继电器工作,lock=1;若密码输入错误或未按上述程序执行,则按动开门键(open)后报警灯亮,红灯亮。
开锁事务处理完毕后,应将门关上,按set键,使系统重新进入安锁状态。
(若在报警,按set或start均不起作用,应另用一内部的I_setup键才能使系统进入安锁状态)。
若按错号码,可在按confirm键之前按start键重新启动开锁程序。
号码0-9,start,open,setcode,confirm均用按键产生。
alarm表示警报,red表示红灯,lock表示开锁信号。
密码锁控制器的MDS图及其功能说明。
当系统处于s0状态时,为安锁状态按start进入开锁程序s2,输入代码确定,按open 进入s2状态,如果输入正确,进入s3状态并输出gree=1; .此时按setup可以重新进入安锁状态。如果输入有误则进入s4状态并输出red=1.此时按setup可以重新进入安锁状态。再按start启动开锁程序,输入代码并确定,按open 进入s3状态,,如果输入正确,进入s4状态并输出gree=1; .此时按setup可以重新进入安锁状态。如果输入有误则进入s5状态并输出red=1,jbao=1; .此时按i_setup可以重新进入安锁状态。
四,顶层电路结构图及源代码
1.元件例化后程序图30
i_setup
setup
start
open1
result
clk512
clk
en
gree
red
jbao
kaimen
KONGZHI
i_setup
setup
start
open1
result
clk512
clk
en
gree
red
jbao
kaimen
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity elock is
port(clk,i_setup,setup,setcode,start,confirm,olock,
s0,s1,s2,s3,s4,s5,s6,s7,s8,s9:in std_logic;
alarm :buffer std_logic;
lock :out std_logic;
red :out std_logic);
end elock;
architecture one of elock is
component contr
port(clk :in std_logic;
i_setup:in std_logic;
setup :in std_logic;
start :in std_logic;
olock :in std_logic;
result :in std_logic;
alarm :buffer std_logic;
lock :out std_logic;
red :out std_logic);
end component;
component write
port(cp,reset:in std_logic;
start,setcode,confirm :in std_logic;
s0 :
显示全部