1、电子密码锁设计引言随着电子技术的发展,具有防盗报警、语音提示等功能的电子密码锁代替密码量少、安全性差的机械式密码锁已是必然趋势。目前大部分密码锁采用单片机进行设计,电路较复杂,性能不够灵活。本题目采用先进的EDA(电子设计自动化)技术,利用Quartus工作平台和VHDL(超高速集成电路硬件描述语言),设计了一种新型的电子密码锁。该密码锁具有密码预置、修改、语音提示和输入错误则系统进入定时锁定并报警等功能。一设计要求1、 设计一个密码锁的控制电路,当输入正确密码时,输入开锁信号以推动执行机构的作用,用红灯亮,绿灯熄灭,表示关锁;用红灯灭,绿灯亮,开锁。2、 在锁的控制电路中储存一个可以修改的6
2、位密码,其中6位全为实际有效密码,当开锁按钮开关的输入代码等于存储器代码时,实现开锁。否则一直关锁并持续产生报警信号。3、 从第一个按钮触动后的5秒内若未就锁打开,则电路自动处于自锁状态。使之无法再打开。并由扬声器发出持续20秒的报警信号。二设计说明与提示 1.该题目的主要任务是产生一个开锁信号OPEN,而开锁信号的形成条件是,输入代码和已设密码相同。实现这种功能的电路构思有多种,本题目运用两片8位锁存器,一片存入密码,另一片输入开锁代码,通过比较的方式,若两者相等,则形成开锁信号。 2在开锁信号产生时,要求输出声,光信号,声音的产生由开锁信号触动扬声器工作,光信号由开锁信号点亮LED指示灯。
3、 3用按钮开关的第一个动作信号触发一个5秒定时器,若5秒内无开锁信号产生,让扬声器发出特殊音响,以示警告,并输出一个信号推动LED不断闪烁。三设计思想电子密码锁的系统结构框图由图2所示,它分成两大部分:控制器和处理器。整个系统的输入信号有一个时钟脉冲CLK ,输出信号有表示开锁,关锁信号的红灯,绿灯以及报警信号SPEAKER。控制器中的所有按键按下时均为高电平,即高电平有效。RW 为“密码设定”信号, OK 为“确定”信号, RED=0GREED=1为开锁信号CNT 表示上一位密码正确时,控制器给出的可进行下一位二进制密码比较的信号,OPEN=1 为控制器给出的锁开信号, OPEN=0 为控制
4、器给出的密码错误信号。处理器中有一个计数器,计数器C1用是用来记录从第一个按钮触动后的5秒内若未将锁打开(即输入正确密码时间超过5秒),则电路自动复位并进入自锁状态,使之无法再打开,并由扬声器发出持续20秒的报警信号。密码锁可通过键盘设置6位十位进制数密码,按“确定”按键OK= 1 后,通过BCD 编码器变成24位二进制数存入寄存器1 ;开锁时也通过键盘输入6位十进制数密码,按“确定”按键后,通过BCD 编码器变成24位二进制数存入寄存器2 。经过两个24选1 数据选择器,将寄存器2中的输入密码与寄存器1中设置的密码逐位进行比较,当密码正确且位数相同时,产生开锁信号并且开始显示。如果密码不正确
5、,则不产生开锁信号。并且在5秒计时时间内,仍没有开锁信号产生,则电路自动处于自锁状态。使之无法再打开。并由扬声器发出持续20秒的报警信号。空闲状态设置密码输入密码系统死锁状态比较 N Y产生开锁信号 输出显示 图一,软件流程图 clk red key0-5 greedkey10-5 rwledrw okled ok clk1 LOCK_M speaker en 图二,系统框图四重要程序模块分析1,密码设置模块process(clk) -定义个存储器将密码存放在keyin中 begin if clkevent and clk=1 then keyin=key; end if;end proces
6、s; start: process(keyin,pro ,ok1) -第一次修改密码 begin if ok1=1 then start=0; elsif (keyin=000000 and pro=0) then start=1; else start=0; end if; end process; put in: process(key,start,clk) 。 begin -输入密码时间进入记时状态 if clkevent and clk=1 then ok1=0;cnt=cnt+1; if start=1 then rom1=keyin; -将密码放入rom1暂存器中。 if cnt=
7、100 then -5秒到将cnt值零将ok1值高 cnt=000 ;ok1=1; end if ; else cnt=000;sbuf1=sbuf1; -当start=1时cnt永远保持0; end if; end if; end process;2,开锁信号产生模块:compare : process(ok,ok1,clk,start,rom1,keyin) -输入密码用于判断密码是否正确。 begin if (start=1 and ok=1) or ok1=1 then if rom1=keyin open=1; -开锁信号 elsif clkevent and clk=1 then
8、if cnt1=10011 then -20秒后判断结束。进入等待外部输入状态。 pdan=0; else cnt1=cnt1+1; end if; else cnt1=00000; -等待状态时cnt1一直为0 end if; end if; end process;3显示模块Display: process(open,rw ,rin,clk1) -显示程序 begin if open=1 then -开锁信号密码正确 red=0;green=1;rwled=0;speaker=0;okled=0; -红灯灭,绿灯亮 else -密码错误 red=1;green=0;rwled=0;spea
9、ker=clk1;okled=0;-红灯亮,绿灯灭, end if; elsif rw=1 then -第一次修改密码显示状态 red=1;green=0;rwled=1;speaker=0;okled=0; elsif rin=1 then red=0;green=0;rwled=1;speaker=0; okled=1; else red=1;green=0;rwled=0;speaker=0;okled=0; end if; end process;五仿真波形波形图一(密码正确):从上面的仿真波形中可以看见,密码锁默认的密码为“00000”,我们必须得设置密码。因为这是第一次设置密码,所
10、以我们可以从图中看见,因为只有当RW=1和OK=1同时产生时,才可以进行第一次的密码设置(以后则可以免掉这项操作)。当我们第一次设置的密码为key=”100000”,然后按OK键盘确认。这是密码已经设置完成。当我们输入密码key=”100000”时,我们可以清楚的看见greed=1而red=0,即实现红灯灭,绿灯亮的开锁功能。波形图二(此波形图为波形图一的后续部分)(密码错误): 当我们输入密码key=”000001”时,greed=0,而red=1,即实现了红灯亮,绿灯灭的关锁功能,并且于此同时speaker=1,即由于密码不正确而产生喇叭发出声音的信号。当key=000000时(即无开锁信
11、号产生),可以从波形图中看见,speaker=1,即一直发出报警声。整体仿真:六.硬件分析本实验采用GW48PK2实验箱,在程序编译和波形仿真确定正确无误后,便可下载到实验箱上,进行硬件测试。1.在测试时,实验箱的芯片选用“cyclone”系列的“EP1CC6Q240C6”,模式应用模式8。2.在确定完管脚之后,便可进行引脚锁定,按下图所示: 3. 编程下载设计文件,打开实验箱电源,“programmer”窗口中“mode”项选择“JTAG”,点击“start”开始下载,下载完成后,即可在实验箱上验证设计电路七设计总结 通过完成本次课程设计,使我对EDA技术有了更进一步的了解和掌握。从上世纪末
12、以来,数字电子技术在迅速的发展,有力的推动了社会生产力的发展和社会信息化的提高。在其推动下,数字电子技术的应用已经渗透到了人类生活的各个方面,对于我们来说,学好EDA这门课有着至关重要的意义。在我编写程序中,让我明白很多道理。虽然自己能够编写出实现基本要求的代码,可是在代码的很多地方都出现杂乱,冗长,完全背离了代码简练,易懂的原则,让我明白了要多参考别人优秀的程序,借鉴别人的优点,使自己的编写能力得到提到。在各个进程中,对各个进程间的信号量传递要用易懂的字符替代,这对于读懂代码有很大的帮助。虽然我在编程中犯了很多错误,但是通过不断的修改,不断的请教别人和借鉴别人的经验,最终实现了成功的编写了本
13、次课程设计的代码,并且在解决错误,明白错误中让我获益匪浅。对于本学期EDA这门课有了更进一步的了解,对于一个陌生的题目也知道了如何下手。总之,只有通过自己的动手,才能真正的理解上课时的内容,才能真正的掌握EDA这门技术。八参考文献(1)谭会生、瞿遂春,EDA技术综合应用实例与分析,西安电子科技大学出版社,2004(2)高有堂,EDA技术及应用实践,清华大学出版社,2006(3)亿特科技,CPLD/FPGA应用系统设计与产品开发,人民邮电出版社,2005(4)曹昕燕、周凤臣等,EDA技术实验与课程设计,清华大学出版社,2006九.附录(设计原代码)library ieee;use ieee.st
14、d_logic_1164.all;use ieee.std_logic_unsigned.all;entity lock_m is port( key:in std_logic_vector(5 downto 0); clk,clk1,ok,rw: in std_logic; red,green,speaker,rwled,okrw:out std_logic);end qin;architecture behav of qin issignal ok1,ok2,ok0,prr,start,pdan,rw1,rin:std_logic :=0;begin process(clk) begin
15、if clkevent and clk=1 then keyin=key ;end if;end process; prr=pdan or rw1 or rin or ok;st: process(keyin,prr,ok1) begin if ok1=1 then start=0; elsif (keyin/=000000 and prr=0) then start=1; else start=0; end if; end process; put in: process(key,start,clk) begin if clkevent and clk=1 then ok1=0;ok2=0;
16、 if start=1 then sbuf1=keyin; if ok=1 then ok2=1; elsif cnt=100 then cnt=000 ;ok1=1; else cnt=cnt+1; end if ; else cnt=000;sbuf1=sbuf1; end if; end if;end process;compare : process(ok,ok1,ok2,clk,start) begin if ok2=1 or ok1=1 then pdan=1; elsif clkevent and clk=1 then if pdan=1 then if cnt1=10011 t
17、hen pdan=0 else cnt1=cnt1+1; end if; else cnt1=00000; end if;end if; end process;comp: process(pdan,rw1,sbuf1,mmst,rin,clk1) begin if pdan=1 then if sbuf1=mmst then red=0;green=1;rwled=0;speaker=0;okrw=0; else red=1;green=0;rwled=0;speaker=clk1;okrw=0; end if; elsif rw1=1 then red=1;green=0;rwled=1;
18、speaker=0;okrw=0; elsif rin=1 then red=0;green=0;rwled=1;speaker=0; okrw=1; else red=1;green=0;rwled=0;speaker=0;okrw=0; end if; end process;rewrite:process(rw,keyin,ok0,clk,start,pdan,rin) begin if clkevent and clk=1 then if ok0=1 then rw1=0; elsif keyin=000000 and pdan=0 and rin=0 then if rw=1 the
19、n rw1=1;end if; end if; end if; end process; process(rw1,ok,keyin,clk) begin if clkevent and clk=1 then ok0=0; sbuf2=keyin; if rw1=1 then if ok=1 then ok0=1; if mmst=sbuf2 then rin=1; else rin=0; end if;end if; else if rin=1 then if ok=1 then mmst=sbuf2; rin=0; else mmst=mmst; end if; else null; end if; end if; end if; end process;end behav;
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922