EDA4位密码锁的课程设计Word格式.doc
- 文档编号:14561932
- 上传时间:2022-10-23
- 格式:DOC
- 页数:23
- 大小:447KB
EDA4位密码锁的课程设计Word格式.doc
《EDA4位密码锁的课程设计Word格式.doc》由会员分享,可在线阅读,更多相关《EDA4位密码锁的课程设计Word格式.doc(23页珍藏版)》请在冰豆网上搜索。
按下此键时将目前的数字设定成新的密码。
激活电锁:
按下此键可将密码锁上锁。
解除电锁:
按下此键会检查输入的密码是否正确,密码正确即开锁。
过
程
设计方案
本系统采用模块化的设计,整个系统分为数字按键输入、时钟输入、功能按键输入、数字译码块、功能译码模块、核心处理模块、输出处理模块、显示译码电路八个模块。
整体电路如图1.1所示。
数字按键输入
时钟模块
功能按键输入
数字译码模块
功能译码模块
核心处理模块
输出处理模块
显示译码电路
图1.1数字密码锁总方框图
硬件电路的设计
4位数字密码锁包括五个基本逻辑模块,分别为:
数字按键输入模块(numinput)、功能按键输入模块(funcinput)、核心处理模块(core)、输出处理模块(allout)、七段译码器模块(dataout)。
数字按键输入--numinput
说明:
读取数字键0~9。
按键为矩阵形式,高电平表示按键未按下,低电平表示按键按下。
经数字按键输入模块处理后输出4位二进制代码,“0000”~“1001”分别表示0~9,用“1010”表示其他无效输入。
如表2.1所示。
表2.1数字按键输入模块(numinput)的数据输入输出
按键数字
按键扫描输出
Numinput二进制输出
对应十进制数字
11011110
0000
1
01111101
0001
2
01111110
0010
3
10110111
0011
4
10111011
0100
5
10111101
0101
6
10111110
0110
7
11010111
0111
8
11011011
1000
9
11011101
1001
其他按键
其他
1010
10
(1)numinput--数字按键输入模块程序:
libraryieee;
useieee.std_logic_1164.all;
entitynuminputis
port(numin:
INstd_logic_vector(7downto0);
numstate,clk:
INstd_logic;
numout:
OUTstd_logic_vector(3downto0));
endnuminput;
architectureoneofnuminputis
signalstate:
std_logic;
signalmem:
std_logic_vector(7downto0);
begin
process(clk)
ifclk'
eventandclk='
1'
then
ifstate/=numstatethen
ifmem/=numinthen
casenuminis
when"
11011110"
=>
numout<
="
0000"
;
---"
0"
01111101"
0001"
1"
01111110"
0010"
2"
10110111"
0011"
3"
10111011"
0100"
4"
10111101"
0101"
5"
10111110"
0110"
6"
11010111"
0111"
7"
11011011"
1000"
8"
11011101"
1001"
9"
whenothers=>
1010"
endcase;
state<
=numstate;
elsenumout<
endif;
mem<
=numin;
endif;
endprocess;
endone;
(2)数字按键输入模块仿真图:
图2.1数字按键输入模块仿真图
由图可知,当数字按键输入模块的输入依次为"
、"
时,numout输出依次输出“0000”、“0001”、“0010”、“0011”、“0100”、“0101”、“0110”、“0111”、“1000”、“1001”;
当为其他按键输入时,numout输出均为“1010”。
(3)数字按键输入--numinput符号文件:
图2.2数字按键输入--numinput符号文件
功能按键输入模块--funcinput
读取矩阵按键区控制功能按键-—清除键、改密键、上锁键、解锁键。
高电平表示按键未按下,低电平表示按键按下。
按照“清除,改
密,上锁,解锁”顺序读取按键时,只能输出一位控制信号。
输出的信号为3位二进制代码,“001”~“100”,依次表示“清除按键、改密按键、上锁,解锁”,用“000”表示输入不为功能按键信号。
表2.2控制功能按键输入模块(funcinput)的输出输入数据
功能按键
功能按键扫描输出
Funcinput二进制输出
清除键
11100111
001
改密键
11101101
010
上锁键
11101110
011
解锁键
11101011
100
000
(1)Funcinput--功能按键输入模块程序:
entityfuncinputis
port(funcin:
INstd_logic_vector(7downto0);
constate,clk:
INstd_logic;
conout:
OUTstd_logic_vector(2downto0));
endfuncinput;
architectureoneoffuncinputis
signalstate:
std_logic;
signalmem:
std_logic_vector(7downto0);
process(clk)
ifclk'
ifconstate/=statethen
state<
=constate;
ifmem/=funcinthen
withfuncinselect
conout<
001"
when"
11100111"
--清除键
"
010"
11101101"
--改密键
011"
11101110"
--上锁键
100"
11101011"
--解锁键
000"
whenothers;
mem<
=funcin;
elseconout<
endif;
(2)功能按键输入模块仿真图:
图2.3功能按键输入模块仿真图
由图可知:
当功能按键输入模块的输入依次为“11100111”、“11101101”、“11101110”、“11101011”时,conout输出依次为“001”、“010”、“011”、“100”,当为其他按键输入时,conout输出均为“000”。
(3)功能按键输入模块--funcinput符号文件:
图2.4功能按键输入模块--funcinput符号文件
核心处理模块--core
核心处理模块将根据输入(数字按键输入以及功能按键输入)来改变存储器状态、数码管显示以及LED灯显示(红灯亮为上锁,绿灯亮为解锁)。
(1)Core--核心处理程序:
entitycoreis
port(numin:
instd_logic_vector(3downto0);
conin:
instd_logic_vector(2downto0);
clk:
instd_logic;
dataa,datab,datac,datad:
outstd_logic_vector(3downto0);
ledr,ledg,numout,conout:
outstd_logic);
endentity;
architectureoneofcoreis
typelockstateis(unlock,locked);
signalnuma,numb,numc,numd,codea,codeb,codec,coded:
std_logic_vector(3downto0);
signalnumstate,constate:
signallocksta:
lockstate;
process(clk,numin,conin)
then--上升沿
ifnumin/="
then--当不是其他键时
numd<
=numc;
numc<
=numb;
numb<
=numa;
numa<
---移位
ifconin/="
ifconin="
then--清除键按下
num
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA4 密码锁 课程设计