EDA电子密码锁详解.docx
- 文档编号:15399924
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:17
- 大小:465.83KB
EDA电子密码锁详解.docx
《EDA电子密码锁详解.docx》由会员分享,可在线阅读,更多相关《EDA电子密码锁详解.docx(17页珍藏版)》请在冰点文库上搜索。
EDA电子密码锁详解
东北石油大学
课程设计
课程EDA技术课程设计
题目电子密码锁
院系电子科学学院
专业班级
学生姓名
学生学号
指导教师
2013年3月8日
东北石油大学课程设计任务书
课程EDA技术课程设计
题目电子密码锁
专业电子信息工程姓名学号
主要内容、基本要求、主要参考资料等
主要内容:
设计一个密码锁的控制电路,第一个按钮触动后的5秒内若未将锁打开,则电路自动复位并进入自锁状态,当输入正确代码时,输出开锁信号以推动执行机构工作。
基本要求:
1、设计一个密码锁的控制电路,当输入正确代码时,输出开锁信号以推动执行机构工作,用红灯亮、绿灯熄灭表示关锁,用绿灯亮、红灯熄灭表示开锁;
2、在锁的控制电路中储存一个可以修改的4位代码,当开锁按钮开关(设置成8位,其中实际有效为4位,其余为虚设)的输入代码等于储存代码时,开锁;
3、从第一个按钮触动后的5秒内若未将锁打开,则电路自动复位并进入自锁状态,使之无法再打开,并由扬声器发出持续20秒的报警信号,并输出一个信号推动LED不断闪烁。
主要参考资料:
[1]潘松著.EDA技术实用教程(第二版).北京:
科学出版社,2005.
[2]康华光主编.电子技术基础模拟部分.北京:
高教出版社,2006.
[3]阎石主编.数字电子技术基础.北京:
高教出版社,2003.
完成期限2013.3.8
指导教师
专业负责人
2013年3月4日
一、设计思想
1.基本原理
根据设计要求,该电子密码锁主要有设置密码,5秒时间输入密码(即第一个按键按下后的5秒内输入密码),报警(即超出5秒后若未将锁开启则扬声器发出20秒的报警信号,同时一个LED不断闪烁),开锁时输出声光信号(即扬声器发出5秒的信号,同时对应的指示灯发生变换)的功能。
因此,我的设计思路是输入datain(3downto0)为四位密码按键,其对应的二进制序列为密码(当然也可以设置6位或8位,其中实际有效为4位,其余为虚设),enter1为设置密码确认键(上升沿有效),enter2为输入密码确认键(上升沿有效),set为模式选择键(0为设置密码,1为输入密码),系统时钟clk_1k设置为1024Hz;输出有led_r(红灯)、led_g(绿灯)、led_alert(报警指示灯)、speaker(扬声器)。
首先在set为0的情况下,将4位按键设置成想要的密码(例如1001),然后按一下enter1将密码锁存起来,这时对应的指示灯由红灯灭、绿灯灭变成红灯亮、绿灯灭(表示关锁),接着将set设为1,此时将4位按键设置成输入的密码(初始值都还原为0),按enter2进行确认,第一个按键按下后会产生一个5秒计时信号,若5秒内将锁开启,则对应的指示灯由红灯亮、绿灯灭变成红灯灭、绿灯亮(表示开锁),同时扬声器发出短暂的提示信号,若5秒后没有将锁开启,则报警,扬声器发出20秒的信号,报警指示灯闪烁20秒。
2.设计框图
图1设计框图
二、设计步骤和调试过程
1、模块设计和相应模块程序
(1)分频
由于要产生5秒、20秒的计时信号,故对系统时钟clk_1k进行分频来得到1Hz的时钟clk。
其模块及部分程序如下:
process(clk_1k)
variablecount:
std_logic_vector(9downto0);
begin
if(clk_1k'eventandclk_1k='1')then图3分频模块图
count:
=count+1;
endif;
clk<=count(9);
endprocess;
仿真波形如下:
图4仿真图
(2)设置密码
本模块主要是将设置的密码锁存到中间变量ram中去,同时控制灯的变化,由于这里的灯并不能作为最终的输出,所以这里先用led_r_temp1、led_r_temp2代替。
其模块及部分程序如下:
process(enter1,set)
begin
if(enter1'eventandenter1='1')then
if(set='0')thenram<=datain;
led_r_temp1<='1';led_g_temp1<='0';图5模块图
elseled_r_temp1<='0';led_g_temp1<='0';
endif;
endif;
endprocess;
仿真波形如下:
图6仿真图
(3)输入密码时第一个按键判断信号
本模块主要在密码输入下,当第一个按键按下时产生一个judge信号(高电平有效),其模块及部分程序如下:
process(set,clk_1k,datain)
Begin
if(clk_1k'eventandclk_1k='1')then
if(set='0')thenjudge<='0';图7模块图
elsif(set='1')then
if((datain(0)ordatain
(1)ordatain
(2)ordatain(3))='0')then
judge<='0';
elsif((datain(0)ordatain
(1)ordatain
(2)ordatain(3))='1')then
judge<='1';
elsejudge<='0';
endif;
endif;
endif;
endprocess;
仿真波形如下:
图8仿真图
从仿真波形上看,当按键按下后judge信号由0变为1,但是当按键重新弹回0时,judge信号又回到0,所以需对judge高电平信号进行锁存:
signaltemp:
std_logic:
='0';
begin
process(judge)
begin图9模块图
if(judge'eventandjudge='1')then
temp<='1';
endif;
endprocess;
judge_load<=temp;
图10仿真图
(4)5秒计时信号
该模块是产生一个5秒计时的信号state,5秒期间为‘1’,当5秒时间过去后state变为‘0’,并作为报警信号。
其模块及部分程序如下:
signalcount_5:
std_logic_vector(2downto0);
signalstate1:
std_logic;
begin
process(clk)图11模块图
begin
if(clk'eventandclk='1')then
if(judge_load='1')then——第一个按键按下
if(count_5="101")then
count_5<="101";
elsecount_5<=count_5+1;
endif;
endif;
endif;
endprocess;
process(count_5)
begin
casecount_5is
when"000"=>state1<='1';
when"001"=>state1<='1';
when"010"=>state1<='1';
when"011"=>state1<='1';
when"100"=>state1<='1';
whenothers=>state1<='0';
endcase;
endprocess;
state<=state1andset;——确保在set置为‘1’而第一个按键没有按下时,state为高电平,即刚进入输入密码状态而第一个按键没有按下时state为高电平。
仿真波形如下:
图12仿真图
根据仿真波形可以看出,set为‘0’时设置密码,当set为‘1’时,在judge_load(按键识别信号)为‘0’的情况下,state为‘1’,保证下面将要提及的报警模块不会工作,而只有当judge_load为‘1’,且5秒过后state变为‘0’时才有可能发出报警信号(密码输错的情况下)。
(5)开锁信号的产生
本模块主要是对输入的密码进行判断,一旦密码输入正确,产生一个开锁信号unlock(高电平有效)。
其模块与部分程序如下:
process(enter2)
begin
if(enter2'eventandenter2='1')then——输入密码确认
if(set='1')then
if(state='1')then——5秒期间
if(datain=ram)then
unlock<='1';——开锁信号
elseunlock<='0';
endif;endif;endif;
endif;图13模块图
endprocess;
输入正确密码仿真波形:
图14仿真图
输入错误密码仿真波形:
图15仿真图
(6)报警模块
本模块主要是在5秒限制时间结束时,如果还没有开锁,就产生报警信号。
即长达20秒的声光信号。
这里的报警信号指示灯用led_r_temp3表示,扬声器用speaker_temp2表示。
其模块及部分程序如下:
signalcount_20:
std_logic_vector(4downto0);
signaltemp:
std_logic;
begin
process(clk)
Begin图16模块图
if(clk'eventandclk='1')then
if(set='0')then
temp<='0';
elsif(set='1')then
if(state='0')then
if(count_20="10100")then
count_20<="10100";temp<='0';
elsecount_20<=count_20+1;temp<='1';
speaker_temp2<=clk_1k;
endif;endif;endif;
endif;
endprocess;
led_r_temp3<=tempandclkand(notunlock);
speaker_temp2<=tempandclk_1kand(notunlock);
仿真波形如下:
图17仿真图
可见当state由‘1’变为‘0’且没有unlock信号时,输出20秒的声光信号以示报警。
(7)开锁信号控制指示灯变化模块
本模块是实现当开锁信号产生时,相应的指示灯由红亮绿灭变成红灭绿亮。
这里同样先用led_r_temp2、led_g_temp2代表红灯和绿灯。
其模块及部分程序如下:
process(clk_1k,state)
begin
if(clk_1k'eventandclk_1k='1')then
if(state='1')then图18模块图
if(unlock='1')then
led_r_temp2<='0';led_g_temp2<='1';
elseled_r_temp2<='1';led_g_temp2<='0';
endif;endif;endif;
endprocess;
仿真波形如下:
图19仿真图
(8)开锁信号产生2秒提示音模块
当开锁信号产生时,扬声器发出两秒的提示音。
这里用speaker_temp2代替。
其模块及部分程序如下:
signalcount_2:
std_logic_vector(1downto0);
signaltemp:
std_logic;
begin
process(clk)图20模块图
begin
if(clk'eventandclk='1')then——1秒Hz
if(unlock='1')then
if(count_2="10")then
count_2<="10";temp<='0';
elsecount_2<=count_2+1;temp<='1';
endif;endif;endif;
endprocess;
speaker_temp1<=clk_1kandtemp;
仿真波形如下:
图21仿真图
(9)指示灯综合输出模块
本模块主要是将led_r_temp1、led_g_temp1、led_r_temp2、led_g_temp2经过条件判断选择输出,设置密码(set=‘0’)时输出led_r_temp1、led_g_temp1,输入密码(set=‘1’)时输出led_r_temp2、led_g_temp2。
其模块及部分程序如下:
if(set='0')then
led_r<=led_r_temp1;
led_g<=led_g_temp1;
Else图22模块图
led_r<=led_r_temp2;led_g<=led_g_temp2;
仿真波形如下:
图23仿真图
(10)扬声器综合输出模块
本模块主要是将报警音speaker_temp1和开锁提示音speaker_temp2经过条件选择判断输出,set=‘0’时,输出为‘0’;当set=‘1’且unlock=‘0’时输出speaker_temp1,当unlock=1时,输出speaker_temp2。
其模块及部分程序如下:
if(set='0')then
speaker<='0';
elsif(unlock='1')then
speaker<=speaker_temp1;图24模块图
else
speaker<=speaker_temp2;
endif;
仿真波形如下:
图25仿真图
3、仿真及仿真结果分析
顶层模块详见报告后面所附的顶层模块图,仿真波形如下:
输入错误密码:
图26仿真图
输入正确密码:
图27仿真图
4、实验调试结果
本次的设计基本完成了LED数码显示,蜂鸣器设置。
基本完成了预期的目标,配合软件仿真的实现。
但是由于时间仓促、条件有限,设计成果并不是很完美,但对于这一整个电子密码锁系统,设计的程序已经基本实现。
三、结论及心得体会
通过这次设计,使我对EDA产生了浓厚的兴趣。
特别是当每一个子模块编写调试成功时,心里特别的开心。
这次EDA课程设计历时一个星期,在这些日子里,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
这次设计的密码锁还是比较成功的,虽然在设计中遇到了很多问题,最后在同学的帮助下外加上自己的努力,终于都得到了解决,因此很有成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的。
参考资料
[1]潘松著.EDA技术实用教程(第二版).北京:
科学出版社,2005.
[2]康华光主编.电子技术基础模拟部分.北京:
高教出版社,2006.
[3]阎石主编.数字电子技术基础.北京:
高教出版社,2003.
东北石油大学课程设计成绩评价表
课程名称
EDA技术课程设计
题目名称
电子密码锁
学生姓名
学号
指导教师姓名
职称
序号
评价项目
指标
满分
评分
1
工作量、工作态度和出勤率
按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。
20
2
课程设计质量
课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。
45
3
创新
工作中有创新意识,对前人工作有一些改进或有一定应用价值。
5
4
答辩
能正确回答指导教师所提出的问题。
30
总分
评语:
指导教师:
2013年3月11日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 电子 密码锁 详解