vhdl密码锁.docx
- 文档编号:542670
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:11
- 大小:135.55KB
vhdl密码锁.docx
《vhdl密码锁.docx》由会员分享,可在线阅读,更多相关《vhdl密码锁.docx(11页珍藏版)》请在冰豆网上搜索。
vhdl密码锁
VHDL实验报告
数字密码锁
专业:
信息工程
学号:
姓名:
2010年12月
一、
实验任务及设计要求
1、安锁状态
按下开关键SETUP,密码设置灯亮时,方可进行密码设置操作。
设置初始密码0~9(或二进制四位数),必要时可以更换。
再按SETUP键,密码有效。
2、开锁状态
(1)按启动键(START)启动开锁程序,此时系统内部是初始状态。
(2)依次键入0~9(或二进制四位数)。
(3)按开门键(OPEN)准备开门。
若按上述程序执行且拨号正确,则开门指示灯A亮,若按错密码或未按上述程序执行,则按动开门键OPEN后,警报装置鸣叫,B灯亮。
(4)开锁处理事务完毕后,应将门关上,按SETUP键使系统重新进入安锁状态。
若在报警状态,按SETUP键或START键不起作用,应按RESET键才能使系统进入安锁状态。
3、使用者如按错密码,可在按OPEN键之前,按RESET键重新启动开锁程序。
4、用层次化设计方法设计该电路,编写各个功能模块的程序。
5、仿真各功能模块,通过观察有关波形确认电路设计是否正确。
6、完成电路设计后,用实验系统下载验证设计的正确性。
二、系统结构
密码设定
SETUP键A灯
OPEN键
RESETCLKB灯
反馈信号反馈信号
密码输入
反馈信号
START键蜂鸣器
图一系统原理图
1、锁存器:
用于实现设定密码(锁存器1)和输入密码锁存器2的存储。
2、比较器:
用于将设定密码与输入密码相比较。
其中,CLK为外部输入的时钟信号。
若输入密码正确,则A灯亮;否则B灯亮。
同时比较器输出与CLK一样的信号,驱动蜂鸣器发出警报声。
3、开锁控制器:
当反馈信号下降沿来到时,开锁控制输出低电平,用于在输入错误密码后,禁止再次安锁;当RESET脚位高电平时,开锁控制输出高电平,打开与门,这时锁存器1使能端的变化受控于SETUP键,重新进入安锁状态。
4、LED显示:
用于设定密码或输入密码的显示。
此项设计的目的是为了在下载演示时,能清楚地看到设置和输入的密码值。
二、
硬件电路设计
1、设密码模块
设密码模块如下图所示,包括复位键(RESET),密码设定选择键(SETUP),反馈信号(FD)和信号输出(CODE_OUT)以及LED输出。
设密码模块主要用于密码锁的复位和密码设定。
图二
设密码模块的程序设计:
libraryieee;
useieee.std_logic_1164.all;
entitylatch4is
port(setup,oe,reset,fd:
instd_logic;
code_in:
instd_logic_vector(3downto0);
code_out:
outstd_logic_vector(3downto0);
led:
outstd_logic_vector(3downto0));
endentity;
architecturebehavoflatch4is
signaltemp_code:
std_logic_vector(3downto0);
begin
process(setup,fd,oe)
variabletemp_ena:
std_logic;
variableena:
std_logic;
begin
iffd'eventandfd='0'then
temp_ena:
='1';
endif;
ena:
=setupand(nottemp_ena);
ifreset='0'then
temp_ena:
='0';
elsifena='1'then
temp_code<=code_in;
endif;
ifoe='1'then
code_out<=temp_code;
led<=temp_code;
endif;
endprocess;
endbehav;
2、密码输入模块
密码设定输入模块主要用于设密码时输入密码。
如图START就是输入密码键,每当按下且是下降沿时,输出加1,输出是4位二进制,及是0~A。
SETUP键是前提条件,只有当他为高电平时START键才有效。
图三
密码设定输入模块的程序设计:
libraryieee;
useieee.std_logic_1164.all;
entitylatch4_2is
port(start,fd,reset:
instd_logic;
code_in:
instd_logic_vector(3downto0);
code_out,led:
outstd_logic_vector(3downto0);
oe:
instd_logic);
endentity;
architecturebehavoflatch4_2is
signaltemp_code:
std_logic_vector(3downto0);
begin
process(start,fd,oe)
variabletemp_ena:
std_logic;
variableena:
std_logic;
begin
iffd'eventandfd='0'then
temp_ena:
='1';
endif;
ena:
=startand(nottemp_ena);
ifreset='0'then
temp_ena:
='0';
elsifena='1'then
temp_code<=code_in;
endif;
ifoe='1'then
code_out<=temp_code;
led<=temp_code;
endif;
endprocess;
endbehav;
3、比较器模块
比较器模块是密码锁的主要模块,CLK是时钟信号,主要控制蜂鸣器speaker蜂鸣的频率。
OPEN(ENA)键是开锁键,当按下该键且为下降沿触发时,比较器开始比较设定的密码和输入的密码,当输入的密码等于设定的密码时,A灯亮,当输入的密码不等于设定的密码时,B灯亮且蜂鸣器蜂鸣。
FD为反馈信号。
图四
比较器模块的程序设计:
libraryieee;
useieee.std_logic_1164.all;
entitycomp4is
port(clr,ena,clk:
instd_logic;
la,lb,sp,fd:
outstd_logic;
code1,code2:
instd_logic_vector(3downto0));
endentity;
architecturebehavofcomp4is
begin
process(clr,ena,code1,code2)
begin
ifclr='0'then
la<='0';
lb<='0';
sp<='0';
fd<='1';
elsifena='1'then
ifcode1=code2then
la<='1';
lb<='0';
sp<='0';
fd<='1';
else
la<='0';
lb<='1';
sp<=clk;
fd<='0';
endif;
endif;
endprocess;
endbehav;
4、数码管驱动模块
数码管驱动模块是七段译码器,将输入的四位二进制在数码管上以十六进制显示出来。
图五
数码管驱动模块的程序设计:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYDecL7SIS
PORT(A:
INSTD_LOGIC_VECTOR(3DOWNTO0);
LED7S:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
END;
ARCHITECTUREoneOFDecL7SIS
BEGIN
PROCESS(A)
BEGIN
CASEA(3DOWNTO0)IS
WHEN"0000"=>LED7S<="00111111";
WHEN"0001"=>LED7S<="00000110";
WHEN"0010"=>LED7S<="01011011";
WHEN"0011"=>LED7S<="01001111";
WHEN"0100"=>LED7S<="01100110";
WHEN"0101"=>LED7S<="01101101";
WHEN"0110"=>LED7S<="01111101";
WHEN"0111"=>LED7S<="00000111";
WHEN"1000"=>LED7S<="01111111";
WHEN"1001"=>LED7S<="01101111";
WHEN"1010"=>LED7S<="01110111";
WHEN"1011"=>LED7S<="01111100";
WHEN"1100"=>LED7S<="00111001";
WHEN"1101"=>LED7S<="01011110";
WHEN"1110"=>LED7S<="01111001";
WHEN"1111"=>LED7S<="01110001";
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESS;
END;
5、顶层文件
顶层文件如下图:
图六
仿真时序图:
图七
图8
结果分析:
由仿真时序图可以看出,当输入的密码不等于设定的密码时,如图8,A灯灭,B灯亮,蜂鸣器蜂鸣;当输入的密码等于设定的密码时,如图7,A灯亮,B灯灭,蜂鸣器不工作。
综上所述,所设计的系统完成了设计任务和要求。
三、实际测试
引脚对应
Setcode>chip=top;inputPin=17
inputcode>chip=top;inputPin=18
Setup>chip=top;inputPin=19
Start>chip=top;inputPin=21
open>chip=top;inputPin=22
reset>chip=top;inputPin=23
clk>chip=top;inputPin=83
louder>chip=top;outputPin=3
ledA>chip=top;outputPin=27
ledB>chip=top;outputPin=28
decl7s20>chip=top;outputPin=39
decl7s21>chip=top;outputPin=47
decl7s22>chip=top;outputPin=48
decl7s23>chip=top;outputPin=49
decl7s24>chip=top;outputPin=50
decl7s25>chip=top;outputPin=51
decl7s26>chip=top;outputPin=52
decl7s10>chip=top;outputPin=66
decl7s11>chip=top;outputPin=67
decl7s12>chip=top;outputPin=70
decl7s13>chip=top;outputPi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vhdl 密码锁
![提示](https://static.bdocx.com/images/bang_tan.gif)