《2022年基于VHDL的电子密码锁研究设计.docx》由会员分享,可在线阅读,更多相关《2022年基于VHDL的电子密码锁研究设计.docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品学习资源学院: 信息科学与工程学院课题名称: 硬件描述语言设计基于 VHDL 的电子密码锁的设计班级:学生:学号: 指导老师:1 引言在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的储存多以加锁的方法来解决;如使用传统的机械式钥匙开锁,人们常需携带多把钥匙 , 使用极不便利 , 且钥匙丢失后安全性即大打折扣;随着科学技术的不断进展,人们对日常生活中的安全保险器件的要求越来越高;为满意人们对锁的使用要求,增加其安全 性,用密码代替钥匙的密码锁应运而生;基于 EDA 技术设计的电子密码锁;以其价格廉价、使用便利、安全性高、成本低、功耗低、易操作等优点,受
2、到了人们的普遍关注;而以可编程规律器件FBDA为设计载体, 以硬件描述语言 VHDL为主要表达方式,以Quartus 5.1 开发软件等为设计工具设计的电子密码锁,由于其能够实现密码输入、密码校验、密码设置和更换等功能,因此,能够满足社会对安全防盗的需求;本设计的各个模块由相应的VHDL 程序具体实现,并在Quartus 5.1 环境下进行了整体电路的模拟仿真,最终实现“密码锁掌握器设计”的要求;2 设计内容和要求2.1 设计内容: 题目:电子密码锁内容:设计一个 4 位串行数字锁;(1) 开锁代码为 4 位二进制,当输入代码的位数与锁内给定的密码一样,且按规定程序开锁时,方可开锁,并点亮一个
3、指示灯;否就进入“错误 ”状态,并发出报警信号;(2) 锁内的密码可调,且预置便利,保密性好;(3) 串行数字锁的报警由点亮一个灯,直到按下复位开关,报警才停下;此时,数字锁又自动等待下一个开锁状态;要求:欢迎下载精品学习资源(1) 通过查阅相关技术资料,具体描述电子密码锁的基本原理;(2) 编写电子密码锁的Verilog HDL 或 VHDL 程序,并仿真编译下载验证;3给出完整的系统顶层模块图与波形仿真图;3 设计分案密码锁掌握器是硬件与软件的结合;依据设计要求,打算以FBDA芯片和 VHDL 语言设计此电子密码锁;用一片FBDA 芯片实现,从而大大简化了系统结构,降低了成本,提高了系统的
4、保密性和牢靠性;这种设计不仅简化了系统结构,降低了成本,更提高了系统的牢靠性和保密性;另外 ,采纳可编程规律器件开发的数字系统,便利地升级和改进;3.1 系统总框图密码锁显示电路报密码锁掌握电路警电路LED显示电路密码锁显示电路本系统的硬件部分主要由密码锁掌握电路、密码锁显示电路、LED显示电路、报警电路、密码更换与设置电路组成;整体系统框图如下图2.1所示;欢迎下载精品学习资源3.2.1 密码锁的主要功能密码锁掌握器的主要功能有:密码锁总框图3.2 密码锁的内部结构及主要功能欢迎下载精品学习资源( 1)密码输入:有二个按键来掌握(分别代表0和 1),每按下一个键,要求在数码管上显示,并依次左
5、移;( 2)密码校验:假如有按键按下,直到松开该按键;红绿灯指示门的状态,也就是密码校验结果,假如密码校验正确,绿亮起,否就假如密码校验错误红灯亮,并凤鸣器响, 说明密码错误;( 3)错误报警:密码输入错误开头报警;( 4)密码修改:输入密码正确后4秒内按按键输入要设置和更换的密码,按按键确认密欢迎下载精品学习资源码设置与更换,就密码设置胜利4 系统硬件电路4.1 密码锁的显示模块段数码管是电子开发过程中常用的输出显示设备;在 本设计中使用的是8 个四位一体、共阴极型七段数码管;其单个静态数码管如下图所示;由于七段数码管公共端连接到GND(共阴极型),当数码管的中的一个段被输入高电平,就相应的
6、这一段被点亮;反之就不亮;共阳极性的数码管与之相反;四位一体的七段数码管在单个静态数码管的基础上加入了用于挑选哪一位数码管的位选信号端口;八个数码管的a、b、c、d、e、f、 g、h 、dp 都连在了一起, 8 个数码管分别由各自的位选信号来掌握,被选通的数码管显示数据,其余关闭;4.2 密码锁掌握模块该模块的作用是将输入的密码(临时寄存于 ACC中)跟已经储备的密码(REG中的密码信息)进行对比,假如一样,就密码锁开锁;而在通过密码验证后可以按按键设定密码;在这里值得留意的是有一个密码“0000”为开头密码,假如改名密码了但是又遗忘了密码,重新下载之后的初始密码只要输入的密码为“0000”就
7、都可通过密码锁;模块lock 是整个设计的核心 ,它实现密码锁的规律功能;在任何时候按动密码初始化按键内密码设置为程序初始化密码值 在本模块程序中此值为“0000”代码为 4 位二进制数 ,当输入代码的位数和位值与锁内给定的密码一样,且按规定程序开锁时,方可开锁 ,并点亮开锁指示灯(緑灯) 亮;否就 ,系统进入 “错误 ”状态 ,并发出报警信号;串行数字锁的报警方式是点亮指示灯(红灯) ,并使喇叭鸣叫 ,直到按下复位开关,报警才停止;此时,数字锁又自动进入等待下一次开锁的状态;该4 位串行电子密码锁设置4 位二进制密码 ,要求锁内给定的密码是可调的 ,且设置便利 ,保密性好;其具体操作分为输入
8、密码和修改密码两部分4.2.1 输入密码密码输入值的比较主要有两部分,密码位数和内容 ,任何一个条件不满意,都不能打开锁;如锁内密码为“0000” , key和2 key1 置低电平 ,分别表示输入 “1”和 “0”;输入密码前先进行复位操作 ,再按着从密码最低位到最高位的次序依次正确输入0000, 会在数码管逐一显示;经检验 ,输入的密码 等于锁内预先设置的密码密码锁开启信号,锁开启;同时 ,密码修改掌握信号 rw 置低电平;如在输入密码的过程中,4 位二进制密码显现输入错误,那么锁不能开启 ,同时 ,指示灯红灯 亮 ,发出报警信号;直到按下复位开关,报警才停止;此时,数字锁又自动进入等待下
9、一次开锁的状态;欢迎下载精品学习资源4.2.2 修改密码为防止任意进行密码修改,必需在正确输入密码后,才能重新设置密码;输入正确密码后 ,锁打开 ,同时 ,密码修改掌握信号按键rw 置低电平 ,就可直接进行修改密码的操作;修改密码实质就是用输入的新密码去取代原先的旧密码,按确定按键 ok, 储备新密码时 .5 VHDL 程序设计密码锁掌握器的各个功能模块都是通过VHDL 语言来完成的;本设计由密码锁显示显示模块、分频模块、密码输入及校验模块、报警模块、密码更换与设置模块几部分组成,各模块分工合作,最终达到密码锁掌握器设计的要求;表4-1 程序的管脚安排表端口名对应 FBGA管脚说明clkP2时
10、钟为 50HzKey1AC23按下按键代表为 “ 0”Key2AB21按下按键代表为 “ 1”startY14开头输入密码okAA13确定输入密码resetAC15复位rwV23该密码clrU23清零redM19密码错误红灯亮greenT22密码正确緑灯亮beepA14蜂鸣器Seg7.0D16,D17,G13,D15,C15,C16,G15,J13代表数码管的片内显示Dig7.0E15,K18,E22,C17,H15,K16,H12,D18代表数码管的片外显示VHDL程序总代码library ieee ;欢迎下载精品学习资源use ieee.std_logic_1164.all ;use ie
11、ee.std_logic_arith.all ;use ieee.std_logic_unsigned.all ;entity lock isportkey1,key2:in std_logic ;clk,start,ok,reset,rw,clr: in std_logic ;red,green,beep:out std_logic:=1 ;dig:out std_logic_vector7 downto 0 ;seg:out std_logic_vector7 downto 0; end lock;architecture rt1 of lock issignal keyin,passwo
12、rd:std_logic_vector3 downto 0:=0000 ;signal open1:std_logic:=0 ;signal beep1:std_logic:=1 ;signal a,shuru:std_logic ;signal count: std_logic_vector2 downto 0:=000;signal temp: std_logic_vector1 downto 0:=00;beginprocessclkvariable m:integer range 0 to 10 ;beginif clkevent and clk=1then if m=9 thenm:
13、=0;a=1;elsem:=m+1;a=0;end if;end if;end process;processclk,start,ok,clr,rw,reset欢迎下载精品学习资源beginif clkevent and clk=1then if reset=0 thenred=1;green=1 ;beep1=1 ;open1=0 ;keyin=0000 ;shuru=0 ;count=000 ;end if;if start=0 then shuru=1;end if;if rw=0 and open1=1then shuru=1;count=000 ;end if;if clr=0 th
14、enkeyin=0000;count=000 ;shuru=1 ;elsif a=1 and shuru=1 thenif key1=0 thenkeyin=keyin2 downto 0&0 ;elsif key2=0 thenkeyin=keyin2 downto 0&1 ;end if;if count=011 thenshuru=0;count=count+1;欢迎下载精品学习资源end if;elseend if;count=count+1;欢迎下载精品学习资源if ok=0and open1=0 then if keyin=passwordthen欢迎下载精品学习资源red=1;e
15、lsered=0; end if;end if;green=0 ;open1=1 ;green=1 ;beep1=0 ;open1=0 ;欢迎下载精品学习资源if ok=0and open1=1then password=keyin;end if;end if;end process;processclk,start,ok,clr,rw,resetvariable g:integer range 0 to 49999999 ;beginif clkevent and clk=1then if g=49999999 theng:=0;elseg:=g+1; end if;if g=2499999
16、9 and beep1=0 then beep=0;elsebeep=1;end if;end if;end process;processclkvariable n:integer range 0 to 50000 ;beginif clkevent and clk=1thenif n=49999 thenn:=0;if temp=11then temp=00;elsetemp dig=01111111 ;if keyin0=0then seg=11000000;else segseg dig=01111111 ;if keyin1=0then seg=11000000;else seg d
17、ig=10111111 ;if keyin0=0then seg=11000000;else segseg dig=01111111 ;if keyin2=0then seg=11000000;else seg dig=10111111 ;if keyin1=0then seg=11000000;else seg dig=11011111 ;if keyin0=0then seg=11000000;else segseg dig=01111111 ;if keyin3=0then seg=11000000 ;else seg dig=10111111 ;if keyin2=0then seg=
18、11000000 ;else seg dig=11011111 ;if keyin1=0then seg=11000000;else seg dig=11101111 ;if keyin0=0then seg=11000000;else segnull ;end case;elsedig=11111111 ;seg=11111111 ;end if;end if ;end process ;end rt1 ;6 系统仿真当各个模块分别编译胜利后 ,就创建一个个元件符号;再用图形编辑器将各元件模块组装起来 ,这就是本设计中最顶层的图形设计文件;顶层图形设计文件 lock. gdf 如下列图 ,这
19、个结构框图说明白整个系统的外部输入和输出情形;为了获得与目标器件对应的、 精确的时序仿真文件译了;欢迎下载精品学习资源编译胜利后进行仿真;第一建立波形文件;波形文件lock. scf 建好并存盘后 ,挑选菜单“ new”“ Vector Waveform F启ile动仿真操”作, ,终止后观看仿真波形;本设计中,仿真波形如图所示;当给初始密码输入信号LC一个低电平常 ,就将程序预先设定的密码“0000”装入lock 中 ;按下 reset 后,系统复位 ,处于输入密码状态;输入的开锁密码串行次序装入,;密码输入完毕后 ,比较输入的密码 是否等于预先设定的密码,如相等 ,锁开启;如下列图7 总结
20、这次密码锁的设计过程说明,用VHDL 可以快速、敏捷地设计出符合要求的密码锁掌握器,而且操作简洁;可以实现密码输入、密码校验、密码设置和更换等功能;设计过程能够在设计完成后在Quartus环境下进行电路的模拟仿真,反馈结果可以验证程序设计的可行性与牢靠性;欢迎下载精品学习资源本密码锁掌握器设置的是 4 位密码,在系统复位后,输入一个完整的密码串,输入完后,系统会进行比对,假如发觉密码吻合,就开门,否就要求用户连续输入,假如输入的密码串都是错误的,就系统报警,直到输入正确的密码,报警声停止;这样的设计可以很好的满意人们的日常需求;同时,密码锁仍具有密码修改功能,便利操作,使得密码锁的使用更加安全
21、、便利;在软件、硬件设计和仿真过程中间我们也遇到不少问题,但最终仍是把它们解决了, 使得设计符合要求;除了自己摸索设计之外,这与和同学的同心协力的合作与争论是分不开的的;相互的探讨使得我们的思路更加开阔,解决问题的方法也更多;总之,此次课程设计让我收益良多,同时由于有了实践操作,对 EDA 技术及 Verilong HDL课程所学内容也有了更深的记忆和懂得,对 EDA技术额能够更好的把握和应用了致谢在这次实习能够顺当完成的过程中,我得到了很多人的帮忙;第一我要感谢陈小琴老师等老师在课程设计上赐予我的指导、供应应我的支持和帮忙, 这是我能顺当完成这次报告的主要缘由,更重要的是老师帮我解决了很多技术上的难题, 让我能把系统做得更加完善;在此期间,我不仅学到了很多新的学问,而且也开阔了视 野,提高了自己的设计才能;其次,我要感谢帮忙过我的同学,他们也为我解决了不少我不太明白的设计商的难题;同时也感谢学院为我供应良好的做课程设计的环境;参考文献【1】陈龙,黄继业,潘松,主编 EDA 技术与 Verilog HDL清华高校出版社【2】阎石 主编数字电子技术基础,高等训练出版社,1998【3】夏宇闻 主编 Verilog 数字系统设计教程,北京航空航天高校出版欢迎下载
限制150内