EDA电子密码锁锁2.docx
- 文档编号:17809120
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:15
- 大小:263.14KB
EDA电子密码锁锁2.docx
《EDA电子密码锁锁2.docx》由会员分享,可在线阅读,更多相关《EDA电子密码锁锁2.docx(15页珍藏版)》请在冰点文库上搜索。
EDA电子密码锁锁2
东北石油大学
课程设计
课程EDA技术课程设计
题目电子密码锁
院系电子科学学院
专业班级电子信息工程
学生姓名
学生学号
指导教师
2011年3月11日
东北石油大学课程设计任务书
课程EDA技术课程设计
题目电子密码锁
专业电子信息工程姓名学号
主要内容、基本要求、主要参考资料等
主要内容:
设计一个密码锁的控制电路,第一个按钮触动后的5秒内若未将锁打开,则电路自动复位并进入自锁状态,当输入正确代码时,输出开锁信号以推动执行机构工作。
基本要求:
1、设计一个密码锁的控制电路,当输入正确代码时,输出开锁信号以推动执行机构工作,用红灯亮、绿灯熄灭表示关锁,用绿灯亮、红灯熄灭表示开锁;
2、在锁的控制电路中储存一个可以修改的4位代码,当开锁按钮开关(设置成8位,其中实际有效为4位,其余为虚设)的输入代码等于储存代码时,开锁;
3、从第内若未将锁一个按钮触动后的5秒打开,则电路自动复位并进入自锁状态,使之无法再打开,并由扬声器发出持续20秒的报警信号,并输出一个信号推动LED不断闪烁。
主要参考资料:
[1]潘松著.EDA技术实用教程(第二版).北京:
科学出版社,2005.
[2]康华光主编.电子技术基础模拟部分.北京:
高教出版社,2006.
[3]阎石主编.数字电子技术基础.北京:
高教出版社,2003.
完成期限2012.3.2
指导教师
专业负责人
2012年2月27日
一、总体设计思想
1.电子密码锁概述
随着社会的发展和人们生活水平的提高,人们越来越注重保护自己的财产,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广群众的欢迎,电子密码锁的使用也体现了人们消费水平、保安意识和科技水平的提高,而且避免了携带甚至丢失钥匙的麻烦。
目前设计密码锁的方法很多,例如用传统的PCB板设计、用PLC设计或者用单片机设计等等。
而用VHDL可以更加快速、灵活地设计出符合各种要求的密码锁,优于其他设计方法。
VHDL是一种符合IEEE标准的硬件描述语言,其最大的特点是借鉴高级程序设计语言的功能特性,对电路的行为与结构进行高度抽象化、规范化的形式描述,并对设计的不同层次、不同领域的模拟验证与综合优化等处理,使设计过程廷到高度自动化。
2.基本内容
(1)设计一个密码锁的控制电路,当输入正确代码时,输入开锁信号以推动执行机构工作,用红灯亮、绿灯灭表示关锁,用绿灯亮、红灯灭表示开锁;
(2)在锁的控制电路中储存一个可以修改的4位密码,当开锁按钮开关(可设置成6位至8位,其中实际有效位为4位,其余为虚设)的输入代码等于储存代码时,开锁;
(3)从第一个按钮触动后的5秒内若未将锁打开,则电路自动进入自锁状态,使之无法再打开,并由扬声器发出持续20S的报警信号。
3.基本原理
该题的主要任务是产生一个开锁信号,而开锁信号的形成条件是,输入代码和已涉密码相同。
实现这种功能的电路构思有多种,例如,用两片8位锁存器,一片存入密码,另一片输入开锁的密码,通过比较的方式,若两者相等,则形成开锁信号。
在产生开锁信号后,要求输出声、光信号,声音的产生由开锁信号触动扬声器工作,光信号由开锁信号点亮LED指示灯。
用按钮开关的第一个动作信号触发一个5S定时器,若5s内无开锁信号产生,让扬声器发出特殊音响,以示警告,并输出一个信号推动Led不断闪烁。
4.设计框图
二、设计步骤和调试过程
1、总体设计电路
2、模块设计和相应模块程序
(1)密码锁输入模块由时序产生电路,键盘扫描电路和按键存储电路组成。
密码锁输入模块的程序:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entitysris
port(clk_1k:
instd_logic;
key_in:
instd_logic_vector(2downto0);
data_n:
outstd_logic_vector(3downto0);
data_f:
outstd_logic_vector(3downto0);
flag_n:
outstd_logic;
flag_f:
outstd_logic;
cqd:
outstd_logic;
ksel:
outstd_logic_vector(3downto0);
csr:
outstd_logic_vector(1downto0));
endentitysr;
architectureartofsris
signalc_qd:
std_logic;
signalc_sr:
std_logic_vector(1downto0);
signaln,f:
std_logic_vector(3downto0);
signalfn,ff:
std_logic;
signalsel:
std_logic_vector(3downto0);
signalq:
std_logic_vector(5downto0);
signalc:
std_logic_vector(2downto0);
begin
data_n<=n;
data_f<=f;
flag_n<=fn;
flag_f<=ff;
cqd<=c_qd;
csr<=c_sr;
ksel<=sel;
c(0)<=key_in(0);
c
(1)<=key_in
(1);
c
(2)<=key_in
(2);
counter:
blockis
begin
process(clk_1k)is
begin
if(clk_1k'eventandclk_1k='1')then
q<=q+1;
endif;
c_qd<=q(3);
c_sr<=q(5downto4);
endprocess;
sel<="1110"whenc_sr=0else
"1101"whenc_sr=1else
"1011"whenc_sr=2else
"0111"whenc_sr=3else
"1111";
endblockcounter;
key_decoder:
block
signalz:
std_logic_vector(4downto0);
begin
process(c_qd)
begin
z<=c_sr&c;
if(c_qd'eventandc_qd='1')then
casezis
when"11101"=>n<="0000";
when"00011"=>n<="0001";
when"00101"=>n<="0010";
when"00110"=>n<="0011";
when"01011"=>n<="0100";
when"01101"=>n<="0101";
when"01110"=>n<="0110";
when"10011"=>n<="0111";
when"10101"=>n<="1000";
when"10110"=>n<="1001";
whenothers=>n<="1111";
endcase;
endif;
ifc_qd'eventandc_qd='1'then
casezis
when"11011"=>f<="0100";
when"11110"=>f<="0001";
whenothers=>f<="1000";
endcase;
endif;
endprocess;
fn<=not(n(3)andn
(2)andn
(1)andn(0));
ff<=f
(2)orf(0);
endblockkey_decoder;
endarchitectureart;
(2)密码锁的控制电路时整个电路的控制中心,主要完成对按键输入和功能按键输入的响应控制。
它由数字按键输入的响应控制和功能按键输入的响应控制组成。
密码锁控制模块的程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityctrlis
port(data_n:
instd_logic_vector(3downto0);
data_f:
instd_logic_vector(3downto0);
flag_n:
instd_logic;
flag_f:
instd_logic;
mimain:
bufferstd_logic;
setin:
bufferstd_logic;
old:
bufferstd_logic;
cqd:
instd_logic;
enlock:
outstd_logic;
data_bcd:
outstd_logic_vector(15downto0));
endentityctrl;
architectureartofctrlis
signalacc,reg:
std_logic_vector(15downto0);
begin
process(cqd,flag_f)is
begin
ifcqd'eventandcqd='0'then
ifflag_f='1'then
if(data_f="0100")then
acc<="1111111111111111";
mimain<='0';setin<='0';old<='0';
elsif(data_f="0001")then
if(mimain='0'andsetin='0')then
caseacc(7downto0)is
when"00010001"=>enlock<='1';
when"10011001"=>mimain<='1';
acc<="1111111111111111";
when"01010101"=>setin<='1';
acc<="1111111111111111";
old<='1';
whenothers=>null;
endcase;
elsif(mimain='1')then
ifacc=regthen
enlock<='0';
mimain<='0';
else
mimain<='0';
endif;
elsif(setin='1')then
if(old='1')then
if(acc=reg)then
old<='0';
else
setin<='0';
old<='0';
endif;
else
if(acc<"001100110011001")then
reg<=acc;
setin<='0';
endif;
endif;
endif;
endif;
elsifflag_n='1'then
acc<=acc(11downto0)&data_n;
endif;
endif;
endprocess;
data_bcd<=acc;
endarchitectureart;
3、仿真及仿真结果分析
用QuartusⅡ软件对设计进行时序仿真。
密码锁输入模块的仿真图
密码锁控制模块的仿真
4、实验调试结果
通过用QuartusⅡ软件对设计进行时序仿真,基本符合所要求的任务。
三、结论及心得体会
在这次设计中,我学会了更熟练的使用QuartusⅡ软件,通过设计总体框图和电路图,还有最后的仿真,使我增强了自己动手制作的能力。
根据电路的特点,将此项设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来联试。
在设计的过程中我进一步养成了软件设计的方法,完成一个项目的的程序,进一步了解了设计的步骤,增强了以后学习的兴趣,为以后的工作积累了一定的经验。
总的来说,这次设计的电子密码锁还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于完成了这次课程设计。
参考资料
[1]潘松著.EDA技术实用教程(第二版).北京:
科学出版社,2005.
[2]康华光主编.电子技术基础模拟部分.北京:
高教出版社,2006.
[3]阎石主编.数字电子技术基础.北京:
高教出版社,2003.
东北石油大学课程设计成绩评价表
课程名称
EDA技术课程设计
题目名称
电子密码锁
学生姓名
学号
指导教师姓名
职称
序号
评价项目
指标
满分
评分
1
工作量、工作态度和出勤率
按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。
20
2
课程设计质量
课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。
45
3
创新
工作中有创新意识,对前人工作有一些改进或有一定应用价值。
5
4
答辩
能正确回答指导教师所提出的问题。
30
总分
评语:
指导教师:
2011年3月11日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 电子 密码锁