- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
密码锁的VHDL初步实现
电子锁的VHDL初步实现
功能描述
密码锁共2种状态
安锁状态:摁下SETUP 设置密码 再摁SETUP确定密码
开锁状态:摁下START 输入密码 摁下OPEN确定密码并开锁
输出共2种状态:
密码正确:A灯亮,B灯不亮,蜂鸣器不叫。
密码错误:A灯不亮,B灯亮,蜂鸣器鸣叫。此时无法通过SETUP和START来改变原始密码和输入密码来改变输出。必须通过RESET键才能让两键重新恢复作用。
原理简述
实验电路模式选择
选择模式6,即1,2两键可用于输入2个4位2进制密码,3~7键可用于产生持续的高电平或低电平,分别设置为SETUP,START,OPEN和RESET四个键,即VHDL硬件描述中使用高电平有效来驱动。7段LED管7,8用于显示对应2,1两键的十六进制输入值。LED灯1和2用于表示LEDA和LEDB。
源代码及设计思路
顶层文件结构图:
开锁控制模块
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY CTRL IS
PORT(KEY_IN,FD_IN:IN STD_LOGIC;
OUTPUT: OUT STD_LOGIC);
END CTRL;
ARCHITECTURE BEHAV OF CTRL IS
BEGIN
PROCESS(KEY_IN,FD_IN)
VARIABLE OUT_TEMP: STD_LOGIC;
BEGIN
IF KEY_IN = 1 THEN OUT_TEMP := 1;ELSE OUT_TEMP := FD_IN;END IF;
OUTPUT = OUT_TEMP;
END PROCESS;
END BEHAV;
模块设计思路:当RESET键置高电平时,应当输出高电平;当RESET键为低电平时,输出取决于反馈信号输入FD_IN的值。此设计中默认高电平1为LED亮,又反馈信号为LED信号取反,可知有效的反馈信号应为 FD_IN =’0’,并且此时应当锁死与门,故输出为0。
锁存器模块
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY BUFFER_PRO IS
PORT(ENA:IN STD_LOGIC;
INPUT:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
OUTPUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END BUFFER_PRO;
ARCHITECTURE BEHAV OF BUFFER_PRO IS
BEGIN
PROCESS(ENA,INPUT)
BEGIN
IF ENA = 1 THEN OUTPUT = INPUT;END IF;
END PROCESS;
END BEHAV;
模块设计思路:4位2进制锁存器是对应于电路模式0设计的。用于锁存用户输入的密码,并且通过使能端来控制输出的变化与否。
比较器模块
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY COMPARE IS
PORT(ENA:IN STD_LOGIC;
CLK:IN STD_LOGIC;
U_IN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
AD_IN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
ALRT,LED_A,LED_B:OUT STD_LOGIC);
END COMPARE;
ARCHITECTURE BEHAV OF COMPARE IS
SIGNAL LEDA : STD_LOGIC ;
SIGNAL LEDB : STD_LOGIC ;
SIGNAL ALRT_T : STD_LOGIC ;
BEGIN
PROCESS(ENA,CLK)
BEGIN
IF ENA = 1 THEN
IF (U_IN /= AD_IN) THEN LEDA = 0;LEDB = 1;ALRT_T = CLK;
ELSE LEDA = 1;LEDB = 0;ALRT_T = 0;
END IF;
END IF;
LED_A = LEDA;LED_B =LEDB;ALRT = ALRT_T;
END PROCESS;
END BEHAV;
模块设计思路:比较模块的输入端有ENA,CLK,U_IN和AD_IN。其中ENA用于改变输出,受控于OPEN键;CLK用于密码输入错误时驱动蜂鸣器;U_IN和AD_IN则是取自锁存器输出端口。
时序仿真
从时序仿真中可以看出,当密码输入错误时,SETUP和START都是高电平无效的,只有摁下RESET后,这两个键的使能才有效。
实验结论
通过电
原创力文档


文档评论(0)