电子密码锁设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河南科技大学
课程设计说明书
课程名称EDA课程设计
题目电子密码锁设计
学院电子信息工程学院
班级电信科074班
学生姓名马保林
指导教师宋萧
日期2010年9月22日
课程设计任务书
课程设计名称EDA课程设计学生姓名马保林专业班级电信科074班设计题目电子密码锁设计
一、课程设计目的
1、综合运用EDA技术,独立完成一个课题的设计,考察运用所学知识,解决实际问题
的能力;
2、结合理论知识,考察阅读参考资料、文献、手册的能力;
3、进一步熟悉EDA技术的开发流程,掌握文件编辑、编译、仿真、下载验证等环节的
实现方法和应用技巧;
4、锻炼撰写研究报告、研究论文的能力;
5、通过本实践环节,培养科学和严谨的工作作风。
二、设计内容、技术条件和要求
1、设计一个密码锁的控制电路,当输入正确代码时,输出开锁信号以推动执行机构工
作,用红灯亮、绿灯熄灭表示关锁,用绿灯亮、红灯熄灭表示开锁;
2、在锁的控制电路中储存一个可以修改的4位二进制代码,当开锁按钮开关的输入代
码等于储存代码时,开锁;
3、从第一个按钮触动后的30秒内若未将锁打开,则电路长报警30S,若输入密码错误
1或2次,则每次短报警5S,若输错三次密码则长报警。
三、时间进度安排
1周:(1) 完成设计准备,确定实施方案;(2) 完成电路文件的输入和编译;(4) 完成功能仿真。
2周:(1) 完成文件至器件的下载,并进行硬件验证;(2) 撰写设计说明书。
四、主要参考文献
(1)谭会生、瞿遂春,《EDA技术综合应用实例与分析》,西安电子科技大学出版社,2004
(2)高有堂,《EDA技术及应用实践》,清华大学出版社,2006
(3)亿特科技,CPLD/FPGA应用系统设计与产品开发》,人民邮电出版社,2005
(4)曹昕燕、周凤臣等,《EDA技术实验与课程设计》,清华大学出版社,2006
指导教师签字:2010年9月5日
一、设计思路
该电子密码锁的设计主要有两个模块组成:1)按键输入译码部分yima_count5_shift 和2)控制电路contra
结构图如下:
图1
其中key_in[0..4]是五个密码输入按键,在控制端s的控制下可以输入0~9十个数字。Change用于修改密码,在电锁打开状态下,按下change可以对密码锁的密码进行修改;在电锁未打开,输入密码时候按一下change键可以对已输入的密码清零,重新输入密码。当输完密码后按下ok键,密码输入到电锁内部。稍后,会将已输入的密码进行清零。
Ff是报警信号,当按下第一个密码输入按键后,五秒内电锁未打开,则输出256hz 报警信号驱动蜂鸣器报警,并且红灯闪烁,均持续20s;若五秒内密码输入正确,电锁打开,则输出128hz的提示信号,告诉用户电锁已打开,并且绿灯亮红灯灭。提示信号持续20s,电锁打开时间为60s,超过60s后,电锁自动上锁,红灯亮,绿灯灭。
输入密码和修改密码时,输入的数字都会在数码管上显示,当输入完毕按下ok确认后,数码管清零,不再显示。
二、各部分的详细说明以及功能介绍
1、按键输入译码部分yima_count5_shift
主要功能是,识别密码按键的输入,并将输入码译为对应的BCD码,同时进行移位操作,内部置有串行输入并行输出移位寄存器,每输入一位密码,就将其译为BCD 并在数码管上输出,同时输出给控制部分contra。再次按下密码输入按键后,数码左移,直到四位密码全部输入。有计数器控制,只能允许输入四位密码,超过密码长度的输入,既不显示也不移位。
该部分的电路主要有yima,count5和shift三部分以及逻辑门组成,结构图如下:
图2
1)5进制计数器count5
主要功能是记录按键的次数,用于控制密码个数的输入。计数器开始值为0,驱动信号cp为key_in[0..4]五个按键信号相或得到,五个按键中任意一个按下,cp就为'1'否则为'0'。当rst清零信号为'1'时计数器清零,否则,计数器在cp的上升沿,计数。当计数器的值不为0时,c_out置为'1',其余为'0';当计数器记到4时,不再增加,且oc置为'0',其余oc为'1'。
部分程序如下:count5.vhd
architecture one of count5 is
signal cnt:natural range 0 to 5:=0;
begin
process(cp,rst)
begin
if rst='1' then cnt<=0;
elsif cp'event and cp='1' then
if cnt=4 then cnt<=4;
else cnt<=cnt+1;
end if;
end if;
end process;
process(cnt,rst)
begin
if rst='1' then oc<='1';c_out<='0';
else
if cnt=4 then oc<='0';else oc<='1';end if;
if cnt=0 then c_out<='0'; else c_out<='1';end if;
end if;
end process;
end;
2)译码器yima
译码器的主要功能是,将key_in[0..4]和s六个按键的输入识别并转换为对应的数字的BCD码。
Key_in[0..4]五个按键每一按键输入代表两个数字,译码结果由s选择,按键s按下后为'1',不按下时为'0'。当s='0'时,按键输入的数字由key_in(0)到key_in(4)分别代表0到4(BCD码为0000,0001,0010,0011,0100);当s='1'时,代表5到9(BCD码为0101,0110,0111,1000,1001)。
部分程序如下yima.vhd
architecture yima of yima is
signal tmp :std_logic_vector(3 downto 0);
begin