1 / 16
文档名称:

vhdl密码锁.doc

格式:doc   大小:691KB   页数:16页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

vhdl密码锁.doc

上传人:fangjinyan2017001 2020/1/15 文件大小:691 KB

下载得到文件列表

vhdl密码锁.doc

相关文档

文档介绍

文档介绍:Vhdl短学期实验——密码锁设计小组成员:04008230李黎04008228陈宗渊04008211周炳宇一、课题描述:用于模仿密码锁的工作过程。完成密码锁的核心控制功能。二、功能要求:设计一个密码锁,平时处于等待状态。管理员可以设置或更该密码。如果不预置密码,密码缺省为“999999”。用户如果需要***,按相应的按键进入输入密码状态,输入6位密码,按下确定键后,若密码正确,锁打开,若密码错误,将提示密码错误,要求重新输入,三次输入都错误,将发出报警信号。报警后,只有管理员作相应的处理才能停止报警。用户输入密码时,若输入错误,在按下确定键之前,可以通过按取消键重新输入。正确***后,用户处理完毕后,按下确定键,系统回到等待状态。系统操作过程中,只要密码锁没有打开,如果60秒没有对系统操作,系统回到等待状态。注意:输入按键信号时必须一个按键一个按键输入,不得6个按键一起输入。三、设计流程::①控制器比较器器计数器寄存器③②④⑤⑥⑦⑧①按键输入;②复位(设置缺省密码);③等待状态④工作状态⑤修改密码⑥提醒错误及报警⑦***⑧:★控制模块:实现输入输出,实现等待工作的转换,实现***及报警;★比较模块:比较输入密码与正确密码★寄存模块:存放密码★计数及使能模块:(1)输入个数为6,多于无效自动忽略;(2)60s的空闲时间,无操作返回等待;(3)错误次数为3(4)进入工作状态,是能段即打开,直到进入等待。四、具体实现:★控制模块:libraryieee;;;entityctrlis port( change,vers,keysign :instd_logic; ok,cancel :instd_logic; clk :instd_logic; result :instd_logic; wt :instd_logic; enable :outstd_logic);endctrl;architecturectrl_behaveofctrlissignalsec:integerrange0to60;beginprocess(clk) begin if(clk'eventandclk='1')then if(vers='1')then enable<='1'; endif; if(wt='1'andresult='1')then enable<='0'; sec<=0; endif; if(change='0'andvers='0'andkeysign='0'andok='0'andcancel='0')then sec<=sec+1; if(sec=59)then enable<='0'; sec<=0; endif; else sec<=0; endif; endif;endprocess;endctrl_behave;比较模块:libraryieee;;;entityveris port( dt1,dt2,dt3,dt4,dt5,dt6 :instd_logic_vector(3downto0); cd1,cd2,cd3,cd4,cd5,cd6 :instd_logic_vector(3downto0); vers :instd_logic; ready :instd_logic; clk :instd_logic; stopalarm :instd_logic; en :instd_logic; result :outstd_logic; wrong :outstd_logic; alarm :outstd_logic);endver;architecturever_behaveofverissignalalarmnum:integerrange0to3;signalvering:std_logic;signalwronging :std_logic;beginprocess(clk) begin if(clk'eventandclk='1')then if(en='0')then result<='0'; endif; if(stopalarm='1')then alarmnum<=0; endif; if(wronging='1')then wronging<='0'; vering<='1'; endif; if(alarmnum<3)then alarm<='0'; else alarm<='1'; endif; if(vers='1')then vering<='1'; endi