当前位置:文档之家› 电子密码锁设计

电子密码锁设计

河南科技大学课程设计说明书课程名称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三部分以及逻辑门组成,结构图如下:图21)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.vhdarchitecture one of count5 issignal cnt:natural range 0 to 5:=0;beginprocess(cp,rst)beginif rst='1' then cnt<=0;elsif cp'event and cp='1' thenif cnt=4 then cnt<=4;else cnt<=cnt+1;end if;end if;end process;process(cnt,rst)beginif rst='1' then oc<='1';c_out<='0';elseif 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.vhdarchitecture yima of yima issignal tmp :std_logic_vector(3 downto 0);beginprocess(s,key_in)begincase key_in iswhen "10000" => --输出 5 或0if s='1' then tmp<="0101";elsif s='0'then tmp<="0000";end if;when "01000" => --输出 6 或1if s='1' then tmp<="0110";elsif s='0'then tmp<="0001";end if;when "00100" => --输出7 或2if s='1' then tmp<="0111";elsif s='0'then tmp<="0010";end if;when "00010" => --输出8 或3if s='1' then tmp<="1000";elsif s='0'then tmp<="0011";end if;when "00001" => --输出9 或4if s='1' then tmp<="1001";elsif s='0'then tmp<="0100";end if;when others=>null;end case;end process;dout<= tmp;end;3)移位寄存器shift移位寄存器shift的驱动信号cp和计数器相似依然由key_in[0..4]产生,但却受计数器输出端的oc控制通断。

当oc为'1'时,cp 是由key_in[0..4]产生的脉冲,当oc为'0'时,cp被拉低。

当rst='1'时,移位寄存器被置为"1111111111111111",否则就在cp的下降沿进行移位,每次移动4位,同时将结果输出,并在数码管上显示。

程序如下:shift.vhdarchitecture rtl of shift issignal dout_m :std_logic_vector(15 downto 0);beginprocess (cp,din,rst)beginif rst='1' then dout_m<=(others=>'1');elsif (falling_edge(cp)) thendout_m(3 downto 0)<=din;dout_m(7 downto 4)<=dout_m(3 downto 0);dout_m(11 downto 8)<=dout_m(7 downto 4);dout_m(15 downto 12)<=dout_m(11 downto 8);end if;end process;dout<=dout_m;end rtl;以上三个部分综合仿真的结果如下:图32、主要控制部分电路主要控制部分是有众多小电路组成的,包括时钟分频电路,数据锁存电路,D触发器,60进制计数器,25进制计数器,数据比较电路,分用器,复用器,电平保持电路以及少量逻辑门电路组成。

电路组成结构图如图15该电路主要实现对电子密码锁的全面控制。

1)时钟分频电路将输入的256Hz时钟经处理后输出为1Hz,4Hz,128Hz,256Hz四种时钟信号,用于驱动不同的器件。

1Hz主要用于驱动计数器工作,4Hz用于输出驱动密码输入错误的时候的红灯闪烁,128Hz和256Hz用于输出驱动蜂鸣器发声,当密码锁在5秒钟内输入正确打开时,输出为256Hz的脉冲;输入密码错误或者没打开则输出128Hz脉冲。

图4程序如下:free.vhdentity free isport(clk:in std_logic;cp1,cp4,cp128,cp256:out std_logic);end;architecture one of free issignal cnt:std_logic_vector(7 downto 0);beginprocess(clk)beginif clk'event and clk='1' thencnt<=cnt+'1';end if;end process;cp1<=cnt(7);cp4<=cnt(5);--cp3<=cnt(2);cp128<=cnt(0);cp256<=clk;end;2)25进制计数器25进制计数器只要功能是对输入密码的时间以及报警时间计时。

相关主题