EDA电子密码锁_第1页
EDA电子密码锁_第2页
EDA电子密码锁_第3页
EDA电子密码锁_第4页
EDA电子密码锁_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电子密码锁20设计要求1)设计一个密码锁的控制电路,当输入正确代码时,输出开锁信号以推动执行 机构工作,用红灯亮、绿灯熄灭表示关锁,用绿灯亮、红灯熄灭表示开锁;2)在锁的控制电路中储存一个可以修改的 4位代码,当开锁按钮开关(可设置 成6位至8位,其中实际有效为4位,其余为虚设)的输入代码等于储存代码时, 开锁;3)从第一个按钮触动后的5秒内若未将锁打开,则电路自动复位并进入自锁状 态,使之无法再打开,并由扬声器发出持续 20秒的报警信号。1、方案论证与对比1.1方案一方案一是用以AT89C2051为核心的单片机控制方案。共设了 9个用户输入 键,其中只有4个是有效的密码按键,其它的都是干扰按

2、键,若按下干扰键,键 盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码 的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以 修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘 5分钟,防止 他人的非法操作。设计方框图如图1所示。密码修改电路键盘输入密码校验电路开锁电路执行电路限时报警报警次数检锁定五分钟方案二是用本学期所学的EDA技术中的VHDL语言来实现方案。设计方框 图如图2所示1.3比较由于单片机方案原理复杂,而且调试较为繁琐,并且是用C语言或者汇编语言实现功能,构成的是软件,容易受到外界影响;而有 EDA技术中VHDL (硬件描述语言

3、),构成的是硬件本身,不容易受到外界的干扰,所以本文采用 后一种方案。方案一是基于软件的编程语言,对硬件和软件的要求都很高,方案 二则是基于硬件设计的语言,很容易对硬件电路实现编程下载;2 .总体模块设计本设计采用EDA技术和VHDL语言设计了一种按键输入密码并数码管回显, 当输入正确密码时轰动绿灯亮、 红灯熄灭表示开锁,而当输入错误密码时,红灯 亮、绿灯熄灭表示关锁。根据系统设计要求,系统设计采用自顶向下的设计方法。顶层设计采用原理图3系统整体组装设计原理图图设计方 式,系统的 整体组装设 计原理图如图2-1所示。它由时钟电 路按键控制 输入模块、 密码锁控制 模块、数码 管与LED显示模块

4、和报警电路等四部分组成。程序下载后系统进入原始状态(原始密码000000),按下键8发光二极管8(绿灯)亮、法官二极管7 (红灯)灭。当要重新设置密码时,直接输入自己想 要设置的密码并按下键8,持续5S,数码管8由0变为1,此时7段数码管1、2、 3、4、5、6对应显示新设置的密码。当要输入密码时,按下键7,先将密码清零, 再随机输入一组6位密码,假如密码正确,发光二极管 8 (绿灯)立即亮;反之 如不正确,等待5S,发光二极管7 (红灯)亮并由蜂鸣器发出20S的报警信号。3 .单元模块设计3.1 顶层模块设计该电子密码锁顶层文件使用原理图输入法,将按键、延时、判断正误、出错 红灯亮并报警、正

5、确绿灯亮这几个模块连接在一起实现 6位二进制密码锁功能具体顶层原理图如图3-1所示:图4密码锁顶层文件原理图3.2 密码输入模块1、本按键输入模块包括设置密码并读取、密码清零、输入密码、系统复位功 能。该模块中我们设置了 8个按键,各个按键的功能分别为:按键 1、2、3、4、 5、6分别对应6位二进制密码输入、键7为密码清零按键、键8为系统复位和 密他读取按键。3.3 上各子模块的设计均采用 VHDL语言实现,其具体实现程序如下: Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity ke

6、y isport( key_in1,key_in2,key_in3,key_in4,key_in5,key_in6 : in std_logic;clk: in std_logic;str : in std_logic;resert : in std_logic;clk20: in std_logic;ds: in std_logic;key_out : out std_logic_vector(5 downto 0);key_read: out std_logic;key_resert : out std_logic;key_r : out std_logic);end key;archit

7、ecture key_mima of key issignal m :std_logic_vector(5 downto 0);signal sa :std_logic_vector(5 downto 0);signal dd: std_logic:='0'signal dd1: std_logic;signal count :std_logic_vector(3 downto 0);k=y_in"key_ontE.Di rIikey_m2key_re«Ekey_ne5erttIcqCJ|ikey_in5i三!dkI1与trEire3EitFdI2Cj加f图

8、5密码输入模块signal count2 :std_logic_vector(3 downto 0);signal count3 :std_logic_vector(3 downto 0) ;beginc0:process(resert,key_in1,key_in2,key_in3,key_in4,key_in5,key_in6)beginif resert='1' then dd<='0'- 全部清零else if key_in1='1' or key_in2='1' or key_in3='1' or

9、key_in4='1' or key_in5='1' or key_in6='1'then dd<='1' end if; end if; - 只要有键按下, dd 将为高电平不变key_r<=dd;end process c0;cc: process(key_in5,key_in6,clk,resert)beginif clk'event and clk='1' thenif ds='1'then - 保持 ds='1' ,持续 5 秒高电平 5 秒后产生低电平

10、,第 5 秒为 低电平-按下键八5 秒后读取密码if count<6 thenkey_read<='0' ;count<=count+1; else count<=count;end if;if count=5 then key_read<='1' end if;else count<="0000" ;key_read<='0'end if;end if;end process cc ;cc2: process(key_in1,key_in2 ,clk,resert)beginif c

11、lk'event and clk='1' thenif ds='1'then 保持ds='1',持续3秒高电平3秒后产生低电平,第3秒为低电- 按下按下键八三秒后对错误复位if count2<4 thenkey_resert<='0' ;count2<=count2+1; else count2<=count2;end if;if count2=3 then key_resert<='1' end if;else count2<="0000" ;key

12、_resert<='0'end if;end if;end process cc2 ;c1:process(key_in1,str,sa) -按键 1 输入beginif str='1' or sa(0)='1' then m(0)<='0'elseif key_in1'event and key_in1='1' then m(0)<=not m(0);end if;end if;end process c1;c2:process(key_in2,str,sa) -按键 2 输入begin

13、if str='1' or sa(1)='1' then m(1)<='0'elseif key_in2'event and key_in2='1' then m(1)<=not m(1);end if;end if;end process c2;c3:process(key_in3,str,sa) -按键3 输入beginif str='1' or sa(2)='1' then m(2)<='0' elseif key_in3'event and

14、key_in3='1' then m(2)<=not m(2);end if;end if;end process c3;c4:process(key_in4,str,sa) -按键4 输入beginif str='1' or sa(3)='1' then m(3)<='0'elseif key_in4'event and key_in4='1' then m(3)<=not m(3);end if;end if;end process c4;c5:process(key_in5,str,

15、sa) -按键5 输入beginif str='1' or sa(4)='1' then m(4)<='0'elseif key_in5'event and key_in5='1' then m(4)<=not m(4);end if;end if;end process c5;c6:process(key_in6,str,sa) -按键6 输入beginif str='1' or sa(5)='1' then m(5)<='0'elseif key_in6

16、'event and key_in6='1' then m(5)<=not m(5);end if;end if;end process c6;v22:process(resert,clk20)beginif clk20'event and clk20='1' thenif resert='1' thenif count3=7 then count3<=count3 ; elsecount3<=count3+1; sa<="000000"if count3=5 then sa<=&

17、quot;111111" else sa<="000000" end if;end if;else count3<="0000"end if; end if;end process v22 ;key_out<=m and (not sa);end key_mima;3.3显示模块1、本设计要求输入正确密码时,绿灯亮、红灯熄灭;当输入错误密码时,5s后红灯亮绿灯灭,同时要求发出 20S的报警。为此我们设计发光二极管 D7和D8分别表示红灯和绿灯,并用蜂鸣器作为报警电路2、LED显示电路的VHDL程序如下:Library IEEE

18、;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all; entity led is图6 LED显示模块port( r: in std_logic;str: in std_logic;str5: in std_logic;ar : out std_logic);end led;architecture led_mima of led issignal s1 :std_logic :='0'beginb1: process(str,r,str5) beginif str='0' then if r&

19、#39;event and r='1' then if str5='1' then s1<='1' end if; end if;else s1<='0'end if;end process b1 ;ar<=s1;end led_mima;3、报警电路程序设计如下:Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity sound isport( str: in std_logic;clk: in std_lo

20、gic;sound_out : out std_logic);end sound;architecture xd_sound of sound issignal ss :std_logic ;beginstr为高电平20秒process(str,clk)-产生20报警电路,需要 beginif str='1' thenss<=clk;else ss<='0'end if;sound_out<=ss;end process;end xd_sound;3.4延时模块1、针对本设计中要求的输入错误密码后 5s报错和20S报警,我们设计了 5s和20S

21、的两个延时模块。2、延时5s程序设计Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity mc isport( str: in std_logic;clk: in std_logic;key_out : out std_logic);end mc;architecture mc_mima of mc issignal count :std_logic_vector(3 downto 0);beginprocess(str,clk)beginif clk'event and clk=

22、'1' thenif str='1' then电平if count<6 then key_out<='1'count<=count+1; else count<=count;end if;if count=5 then key_out<='0' end if;else count<="0000" ;key_out<='0'end if;end if;end process ;end mc_mima;3、延时20S程序如下:Library IEEE;use

23、 IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity m20 isport(str: in std_logic;clk: in std_logic;key_out : out std_logic);end m20;architecture m20_mima of m20 is图8 延日5秒模块-保持str为1 5秒高电平5秒后产生低电平,第6秒为低:str key outi- ;lkt insil1.£-< I I 1-« I I Ij I ! i l aa i i k.T I A图9 延时20

24、秒模块signal count :std_logic_vector(4 downto 0);beginprocess(str,clk)beginif clk'event and clk='1' thenif str='1' then -保持str为1 20秒高电平20秒后产生低电平,第21秒为 低电平if count<21 then key_out<='1'count<=count+1; else count<=count;end if;if count=20 then key_out<='0'

25、; end if;else count<="00000" ;key_out<='0'end if;end if;end process ;end m20_mima;3.5设置密码以及验证模块1、中要求密码可以设置,为了更清晰的了解密码,我们除了设计密码设置键外,还设置了数码管显示设置好的密码。该模块采用VHDL语言设计而成。2、设置密码输入程序如下:Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity ledw isport(ee: in s

26、td_logic;tr: in std_logic;tr5: in std_logic;aw : out std_logic);end ledw;图10 architecture ledw_mima of ledw issignal si :std_logic :='0'beginprocess(str,ee,str5)beginif str='0' thenif str5'event and str5='0' thenif ee='0' thens1<='1'end if;end if;else s

27、1<='0' end if;end process ;aw<=s1;end ledw_mima;3、密码校对电路程序设计如下:Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity xd is -密码校对port(str: in std_logic;a : in std_logic_vector(5 downto 0);b : in std_logic_vector(5 downto 0);key_out : out std_logic);end xd;archi

28、tecture xd_mima of xd issignal ss :std_logic :='0'begin密码及验证模块fit na»- hiuw hi ! g? !Efrbe召 M-Dllt r- j *5:L如5冽:msti图11密码校对模块process(a(0),a(1),a(2),a(3),a(4),a(5),str)beginif str='1' thenif a=b thenss<='1'else ss<='0' ;end if;else ss<='0' end if;

29、key_out<=ss;end process;end xd_mima;密码电路程序LIBRARY ieee;USE IEEE.STD_LOGIC_1164.ALL;use IEEE.std_logic_unsigned.all;entity mima isPORT(clk_mima : IN STD_LOGIC;key : IN STD_LOGIC_VECTOR(5 downto 0);mima_out : OUT STD_LOGIC_VECTOR(5 downto 0);end mima;ARCHITECTURE one OF mima ISsignal s:std_logic_ve

30、ctor(5 downto 0);beginprocess (clk_mima,key)beginif clk_mima='1' JillMl IIHAillMMIIl'BHMIMMil-IMHIMWaiMIIII'ivi llii -miB=mimam 1 r tr clkrr pt a Mim3_nut5.D:1-3y5.0;then s<=key;else null;end if;mima_out<=s;end process;end one;4.系统仿真将程序下载Cyclone系列芯片中,同时在EDA试验箱上进行硬件验证。本 文提出的电子密码

31、锁由于采用 VHDL语言设计,用一片FPGA实现,因而体积 小,功耗低,稍加修改就可以改变密码的位数和输入密码的次数,具有较好的 应用前景。但由于结构还比较简单,有待进一步完善。1)密码锁输入模块的仿真,如图12所示。】腔 究可大 胤,p nsm 网。心 装Q+PgQxmo海画血画通打海币wr五nr1 1.32E 小图12密码锁输入模块仿真2)电子密码锁整个系统的仿真如图13:凹州二二clkldh£Dstr删珊唧卿卿喇唧nmni删rail岫nmmmmM唧ram 口irnoMr皿mno则皿i i i i a i i i i i i I E I i i i li I i i i I i

32、i i i i i il i i i i I i i i i I i i i i I iW 土'./r_umi-ke.EJ di罚】ay图13电子密码锁整个电路系统仿真图5 .硬件测试1)仿真波形正确后,便可进行下载;2)选择GW48系列EDA试验开发系统;3)使用 Cyclone 系列芯片 EP1C6Q240C8;4)先进行引脚锁定,具体引脚锁定如图 14;5)选择模式3;6)选择好硬件和模式后就可以下载都 EDA实验箱;ToLondonIfO BankI/O Standard1*曲曲出口PINLVTTL2dbplay LPINJLVTTL3display 2PIM_31LVTTL1

33、display 3PIN.ALMTTL51di5pky+PIN 6Ilvttl6display 5PIhl_71LVTTL1greenPINJ21 _WTTL司0PIN_233LVTTL9ikeytlPIN_2342LWHLjOPINJ35£WTTL111Ui向PIN_2362LVT7LL2lrf*key4PIN 237,二2LVTTL13lhey5PIhl_2382LMTTL14咳L盯TL15key Jell 0PINJ3中LVTTLS训 1PINJ7diLVTTL173 key Jt 现 2PIN JIUTTLL6PINJ33.Jwni19<keyjell4PIN_137L

34、vm20<S'key_tell5PINJ41 _ JLMTTL215 redP1N_8dLVTTL223 soundP1NJ743LVHL23*匕PIN_239WTTL遇l»-clk20PINJ52OiJLVTTL2S嫁,m诘re hiPINJ65.JLVTTL垄TdklPINJ53LMTTL27也PIN)和7LWTTL图14密码锁引脚锁定6 .结束语通过两星期的紧张工作,最后完成了我的设计任务一一 基于VHDLS言的智能密码锁设计。通过本次课程设计的学习,我深深的体会到 设计课的重要性和目的性所在。本次设计课不仅仅培养了我们实际操作能力, 也 培养了我们灵活运用课本知

35、识,理论联系实际,独立自主的进行设计的能力。它 不仅仅是一个学习新知识新方法的好机会, 同时也是对我所学知识的一次综合的 检验和复习,使我明白了自己的缺陷所在,从而查漏补缺。希望学校以后多安排 一些类似的实践环附录主控制程序参考如下 :LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY work;ENTITY lock ISport (str : IN STD_LOGIC;clk20 : IN STD_LOGIC;clk1 : IN STD_LOGIC;ds : IN STD_LOGIC;key : IN STD_LOGIC_VECTOR(5 do

36、wnto 0);green : OUT STD_LOGIC;red : OUT STD_LOGIC;sound : OUT STD_LOGIC;xianshi : OUT STD_LOGIC;key_read : OUT STD_LOGIC;display : OUT STD_LOGIC_VECTOR(5 downto 0);key_tell : OUT STD_LOGIC_VECTOR(5 downto 0);END lock;ARCHITECTURE bdf_type OF lock IS component ledPORT(r : IN STD_LOGIC;str : IN STD_LO

37、GIC;str5 : IN STD_LOGIC;ar : OUT STD_LOGIC);end component;component soundPORT(str : IN STD_LOGIC;clk : IN STD_LOGIC;sound_out : OUT STD_LOGIC);end component;component mcPORT(str : IN STD_LOGIC;clk : IN STD_LOGIC;key_out : OUT STD_LOGIC);end component;component xdPORT(str : IN STD_LOGIC;a : IN STD_LO

38、GIC_VECTOR(5 downto 0);b : IN STD_LOGIC_VECTOR(5 downto 0);key_out : OUT STD_LOGIC);end component;component mimaPORT(clk_mima : IN STD_LOGIC;key : IN STD_LOGIC_VECTOR(5 downto 0);mima_out : OUT STD_LOGIC_VECTOR(5 downto 0);end component;component m20PORT(str : IN STD_LOGIC;clk : IN STD_LOGIC;key_out

39、 : OUT STD_LOGIC);end component;component keyPORT(key_in1 : IN STD_LOGIC;key_in2 : IN STD_LOGIC;key_in3 : IN STD_LOGIC;key_in4 : IN STD_LOGIC;key_in5 : IN STD_LOGIC;key_in6 : IN STD_LOGIC;clk : IN STD_LOGIC;str : IN STD_LOGIC;resert : IN STD_LOGIC;clk20 : IN STD_LOGIC;ds : IN STD_LOGIC;key_read : OU

40、T STD_LOGIC;key_resert : OUT STD_LOGIC;key_r : OUT STD_LOGIC;key_out : OUT STD_LOGIC_VECTOR(5 downto 0);end component;component ledwPORT(ee : IN STD_LOGIC;str : IN STD_LOGIC;str5 : IN STD_LOGIC;aw : OUT STD_LOGIC);signal signal signal signal signal signal signal signal signal signal signal BEGINend component;a : STD_LOGIC_VECTOR(5 downto 0);b : STD_LOGIC_VECTOR(5 downto 0);c : STD_LOGIC_VECTOR(5 downto 0);STD_LOGIC;STD_LOGIC;STD_LOGIC;STD_LOGIC;STD_LOGIC;STD_LOGIC;STD_LOGIC;STD_LOGIC;SYNTHESIZED_WIRE_0 :SYNTHESIZED_WIRE_11 :SYNTHESIZED_WIRE_2 :SYNTHESIZED_WIRE_3 :SYNTHESIZED_WIRE_5 :SYNTH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论