VHDL密码锁设计.docx

上传人:b****3 文档编号:4116015 上传时间:2022-11-28 格式:DOCX 页数:17 大小:331.75KB
下载 相关 举报
VHDL密码锁设计.docx_第1页
第1页 / 共17页
VHDL密码锁设计.docx_第2页
第2页 / 共17页
VHDL密码锁设计.docx_第3页
第3页 / 共17页
VHDL密码锁设计.docx_第4页
第4页 / 共17页
VHDL密码锁设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

VHDL密码锁设计.docx

《VHDL密码锁设计.docx》由会员分享,可在线阅读,更多相关《VHDL密码锁设计.docx(17页珍藏版)》请在冰豆网上搜索。

VHDL密码锁设计.docx

VHDL密码锁设计

 

VHDL语言及应用课程设计论文

----VHDL平台下

密码锁的设计

 

学院:

电子信息学院

专业:

学号:

姓名:

指导老师:

 

团队成员:

完成日期:

一.引言-----------------------------------------------------------1

二.实验目的-------------------------------------------------------1三.实验任务与要求-------------------------------------------------1

四.设计原理及工作流程---------------------------------------------2

4.1密码锁设计原理--------------------------------------------------2

4.2密码锁系统框图--------------------------------------------------2

4.3密码锁设计提示--------------------------------------------------2

五.密码锁的顶层设计源程序-----------------------------------------3

六.密码锁各功能模块源程序及其仿真分析-----------------------------5

6.1密码设定锁存器源程序及其仿真分析--------------------------------5

6.2密码输入锁存器源程序及其仿真分析--------------------------------6

6.3开锁控制系统源程序及其仿真分析----------------------------------8

6.4比较器源程序及其仿真分析----------------------------------------9

6.5LED显示源程序及其仿真分析--------------------------------------11

6.6顶层源文件的仿真分析-------------------------------------------12

七.密码锁设计源程序的下载调试------------------------------------13

7.1电路结构-------------------------------------------------------13

7.2管脚分配-------------------------------------------------------14

7.3程序下载调试过程-----------------------------------------------14

八.实验分析与总结------------------------------------------------15

九.组内分工------------------------------------------------------16

十.参考文献------------------------------------------------------16

一.引言

随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。

因此人们对锁要求甚高,既要求可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。

传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。

数字密码锁是二十一世纪制锁业的一次革命,锁的特点是不用钥匙、无锁孔、机械传动、不易损坏、不磨损、不易被破译、可多次更换密码、换号不换锁、一把锁多个密码,具有防拨、防砸、防撬、防堵等功能。

安装门锁时不破坏原门的结构,避免用钥匙开启旋芯式锁具的一切烦恼(如丢、落、拆、堵门被反锁等)。

数字密码锁是利用数字密码来开启的锁具,其重复概率极低,有着很高的安全性;而旋芯式锁具使用不够安全。

通过对社会各阶层千余人的调查,百分之百的人对目前身上挂着的串串钥匙无可奈何,都愿意一身轻松没有任何顾虑的出入家门,都愿意用上一种既安全方便又不用钥匙的锁具。

因此,数字密码锁产品的市场发展前景极为广阔。

而EDA技术设计电子系统具有用软件的方式设计硬件,设计过程中可用有关软件进行各种仿真,系统可现场编程、在线升级,整个系统可集成在一个芯片上等特点;不但设计周期短、设计成本低,而且将提高产品或设备的性能,缩小产品体积、提高产品的技术含量,提高产品的附加值。

可见,用VHDL可以更加快速、灵活地设计出符合各种要求的密码锁,优于其他设计方法,使设计过程达到高度自动化。

本设计的各个模块由相应的VHDL程序具体实现,并在QuartusⅡ9.0环境下进行了整体电路的模拟仿真,最终实现“密码锁设计”的要求。

二.实验目的

1.掌握VHDL语言的使用,学会用VHDL语言来编程解决实际问题;

2.学会使用EDA开发软件设计小型综合电路,掌握仿真的技巧;

3.学会应用开发系统实现硬件电路,检验电路的功能;

4.设计一个八位二进制密码锁,实现所要求的功能。

三.实验任务与要求

1、安锁状态。

按下开关键SETUP,密码设置灯亮时,方可进行密码设置操作。

设置初始密码0~9(或二进制8位数),必要时可以更换。

再按SETUP键,密码有效。

2、开锁过程。

(1)、按启动键(START)启动开锁程序,此时系统内部应处于初始状态。

(2)、依次键入0~9(或二进制8位数)。

(3)、按开门键(OPEN)准备开门。

若按上述程序执行且拨号正确,则开门指示灯A亮,若按错密码或未按上述程序执行,则按动开门键OPEN后,报警装置鸣叫、灯B亮。

(4)、开锁处理事务完毕后,应将门关上,按SETUP键使系统重新进入安锁状态。

若在报警状态,按SETUP键或START键应不起作用,应另用一按键RESET才能使系统进入安锁状态。

3、使用者如按错号码可在按OPEN键之前,按START键重新启动开锁程序。

4、设计符合上述功能的密码锁,并用层次化方法设计该电路。

5、用功能仿真方法验证,通过观察有关波形确认电路设计是否正确。

6、完成电路设计后,通过在实验系统中下载,验证设计的正确性。

四.设计原理及工作流程

4.1密码锁设计原理

如下示框图,密码锁系统主要由开锁控制,设置密码的锁存器,输入密码的锁存器,比较器,LED显示和报警系统几个部分组成。

每一个模块功能的实现都是通过VHDL语言实现的,并通过顶层电路与例化语句将功能模块整合起来,之后对整个系统进行模拟仿真和硬件实现。

4.2密码锁系统框图

4.3密码锁设计提示

(1)锁存器:

用于实现设定密码和输入密码的锁存。

(2)比较器:

用于将设定密码与输入密码相比较。

其中,CLK为外部输入的时钟信号。

若输入密码正确,则A灯亮;否则B灯亮,同时比较器输出与CLK一样的信号,驱动蜂鸣器发出报警声。

(3)开锁控制:

当反馈信号下降沿来到时,开锁控制输出低电平,用于在输入错误密码后禁止再次安锁;当RESET脚为高电平时,开锁控制输出高电平,打开与门,这时锁存器1使能端的变化受控于SETUP键,重新进入安锁状态。

(4)LED显示:

用于设定密码或输入密码的显示。

此项设计的目的是为了在下载演示时,能清楚地看到设置和输入的密码值。

五.密码锁的顶层设计源程序

调用各模块形成元件例化语句:

LIBRARYIEEE;

USEIEEE.std_logic_1164.All;

ENTITYtopfileIS

PORT(SETUP,RESET,START,OPN,CLK:

INSTD_LOGIC;

setpassword:

INSTD_LOGIC_VECTOR(7DOWNTO0);

inputpassword:

INSTD_LOGIC_VECTOR(7DOWNTO0);

led_A,led_B,warner:

OUTSTD_LOGIC;

DOUT11,DOUT12,DOUT21,DOUT22:

OUTSTD_LOGIC_VECTOR(6DOWNTO0));

ENDENTITYtopfile;

ARCHITECTUREbrfOFtopfileIS

COMPONENTlockcontrol

PORT(RESET,FEEDBACK:

INSTD_LOGIC;

Y:

OUTSTD_LOGIC);

ENDCOMPONENT;

COMPONENTcodeset

PORT(ENABLE:

INSTD_LOGIC;

PASEWORD:

INSTD_LOGIC_VECTOR(7DOWNTO0);

Q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDCOMPONENT;

COMPONENTcodeinput

PORT(ENABLE:

INSTD_LOGIC;

PASEWORD:

INSTD_LOGIC_VECTOR(7DOWNTO0);

Q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDCOMPONENT;

COMPONENTcomparator

PORT(OPN,CLK,RESET:

INSTD_LOGIC;

rightpassword,password:

INSTD_LOGIC_VECTOR(7DOWNTO0);

A,B,warner:

OUTSTD_LOGIC;

D11,D12,D21,D22:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDCOMPONENT;

COMPONENTAND2

PORT(a,b:

INSTD_LOGIC;

c:

OUTSTD_LOGIC);

ENDCOMPONENT;

COMPONENTNOR2

PORT(e,d:

INSTD_LOGIC;

f:

OUTSTD_LOGIC);

ENDCOMPONENT;

COMPONENTLED

PORT(DATA:

INSTD_LOGIC_VECTOR(3DOWNTO0);

DOUT7:

OUTSTD_LOGIC_VECTOR(6DOWNTO0));

ENDCOMPONENT;

SIGNALnet1,net2:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALnet8,net9,net10,net11:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALnet3,net4,net5,net6,net7:

STD_LOGIC;

BEGIN

U0:

lockcontrolPORTMAP(RESET=>RESET,feedback=>net3,y=>net4);

U1:

AND2PORTMAP(a=>net3,b=>START,c=>net5);

U2:

AND2PORTMAP(a=>SETUP,b=>net4,c=>net6);

U3:

CODEINPUTPORTMAP(PASEWORD=>inputpassword,ENABLE=>net5,Q=>net1);

U4:

codesetPORTMAP(PASEWORD=>setpassword,ENABLE=>net6,Q=>net2);

U5:

comparatorPORTMAP(rightpassword=>net2,password=>net1,OPN=>OPN,CLK=>CLK,A=>led_A,B=>net7,warner=>warner,RESET=>RESET,D12=>net9,D11=>net8,D21=>net10,D22=>net11);

U6:

NOR2PORTMAP(e=>net7,d=>net7,f=>net3);

U7:

LEDPORTMAP(DATA=>net8,DOUT7=>DOUT11);

U8:

LEDPORTMAP(DATA=>net9,DOUT7=>DOUT12);

U9:

LEDPORTMAP(DATA=>net10,DOUT7=>DOUT21);

U10:

LEDPORTMAP(DATA=>net11,DOUT7=>DOUT22);

led_B<=net7;

ENDARCHITECTUREbrf;

六.密码锁各功能模块源程序及其仿真波形

6.1密码设定锁存器源程序及其仿真波形

源程序为:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcodesetIS

PORT(

ENABLE:

INSTD_LOGIC;

PASSWORD:

INSTD_LOGIC_VECTOR(7DOWNTO0);

Q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDcodeset;

ARCHITECTUREbhvOFcodesetIS

BEGIN

PROCESS(ENABLE,PASSWORD)BEGIN

IFENABLE='1'THEN

Q(7)<=PASSWORD(7);

Q(6)<=PASSWORD(6);

Q(5)<=PASSWORD(5);

Q(4)<=PASSWORD(4);

Q(3)<='0';

Q

(2)<='0';

Q

(1)<='0';

Q(0)<='0';

ENDIF;

ENDPROCESS;

ENDbhv;

仿真波形图为:

使能控制端高电平时:

使能控制端变回低电平时:

由于硬件设备限制,不能检验全部端口,因此将低位的四位设置为低电平,通过改变使能控制端与高位的电平观察正确性。

6.2密码输入锁存器源程序及其仿真波形

源程序为:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcodeinputIS

PORT(ENABLE:

INSTD_LOGIC;

PASSWORD:

INSTD_LOGIC_VECTOR(7DOWNTO0);

Q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDcodeinput;

ARCHITECTUREbhvOFcodeinputIS

BEGIN

PROCESS(ENABLE,PASSWORD)BEGIN

IFENABLE='1'THEN

Q(7)<=PASSWORD(7);

Q(6)<=PASSWORD(6);

Q(5)<=PASSWORD(5);

Q(4)<=PASSWORD(4);

Q(3)<='0';

Q

(2)<='0';

Q

(1)<='0';

Q(0)<='0';

ENDIF;

IFENABLE='0'THEN

Q<="00000000";

ENDIF;

ENDPROCESS;

ENDbhv;

仿真波形为:

当使能信号为低电平,锁存器输出状态保持不变,输入信号没有读入;当使能信号有低电平变为高电平,锁存器开始读入输入的信号。

6.3开锁控制系统源程序及其仿真波形

源程序为:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYlockcontrolIS

PORT(FEEDBACK,RESET:

INSTD_LOGIC;

Y:

OUTSTD_LOGIC);

ENDlockcontrol;

ARCHITECTUREbhvOFlockcontrolIS

BEGIN

PROCESS(FEEDBACK,RESET)

BEGIN

Y<='1';

IFFEEDBACK='0'THEN

Y<='0';

ENDIF;

IFRESET='1'THEN

Y<='1';

ENDIF;

ENDPROCESS;

ENDbhv;

仿真波形为:

FEEDBACK为反馈信号,RESET为重置密码信号。

当反馈信号下降沿来到时,开锁控制输出Y低电平,用于在输入错误密码后禁止再次安锁;当RESET脚为高电平时,开锁控制输出高电平。

6.4比较器源程序以及仿真波形

源程序为:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.All;

ENTITYcomparatorIS

PORT(rightpassword,password:

INSTD_LOGIC_VECTOR(7DOWNTO0);

OPN,CLK,RESET:

INSTD_LOGIC;

A,B,warner:

OUTSTD_LOGIC;

D11,D12,D21,D22:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDcomparator;

ARCHITECTUREbhvOFcomparatorIS

BEGIN

PROCESS(OPN,CLK,RESET,rightpassword,password)

BEGIN

D11(3)<=rightpassword(7);

D11

(2)<=rightpassword(6);

D11

(1)<=rightpassword(5);

D11(0)<=rightpassword(4);

D12(3)<=rightpassword(3);

D12

(2)<=rightpassword

(2);

D12

(1)<=rightpassword

(1);

D12(0)<=rightpassword(0);

D21(3)<=password(7);

D21

(2)<=password(6);

D21

(1)<=password(5);

D21(0)<=password(4);

D22(3)<=password(3);

D22

(2)<=password

(2);

D22

(1)<=password

(1);

D22(0)<=password(0);

IFOPN='1'THEN

IFrightpassword=passwordTHEN

A<='1';

B<='0';

warner<='0';

ENDIF;

IFrightpassword/=passwordTHEN

A<='0';

B<='1';

warner<=CLK;

IFRESET='1'THEN

A<='0';

B<='0';

warner<='0';

ENDIF;

ENDIF;

ELSE

A<='0';

B<='0';

warner<='0';

ENDIF;

ENDPROCESS;

ENDbhv;

仿真波形为:

(1)密码正确时:

密码匹配时,如果OPEN不打开,电路不工作,如果OPEN打开,则A灯变为高电平,B灯和蜂鸣器不工作。

而D11D12始终显示正确密码,D21D22始终显示当前输入密码。

(2)密码错误时:

密码不匹配时,如果OPEN不打开,电路不工作,如果OPEN打开,则A灯不工作,B灯亮,蜂鸣器随CLK周期而周期性鸣响。

此时,关闭OPEN并启动RESET,才可以使比较器停止工作并可以再次输入密码。

6.5LED显示源程序及其仿真波形

源程序为:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYLEDIS

PORT(DATA:

INSTD_LOGIC_VECTOR(3DOWNTO0);

DOUT7:

OUTSTD_LOGIC_VECTOR(6DOWNTO0));

ENDENTITYLED;

ARCHITECTUREaOFLEDIS

BEGIN

PROCESS(DATA)

BEGIN

CASEDATAIS

WHEN"0001"=>DOUT7<="0000110";

WHEN"0010"=>DOUT7<="1011011";

WHEN"0000"=>DOUT7<="0111111";

WHEN"0011"=>DOUT7<="1001111";

WHEN"0100"=>DOUT7<="1100110";

WHEN"0101"=>DOUT7<="1101101";

WHEN"0110"=>DOUT7<="1111101";

WHEN"0111"=>DOUT7<="0001111";

WHEN"1000"=>DOUT7<="1111111";

WHEN"1001"=>DOUT7<="1101111";

WHENOTHERS=>DOUT7<="0000000";

ENDCASE;

ENDPROCESS;

ENDARCHITECTUREa;

仿真波形为:

可以由二进制代码的值判断出仿真结果真确,从图中还可以观察到,当输入的四位数中有两位及以上同时跳变时,出现了竞争冒险现象。

6.6顶层源文件的仿真波形分析

(1)密码输入正确时:

按下SETUP设置密码。

按启动键START启动开锁程序,当输入的密码与设定的密码相同,按下OPEN键,A灯亮起,锁打开,B灯和蜂鸣器不工作。

(2)密码输入不正确时:

按下SETUP设置密码。

按启动键START启动开锁程序,当输入密码与设定的密码不同,按下OPEN键,B灯亮,蜂鸣器随CLK周期性鸣响,此时,开关SETUP和START没有作用,只能关闭OPEN并按下RESET,才可以使B灯和蜂鸣器停止工作并可以重新输入密码,如图,在输入正确密码后再次打开OPEN键,A灯亮起,锁可以打开。

七.密码锁设计源程序的下载调试

7.1电路结构

(注:

由于硬件设备限制,部分端口没有绑定引脚,如密码输入、设定和七段显示数码管,均只验证部分功能)

7.2管脚分配图

7.3程序下载调试过程

将写的程序烧录下载到箱子调试,结果如下:

(1)密码输入正确时:

分析:

设定和输入的前四位转换成十进制均为1,密码匹配,此时A灯亮起。

(2)密码输入错误时:

分析:

设定和输入的前四位转换成十进制分别为1和0,密码不匹

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1