EDA电子密码锁设计报告Word格式文档下载.docx
《EDA电子密码锁设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《EDA电子密码锁设计报告Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
收获与体验-17-
参考文献-18-
1统设计总述
1.1设计要求
1、密码输入:
每按下一个键,要求在数码管上显示,并依次左移;
2、密码删除:
每删除一位,数码管上的显示右移一位,在左边空出的位补充零;
3、密码设置:
当四位密码输入完毕,按下设置功能键进行设置.
4、密码检验:
输入密码,按下检验键.
1.2设计方案
在电子密码锁的设计中,我首先考虑的方法:
是用密码输入删除控制模块、动态扫描模块、寄存器模块、比较模块、触发模块实现的。
在密码输入删除控制模块中,每输入一位数,数码管左移一位,设置删除信号back,每按一次,删除最后输入的数字,密码在数码管显示右移一位,左边空处0。
设置密码确认信号set,但四位密码输入完毕后,按下set,则密码被送到寄存器锁存,比较器模块得到数据A,同时密码显示电路清零。
设置密码锁状态显示信号lock。
Lock=0表示锁未开,lock=1表示锁开,设置关锁信号close,当密码送到寄存器模块锁存后,按下close,则lock=0.
设置密码检验信号check,在lock=0下从数据开关输入四位开锁数据,按下check,则开锁数码送寄存器锁存,数据比较模块得到数据B,若A=B,则触发器被置”1”.
设计成三个模块:
开关编码模块、控制模块、动态显示模块
设计的总结构图如图1.1
图1.1设计总结构图
2总体程序设计
2.1整体组装设计原理图
系统的整体组装设计有密码按键输入模块、密码控制模块、密码显示模块三部分组成,系统整体组装原理图如图2.1所示。
图2.1系统整体组装原理图
2.2顶层模块程序调用
2.2.1程序部分
libraryieee;
useieee.std_logic_1164.all;
librarywork;
entityeleclockis
port
(clk2_1:
instd_logic;
clk1_1:
instd_logic;
key_1:
instd_logic_vector(9downto0);
set_1:
instd_logic;
check_1:
close_1:
back_1:
led_1:
outstd_logic_vector(6downto0);
sn_1:
outstd_logic_vector(2downto0);
lock_1:
outstd_logic
);
endeleclock;
architecturebdf_typeofeleclockis
componentleds
port(din:
instd_logic_vector(15downto0);
clk:
instd_logic;
con:
outstd_logic_vector(1downto0);
led7:
outstd_logic_vector(6downto0);
sn:
outstd_logic_vector(2downto0)
endcomponent;
componentart
port(clk:
set:
check:
instd_logic;
close:
back:
dn:
instd_logic_vector(3downto0);
sout:
outstd_logic_vector(15downto0);
lock:
outstd_logic
);
componenttra
port(n:
instd_logic_vector(9downto0);
outstd_logic_vector(3downto0)
);
signalsynthesized_wire_3:
std_logic_vector(15downto0);
signalsynthesized_wire_4:
std_logic_vector(3downto0);
begin
b2v_inst1:
leds
portmap(din=>
synthesized_wire_3(15downto0),
clk=>
clk2_1,
led7=>
led_1(6downto0),
sn=>
sn_1(2downto0)
b2v_inst2:
art
portmap(set=>
set_1,
check=>
check_1,
close=>
close_1,
back=>
back_1,
clk=>
clk1_1,
dn=>
synthesized_wire_4,
sout=>
lock=>
lock_1
b2v_inst3:
tra
portmap(n=>
key_1(9downto0),
sout=>
synthesized_wire_4
endbdf_type;
2.2.2顶层模块原理文件
顶层模块原理文件如图2.2
图2.2顶层模块原理图
3单元模块程序设计
3.1按键输入模块
按键输入与对应的编码输出之间的关系如表3-1所示
表3-1按键编码
按键输入
编码输出
对应的数字
0000000001
0001
1
0000000010
0010
2
0000000100
0011
3
0000001000
0100
4
0000010000
0101
5
0000100000
0110
6
0001000000
0111
7
0010000000
1000
8
010*******
1001
9
1000000000
0000
3.1.1输入模块程序
useieee.std_logic_unsigned.all;
entitytrais
port(n:
instd_logic_vector(9downto0);
---定义按键输入端口
sout:
outstd_logic_vector(3downto0));
----定义编码输出端口
endtra;
architectureatoftrais-----定义结构体
signaltemp:
std_logic_vector(3downto0);
begin
process(n)
begin
casenis----输入键编码
when"
0000000001"
=>
temp<
="
0001"
;
0000000010"
0010"
0000000100"
0011"
0000001000"
0100"
0000010000"
0101"
0000100000"
0110"
0001000000"
0111"
0010000000"
1000"
0100000000"
1001"
1000000000"
0000"
whenothers=>
1111"
endcase;
endprocess;
sout<
=temp;
endat;
3.1.2输入模块元件
图3.1电子密码锁键盘输入
3.1.3输入模块仿真
图3.2键盘输入仿真
3.2电子密码锁系统控制模块
密码锁的控制电路是整个电路的控制中心。
设置set为密码设置端口,check为密码检验端口,close为关锁端口,back为删除密码端口,clk时钟输入端口,dn[3..0]为3位数字输入端口,sout[15..0]为16位输出端口,lock密码锁状态显示端口。
在此电路中每输一位数,密码在数码管上左移一位。
设置删除密码back,每按下一次back,删除最后输入的数字,左边空处补0。
设置密码确认信号set,当四位密码输入完毕,按下set,设置的密码被存储。
设置密码锁状态信号lock,lock=0表示锁未开,lock=1表示锁开。
设置关锁信号close,按下close,则锁关闭。
设置密码检验信号check,在lock=0下从数据开关书去四位开锁数字,按下check,若数据等于设置的密码或万能密码,则lock=1。
模块程序流程图如图3.3
图3.3控制模块程序流程图
3.2.1控制模块程序
密码锁控制电路的VHDL源程序
entityartis
port(set,check,close,back,clk:
instd_logic;
----set密码设置信号,check密码检验信号,close关锁信号back密码删除信号,clk时钟信号
dn:
instd_logic_vector(3downto0);
outstd_logic_vector(15downto0);
---16位输入信号
lock:
outstd_logic);
---设置密码锁状态信号
endart;
architectureatofartis-----定义结构体
signalch:
std_logic;
process(clk,dn)----定义进程变量
variablelock_1:
variableacc:
std_logic_vector(15downto0);
variabletemp1,temp2,temp3,temp4:
st