基于VHDL的电子密码锁的设计1Word下载.docx
- 文档编号:22285603
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:14
- 大小:69.82KB
基于VHDL的电子密码锁的设计1Word下载.docx
《基于VHDL的电子密码锁的设计1Word下载.docx》由会员分享,可在线阅读,更多相关《基于VHDL的电子密码锁的设计1Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
(3)串行数字锁的报警由点亮一个灯,直到按下复位开关,报警才停下。
此时,数字锁又自动等待下一个开锁状态。
要求:
(1)通过查阅相关技术资料,详细描述电子密码锁的基本原理。
(2)编写电子密码锁的VerilogHDL或VHDL程序,并仿真编译下载验证。
(3)给出完整的系统顶层模块图与波形仿真图。
3设计分案
密码锁控制器是硬件与软件的结合。
根据设计要求,决定以FBDA芯片和VHDL语言设计此电子密码锁。
用一片FBDA芯片实现,从而大大简化了系统结构,降低了成本,提高了系统的保密性和可靠性。
这种设计不仅简化了系统结构,降低了成本,更提高了系统的可靠性和保密性。
另外,采用可编程逻辑器件开发的数字系统,方便地升级和改进。
3.1系统总框图
本系统的硬件部分主要由密码锁控制电路、密码锁显示电路、LED显示电路、报警电路、密码更改与设置电路组成。
整体系统框图如下图2.1所示。
密码锁总框图
3.2密码锁的内部结构及主要功能
3.2.1密码锁的主要功能
密码锁控制器的主要功能有:
(1)密码输入:
有二个按键来控制(分别代表0和1),每按下一个键,要求在数码管上显示,并依次左移。
(2)密码校验:
如果有按键按下,直到松开该按键;
红绿灯指示门的状态,也就是密码校验结果,如果密码校验正确,绿亮起,否则如果密码校验错误红灯亮,并凤鸣器响,表明密码错误。
(3)错误报警:
密码输入错误开始报警。
(4)密码修改:
输入密码正确后4秒内按按键输入要设置和更改的密码,按按键确认密码设置与更改,则密码设置成功
4系统硬件电路
4.1密码锁的显示模块
段数码管是电子开发过程中常用的输出显示设备。
在本设计中使用的是8个四位一体、共阴极型七段数码管。
其单个静态数码管如下图所示。
由于七段数码管公共端连接到GND(共阴极型),当数码管的中的一个段被输入高电平,则相应的这一段被点亮。
反之则不亮。
共阳极性的数码管与之相反。
四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。
八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。
4.2密码锁控制模块
该模块的作用是将输入的密码(暂时寄存于ACC中)跟已经存储的密码(REG中的密码信息)进行对比,如果一样,则密码锁开锁。
而在通过密码验证后可以按按键设定密码。
在这里值得注意的是有一个密码“0000”为开始密码,如果改名密码了但是又忘记了密码,重新下载之后的初始密码只要输入的密码为“0000”则都可通过密码锁。
模块lock是整个设计的核心,它实现密码锁的逻辑功能。
在任何时候按动密码初始化按键内密码设置为程序初始化密码值(在本模块程序中此值为“0000”代码为4位二进制数,当输入代码的位数和位值与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮开锁指示灯(緑灯)亮。
否则,系统进入“错误”状态,并发出报警信号。
串行数字锁的报警方式是点亮指示灯(红灯),并使喇叭鸣叫,直到按下复位开关,报警才停止。
此时,数字锁又自动进入等待下一次开锁的状态。
该4位串行电子密码锁设置4位二进制密码,要求锁内给定的密码是可调的,且设置方便,保密性好。
其具体操作分为输入密码和修改密码两部分
4.2.1输入密码
密码输入值的比较主要有两部分,密码位数和内容,任何一个条件不满足,都不能打开锁。
若锁内密码为“0000”,key2和key1置低电平,分别表示输入“1”和“0”。
输入密码前先进行复位操作,再按着从密码最低位到最高位的顺序依次正确输入0000,会在数码管逐一显示。
经检验,输入的密码等于锁内预先设置的密码密码锁开启信号,锁开启。
同时,密码修改控制信号rw置低电平。
若在输入密码的过程中,4位二进制密码出现输入错误,那么锁不能开启,同时,指示灯红灯亮,发出报警信号。
直到按下复位开关,报警才停止。
4.2.2修改密码
为防止任意进行密码修改,必须在正确输入密码后,才能重新设置密码。
输入正确密码后,锁打开,同时,密码修改控制信号按键rw置低电平,就可直接进行修改密码的操作。
修改密码实质就是用输入的新密码去取代原来的旧密码,按确定按键ok,存储新密码时.
5VHDL程序设计
密码锁控制器的各个功能模块都是通过VHDL语言来完成的。
本设计由密码锁显示显示模块、分频模块、密码输入及校验模块、报警模块、密码更改与设置模块几部分组成,各模块分工合作,最后达到密码锁控制器设计的要求。
表4-1程序的管脚分配表
端口名
对应FBGA管脚
说明
clk
P2
时钟为50Hz
Key1
AC23
按下按键代表为“0”
Key2
AB21
按下按键代表为“1”
start
Y14
开始输入密码
ok
AA13
确定输入密码
reset
AC15
复位
rw
V23
该密码
clr
U23
清零
red
M19
密码错误红灯亮
green
T22
密码正确緑灯亮
beep
A14
蜂鸣器
Seg[7..0]
D16,D17,G13,D15,C15,C16,G15,J13
代表数码管的片内显示
Dig[7..0]
E15,K18,E22,C17,H15,K16,H12,D18
代表数码管的片外显示
VHDL程序总代码
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entitylockis
port(
key1,key2:
instd_logic;
clk,start,ok,reset,rw,clr:
instd_logic;
red,green,beep:
outstd_logic:
='
1'
;
dig:
outstd_logic_vector(7downto0);
seg:
outstd_logic_vector(7downto0)
);
endlock;
architecturert1oflockis
signalkeyin,password:
std_logic_vector(3downto0):
="
0000"
signalopen1:
std_logic:
0'
signalbeep1:
signala,shuru:
std_logic;
signalcount:
std_logic_vector(2downto0):
000"
signaltemp:
std_logic_vector(1downto0):
00"
begin
process(clk)
variablem:
integerrange0to10;
begin
ifclk'
eventandclk='
then
ifm=9then
m:
=0;
a<
else
=m+1;
endif;
endprocess;
process(clk,start,ok,clr,rw,reset)
begin
then
ifreset='
then
red<
green<
beep1<
open1<
keyin<
shuru<
count<
ifstart='
shuru<
ifrw='
andopen1='
ifclr='
then
keyin<
elsifa='
andshuru='
ifkey1='
=keyin(2downto0)&
'
elsifkey2='
ifcount="
011"
shuru<
count<
=count+1;
ifok='
andopen1='
if(keyin=password)then
else
password<
=keyin;
process(clk,start,ok,clr,rw,reset)
variableg:
integerrange0to49999999;
then
ifg=49999999then
g:
=g+1;
ifg<
=24999999andbeep1='
beep<
variablen:
integerrange0to50000;
ifclk'
ifn=49999then
n:
iftemp="
11"
temp<
=temp+1;
n:
=n+1;
001"
casetempis
when"
=>
dig<
01111111"
;
ifkeyin(0)='
thenseg<
11000000"
elseseg<
11111001"
endif;
whenothers=>
seg<
11111111"
endcase;
elsifcount="
010"
ifkeyin
(1)='
when"
01"
10111111"
whenothers=>
ifkeyin
(2)='
10"
11011111"
100"
then
ifkeyin(3)='
ifkeyin
(2)='
11101111"
null;
endprocess;
endrt1;
6系统仿真
当各个模块分别编译成功后,则创建一个个元件符号。
再用图形编辑器将各元件模块组装起来,这就是本设计中最顶层的图形设计文件。
顶层图形设计文件lock.gdf如图所示,这个结构框图说明了整个系统的外部输入和输出情况。
为了获得与目标器件对应的、精确的时序仿真文件译了。
编译成功后进行仿真。
首先建立波形文件。
波形文件lock.scf建好并存盘后,选择菜单“new”→“VectorWaveformFile”,启动仿真操作,结束后观察仿真波形。
本设计中,仿真波形如图所示。
当给初始密码输入信号LC一个低电平时,就将程序预先设定的密码(“0000”)装入lock中。
按下reset后,系统复位,处于输入密码状态。
输入的开锁密码串行顺序装入,。
密码输入完毕后,比较输入的密码是否等于预先设定的密码,若相等,锁开启。
如图所示
7总结
这次密码锁的设计过程表明,用VHDL可以快速、灵活地设计出符合要求的密码锁控制器,而且操作简单。
可以实现密码输入、密码校验、密码设置和更改等功能。
设计过程能够在设计完成后在QuartusⅡ环境下进行电路的模拟仿真,反馈结果可以验证程序设计的可行性与可靠性。
本密码锁控制器设置的是4位密码,在系统复位后,输入一个完整的密码串,输入完后,系统会进行比对,如果发现密码吻合,则开门,否则要求用户继续输入,如果输入的密码串都是错误的,则系统报警,直到输入正确的密码,报警声停止。
这样的设计可以很好的满足人们的日常需求。
同时,密码锁还具有密码修改功能,方便操作,使得密码锁的使用更加安全、便捷。
在软件、硬件设计和仿真过程中间我们也遇到不少问题,但最终还是把它们解决了,使得设计符合要求。
除了自己思考设计之外,这与和同学的同心协力的合作与讨论是分不开的的。
相互的探讨使得我们的思路更加开阔,解决问题的办法也更多。
总之,此次课程设计让我收益良多,同时因为有了实践操作,对《EDA技术及VerilongHDL》课程所学内容也有了更深的记忆和理解,对EDA技术额能够更好的掌握和应用了
致谢
在这次实习能够顺利完成的过程中,我得到了许多人的帮助。
首先我要感谢陈小琴老师等老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。
在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。
其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。
同时也感谢学院为我提供良好的做课程设计的环境。
参考文献
【1】陈龙,黄继业,潘松,主编《EDA技术与VerilogHDL》清华大学出版社
【2】阎石主编《数字电子技术基础》,高等教育出版社,1998
【3】夏宇闻主编《Verilog数字系统设计教程》,北京航空航天大学出版
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 电子 密码锁 设计