文档详情

VHDL课程设计—数字密码锁电路.doc

发布:2018-02-26约6.71千字共10页下载文档
文本预览下载声明
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 :
显示全部
相似文档