彭胜基于VHDL的电子密码锁设计与实现正文Word文档下载推荐.docx
- 文档编号:16457673
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:26
- 大小:355.24KB
彭胜基于VHDL的电子密码锁设计与实现正文Word文档下载推荐.docx
《彭胜基于VHDL的电子密码锁设计与实现正文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《彭胜基于VHDL的电子密码锁设计与实现正文Word文档下载推荐.docx(26页珍藏版)》请在冰豆网上搜索。
这种电路的特点就是密码修改只能通过改变电路的连接来实现,密码很容易被破解,电路复杂,故障率高。
本制作是针对这些电路而设计的,将以往的以单片机实现设计改为可编程器件FPGA利用VHDL编程实现电子密码锁的设计。
这种设计移动方便。
基于FPGA的电子密码锁具有保密强、灵活性高、适用范围广等特点,它在键盘上输入,与打电话差不多,因而易于掌握,其突出优点是“密码”是记在被授权人脑子里的数字和字符,既准确又可靠,不会丢失(除了忘记),难以被窃(除非自己泄露)。
但是密码不能太简单,太简单了就容易被他人在键盘上试探出来,或者可能被旁观者窥测出来,造成保密性不足。
当然,密码又不能太复杂,太复杂了可能自己都糊涂了,或者输入密码操作成功率低,造成使用不便。
因此,为了发扬优点、克服弱点,本设计采用“任意设定数字密码”技术使得被授权人可以根据自己的需要或喜好设定密码,常用常新,在输入密码的过程中,当用户键入错误密码时,系统就会报警,由扬声器发出5秒报警声,当连续三次出现密码错误时,则系统会长时间报警不止,这时必须按复位方可停止。
本设计的电子密码锁的特点是:
体积小、功耗低、价格便宜、安全可靠,维护和升级都十分方便,具有较好的应用前景。
它与传统锁具的不同之处在于:
它与可编程逻辑器件实现系统的设计,应用简洁清晰的VHDL语言实现设计编程思想,能够实现适时、智能控制管理功能,特别是在系统的扩展上有很好的优势。
1.3课程设计的内容
本次课程设计成功地设计了一个简单的数字电子密码锁,密码为4位。
将电子密码锁分为以下几个模块:
方波生成模块、消抖同步模块、密码锁逻辑控制模块和密码锁显示模块,实现了以下功能:
(1)密码输入:
每按下一个键,要求在数码管上显示,并依次左移;
(2)密码清除:
清除密码输入,并将输入置为”8888”;
(3)密码修改:
将当前输入设为新的密码;
(4)上锁和开锁
2EDA、VHDL简介
2.1EDA简介
EDA是电子设计自动化(ElectronicDesignAutomation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。
EDA技术是以计算机为工具,根据硬件描述语言HDL(HardwareDescriptionlanguage)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。
典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。
综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。
综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。
也就是说,综合器是软件描述与硬件实现的一座桥梁。
综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD相映射的网表文件。
适配器的功能是将由综合器产生的王表文件配置与指定的目标器件中,产生最终的下载文件,如JED文件。
适配所选定的目标器件(FPGA/CPLD芯片)必须属于在综合器中已指定的目标器件系列。
硬件描述语言HDL是相对于一般的计算机软件语言,如:
C、PASCAL而言的。
HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。
设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;
然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。
目前,就FPGA/CPLD开发来说,比较常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。
2.2VHDL
2.2.1VHDL语言简介
目前数字系统的设计可以直接面向用户需求,根据系统的行为和功能要求,自上而下地逐层完成相应的描述、综合、优化、仿真与验证,直到生成器件,实现电子设计自动化。
其中电子设计自动化EDA(即ElectronicDesignAutomation)的关键技术之一就是可以用硬件描述语言(HDL)来描述硬件电路。
VHDL(VHSICHardwareDescriptionLanguage)是用来描述从抽象到具体级别硬件的工业标准语言,它是由美国国防部在20世纪80年代开发的HDL,现在已成为IEEE承认的标准硬件描述语言。
VHDL支持硬件的设计、验证、综合和测试,以及硬件设计数据的交换、维护、修改和硬件的实现,具有描述能力强、生命周期长、支持大规模设计的分解和已有设计的再利用等优点[13]。
VHDL主要用于描述数字系统的结构、行为和功能,其程序结构特点是将一个电路模块或一个系统分成端口和内部功能算法实现两部分。
对于一个电路模块或者数字系统而言,定义了外部端口后,一旦内部功能算法完成后,其他系统可以直接依据外部端口调用该电路模块或数字系统,而不必知道其内部结构和算法。
VHDL的特点使得电子系统新的设计方法——“自顶向下”设计方法更加容易实现[14]。
可以先对整个系统进行方案设计,按功能划分成若干单元模块,然后对每个单元模块进一步细分,直到简单实现的单元电路。
2.2.2VHDL语言的特点
VHDL语言主要用于描述数字系统的结构、行为、功能和接口,其具有以下特点:
(1)作为HDL的第一个国际标准,VHDL具有很强的可移植性;
(2)具有丰富的模拟仿真语句和库函数;
(3)VHDL有良好的可读性,接近高级语言,容易理解;
(4)系统设计与硬件结构无关;
(5)支持模块化设计;
(6)用VHDL完成的一个确定设计,可以利用EDA工具自动地把VHDL描述转变成门电路级网表文件。
2.2.3VHDL语言的优点
与其他硬件描述语言相比,VHDL语言有如下优越之处[15]:
(1)VHDL语言支持自上而下(Top Down)和基于库(LibraryBase)的设计方法,还支持同步电路、异步电路、FPGA以及其他随机电路的设计;
(2) VHDL语言具有多层次描述系统硬件功能的能力,可以从系统的数学模型直到门级电路,其高层次的行为描述可以与低层次的RTL描述和结构描述混合使用,还可以自定义数据 类型,给编程人员带来较大的自由和方便;
(3)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必关心最终设计实现的目标器件是什么;
(4)VHDL具有电路仿真与验证功能,可以保证设计的正确性,用户甚至不必编写如何测试相量便可以进行源代码级的调试,而且设计者可以非常方便地比较各种方案之间的可行性及其优劣,不需做任何实际的电路实验;
(5)VHDL语言可以与工艺无关编程;
(6)VHDL语言标准、规范,易于共享和复用。
2.2.4VHDL语言的基本结构
VHDL有五大元素组成,即实体、结构体、配置、程序包和库[16]。
具体说明如下:
(1)实体(ENTITY)
程序是设计的基本模块和初级单元,在分层设计中,顶层有顶层实体,含在顶层实体中的较低层的描述为底层实体.配置把顶层实体和底层实体连接起来.实体说明语句仅对本实体与外部电路接口进行描述.
(2)结构体(ARCHITECTURE)
结构体也叫构造体,描述了实体的结构、行为、元件及内部连接关系,也就是说它定义了设计实体的功能,规定了设计实体的数据流程,制定了实体内部元件的连接关系。
(3)配置(CONFIGURATION)
配制用于将元件实例与实体-结构成对绑定,决定了哪个结构体于实体关联。
(4)程序包(PACKAGE)
程序包是经常使用的数据类型和子程序的集合,可以认为是VHDL的工具箱,主要对程序包中的常量、数据类型和子程序进行格式描述,类似于C语言中的头文件。
(5)库(LIBRARY)
库具体对程序包声明的数据类型和子程序进行功能说明。
2.2.5VHDL语言的应用
硬件描述语言已成为当今以及未来电子设计自动化(EDA)解决方案的核心,特别是对于深亚微米复杂数字系统的设计,硬件描述语言具有独特的作用。
VHDL在数字电子电路的设计中具有硬件描述能力强、设计方法灵活等优点[17]。
利用硬件描述语言VHDL,数字电路系统可从系统行为级、寄存器传输级和门级三个不同层次进行设计,即上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。
然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。
接着,再用专用集成电路(ASIC)或现场可编程门阵列(FPGA)自动布局布线工具,把网表转换为要实现的具体电路布线结构。
目前,这种高层次设计(highleveldesign)的方法已被广泛采用。
据统计,目前在美国硅谷约有90%以上的ASIC和FPGA采用硬件描述语言进行设计。
VHDL的应用已成为当今以及未来EDA解决方案的核心,而且是复杂数字系统设计的核心[18]。
3基于VHDL的电子密码锁设计过程
3.1设计规划
电子密码锁的结构如图3-1所示,由时钟脉冲发生器、按键、指示灯和控制部分等组成。
开关的消抖动电路放在控制部分考虑,时钟输入端CLK由外部时钟脉冲发生器的输出提供。
设计中的指示灯就是发光二极管,共计10个,用来指示系统的工作状态。
其中8个为一组,用来显示已经输入密码的个数,剩余两个,一个为开锁绿色指示灯LT;
另一个为报警红色指示灯LF。
控制部分是VHDL语言设计的核心部分,主要由方波生成模块FEN、消抖同模XIAOPRO、反向器模块INV1和密码锁逻辑控制模块CENTRE这4个模块构成,可以完成密码的修改、设定及非法入侵报警、驱动外围电路等功能。
图3-1电子密码锁结构
主程序作为整个系统中最重要的部分,设计相当繁琐,而且还承担着其它子程序的连接任务,所以显得尤为重要,如果这个部分出了问题那整个系统将会瘫痪。
此电子密码锁系统的主程序需要的标准程序包:
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALLUSEIEEE.STD_LOGIC_UN-
图3-2DEBOLNCING模块原件例化
模块内部信号:
CLK:
时钟脉冲输入端口
VCC:
模块内部信号,控制清零
Q0:
寄存D触发器处理过的信号
Q1:
与Q0信号做差分处理
D1:
模块内部信号
D0:
QQ0,QQ1D_OUT1,DD0,DD1是为便于仿真时观察中间结果而增加的观测点的输出端口(删除无影响)。
DEBOUNCING模块主要程序如下:
U1:
DCFQPORTMAP(CLK=>CLKCLRN=>INV_DPRN=>VCCD=>VCCQ=>Q0);
U2:
DCFQPORTMAP(CLK=>CLKCLRN=>Q0PRN=>VCCD=>VCCQ=>Q1);
PROCESS(CLK)
BEGIN
IFCLK'EVENTANDCLK='1'THEN
D0<=NOTQ1;
D1<=D0;
ENDIF
ENDPROCESS;
DD0<=D0;
DD1<=D1;
QQ1<=Q1QQ0<=Q0;
D_OUT<=NOT(D1ANDNOTD0);
D_OUT1<=NOTQ1;
ENDARCHITECTUREART;
这段程序的作用就是通过对信号的分频处理,从而将按键产生的不规则信号转换为便于识别的按键信号,达到消除抖动的目的。
3.2各模块原理及程序
电子密码锁的核心部分是控制器,该部分的输入输出信号已有明确的定义如表3.1所示:
知道了输入输出后,就可以进行设计了。
该电子密码锁设置8位二进制密码,其功能特点为:
表3.1电子密码锁控制器输入输出信号定义
(1)采用串行数据输入,可实现启闭开关、指示灯提示和报警等功能;
(2)采用消抖模块,以避免开关的震颤影响;
(3)开锁者只有在正确输入密码后才能重新设置新的密码,以防止非管理员对密码进行任意的修改];
(4)可初始化密码。
数字系统的层次化设计,一般都要经过4个阶段:
设计输入、编译、仿真验证、下载器件。
本设计采用的是自下而上的设计方法,逐层完成相应的描述、编译、仿真与验证,即先建立一些低层次的设计,再将它们组合在一起,最后形成一个单一的顶层设计文件。
Max+plusⅡ软件有多种输入方式,主要有:
各种文本输入、原理图输入和波形输入。
对于不同层次的模块,应采用不同的输入方式进行描述。
由于VHDL擅长描述模块的逻辑功能,而原理图擅长描述硬件连接关系,所以在底层设计中,对底层所有模块使用VHDL语言进行描述,在顶层设计中,使用原理图输入方法。
密码锁控制电路主要程序:
KEYIN_PROCESS:
BLOCKIS
SIGNALRST,D0,D1,STD_LOGIC;
RST<=RR2;
PROCESSFLAG_NRSTIS
IFRST='1'THEN
ACC<="0000000000000000"--CLEARINPUT
NC<="000";
ELSE
IFFLAG_N'EVENTANDFLAG_N='1'THEN
IFNC<4THEN
ACC<=ACC11DOWNTO0&DATA_N;
NC<=NC+1;
ENDIF;
ENDBLOCKKEYIN_PROCESS;
以上程序的作用是清除、暂存按键输入数据,每输入一个数字在数码管显示时都左移一位,直到输入位数达到4位,4位以后不再显示。
LOCK_PROCESS;
PROCESS(CLKDATA_F)IS
IF(CLK'EVENTANDCLK='1')THEN
FNC=4THEN
IFDATA_F2='1'THEN--上锁控制信号有效
REG<=ACC;
--密码存储QA<='1';
QB<='0';
本设计主要包括方波生成模块、消抖同步模块、密码锁逻辑控制模块和密码锁显示模块,下面分别加以介绍。
3.2.1方波生成模块
方波生成模块FEN分频产生占空比为1:
100的方波,用于消除抖动。
分频电路的输入时钟CLK是由外部时钟提供的,外部时钟周期取200ns。
FEN模块程序如下:
LIBRARYIEEE;
USEIEEE.std_logic_1164.ALL;
ENTITYfenIS
PORT(clk:
instd_logic;
clk1:
outstd_logic);
ENDfen;
ARCHITECTUREfen_arcOFfenIS
PROCESS(clk)
VARIABLEcnt:
integerrange0to99;
IFclk!
eventANDclk=!
1!
THEN
IFcnt=99THEN
cnt:
=0;
clk1<
=!
;
=cnt+1;
0!
ENDIF;
ENDPROCESS;
ENDfen_arc;
3.2.2消抖同步模块
键盘的输入电路部分又分为键盘去抖电路和密码锁输入电路,下面先介绍键盘去抖电路部分。
键盘消抖部分是由两个小的模块集成为一个去抖电路的,所以在此分开介绍此两个模块。
(1)DCFQ模块
模块外部信号端口:
时钟脉冲输入端口,为电路提供原始始终信号
CLRM:
清零信号输入端口
PRN:
置位信号输入端口
Q:
信号输出端口
DCFQ模块的主要程序
IFCLRN='0'ANDPRN='1'THEN
Q<='0';
LSIFCLRN='1'ANDPRN='0'THEN
Q<='1';
ELSIFCLK'EVENTANDCLK='1'THEN
Q<=D;
ENDIF;
此段程序作用是判断输入信号是否有效,如有效则输出,无效清零。
(2)DEBOUNCING模块
a.模块外部信号端口:
D-IN:
信号输入端口
FLAG_N:
数字输出标志
FLAG_F:
功能输出标志
CLK_CTR:
控制电路工作时钟信号
CLK_DEBOUNCE:
去抖电路工作时钟信号(仿真时用)
b.模块内部信号:
电路工作时钟脉冲
C_KEYBOARD:
键扫信号“00-01-10-11”寄存器
C_DEBOUNCE:
去抖时钟信号
C:
键盘输入去抖后的寄存器
N,F:
数字、功能按键译码值的寄存器
FN,FF:
数字、功能按键标志值数字、功能按键
SEL:
Z:
按键位置信号
对于K1和K0信号,它们分别代表1和0的按键开关,可以直接送入密码锁逻辑控制模块CEN2TRE。
但由于它们是由按键产生的,其产生时刻和持续时间长短是随机的,并且存在因开关簧片反弹引起的电平抖动现象。
因此,必须在每个开关后面安排一个消抖和同步化电路模块XIAOPRO,目的是保证系统能捕捉到输入脉冲,同时,保证每按一次键只形成一个宽度固定的脉冲[3]。
在XIAOPRO模块中,因为变量的赋值是直接的,立即生效的,它在某一时刻仅包含一个值,而信号的赋值是有一定附加时延的,故当时钟脉冲下降沿到来时,变量tmp2和tmp3在赋值语句执行后立即分别得到新值:
tmp1的值和tmp2的非值,而输入信号a经过一定时延赋值给信号tmp1,实现了消除抖动并且同步的功能。
用来描述输入消抖同步电路功能的VHDL语言程序如下:
ENTITYxiaoproIS
PORT(a,clk1:
b:
ENDxiaopro;
ARCHITECTURExiao_arcOFxiaoproIS
SIGNALtmp1:
std_logic;
PROCESS(clk1,a)
VARIABLEtmp3,tmp2:
IFclk1!
eventANDclk1=!
tmp1<
=a;
tmp2:
=tmp1;
tmp3:
=nottmp2;
b<
=tmp1ANDtmp3ANDclk1;
ENDxiao_arc;
3.3密码锁逻辑控制模块
密码锁控制电路组成:
ELSIFDATA_F(0)='1'THEN--开锁控制信号有效
IFREG=ACCTHEN--密码核对
QA<='0'QB<='1';
ELSIFACC="1000100010001000"THEN
QA<='0';
QB<='1';
这段程序的作用是在按下*键时将输入的密码(暂时寄存于ACC中)跟已经存储的密码(REG中的密码信息)进行对比,如果一样,则密码锁开锁。
而在通过密码验证后可以按#键重新设定密码。
在这里值得注意的是有一个密码“8888”作为万用密码,也就是不论当前密码是什么,只要输入的密码为“8888”则都可通过密码锁。
模块CENTRE是整个设计的核心,它实现密码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 电子 密码锁 设计 实现 正文