ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:302.02KB ,
资源ID:3231904      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3231904.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(EDA电子密码锁1.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

EDA电子密码锁1.docx

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

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

3、案。方案一是基于软件的编程语言,对硬件和软件的要求都很高,方案二则是基于硬件设计的语言,很容易对硬件电路实现编程下载;2.总体模块设计 本设计采用EDA技术和VHDL语言设计了一种按键输入密码并数码管回显,当输入正确密码时轰动绿灯亮、红灯熄灭表示开锁,而当输入错误密码时,红灯亮、绿灯熄灭表示关锁。根据系统设计要求,系统设计采用自顶向下的设计方法。顶层设计采用原理图设计方式,系统的整体组装设计原理图如图2-1所示。它由时钟电路按键控制输入模块、密码锁控制模块、数码管与LED显示模块和报警电路等四部分组成。程序下载后系统进入原始状态(原始密码000000),按下键8发光二极管8(绿灯)亮、法官二极

4、管7(红灯)灭。当要重新设置密码时,直接输入自己想要设置的密码并按下键8,持续5S,数码管8由0变为1,此时7段数码管1、2、3、4、5、6对应显示新设置的密码。当要输入密码时,按下键7,先将密码清零,再随机输入一组6位密码,假如密码正确,发光二极管8(绿灯)立即亮;反之如不正确,等待5S,发光二极管7(红灯)亮并由蜂鸣器发出20S的报警信号。3.单元模块设计3.1 顶层模块设计该电子密码锁顶层文件使用原理图输入法,将按键、延时、判断正误、出错红灯亮并报警、正确绿灯亮这几个模块连接在一起实现6位二进制密码锁功能。具体顶层原理图如图3所示:图3 密码锁顶层文件原理图3.2 密码输入模块1、本按键

5、输入模块包括设置密码并读取、密码清零、输入密码、系统复位功能。该模块中我们设置了8个按键,各个按键的功能分别为:按键1、2、3、4、5、6分别对应6位二进制密码输入、键7为密码清零按键、键8为系统复位和密码读取按键。2、以上各子模块的设计均采用VHDL语言实现,其具体实现程序如下:Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity key is port( key_in1,key_in2,key_in3,key_in4,key_in5,key_in6 : in std_logic; cl

6、k: 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;architecture key_mima of key is signal m :std_logic_vector(5 downto 0);si

7、gnal sa :std_logic_vector(5 downto 0);signal dd: std_logic:=0;signal dd1: std_logic;signal count :std_logic_vector(3 downto 0) ;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 re

8、sert=1 then dd=0; - 全部清零 else if key_in1=1 or key_in2=1 or key_in3=1 or 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 clkevent and clk=1 then if ds=1 then - 保持 ds=1 ,持续5秒高电平 5秒后产生低电平,第5秒为低电平

9、-按下键八5秒后读取密码if count6 then key_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 clkevent and clk=1 then if ds=1 then - 保持ds=1,持续 3秒高电平 3秒后产生低电平,第3秒为低电平 - 按下按

10、下键八三秒后对错误复位if count24 then key_resert=0 ;count2=count2+1; else count2=count2; end if;if count2=3 then key_resert=1; end if;else count2=0000 ;key_resert=0; end if; end if;end process cc2 ;c1:process(key_in1,str,sa) -按键1输入begin if str=1 or sa(0)=1 then m(0)=0;else if key_in1event and key_in1=1 then m(

11、0)=not m(0);end if; end if; end process c1;c2:process(key_in2,str,sa) -按键2输入beginif str=1 or sa(1)=1 then m(1)=0;else if key_in2event 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; else if key_in3event and key_in

12、3=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;else if key_in4event and key_in4=1 then m(3)=not m(3);end if; end if;end process c4;c5:process(key_in5,str,sa) -按键5输入beginif str=1 or sa(4)=1 then m(4)=0;else if key_in5event an

13、d 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;else if key_in6event and key_in6=1 then m(5)=not m(5);end if; end if;end process c6;v22:process(resert,clk20)beginif clk20event and clk20=1 thenif resert=1 thenif count3

14、=7 then count3=count3 ; else count3=count3+1; sa=000000; if count3=5 then sa=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;图4密码输入模块密码输入模块仿真如下(图5):3.3显示模块1、本设计要求输入正确密码时,绿灯亮、红灯熄灭;当输入错误密码时,5S后红灯亮绿灯灭,同时要求发出20S的报警。为此我们设计发光二极管D7

15、和D8分别表示红灯和绿灯,并用蜂鸣器作为报警电路。2、LED显示电路的VHDL程序如下:Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity led is 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

16、,str5)beginif str=0 thenif revent 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;图6 LED显示模块LED显示模块仿真如下(图7):3、报警电路程序设计如下:Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity sound is port( str: in std_logic; clk: in std

17、_logic; sound_out : out std_logic);end sound;architecture xd_sound of sound is signal ss :std_logic ;beginprocess(str,clk) -产生20报警电路,需要str 为高电平20秒begin if str=1 then ss=clk; else ss=0;end if;sound_out=ss;end process;end xd_sound;图8 报警模块报警模块仿真如下(图9):3.4 延时模块1、针对本设计中要求的输入错误密码后5S报错和20S报警,我们设计了5S和20S的两个

18、延时模块。2、延时5S程序设计:Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity mc is port( 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 clkevent and clk=1 th

19、en if str=1 then - 保持str 为1,5秒高电平 5秒后产生低电平,第6秒为低电平if count6 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;图10 延时5秒模块延时5秒模块仿真如下(图11):3、延时20S程序如下:Library IEEE;use IEEE.std_logic_1164.all; us

20、e IEEE.std_logic_unsigned.all;entity m20 is port(str: in std_logic;clk: in std_logic; key_out : out std_logic);end m20;architecture m20_mima of m20 issignal count :std_logic_vector(4 downto 0) ;beginprocess(str,clk)beginif clkevent and clk=1 then if str=1 then - 保持str 为1,20秒高电平 20秒后产生低电平,第21秒为低电平if

21、count21 then key_out=1; count=count+1; else count=count; end if;if count=20 then key_out=0; end if; else count=00000 ;key_out=0; end if; end if; end process ;end m20_mima;图12 延时20秒模块延时20秒模块仿真如下(图13):3.5设置密码以及验证模块1、中要求密码可以设置,为了更清晰的了解密码,我们除了设计密码设置键外,还设置了数码管显示设置好的密码。该模块采用VHDL语言设计而成。2、设置密码输入程序如下:Library

22、 IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all; entity ledw is port(ee: in std_logic; str: in std_logic; str5: in std_logic; aw : out std_logic);end ledw;architecture ledw_mima of ledw issignal s1 :std_logic :=0;begin process(str,ee,str5)beginif str=0 then if str5event and str5=0

23、thenif ee=0 then s1=1;end if;end if;else s1=0; end if;end process ;aw=s1;end ledw_mima;图14 密码及验证模块密码及验证模块仿真如下(图15):3、密码电路程序如下:LIBRARY ieee;USE IEEE.STD_LOGIC_1164.ALL;use IEEE.std_logic_unsigned.all;entity mima is PORT(clk_mima : IN STD_LOGIC; key : IN STD_LOGIC_VECTOR(5 downto 0); mima_out : OUT ST

24、D_LOGIC_VECTOR(5 downto 0);end mima;ARCHITECTURE one OF mima ISsignal s:std_logic_vector(5 downto 0);begin process(clk_mima,key) begin if clk_mima=1then s=key; else null; end if; mima_out=s; end process;end one;4、密码校对电路程序设计如下:Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;e

25、ntity 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;architecture xd_mima of xd issignal ss :std_logic :=0;beginprocess(a(0),a(1),a(2),a(3),a(4),a(5),str)begin if str=1 then if a=b then ss=1; else ss=0 ;e

26、nd if;else ss=0; end if;key_out=ss;end process;end xd_mima;图16 密码校对模块密码校对模块的仿真如下(图17):4.系统仿真将程序下载Cyclone系列芯片中,同时在EDA试验箱上进行硬件验证。本文提出的电子密码锁由于采用VHDL语言设计,用一片FPGA实现,因而体积小,功耗低,稍加修改就可以改变密码的位数和输入密码的次数,具有较好的应用前景。但由于结构还比较简单,有待进一步完善。电子密码锁整个系统的仿真如图18图18电子密码锁整个电路系统仿真图5.结束语通过两星期的紧张工作,最后完成了我的设计任务基于VHDL语言的智能密码锁设计。通

27、过本次课程设计的学习,我深深的体会到设计课的重要性和目的性所在。本次设计课不仅仅培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。它不仅仅是一个学习新知识新方法的好机会,同时也是对我所学知识的一次综合的检验和复习,使我明白了自己的缺陷所在,从而查漏补缺。希望学校以后多安排一些类似的实践环节。附录主控制程序参考如下:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all; LIBRARY work;ENTITY lock IS port(str:IN STD_LO

28、GIC; clk20:IN STD_LOGIC; clk1:IN STD_LOGIC; ds:IN STD_LOGIC; key_1:IN STD_LOGIC_VECTOR(5 downto 0); green:OUT STD_LOGIC; red:OUT STD_LOGIC; sound_1: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 lo

29、ck;ARCHITECTURE one OF lock IS component led PORT(r:IN STD_LOGIC; str: IN STD_LOGIC; str5:IN STD_LOGIC; ar:OUT STD_LOGIC);end component;component sound PORT(str:IN STD_LOGIC; clk:IN STD_LOGIC; sound_out:OUT STD_LOGIC);end component;component mc PORT(str:IN STD_LOGIC; clk:IN STD_LOGIC; key_out:OUT STD_LOGIC);end component;component xd 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 component;component mima PORT(clk_mima : IN STD_LOGIC; key

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2