文档介绍:PLD与数字电路设计实验报告
电子密码锁设计
实验报告电子密码锁
1、实验要求
(1)具有密码输入功能;
(2)设置复位按键,以便重新输入新的密码;
(3)在数码管上显示输入的密码,并依次横移;
(4)设置确认键,当确认键按下后,判断输入密码是否正确;
(5)当输入密码正确时,在数码管上显示字符“H”;当输入密码不正确时,在数码管上显示字符“E”。
2、实验原理
实验板上有10个按键k0~k9,其中k1~k8作为密码输入按键,k9作为确认键,k0作为复位按键以便重新开始按键。
假设电子密码锁的密码为5位数12345。利用实验板上的数码管显示输入的密码,例如输入1,显示1;输入12,1向左横移一位显示12,当输入密码为12345,然后按下确认键k8后,数码管上显示字符“H”,其他任何输入,按下确认键后,数码管上显示字符“E”。
3、按键的消抖
因为k0~k9为机械开关,容易引入抖动。为了消除抖动干扰,因此需要使用防抖动电路。
防抖电路有计数型和采样型两种,本程序采用采样型防抖动微分电路。
如图1所示,由机械开关引起的有抖动的脉冲数据输入采样型防抖动微分电路的第一级电路,即进入采样防抖动电路。在此子电路中,令采样时钟周期大于欲滤去的窄脉冲宽度,经过采样,只有宽脉冲被识别,窄脉冲被滤去。
采样型防动抖电路
RS触发器
微分电路
窄单脉冲输出
图1 采样型防抖动微分电路框图
为了提高电路的防抖动能力,将采样防抖动电路输出信号输入RS触发器,进一步滤去可能由采样防抖动电路遗留下来的相临“01”串,RS触发器的输出只能是连续“1”或者连续“0”的宽脉冲(随输入脉冲信号的宽度不同而不同)。
为了使输出信号和时钟同宽度,再将RS触发器输出的宽脉冲输入微分电路进行宽脉冲变窄脉冲处理,最终由微分电路输出需要的窄脉冲。
其仿真波形如图2所示
图2 防抖动电路仿真波形图
VHDL源程序如下:
library IEEE;
use ;
use ;
use ;
entity fd_rs is
Port ( clk : in std_logic;
key : in std_logic;
dmc : out std_logic);
end fd_rs;
architecture Behavioral of fd_rs is
signal k,d1,d2,d3,d4,r,s,qr,qs,q2,q4,cp:std_logic;
begin
process(clk)
begin
k<=not key;
if(rising_edge(clk)) then
d1<=k; d2<=d1; q2<=d2; -------采样处理
d3<=qr; d4<=d3; q4<=d4;
end if;
r<=(not d2) and (not q2);
s<=d2 and q2;
-----RS触发器----------
qr<=r nor qs;
qs<=s nor qr;
-----RS触发器----------
cp<=d4 and (not q4); ---------微分处理
dmc<=not cp;
end process;
end Behavioral;
本程序把该采样型防抖动微分电路作了元件例化,在主程序中调用。
4、原理方框图
整体框图:
LED<0:7>
ROW<0:7>
K0~K9
CLKA:2MHz
CLK:2048Hz
ELOCK
内部框图:
ROW<7:0>
OP
EN
元件例化
LED<7:0>
显示电路
数据处理电路
ROW,NUM
LED0~LED5
COUNT1
CLKA
COUNT
CONFIRM
K0
K0~K9
P6 按键输入次数计数器,输出密码正确或错误信息
P7 判断按键是否超过次数
P3 判断是否按下确认键
P5 次态发生器
P4 状态转换寄存器
P2 LED扫描时钟
P8 按键输入译码,LED横移、显示电路
P9 LED扫描电路
BCD码译码器
CLK
K0~K9
P20~P29按键消抖
输入信号经过消抖电路,进入状态机进行判断,按键次数,密码正确与否由进程P6、P7控制,最后由显示电路经过译码横移等处理由LED显示
5、状态机状态转换图
/0
·1/0
/0
/0
/0
/0
/0
·EN/OP
/1
·1/0
·1/0
·1/0
·1/