张佳骏
《基于 VHDL 的电子密码锁设计与实现》
第 1页 共 33页
1 引言
电子密码锁的使用体现了人们消费水平、 保安意识和科技水平的提高 ,而
且避免了携带甚至丢失钥匙的麻烦。目前设计密码锁的方法很多 ,例如用传统的
PCB 板设计、 用 PLC 设计或者用单片机设计。而用 V HDL 可以更加快速、
灵活地设计出符合各种要求的密码锁,优于其他设计方法 ,使设计过程达到高度
自动化。
本设计在 Max + plus Ⅱ的环境中进行 ,用 Al2tera 公司 ACEX 1 K 系列的
EP1 K30 TC14423 来实现。ACEX 1 K 是 Altera 公司着眼于通信、 音频处理及
类似场合的应用而推出的 FPGA 器件芯片系列 ,其典型门数为 10 万门 ,是当
今 Altera 多种产品中应用前景最好的器件系列之一。
EDA 技术设计电子系统具有用软件的方式设计硬件;设计过程中可用有关
软件进行各种仿真,系统可现场编程、在线升级,整个系统可集成在一个芯片上
等特点;不但设计周期短、设计成本低,而且将提高产品或设备的性能,缩小产
品体积、提高产品的技术含量,提高产品的附加值。
用 VHDL 设计电子密码锁方案:作为通用电子密码锁,主要由 3 个部分组
成:数字密码输入电路、密码锁控制电路和密码锁显示电路,作为电子密码锁的
输入电路。可供选择的方案有数字机械式键盘和触摸式数字键盘等多种。
(1)密码锁输入电路包括时序产生电路、键盘扫描电路、键盘弹跳消除电
路、键盘译码电路等几个小的功能电路。
(2)密码锁控制电路包括按键数据的缓冲存储电路,密码的清除、变更、
存储、激活电锁电路(寄存器清除信号发生电路),密码核对(数值比较电路),
解锁电路(开/关门锁电路) 等几个小的功能电路。
(3)七段数码管显示电路主要将待显示数据的 BCD 码转换成数码器的七
段显示驱动编码。
张佳骏
《基于 VHDL 的电子密码锁设计与实现》
第 2页 共 33页
1.1 设计背景
随着社会的发展和人们生活水平的提高,人们的安全意识也逐步加强。传统
的机械锁由于其构造的简单,失效的事件屡见不鲜,如何实现保密防盗这一问题
变的尤其的突出,密码锁以其安全性高、成本低、功耗低、易操作等优点受到越
来越多人的欢迎。
基于VHDL语言的电子密码锁是新型现代化安全管理系统,它集微机自动识
别技术和现代安全管理措施为一体,它涉及电子,机械,计算机技术,通讯技术,
生物技术等诸多新技术。它是解决重要部门出入口实现安全防范管理的有效措
施,适用各种场合,如银行、宾馆、机房、军械库、机要室、办公间、智能化小
区、工厂、家庭等。
在数字技术网络技术飞速发展的今天,电子密码锁技术得到了迅猛的发展。
它早已超越了单纯的门道及钥匙管理,逐渐发展成为一套完整的出入管理系统
[1]。它在工作环境安全、人事考勤管理等行政管理工作中发挥着巨大的作用。在
该系统的基础上增加相应的辅助设备可以进行电梯控制、车辆进出控制,物业消
防监控、餐饮收费、私家车库管理等,真正实现区域内一卡智能管理。
目前使用的电子密码锁大部分是基于单片机技术, 以单片机为主要器件, 其
编码器与解码器的生成为软件方式。在实际应用中, 由于程序容易跑飞, 系统的
可靠性能较差[2]。基于 VHDL 语言的电子密码锁已经是现代生活中经常用到的工
具之一,用于各类保险柜、房门、防盗门等等。用电子密码锁代替传统的机械式
密码锁,克服了机械式密码锁密码量少、安全性能差的缺点。
1.2 设计目的
电子杂志、报刊经常刊登有密码开关、密码锁这样的电路,大多数是使用常
用的数字电路,如 CD4017,然后通过不同的连接方式实现密码控制功能。这种
电路的特点就是密码修改只能通过改变电路的连接来实现,密码很容易被破解,
电路复杂,故障率高。本制作是针对这些电路而设计的,将以往的以单片机实现
设计改为可编程器件 FPGA 利用 VHDL 编程实现电子密码锁的设计。这种设计
移动方便。基于 FPGA 的电子密码锁具有保密强、灵活性高、适用范围广等特点,
它在键盘上输入,与打电话差不多,因而易于掌握,其突出优点是“密码”是记在
张佳骏
《基于 VHDL 的电子密码锁设计与实现》
第 3页 共 33页
被授权人脑子里的数字和字符,既准确又可靠,不会丢失(除了忘记),难以被
窃(除非自己泄露)。但是密码不能太简单,太简单了就容易被他人在键盘上试
探出来,或者可能被旁观者窥测出来,造成保密性不足。当然,密码又不能太复
杂,太复杂了可能自己都糊涂了,或者输入密码操作成功率低,造成使用不便。
因此,为了发扬优点、克服弱点,本设计采用“任意设定数字密码”技术使得被授
权人可以根据自己的需要或喜好设定密码,常用常新,在输入密码的过程中,当
用户键入错误密码时,系统就会报警,由扬声器发出 5 秒报警声,当连续三次出
现密码错误时,则系统会长时间报警不止,这时必须按复位方可停止。
本设计的电子密码锁的特点是:体积小、功耗低、价格便宜、安全可靠,维
护和升级都十分方便,具有较好的应用前景。它与传统锁具的不同之处在于:它
与可编程逻辑器件实现系统的设计,应用简洁清晰的 VHDL 语言实现设计编程
思想,能够实现适时、智能控制管理功能,特别是在系统的扩展上有很好的优势。
1.3 设计内容
本次课程设计成功地设计了一个简单的数字电子密码锁,密码为 4 位。将
电子密码锁分为以下几个模块:方波生成模块、消抖同步模块、密码锁逻辑控制
模块和密码锁显示模块,实现了以下功能:
(1)密码输入:每按下一个键,要求在数码管上显示,并依次左移;
(2)密码清除:清除密码输入,并将输入置为”8888”;
(3)密码修改:将当前输入设为新的密码;
(4)上锁和开锁
张佳骏
《基于 VHDL 的电子密码锁设计与实现》
第 4页 共 33页
2 设计的基础依据
2.1 EDA 简介
EDA 是电子设计自动化(Electronic Design Automation)缩写,是 90 年代初
从 CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)
和 CAE(计算机辅助工程)的概念发展而来的。EDA 技术是以计算机为工具,
根据硬件描述语言 HDL( Hardware Description language)完成的设计文件,自
动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目
标芯片的适配编译和编程下载等工作。典型的 EDA 工具中必须包含两个特殊的
软件包,即综合器和适配器。综合器的功能就是将设计者在 EDA 平台上完成的
针对某个系统项目的 HDL、原理图或状态图形描述,针对给定的硬件系统组件,
进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。综合器在
工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的
硬件结构用一定的方式联系起来。也就是说,综合器是软件描述与硬件实现的一
座桥梁。综合过程就是将电路的高级语言描述转换低级的、可与目标器件
FPGA/CPLD 相映射的网表文件。
适配器的功能是将由综合器产生的王表文件配置与指定的目标器件中,产生
最终的下载文件,如 JED 文件。适配所选定的目标器件(FPGA/CPLD 芯片)必
须属于在综合器中已指定的目标器件系列。
硬件描述语言 HDL 是相对于一般的计算机软件语言,如:C、PASCAL 而
言的。HDL 语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的
逻辑功能、电路结构和连接方式。设计者可利用 HDL 程序来描述所希望的电路
系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序
编程能控制 FPGA 和 CPLD 内部结构,并实现相应逻辑功能的的门级或更底层
的结构网表文件或下载文件。目前,就 FPGA/CPLD 开发来说,比较常用和流行
的 HDL 主要有 ABEL-HDL、AHDL 和 VHDL。
张佳骏
2.2 VHDL
《基于 VHDL 的电子密码锁设计与实现》
第 5页 共 33页
2.2.1 VHDL 语言简介
目前数字系统的设计可以直接面向用户需求 ,根据系统的行为和功能要求 ,
自上而下地逐层完成相应的描述、综合、优化、仿真与验证 ,直到生成器件 ,实
现电子设计自动化。其中电子设计自动化 EDA (即 Electronic Design Automation)
的关键技术之一就是可以用硬件描述语言(HDL)来描述硬件电路。VHDL(VHSIC
Hardware Description Language)是用来描述从抽象到具体级别硬件的工业标准语
言 ,它是由美国国防部在 20 世纪 80 年代开发的 HDL ,现在已成为 IEEE 承认
的标准硬件描述语言。VHDL 支持硬件的设计、验证、综合和测试 ,以及硬件设
计数据的交换、维护、修改和硬件的实现 ,具有描述能力强、生命周期长、支持
大规模设计的分解和已有设计的再利用等优点[2]。
VHDL 主要用于描述数字系统的结构、行为和功能 ,其程序结构特点是将一
个电路模块或一个系统分成端口和内部功能算法实现两部分。对于一个电路模块
或者数字系统而言 ,定义了外部端口后 ,一旦内部功能算法完成后 ,其他系统可
以直接依据外部端口调用该电路模块或数字系统 ,而不必知道其内部结构和算
法。VHDL 的特点使得电子系统新的设计方法——“自顶向下”设计方法更加
容易实现[14]。可以先对整个系统进行方案设计 ,按功能划分成若干单元模块 ,然
后对每个单元模块进一步细分 ,直到简单实现的单元电路。
2.2.2 VHDL 语言的特点
VHDL 语言主要用于描述数字系统的结构、行为、功能和接口,其具有以下
特点:
(1)作为 HDL 的第一个国际标准,VHDL 具有很强的可移植性;
(2)具有丰富的模拟仿真语句和库函数;
(3)VHDL 有良好的可读性,接近高级语言,容易理解;
(4)系统设计与硬件结构无关;
(5)支持模块化设计;
(6)用 VHDL 完成的一个确定设计,可以利用 EDA 工具自动地把 VHDL 描
述转变成门电路级网表文件。
张佳骏
《基于 VHDL 的电子密码锁设计与实现》
第 6页 共 33页
2.2.3 VHDL 语言的优点
与其他硬件描述语言相比,VHDL 语言有如下优越之处[15]:
(1)VHDL 语言支持自上而下(Top Down)和基于库(LibraryBase)的设
计方法,还支持同步电路、异步电路、FPGA 以及其他随机电路的设计;
(2) VHDL 语言具有多层次描述系统硬件功能的能力,可以从系统的数学
模型直到门级电路,其高层次的行为描述可以与低层次的 RTL 描述和结构描述
混合使用,还可以自定义数据 类型,给编程人员带来较大的自由和方便;
(3)VHDL 对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也
不必关心最终设计实现的目标器件是什么;
(4)VHDL 具有电路仿真与验证功能,可以保证设计的正确性,用户甚至不
必编写如何测试相量便可以进行源代码级的调试,而且设计者可以非常方便地比
较各种方案之间的可行性及其优劣,不需做任何实际的电路实验;
(5)VHDL 语言可以与工艺无关编程;
(6)VHDL 语言标准、规范,易于共享和复用。
2.2.4 VHDL 语言的基本结构
VHDL 有五大元素组成,即实体、结构体、配置、程序包和库[16]。具体说明如下:
(1)实体(ENTITY)
程序是设计的基本模块和初级单元,在分层设计中,顶层有顶层实体,含在顶层
实体中的较低层的描述为底层实体.配置把顶层实体和底层实体连接起来.实体说
明语句仅对本实体与外部电路接口进行描述.
(2)结构体(ARCHITECTURE)
结构体也叫构造体,描述了实体的结构、行为、元件及内部连接关系,也就
是说它定义了设计实体的功能,规定了设计实体的数据流程,制定了实体内部元
件的连接关系。
(3)配置(CONFIGURATION)
配制用于将元件实例与实体-结构成对绑定,决定了哪个结构体于实体关联。
(4)程序包(PACKAGE)
张佳骏
《基于 VHDL 的电子密码锁设计与实现》
第 7页 共 33页
程序包是经常使用的数据类型和子程序的集合,可以认为是 VHDL 的工具箱,
主要对程序包中的常量、数据类型和子程序进行格式描述,类似于 C 语言中的
头文件。
(5)库(LIBRARY)
库具体对程序包声明的数据类型和子程序进行功能说明。
2.2.5 VHDL 语言的应用
硬件描述语言已成为当今以及未来电子设计自动化(EDA)解决方案的核心,
特别是对于深亚微米复杂数字系统的设计,硬件描述语言具有独特的作用。
VHDL 在数字电子电路的设计中具有硬件描述能力强、设计方法灵活等优点[6]。
利用硬件描述语言 VHDL,数字电路系统可从系统行为级、寄存器传输级和门级
三个不同层次进行设计,即上层到下层(从抽象到具体)逐层描述自己的设计思
想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自
动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,
经过自动综合工具转换到门级电路网表。接着,再用专用集成电路(ASIC)或现场
可编程门阵列(FPGA)自动布局布线工具,把网表转换为要实现的具体电路布线
结构。目前,这种高层次设计(highleveldesign)的方法已被广泛采用。据统计,目
前在美国硅谷约有90%以上的 ASIC 和FPGA 采用硬件描述语言进行设计。VHDL
的应用已成为当今以及未来 EDA 解决方案的核心,而且是复杂数字系统设计的
核心。
张佳骏
《基于 VHDL 的电子密码锁设计与实现》
第 8页 共 33页
3 基于 VHDL 的电子密码锁设计过程
3.1 设计规划
电子密码锁的结构如图 3-1 所示 ,由时钟脉冲发生器、 按键、 指示灯和控制
部分等组成。开关的消抖动电路放在控制部分考虑 ,时钟输入端 CL K 由外部时
钟脉冲发生器的输出提供。设计中的指示灯就是发光二极管 ,共计 10 个 ,用来
指示系统的工作状态。其中 8 个为一组 ,用来显示已经输入密码的个数 ,剩余两
个 ,一个为开锁绿色指示灯 L T ;另一个为报警红色指示灯 L F。控制部分是 V
HDL 语言设计的核心部分 ,主要由方波生成模块 FEN、 消抖同模 XIAOPRO、
反向器模块 INV1 和密码锁逻辑控制模块 CEN TRE 这 4 个模块构成 ,可以
完成密码的修改、 设定及非法入侵报警、 驱动外围电路等功能。
图 3.1 电子密码锁结构
主程序作为整个系统中最重要的部分,设计相当繁琐,而且还承担着其它子
程序的连接任务,所以显得尤为重要,如果这个部分出了问题 那整个系统将会
瘫痪。此电子密码锁系统的主程序需要的标准程序包:USE IEEE.STD_LOGIC
_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL USE IEEE.STD_LOGIC_UN-
图 3.2 DEBOLNCING 模块原件例化