毕业设计论文开题报告(电子密码锁)

时间:2024.4.21

毕业设计论文开题报告

题目:电子密码锁的设计研究

一、 课题背景和意义

锁是一种保安措施,是人类为了保护自己私有财产而发明的一种用钥匙才能开启的装置。随着人们生活水平的提高和安全意识的加强,对锁的要求也越来越高,既要安全可靠的防盗,又要使用方便。这就使得传统的锁防盗效果已经满足不了现代社会的防盗需要,而且还存在着随身带钥匙的不便。因此近几年,随着科学技术的不断发展,一种新型的电子密码锁应运而生。电子密码锁运用电子电路控制机械部分,使两者紧密结合,从而避免了因为机械部分被破坏而导致开锁功能失常的问题,而且密码输入错误是还有报警声,大大增加了电子密码锁的防盗功能。同时因为电子密码锁不需要携带钥匙,弥补了钥匙极易丢失和伪造的缺陷,方便了锁具的使用。传统的锁由于构造简单,所以被撬的事件屡见不鲜,电子密码锁由于具有保密性高、使用灵活性好、安全系数高等优点,受到了广大用户的青睐。

二、国内外研究现状

电子密码锁的种类繁多,例如数码锁、指纹锁、磁卡锁、IC卡锁、生物锁等,但较实用的还是按键式电子密码锁。20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠性提高,成本较高,是适合使用在安全性要求较高的场合,而且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对它的研究一直没有明显的进展。

目前,在西方发达国家,密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于只能门禁系统中,通过多种更加安全,更加可靠的技术实现大门的管理。在我国密码锁整体水平尚处在国际70年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。国内的不少企业也引进了世界上先进的技术,发展前景非常可观。希望通过不的努力,使电子密码锁在我国也能得到广发应用。

三、 设计论文主要内容

1、电子密码锁设计方案的分析与方案选择;

2、设计一典型结构的电子密码锁,分析其电路结构及控制程序;

3、选者合适的电器元件;

4、编写控制程序;

5、将程序输入PC机,并修改进行模拟运行;

四、 设计方案

查阅文献技术资料,分析电子密码锁结构、工作原理和技术要求。以单片机为主控芯片,结合外围电路,通过软件程序组成电子密码锁系统,能够实现:

1. 正确输入密码前提下,开锁提示;

2. 错误输入密码情况下,蜂鸣器报警;

3. 密码可以根据用户需要更改。

五、 工作进度安排

2011.2.22—2011.3.8

2011.3.9—2011.3.19

2011.3.21—2011.4.9

2011.4.10—2011.4.30

2011.5.1—2011.5.10

2011.5.11—2011.5.20 确定毕业设计课题,提交开题报告; 查阅相关论文,调研及收集相关资料; 方案设计、审查和确定,提交中期报告 编写控制程序 整理并撰写论文 完善论文,提交论文

六、 主要参考文献

[1] 石文轩,宋薇.基于单片机MCS-51的智能密码锁设计[M].武汉工程职业技术学院学报,2004,(01);

[2] 祖龙起,刘仁杰.一种新型可编程密码锁[J].大连轻工业学院学报,2002,(01);

[3] 叶启明.单片机制作的新型安全密码锁[J].家庭电子,2005,(10);

[4] 李明喜.新型电子密码锁的设计[J].机电产品开发与创新,2004,(03);

[5] 董继成.一种新型安全的单片机密码锁[J].电子技术,2004,(03);

[6] 杨茂涛.一种电子密码锁的实现[J].福建电脑,2004,(08);

[7] 瞿贵荣.实用电子密码锁[J].家庭电子,2000,(07);

[8] 王千.实用电子电路大全[M],电子工业出版社,2001,p101;

[9] 何立民.单片机应用技术选编[M],北京:北京航空大学出版社,1998;

[10] ATmega.ATmega8L-8AC,2006,(01);


第二篇:1毕业设计论文_基于FPGA电子密码锁设计


随着电子技术的发展,具有防盗报警等功能的电子密码锁代替密码量少、安全性 差的机械式密码锁已是必然趋势。电子密码锁与普通机械锁相比,具有许多独特的优 点:保密性好,防盗性强,可以不用钥匙,记住密码即可开锁等。目前使用的电子密 码锁大部分是基于单片机技术,以单片机为主要器件,其编码器与解码器的生成为软 件方式。在实际应用中,由于程序容易跑飞,系统的可靠性能较差。 本文主要阐述了一种基于现场可编程门阵列 FPGA 器件的电子密码锁的设计方 法。用 FPGA 器件构造系统,所有算法完全由硬件电路来实现,使得系统的工作可靠 性大为提高。由于 FPGA 具有现场可编程功能,当设计需要更改时,只需更改 FPGA 中的控制和接口电路,利用 EDA 工具将更新后的设计下载到 FPGA 中即可,无需更 改外部电路的设计,大大提高了设计的效率。因此,采用 FPGA 开发的数字系统,不 仅具有很高的工作可靠性,而且升级也极其方便。 本文采用 EDA 技术,利用 Quartus II 工作平台和硬件描述语言,设计了一种电 子密码锁,并通过一片 FPGA 芯片实现。 关键词: 关键词:电子密码锁;FPGA;硬件描述语言;EDA

Abstract

With the development of electronic technology, electronic password lock with burglar alarm and other functions replacing less password and poor security mechanical code lock is an inevitable trend. compared electronic password lock with ordinary mechanical locks, it has many unique advantages : confidentiality, and security in nature, do not use the key, remember password can unlock it etc .Most electronic password locks we used now is based upon SCM technology ,SCM is its mainly device ,and the creating of encoding and decoding devices is the fashion of Software mode. In practical application, the reliability of the system may be worse because of easy running fly of the programme.

This paper mainly expatiates a design method of electronic password lock based upon Field Programmable Gate Array device. We use FPGA devices to construct system , all of the algorithm entirely achieved by the hardware circuit , because of FPGA has the function of ISP , when the design needs to be changed We only need to change the control and interface circuit of FPGA,EDA tools are used to download the updated design to FPGA without changing the design of the external circuit , this greatly enhance the efficiency of the design .Therefore , we use FPGA to empolder the digital system has not only high reliability but also extremely convenient of upgrading and improvement .In this paper ,we use EDA technology , Quartus II platform and hardware description language designing an electronic password lock ,and it achieved through an FPGA chip. Key words: electronic password lock; FPGA; hardware description language; EDA :

目 录

1 绪论 (标题部分的格式很多不对,检查修改) ?? 1 1.1 本课题研究的国内外现状及其发展 ?? 2 1.2 本课题研究的目的和意义 ?? 2 2 关键技术简介 ?? 4 2.1 FPGA 硬件设计描述 ?? 4 2.1.1 2.1.2 2.1.3 FPGA 的设计流程 ?? 4 VHDL 语言的基本结构 ?? 6 自上而下(TOP DOWN)的设计方法 ?? 7

2.2 设计语言、仿真平台与开发系统 ?? 8 2.3 用 QuartusⅡ进行系统开发的设计流程 ?? 8 3 系统总体设计 ?? 9 3.1 电子密码锁设计的原理 ?? 9 3.2 方案的提

出 ?? 10 3.3 系统设计要求 ?? 11 3.4 系统设计描述 ?? 11 3.5 各功能模块描述 ?? 12 3.6 系统流程 ?? 13 4 系统详细设计 ?? 15 4.1 输入模块 ?? 15 4.1.1

4.1.2 4.1.3 4.1.4 4.1.5 时序产生电路 ?? 16 按键消抖电路 ?? 17 键盘扫描电路 ?? 20 键盘译码电路 ?? 21 键盘输入模块的实现 ?? 22

4.2 电子密码锁控制模块 ?? 23 4.2.1 4.2.2 4.2.3 控制模块的描述 ?? 23 控制模块的状态图与 ASM 图 ?? 错误!未定义书签。 错误!未定义书签。 控制模块的实现 ?? 27

4.3 电子密码锁显示模块 ?? 28

I

4.3.1 4.3.2

数码管显示原理 ?? 28 译码显示的实现 ?? 31

5 系统仿真 ?? 32 5.1 系统的有关编译与仿真 ?? 32 5.2 去抖模块的仿真 ?? 32 5.3 密码锁输入电路的仿真 ?? 33 5.4 密码锁控制电路的仿真 ?? 34 5.5 系统整体仿真 ?? 35 5.6 数码管译码器仿真 ?? 36 6 .结束语 ?? 37 致谢 ?? 38 参考文献 ?? 39

II

基于 FPGA 的电子密码锁设计

1 绪论

随着大规模和超大规模可编程器件在 FPGA 技术支持下的广泛应用,使现代化 设计计算已进入一个全新的阶段,从设计思想、设计工具一直到实现方式都发生了诸 多变化。 在 FPGA 技术中, 最为引人瞩目的是以现代电子技术为特征的逻辑设计仿真测试 技术。 改技术只需通过计算机就能对所设计的电子系统从不同层次的性能特点上进行 一些列准确测试和仿真;在完成实际系统的设计后,还能对系统上的目标器件进行边 界扫描测试。随着技术的发展,科技的日趋夜新电子密码锁种类比较多,发展更是 快。电子密码锁系统主要由电子锁体、电子密匙等部分组成,一把电子密匙里能存放 多组开锁密码,用户在使用过程中能够随时修改开锁密码,更新或配制钥匙里开锁密 码。一把电子锁可配制多把钥匙。下面就是现在主流电子密码锁。 遥控式电子防盗锁目前常见的遥控式电子防盗锁主要有光遥控和无线电遥控两 类。键盘式电子密码锁从目前的技术水平和市场认可程度看,使用最为广泛的是键盘 式电子密码锁,该产品主要应用于保险箱、保险柜和金库,还有一部分应用于保管箱 和运钞车。 卡式电子防盗锁使用各种“卡”作为钥匙的电子防盗锁是当前最为活跃的产 品,无论卡的种类如何多种多样,按照输入卡的操作方式,都可分为接触式卡和非接 触式卡两大类。生物特征防盗锁人的某些与生俱来的个性特征(如手、眼睛、声音的 特征)几乎不可重复,作为“钥匙”就是唯一的(除非被逼迫或伤害) ,因此,利用生 物特征做密码的电子防盗锁,也特别适合金融业注重“验明正身”的行业特点。 本文介绍的基于 FPGA 的电子密码锁电路具有显示接口, 显示时可以是明文也可 以是密文星号。由于 FPGA 具有 ISP 功能,当用户需要更改时,如增加口令位数和更 改口令权限管理时,只需更改 FPGA 中的控制和接口电路,利用 EDA 工具将更新后 的设计下载到 FPGA 中即可,无需更改外部电路,这就大大提高了设计效率。而且采 用 FPGA 设计的电子密码锁与单片机控制的电子密码锁相比结构简单、 具有更高的系 统保密性和可靠性。这种基于 FPGA 的电子密码锁可以应用在办公室、仓库、宾馆等 人员经常变动的场所。 FPGA 技术是现代电子工程领域的一门新技术,提供了基于计算机和信息技术的 电路系统设计的方法。它是从计算机辅助设计(CAD) 、计算机辅助制造(CAM) 、 计算机辅助测试(CAT)和计算机辅助工程(CAE)等技术发展而来的。设计者只需 从而为电子产品 要对系统功能进行描述, FPGA 工具的帮助下即可完成系统设计, 在 的设计和开发缩短了实践降低了成本,提高了系统的可靠性。

-1-

基于 FPGA 的电子密码锁设计

1.1 本课题研究的国内外现状及其发展

随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。锁自 古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,又要使用 方便,这也是制锁者长期以来研制的主题。随着电子技术的发展,各类电子产品应运 而生,电子密码锁就是其中之一。据有关资料介绍,电子密码锁的研究从 20 世纪 30 年代就开始了,在一些特殊场所早就有所应用。这种锁是通过键盘输入一组密码完成 开锁过程。研究这种锁的初衷,就是为提高锁的安全性。由于电子锁的密钥量(密码 量)极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。电 子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被 越来越多的人所欣赏。电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC 卡锁, 生物锁等。但较实用的还是按键式电子密码锁。 20 世纪 80 年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠 性提高,成本较高,是适合使用在安全性要求较高的场合,且需要有电源提供能量, 使用还局限在一定范围,难以普及,所以对它的研究一直没有明显进展。 目前,在西方发达国家,电子密码锁技术相对先进,种类齐全,电子密码锁已被 广泛应用于智能门禁系统中,通过多种更加安全,更加可靠的技术实现大门的管理。 在我国电子锁整体水平尚处于国际上 70 年代左右,电子密码锁的成本还很高,市场 上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有 几个厂生产供应市场。但国内自行研制开发的电子锁,其市场结构尚未形成,应用还 不广泛。国内的不少企业也引进了世界上先进的技术,发展前景非常可观。希望通过 不断的努力,使电子密码锁在我国也能得到广泛应用。 目前使用的电子密码锁大部分是基于单片机技术,以单片机为主要器件,其编码 器与解码器的生成为软件方式。在实际应用中,由于程序容易跑飞,系统的可靠性能 较差。基于现场可编程逻辑门阵列 FPGA 器件的电子密码锁,用 FPGA 器件构造系 统,所有算法完全由硬件电路来实现,使得系统的工作可靠性大为提高。由于 FPGA 具有现场可编程功能,当设计需要更改时,只需更改 FPGA 中的控制和接口电路,利 用 EDA 工具将更新后的设计下载到 FPGA 中即可,无需更改外部电路的设计,大大 提高了设计的效率。

1.2 本课题研究的目的和意义

为了使现在的电子密码锁更能智能化的管理,让人们更能方便的使用,让其具 -2-

基于 FPGA 的电子密码锁设计

有更高的安全性和经济性,针对基于单片机的电子密码锁的不足之处,本文采用 EDA 技术,利用 QuartusⅡ工作平台硬件描述语言,设计一种电子密码锁,并通过一 片 FPGA 芯片实现。采用 VHDL 语言使用自顶向下的方法对系统进行了描述,并在 FPGA 芯片 CycloneⅡ上实现。设计充分利用了 FPGA 的资源可编程特性,可高效率 的对系统进行升级与改进。设计的密码锁可设置任意密码,比一般的四位密码锁具 有更高的安全可靠性,因此,采用 FPGA 开发的数字系统,不仅具有很高的工作可靠 性,其升级与改进也极其方便,应用前景十分良好。

-3-

基于 FPGA 的电子密码锁设计

2 关键技术简介

2.1 FPGA 硬件设计描述 硬件设计描述

2.1.1FPGA 的设计流程

FPGA 设计流程包括系统设计和设计实现,系统方案完成之后即进入设计实现阶 段的工

作,他以系统方案为输入,进行 RTL 级描述、功能仿真(RTL 级仿真)、逻辑综 合、布线前门级仿真、适配(布局布线)、时序仿真(布线后门级仿真)、时序分析、器 件编程、系统验证一系列流程的处理才能完成 FPGA 芯片的设计,其设计流程如图 2.1 所示。需要说明的是,如果仿真验证不对或者某一步有错,就要返回修改。有必 要检查和修改的地方有 RTL 级描述、系统方案、约束和测试激励等。一般情况下, 修改后要重新走 对 RTL 级的描述即原理图或者 HDL 设计代码的修改最多也最有效。 一遍流程。有时要反复修改,经过多次这样的迭代才能完成最后的设计。 在理论上,把 VLSI(Ultra Large Scale Integration,超大规模集成电路)的设计描述 为 6 个层次[1, 即系统级(系统功能、 2], 参数定义)、 算法级(描述系统功能行为)、 RTL 级、门级(逻辑门)、电路级(晶体管)、版图级(物理工艺)。每一级又都分 3 个侧面来描 述:行为域描述、结构域描述、物理域描述。但在实际情况中往往把算法级行为域描 述或者 RTL 级行为域描述都称为行为级描述。

-4-

基于 FPGA 的电子密码锁设计

系统设计流程(左边的箭头线太短了,最好和右边对称) 图 2.1 系统设计流程(左边的箭头线太短了,最好和右边对称) 对于 FPGA 的设计而言,不需要关心电路级和版图级,只考虑系统级、算法级、 RTL 级、门级 4 个层次的行为域描述和结构域描述即可。上述的 FPGA 系统设计中 的系统实际上是指系统级和算法级,而“RTL 级描述”主要是指 RTL 级行为域的描述。 在门级,由综合工具产生的门级网表来描述。 FPGA 的设计流程和相关概念说明如下: 库:指 FPGA 器件厂家提供的工艺库和 EDA 工具提供的标准通用库(如 IEEE 库 等)。工艺库中有各种宏功能模块和基本功能单元,含有他们的行为级模型、门级模 型、布线模型等信息。 需要说明的是,系统行为仿真和 RTL 级功能仿真有时要用到某种功能模块,例 如 RAM 模型。对于 RAM 模型的控制信号,不同的厂家其规定不一定相同,如写使 能信号,有的厂家规定高电平有效,有的厂家规定低电平有效。其实,在厂家提供的 工艺库中, RAM 模型有行为级模型、门级模型、版图级模型等。而行为级模型只是 规定其功能,无延时信息,跟工艺无关,但门级模型和版图级模型跟工艺密切相关。 解决的方法是系统行为仿真时可以使用高级语言自己建立一个模型或者调用厂家库 中提供的行为级模型,功能仿真时调用行为级模型,时序仿真时调用门级模型。

-5-

基于 FPGA 的电子密码锁设计

测试激励:指测试文件,他调用 FPGA 设计的顶层模块,同时产生顶层模块需要 的输入信号,称之为激励信号,使用行为描述即可,不要求可综合。仿真时他作为最 顶层的文件, 从而可以观察 FPGA 的输出是否正确。 所有的仿真都可使用同一个测试 激励。 约束:指对逻辑综合和布局布线时的约束。包括器件型号、速度、面积、功耗、 引脚分配、 时钟网络资源的分配、 模块在器件中的定位等约束。 一部分在软件中设置, 一部分以约束文件的形式存在。

2.1.2VHDL 语言的基本结构

VHDL(Very high speed integrated circuit Hardware Description Language)硬件描 述语言从高于逻辑级的抽象层次上描述硬件的功能、信号连接关系及定时关系。 VHDL 的设计流程如 2.2 图。

总体 方案

编写HDL代码

软件模拟

综合:面向FPGA 和ASIC

网表

硬 件 验 证

图 2.2

VHDL 的设计流程

一个完整的 VHDL 语言程序通常包含实体(Entity)、结构体(Architecture) 、配置 (Configuration) 、包集合(Package)和库(Library)五个部分。 1、实体 实体说明部分是说明一个器件的外观视图,即从器件外部看到的器件外貌,其中 包括器件的端口,同时也可以定义参数,并把参数从外部传入模块内部,主要用于描 述所设计的系统的外部接口。

2、结构体 结构体是描述一个器件的内部视图,是次级设计单元。在其对应的初级设计单元 实体说明被编译并且被并入设计库之后,它就可以单独地被并入该设计库中。结构体 描述一个设计的结构和行为,把一个设计的输入和输出之间的关系建立起来。一个设 计可以有多个结构,分别代表该器件的不同实现方案。根据对一个器件设计由抽象到 具体的过程,可把结构体的描述方式分为三个层次:行为描述方式、寄存器传输描述 方式(RTL)和结构描述方式。 -6-

基于 FPGA 的电子密码锁设计

3、库 库是经编译后的实体、结构体、包集合和配置的集合。使用库时总要在设计单元 的前面予以说明。一旦说明,库中的数据对该设计单元就是可见的,从而共享已经编 译过的设计结果。VHDL 语言中存在的库大致有 IEEE 库、STD 库、ASIC 厂家提供 的库、用户定义的库和现行作业库。 4、包集合 包集合属库中的一个层次,是一种可编译的源设计单元。它收集了 VHDL 语言 中所用到的信号、 常数、 数据类型、 函数和过程的说明等。 用户可以构造一个包集合, 用以存放常数、数据类型、函数和过程,该包集合经编译后便自动加到 WORK 库中。 使用库中的包集合时,在打开库后要用 USE 语句说明,例如: LIBRARY IEEE; USE IEEE.STD-LOGIC-1164.ALL; 5、配置 配置语句从一个库中为一个实体选择一个特定的结构体, 是一种放在库中的被编 辑单元,并有相应的配置名。通过配置技术,可以选取多种不同的结构体,以便对一 个设计任务采用仿真工具进行多种配置的性能实验。另外,配置说明和规定的特性还 可以用在多层描述中。

2.1.3自上而下(TOP DOWN)的设计方法 自上而下( DOWN)

自上而下的设计方法是现代电子系统的新型设计策略,它从设计的总体要求出 发,自上而下地逐步从系统数学模型的设计与仿真,到数据流级的设计与仿真,选择 系统设计方案, 最后完成系统硬件的整体设计。 VHDL 的自上而下的设计方法不仅体 现在它的基本结构由描述外视特性的实体与描述内视行为和结构的结构体构成, 同一 实体可以有一个以上的结构体,以便设计方案的选择,还体现在系统硬件设计过程的 三个层次:行为级描述与仿真、RTL 级描述与仿真、逻辑综合与门级仿真。逻辑综合 与所使用的逻辑综合工具有关,由逻辑综合优化工具生成具体的门级逻辑电路的 EDIF(Electronic Design Interchange Format)网表。EDIF 网表是一种标准接口,它是 一个以 ASCII 字符为基础的中间互换格式, 被大多数供应商提供的 CAE/CAD 系统所 支持。半导体制造厂基于这种网表生成 ASIC 芯片的制造工艺,FPGA 则基于这种网 表生成用以配置 FPGA 芯片的位流文件。 这三种仿真贯穿系统硬件设计的全过程, 从 而可以在系统设计早期发现设计中存在的问题, 与传统的自下而上的后期仿真相比大 大缩短系统的设计周期,并且利于方案的综合评价与选取。这是用 VHDL 语言设计 -7-

基于 FPGA 的电子密码锁设计

系统硬件的最突出的优点。

2.2 设计语言、仿真平台与开发系统 设计语言、

(1)硬件描述语言 电子密码锁的设计采用了功能强大的通用硬件描述语言 VHDL, 它具有很强的行 为描述能力,设计方法灵活,可以支持自顶向下(Top Down)和基于库

(Library-Based) 的设计方法,硬件描述与具体的工艺技术和硬件结构无关,能轻易地改变设计的规模 和结构,标准、规范易于共享与复用,易于向 ASIC 移植。 (2)QuartusⅡ软件开发工具 本设计采用的软件开发工具是美国 Altera 公司的 QuartusⅡ,它支持多种设计输 入方法,包括原理图输入、文本输入(如 AHDL,VHDL,Verilog HDL 文本文件) 和第三方 EDA 工具输入文件(如 EDIF,HDL,VQM 文件) ,利用该工具所配备的 编辑、编译、仿真综合、芯片编程等功能,可将设计电路图或电路描述程序变成基本 的逻辑单元写入到可编程的芯片中(如 FPGA 芯片),做成 ASIC 芯片。 (3)EDA 实验开发系统 设计中采用的 EDA 实验开发系统,主要用于提供可编程逻辑器件的下载电路及 EDA 实验开发的外围资源,供硬件验证用。一般包括:①实验或开发所需的各类基 本信号发生模块;②FPGA/CPLD 输出信息显示模块;③监控程序模块;④目标芯片 适配座以及上面的 FPGA/CPLD 目标芯片和下载电路。

2.3 用 QuartusⅡ进行系统开发的设计流程 QuartusⅡ

使用 QuartusⅡ进行电子密码锁设计的流程为 (1)编写 VHDL 程序(使用 VHDL File)(见附录) ; (2)编译 VHDL 程序(使用 Compiler); (3)仿真验证 VHDL 程序(使用 Waveform Editor, Simulator); (4)进行芯片的时序分析(使用 Timing Analyzer); (5)安排芯片管脚位置(使用 Floorplan Editor); (6)下载程序至芯片(使用 Programmer)。 -8-

基于 FPGA 的电子密码锁设计

3 系统总体设计 系统总体 总体设计

3.1 电子密码锁设计的原理

1、编码总量的确定 电子密码锁随机开锁成功的概率定义为: P=1/NT 其中 P 为随机开锁成功概率,NT 为密码编码总量。显然要使密码锁保密安全性 高,NT 应尽可能大,使 P 趋于零,但 NT 越大,相应电路越复杂,密码的记忆与操 作也越麻烦。故 NT 应有合理的上限和下限。 下限 NTL 的选择应使密码落在随机开锁可能成功的操作时区以外。若每一次开 锁操作时间为 t,为便于做随机试验,将 NT 分为 n 段并期望在 1/n 段的 1/2 处开锁成 功。此时 p=1/2n 则随机开锁试验期望成功的时间为: Tr=NT×t/2n 假定系统设计不考虑误码输入的保护, 密码锁在无保护的情况下使操作人员任意 作随机开锁试验的时间为 TEN,则: NTL=(2n×TEN t)×x,其中 x 为最低安全系数。即: TEN=(NTL×t/2n)/x 显然若使 NT>=NTL,则 Tr>TEN,则使分段随机试验不易成功。 由此可得出数字密码锁的编码总量设定是系统设计安全性、 保密性的首要技术指 标。一般来说,当 NT 选定之后,NT 的上限 NTH 原则上是越大越安全,但一般设计 时取 NTH=(10~1000)NTL 较为合理。 2、编码制式的选择 编码制式应根据 NT 的大小选取,可分为如下三种: (1)密码的各位都可以重码:NT1=ai; (2)密码的非相邻位可以重码:NT2=a(a-1)i; (3)密码的任何一位都不能重码:NT3=a(a-1)??(a-i+1)。 其中 a 为基数,i 为位数,a 和 i 的选取应该满足 NT≥NTL , a=2,3,4,10, -9-

基于 FPGA 的电子密码锁设计

12,14,16。 现在以最常用的 a=10,i=6 为例,可以计算出 NT2=0159NT 1,NT 3=0.15N T1, 所以编码制式考虑是否重码对 NT 有很大影响。 另外,相同制式下不同的基底对编码总量 NT 会有影响,而且基底的选择也会影 响到硬件电路的设计。 本文设计的密码锁采用十进制编码,密码各位允许重码,为简化电路设计,密码 锁口令采用对串行脉冲计数的方式输入。 3、误码输入的保护措施 如前所述,电子密码锁的设计应考虑自身的安全保密性,由于编码和捕捉密码的 实验都是随机的,若要使 P=1 NT 趋近于 0,必须采取误码输入的保护措施。假定设 定的误码输入次数不超过三次,误码达到三次时系统应关闭主控电路,拒绝大于三次 的密码输入,并且系统进入报警状态。系统正常状态的恢复可采用万能密码输入或者

系统掉电恢复。

3.2 方案的提出

方案一:采用数字电路控制。虽然采用数字密码锁电路的好处是设计简单,但是 由于其是纯电路实际,在系统运行时,延时会比较严重。 方案二:通过单片机实现,现在一种新的方案就是采用一种是用以 AT89S51为核 心的单片机控制方案。虽然有灵活的设计和丰富的 IO 端口,但是单片机设计的缺点 是程序运行时容易出现跑飞现象。 通过以上比较显然单片机方案有较大的活动空间, 不但能实现所要求的功能而且 能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,但是由于所学知识 不能将其有效的应用,现有环境不能满足,而且单片机的密码锁有一定的不足之处, 在运行时程序有时会产生 PC 指针错误,还有基于现在所学知识的应用,所以基于以 上比较提出了第三种方案。 方案三:利用 FPGA 设计电子密码锁,其成本低,设计方便(有相应的开发板) , 现有资源充足, 实现比较容易, 更利于系统的维护改进和升级, 可靠性更高, 更安全。 通过以上比较描述,本设计采用基于 FPGA 的电子密码锁设计方案。

- 10 -

基于 FPGA 的电子密码锁设计

3.3 系统设计要求

设计一个具有较高安全性和较低成本的通用电子密码锁,具体功能要求如下: (1)数码输入:每按下一个数字键,就输入一个数值,并在显示器上的显示出 该数值,同时将先前输入的数据依序左移一个数字位置。 (2)数码清除:按下此键可清除前面所有的输入值,清除为“0000”。 (3)密码更改:按下此键时会将目前的数字设定成新的密码。 (4)激活电锁:按下此键可将密码锁上锁。 (5)解除电锁:按下此键会检查输入的密码是否正确,密码正确即开锁。

3.4 系统设计描述 系统设计描述

本系统为一个简洁型的电子密码锁,该系统以开发板为主要核心,采用 4*4 的键 盘,前 10 个键为数字键,8 个数码管显示密码输入,后面的按键实现电子密码锁的 各个功能,总体外观如图 3.1 所示。

电子密码锁外观图 图 3.1 电子密码锁外观图 上图为在实验开发板上实现,使用开发板有十六个按键,分别对应数字 0 到 9 和各个功能键,LED 显示为开发板上数码管显示。 - 11 -

基于 FPGA 的电子密码锁设计

3.5 设计思路及各功能模块描述 设计思路及各功能模块描述

电子密码锁可以由三个部分组成:数字密码输入电路、密码锁控制电路、密码锁 显示电路。作为密码锁的输入部分,可选择的方案有数字机械式键盘和触摸式数字键 盘等多种。考虑种种因素主要是成本和使用寿命因素,本设计采用通用的数字机械式 键盘。 数字电子密码锁的显示信息电路可采用 LED 数码管显示和液晶屏幕显示两种。 液晶显示具有高速显示、高可靠性、易于扩展和升级等优点,但是普通液晶显示屏存 在亮度低、对复杂环境的适应能力差等缺点,在低亮度的环境下还需要加入其它辅助 的照明设备,驱动电路设计相对复杂,因此本设计的显示电路使用通用的 LED 数码 管。 根据以上选定的输入设备和器件,并考虑到实现各项数字密码锁功能的具体要 求。本设计分为三个大的功能模块。图 3.2 为数字电子密码锁系统总体框图。

图 3.2

数字电子密码功能模块图

(1) 密码锁输入电路包括时序产生电路、键盘扫描电路、键盘弹跳消除电路、 - 12 -

基于 FPGA 的电子密码锁设计

键盘译码电路等几个小的功能电路。 模块的功能是:将用户通过键盘输入的数字密码,确认密码是否输入,产生电路 中使用的三种不同频率的工作脉冲波形,即系统时钟脉冲、弹跳消除取样信号和键盘 扫描信号;为了加强按键按下的准确性加了去抖模块。 作为电子密码锁的输入电路,数字密码输入电路可采用一个 4×4 的通用开发板上 的键盘作为本设计的输入设备。开发板键盘具有低成本、可靠性高、构成电路简单、 技术成熟和应用广泛等特点,因此将其应用到通用电子密码锁中还是比较适宜的。 (2) 密码锁控制电路包括按键数据的缓冲存储电路,密码的清除、变更、存储、 激活电锁电路 (寄存器清除信号发生电路) 密码核对 , (数值比较电路) 解锁电路 , (开 /关门锁电路)等几个小的功能电路。 模块功能:用于密码的更改,密码的清除,以及对密码锁的工作状态更改,对输 入密码次数的计数功能,还有就是更智能化,更符合人们的思维,按键的时候都是习 惯看输入数字的移位情况。 (3)密码显示电路主要将显示数据的 BCD 码转换成相对应的编码。如,若选用 七段数码管显示电路,主要将待显示数据的 BCD 码转换成数码器的七段显示驱动编 码。 从图

3.2 系统的总体走向图可知:通过时序产生键盘扫描信号,由键盘输入密码 或者功能按键,当然在这过程中要经过按键去抖,最后将将所输入的键盘值译码得到 具体的数字或者功能键;将输入值输入键盘数据存储器,在这里面可以将键盘值存储 或者清除, 再经过比较电路, 比较输入值与原来存储的是否一致, 如果一致则开启锁, 如果不一致则报警(在报警后可以通过输入万能密码或者断电复位等可以解决) ;在 经过存储电路时, 同时将所输入的值通过 LED 显示出来, 显示将通过 BCD 译码电路, 将所获取的值显示在 LED 数码管上。

3.6 系统流程

系统流程图如图 4.1: (不能光有一个图,必须配有对图的文字说明,把系统的流程 说清楚)

- 13 -

基于 FPGA 的电子密码锁设计

图 3.3 系统流程图

- 14 -

基于 FPGA 的电子密码锁设计

4 系统详细设计

4.1 输入模块

图 4.1 是电子密码锁的输入电路框图,由键盘扫描电路、弹跳消除电路、键盘译 码电路、按键数据缓存器,加上外接的一个 3×4 矩阵式键盘组成。

1 4 7 * 2 5 8 0 3 6 9 # 工工工工工工工工 键键键键 弹弹弹弹 电 路 键键键键 电 路 按键按按 按键按按 缓缓缓

键键键键工工

键键键键电路

图 4.1 电子密码锁的输入电路框图 矩阵式键盘是一种常见的输入装置,在日常的生活中,矩阵式键盘在计算机、电话、 手机、微波炉等各式电子产品上已经被广泛应用。图 2.3 是一个 3×4 矩阵式键盘的面 板配置图,其中数字 0~9 作为密码数字输入按键,*作为“上锁”功能按键,#作为“解 锁/清除”功能按键。

经经经电经经VCC

KX2 KX1 KX0 1 4 7 * 2 5 8 0 3 6 9 #

键键键键工工

KY3(00) KY2(01) KY1(10) KY0(11) 1110 1101 1011 0111

图 4.2 3×4 矩阵式键盘的面板配

表 4.1 KY3 11 111

行扫描信号、 行扫描信号、列按键输入信号与按键位置的关系 111 110 110 110 - 15 -

101

101

101

011

011

011

基于 FPGA 的电子密码锁设计

~KY 0 KX2 ~KX 0

10

1

1

1

1

1

1

1

1

1

01 1

101

110

011

101

110

011

101

110

011

101

110

按键 1 号

2

3

4

5

6

7

8

9

*

#

4.1.1时序产生电路

本时序产生电路中使用了三种不同频率的工作脉冲波形:系统时钟脉冲(它是系 统内部所有时钟脉冲的源头,且其频率最高) 、弹跳消除取样信号、键盘扫描信号。 当一个系统中需使用多种操作频率的脉冲波形时,最方便的方法之一就是利用一 计数器来产生各种需要的频率。也就是先建立一个 N 位计数器,N 的大小根据电路 的需求决定,N 的值越大,电路可以分频的次数就越多,这样就可以获得更大的频率 变化,以便提供多种不同频率的时钟信号。若输入时钟为 CLK,N 位计数器的输出 为 Q[N-1..0],则 Q(0)为 CLK 的 2 分频脉冲信号,Q(1)为 CLK 的 4 分频脉冲信号, Q(2)为 CLK 的 8 分频脉冲信号??Q(N-1)为 CLK 的 2N 分频脉冲信号; DOWNTO Q(5 4)取得的是一个脉冲波形序列,其值依 00-01-10-11-00-01 周期性变化,其变 化频率为 CLK 的 32 分频。 我们利用以上规律即可得到各种我们所需要频率的信号或 信号序列。 CLK_1K: IN KEY_IN: IN STD_LOGIC ; STD_LOGIC_VECTOR (2 DOWNTO 0); --按键输入

--系统原始时钟脉冲(1 kHz) CLK_SCAN: OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ; --( 仿真时用)键盘扫描序列 DATA_N: OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ; DATA_F: OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ; --功能输出标志 --控制电路工作时钟信号 --(仿真时用)去抖电路工作时钟信号 FLAG_N: OUT STD_LOGIC ; FLAG_F: OUT STD_LOGIC ; CLK_CTR: OUT STD_LOGIC; --数字输出 --功能输出

--数字输出标志

CLK_DEBOUNCE: OUT STD_LOGIC

- 16 -

基于 FPGA 的电子密码锁设计

4.1.2按键消抖电路

由于设计采用的矩阵式键盘是机械开关结构,因此在开关切换的瞬间会在接触点 出现信号来回弹跳的现象, 对于电子密码锁这种灵敏度较高的电路这种弹跳将很可能 会造成误动作输入,从而影响到密码锁操作的正确性。 从图 4.2 中可以观察出弹跳现象产生的原因,虽然每次只是按下按键一次然后放掉, 然而实际产生的按键信号却不知跳动一次, 经过取样信号的检查后, 将会造成误判断, 以为键盘按了两次。 如果调整抽样频率(如图 4.3 所示),可以发现弹跳现象获得了改善。

图 4.2 弹跳现象产生错误的抽样结果 如果调整抽样频率,弹跳现象就可以获得改善。 图 4.3 调整抽样频率后得到的抽样结果 因此必须加上弹跳消除电路,避免误操作信号的发生。特别要注意的是,弹跳消 除电路所使用的脉冲信号的频率必须比其他电路使用的脉冲信号的频率更高; 通常将 扫描电路的工作频率定在 100KHz 左右,而将弹跳消除电路的工作频率定在 200KHZ 左右,其工作频率通常是前者的 2 倍或者更高。 弹跳消除电路的实现原理如图 4.4 所示,先将键盘的输入信号 D_IN 做为电路的 输入信号,CLK 是电路的时钟脉冲信号,也就是取样信号,D_IN 经过两级 D 触发器 延时后再使用 RS 触发器处理。 VCC 13 AND2 DFF D_IN PRN D0 D Q DFF PRN D1 D Q NOT - 17 9 NOT CLRN CLRN D_OUT S R 7 Q

Q

6

-

AND2

基于 FPGA 的电子密码锁设计

图 4.4 弹跳消除电路的内部实现原理图 此处 RS 触发器的前端连接和非门的处理原则是: (1) 因为一般人的按键速度至多是 10 次/秒, 亦即一次按键时间是 100 ms, 所以按 下的时间可估算为 50 ms。以取样信号 CLK 的周期为 8 ms 计,则可以取样到 6 次。 (2) 对于不稳定的噪声,在 4 ms 以下则至多抽样一次。 (3) 在触发器之前,接上 AND-NOT 之后,SR 的组态如表 1.2 所示。 表 4.3 RS 触发器真值表 S 0 1 0 消除抖动模块程序如下: --DEBOUNCING.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; LIBRARY ALTERA; USE ALTERA.MAXPLUS2.ALL; ENTITY DEBOUNCING IS PORT(D_IN, CLK: IN STD_LOGIC; DD1, DD0, QQ1, QQ0 : OUT STD_LOGIC; D_OUT, D_OUT1: OUT STD_LOGIC ); END ENTITY DEBOUNCING ; ARCHITECTURE ART OF DEBOUNCING IS COMPONENT DCFQ IS PORT(CLK, CLRN, PRN, D: IN STD_LOGIC; Q: OUT STD_LOGIC); END COMPONENT DCFQ; SIGNAL VCC, INV_D : STD_LOGIC ; SIGNAL Q0, Q1 : STD_LOGIC ; SIGNAL D1, D0 : STD_LOGIC ; BEGIN VCC <= '1' ; - 18 -

R 0 0 1

D-OUT 不变 1 0

基于 FPGA 的电子密码锁设计

INV_D <= NOT D_IN ; U1: DCFQ PORT MAP (CLK => CLK, CLRN => INV_D, PRN => VCC,

D =>VCC , Q => Q0); U2: DCFQ PORT MAP (CLK => CLK, CLRN => Q0, PRN => VCC, D =>VCC , Q => Q1); PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK='1' THEN D0 <= NOT Q1; D1 <= D0; END IF ; END PROCESS ; DD0 <= D0; DD1 <= D1; QQ1 <= Q1; QQ0 <= Q0; D_OUT <= NOT (D1 AND NOT D0); D_OUT1 <= NOT Q1 ; END ARCHITECTURE ART; --DCFQ.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DCFQ IS PORT(CLK, CLRN, PRN, D: IN STD_LOGIC; Q: OUT STD_LOGIC); END ENTITY DCFQ ; ARCHITECTURE ART OF DCFQ IS BEGIN PROCESS (CLK, CLRN, PRN) BEGIN IF CLRN='0' AND PRN='1' THEN Q<='0'; ELSIF CLRN='1' AND PRN='0' THEN Q<='1'; ELSIF CLK'EVENT AND CLK='1' THEN Q <=D; END IF ; END PROCESS ;

- 19 -

基于 FPGA 的电子密码锁设计

END ARCHITECTURE ART; 这段程序的作用就是通过对信号的分频处理, 从而将按键产生的不规则信号转换 为便于识别的按键信号,达到消除抖动的目的。

4.1.3键盘扫描电路

扫描电路的作用是用来提供键盘扫描信号(表 4.1 中的 KY3~KY0)的,扫描信号 变化的顺序依次为 1110-1101-1011-0111-1110??依序的周而复始。 扫描时依序 当扫描信号为 1101 分别扫描四列按键, 当扫描信号为 1110 时扫描 KY3 这一排按键; 室,扫描 KY2 这一排按键;当扫描信号为 1011 时,扫描 KY1 这一排按键;当扫描 信号为 0111 时, 扫描 KY0 这一排按键。 每扫描一排按键就检查一次是否有键被按下, 如果这排没有按键被按下就忽略,反之,如果出现被按下的键则立刻进行按键编码的 动作,且将编码的结果储存于寄存器中。 --扫描信号发生器 COUNTER : BLOCK IS SIGNAL Q: STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL SEL: STD_LOGIC_VECTOR (3 DOWNTO 0); --1110-1101-1011-0111 BEGIN PROCESS (CLK_1K) IS BEGIN IF CLK_1K'EVENT AND CLK_1K ='1' THEN Q <= Q+1; END IF; C_DEBOUNCE <= Q(2) ; --去抖时钟信号, 大约125 Hz C_KEYBOARD <= Q(2 DOWNTO 1) ; -- 产生键扫信号***“00-01-10-11”, 大约16 Hz --C_DEBOUNCE <= Q(1) ; CLK <= Q(0) ; END PROCESS; CLK_DEBOUNCE<=C_DEBOUNCE; SEL <= "1110" WHEN C_KEYBOARD=0 ELSE "1101" WHEN C_KEYBOARD=1 ELSE "1011" WHEN C_KEYBOARD=2 ELSE

- 20 -

--仿真时用 --仿真时用

--C_KEYBOARD <= Q(5 DOWNTO 4) ;

基于 FPGA 的电子密码锁设计

"0111" WHEN C_KEYBOARD=3 ELSE "1111"; CLK_SCAN <= SEL ; END BLOCK COUNTER ;

4.1.4键盘译码电路 键盘译码电路

在密码输入电路中,按键又分为数字按键和文字按键,每一个按键可能负责不同 的功能,例如清除键、上锁键和解锁键等。数字按键主要是用来输入数字的,但是键 盘所产生的输出是无法直接拿来用作密码锁控制电路的输入的,另外,不同的按键具 有不同的功能,所以必须由键盘译码电路来规划每个按键的输出形式,以便执行相应 的动作。 键盘译码电路主要将所对应的键盘值设定成所要用的功能键,其主要程序如下: --键盘译码 KEY_DECODER : BLOCK SIGNAL Z : STD_LOGIC_VECTOR(4 DOWNTO 0) ; BEGIN PROCESS(CLK) BEGIN Z <= C_KEYBOARD & C ; IF CLK'EVENT AND CLK = '1' THEN CASE Z IS WHEN "11101" => N <= "0000" ; WHEN "00011" => N <= "0001" ; WHEN "00101" => N <= "0010" ; WHEN "00110" => N <= "0011" ; WHEN "01011" => N <= "0100" ; WHEN "01101" => N <= "0101" ; WHEN "01110" => N <= "0110" ; WHEN "10011" => N <= "0111" ; WHEN "10101" => N <= "1000" ; WHEN "10110" => N <= "1001" ; WHEN OTHERS END CASE ; END IF ; => N <= "1111" ; --0 --1 --2 --3 --4 --5 --6 --7 --8 --9 --按键位置

- 21 -

基于 FPGA 的电子密码锁设计

键盘输入模块的实现

mmsr clk_1k key _in[2..0] data_n[3..0] data_f [3..0] f lag_n f lag_f ksrclk kscan[3..0] kpos[1..0] inst1

图 4.7 键盘输入电路符号图 模块外部信号端口: clk_1k:时钟脉冲输入端口,为系统提供工作的时钟脉冲。 key_in:按键输入端口,为按键输入提供输入信号。 kscan:键盘扫描序列(仿真时用) ,为按键扫描提供信号。 data_n:数字输出端口,为数字的输出提供信号。 data_f:功能输出端口,为功能的输出提供信号。 flag_n: :数字输出标志,用于识别数字是否输出。 flag_f:功能输出标志,用于识别功能是否输出。 ksrclk:键盘输入采样时钟。 kpos:按键位置,用于识别按键所在位置提供信号。 模块内部信号: scan:键扫信号“00-01-10-11”寄存器 k_ksrclk:去抖时钟信号,为去抖提供信号。 c:键盘输入去抖后的寄存器,用于键盘去抖后存储键盘输入的寄存器。 n,f:数字、功能按键译码值的寄存器,用于存储数字、功能按键译码后的值。 fn,ff:数字、功能按键标志值数字、功能按键。 q:模块内部信号,用于识别各个信号所用。 k_pos:按键位置信号,用于提供按键位置所在信号。

- 22 -

基于 FPGA 的电子密码锁设计

4.2 电子密码锁控制模块

4.2.1控制模块的描述

控制锁的控制模块是整个电路的控制中心,主要完成对数字按键输入和功能按键 输入的相应控制。 1、数字按键输入的响应控制 (1)如果按下数字键,第一个数字会从显示其的最右端开始显示,此后每新按 一个数字时,显示器上的数字必须左移一个数码管,以便将新的数字显示出来。 (2)假如要更改输入的数字,可以按倒退按键来清除前一个输入的数字,或者 按清除键清除所有出入的数字,再重新输入四位数。 (3)由于这里设计的是一个四位的电子密码锁,所以当输入的数字键超过预设 位数时,电路不予理会,而且不再显示以后的数字。 2、功能按键输入的响应控制 (1)清除键:清除所有的输入数字,即作归零动作。 (2)

激活电锁键:按下此键时可将密码锁的门上锁(上锁前必须预先设定一个 四位的数字密码) 。

(3)解除电锁键:按下此键会检查输入的密码是否正确,若密码正确无误则开 门。 使用电子密码锁的时候,只会用到三种工作模式,其中输入文字模式用的是数字 按键,只有上锁和开锁两个模式必须占用功能按键。但是在实际操作中,难免会有按 错键的情况发生,使得“清除输入”功能是用的机率很高,所以在设计中共设置了两个 功能按键,其中“接触电锁”和“清除电锁”共用一个功能按键,另一个功能按键是“激 活电锁”。

--控制电路 --CTRL.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CTRL IS PORT (DATA_N: IN STD_LOGIC_VECTOR(3 DOWNTO 0);

- 23 -

基于 FPGA 的电子密码锁设计

DATA_F: IN STD_LOGIC_VECTOR(3 DOWNTO 0); FLAG_N: IN STD_LOGIC; FLAG_F: IN STD_LOGIC; CLK: IN STD_LOGIC; ENLOCK: OUT STD_LOGIC; --1: LOCK, 0: UNLOCK DATA_BCD: OUT STD_LOGIC_VECTOR (15 DOWNTO 0)); END ENTITY CTRL ; ARCHITECTURE ART OF CTRL IS SIGNAL ACC, REG: STD_LOGIC_VECTOR (15 DOWNTO 0); --ACC 用于暂存键盘输入的信息,REG 用于存储输入的密码 SIGNAL NC: STD_LOGIC_VECTOR (2 DOWNTO 0); SIGNAL RR2, CLR, BB, QA, QB: STD_LOGIC; SIGNAL R1, R0: STD_LOGIC; BEGIN --寄存器清零信号的产生进程 PROCESS(CLK) BEGIN IF CLK'EVENT AND CLK='1' THEN R1<=R0; R0<=FLAG_F; END IF; RR2<=R1 AND NOT R0; CLR<=RR2; END PROCESS; --按键输入数据的存储、清零进程 KEYIN_PROCESS : BLOCK IS SIGNAL RST, D0, D1: STD_LOGIC ; BEGIN RST <= RR2; PROCESS(FLAG_N, RST) IS BEGIN IF RST = '1' THEN ACC <= "0000000000000000" ; --CLEAR INPUT NC <= "000" ; ELSE IF FLAG_N'EVENT AND FLAG_N = '1' THEN

- 24 -

基于 FPGA 的电子密码锁设计

IF NC < 4 THEN ACC <= ACC(11 DOWNTO 0) & DATA_N ; NC <= NC + 1 ; END IF; END IF ; END IF ; END PROCESS ; END BLOCK KEYIN_PROCESS ; --上锁/开锁控制进程 LOCK_PROCESS : BLOCK IS BEGIN PROCESS(CLK, DATA_F) IS BEGIN IF (CLK'EVENT AND CLK = '1') THEN IF NC = 4 THEN IF DATA_F(2) = '1' THEN --上锁控制信号有效 REG <= ACC ; --密码存储 QA <= '1' ; QB <= '0'; ELSIF DATA_F(0) = '1' THEN --开锁控制信号有效 IF REG = ACC THEN QA<= '0'; QB <= '1' ; END IF ; ELSIF ACC = "1000100010001000" THEN --设置“8888”为万用密码 QA <= '0' ; QB<= '1'; END IF ; END IF; END IF ; END PROCESS ; END BLOCK LOCK_PROCESS ; --输出上锁/开锁控制信号 ENLOCK <= QA AND NOT QB ; --输出显示信息 DATA_BCD<= ACC ; END ARCHITECTURE ART;

- 25 -

--密码核对

基于 FPGA 的电子密码锁设计

对密码控制电路模块进行时序仿真如下图: FLAG_N 为数字输出标志,高电平时 确认输出数字,FLAG_F 为功能输出标志,密码控制模块根据 4 位按键输入在判断其 为功能输入还是数字输入后输出 16 位 BCD 码。

图 5.3 密码锁控制电路仿真结果图

- 26 -

基于 FPGA 的电子密码锁设计

接通电源

初始状态 NO

NO NO

KSRCLK

YES ,CQD’EVENT AND CQD=0

YES

YES

FLAG_N

FLAG_F

数字键输入 DATA_N

NO

功能键输入 DATA_F

报警状态 MIMAIN 万能密码 YES 错误状态 ACC不等于 REG ACC=REG DATA_F=”0100 NO ”SETIN=0 OLD=0

NO

ENLOCK

DATA_F=”00 01”

SETIN

ACC="1001100 110011001"

YES

YES 设置、清楚 密码

解锁状态

图 4.9 控制模块的 ASM 图

4.2.2控制模块的实现 控制模块的实现

生成符号图 4.10

ctrl data_n[3..0] data_f [3..0] f lag_n f lag_f ksrclk inst mimain setin old enlock data_bcd[15..0]

- 27 -

基于 FPGA 的电子密码锁设计

图 4.10 控制模块电路符号图 模块外部信号端口: data_n:数字输入端口,用于提供数字输入信号。 data_f:功能输入端口,用于提供功能输入信号。 flag_n:数字输入标志,用于识别数字是否输入。 flag_f:功能输入标志,用于识别功能是否输入。 ksrclk:键盘输入采样时钟,用于提供键盘输入的采样时钟。 enlock:密码锁控制信号输出端口,提供密码锁控制信号输出。 data_bcd:按键显示输出端口,用于提供按键显示输出信号。 mimain:密码输入标志,用于提供密码输入信号。 setin:密码设定标志,提供密码设置信号。 old:旧密码设置标志,提供旧密码设置标志。 模块内部信号: acc:暂存键盘输入信息 reg:密码存储位置

4.3 电子密码锁显示模块

4.3.1数码管显示原理

数字显示主要由LED数码管实现。LED可单独使用,也可组装成分段式或点阵式 LED显示器件。分段式显示器由7条线段围成8型,每一段包含一个发光二极管,外加 正向电压时二极管导通,发出清晰的光,有红、黄、绿等色。可以按照相关的规律控 制各个发光段的亮、灭,这样就能达到显示各种字形或者符号的目的。图4.11介绍了 左边右边是共阴式和共阳式LED数码管的原理图,以及共阴式的连接法和驱动原理。

- 28 -

基于 FPGA 的电子密码锁设计

图 4.11 七段数码管电路图 ,输出是数码管 BCD 七段译码器的输入时一位 BCD 码(以

D、C、B、A 表示) 各段的驱动信号(以 Fa~Fg 表示) ,也称 4——7 译码器。若用它驱动共阴极 LED 数 码管,则输出应为高有效,即输出高 1 时,相应显示段发光。例如,当输入 8421 码 DCBA=0100 时,应显示 4,即要求同时点亮 b、c、f、g 段,熄灭 a、d、e 段,故译 码器的输出应为 Fa~Fg=0110011, 这也是一组代码, 常称为段码。 同理, 根据组成 0~9 这 10 个字形的要求可以列出 8421BCD 七段译码器的真值表,见表 4.12。

- 29 -

基于 FPGA 的电子密码锁设计

表 4.2 七段译码器真值表

主要程序设计如下: LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DECL7S IS PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0); LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ; END ; ARCHITECTURE one OF DECL7S IS BEGIN PROCESS( A ) BEGIN CASE A IS WHEN "0000" => LED7S <="0111111" ; WHEN "0001" => LED7S <="0000110" ; WHEN "0010" => LED7S <="1011011" ;

- 30 -

基于 FPGA 的电子密码锁设计

WHEN "0011" => LED7S <="1001111" ; WHEN "0100" => LED7S <="1100110" ; WHEN "0101" => LED7S <="1101101" ; WHEN "0110" => LED7S <="1111101" ; WHEN "0111" => LED7S <="0000111" ; WHEN "1000" => LED7S <="1111111" ; WHEN "1001" => LED7S <="1101111" ; WHEN "1010" => LED7S <="1110111" ; WHEN "1011" => LED7S <="1111100" ; WHEN "1100" => LED7S <="0111001" ; WHEN "1101" => LED7S <="1011110" ; WHEN "1110" => LED7S <="1111001" ; WHEN "1111" => LED7S <="1110001" ; WHEN OTHERS => NULL ; END CASE ; END PROCESS ; END ;

4.3.2译码显示的实现 译码显示的实现

生成电路符号图 4.13:

ym data_bcd[3..0] dout7[6..0]

inst

图 4.13 译码显示电路符号图 模块外部信号端口: A:密码信号输入端口,提供密码信号输入。 LED7S:密码锁状态信号显示灯,提供状态显示信号。

- 31 -

基于 FPGA 的电子密码锁设计

5 系统仿真

5.1 系统的有关编译与仿真

在计算机辅助电子系统设计出现以前,人们一直采用传统的硬件电路设计方法来 设计系统的硬件。这种硬件设计方法的主要特点是: (1)采用自底向上的设计方法; (2)采用通用的逻辑器件; (3)在系统硬件设计的后期进行仿真和调试; (4)主要 设计文件是电原理图。传统的硬件电路设计方法已经沿用几十年,是目前广大电子工 程师所熟悉和掌握的一种方法。 随着电子技术和计算机的飞速发展,一种崭新的、采用硬件描述语言的硬件电路 设计方法已经兴起。EDA(电子设计自动化)技术是 90 年代电子设计的最新技术,能 使电子系统设计人员在计算机上完成电路的设计、分析、仿真、指标测试,直到印刷 电路板的自动化设计,它的出现给硬件电路设计带来一次重大的变革。利用 EDA 技 术进行电子系统的设计,具有以下几个特点: (1)用软件的方式设计硬件; (2)用软 件的方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的; (3)设计过 程中可用有关软件进行各种仿真; (4)系统可现场编程,在线升级; (5)整个系统可 集成在一个芯片上,体积小、

功耗低、可靠性高。因此,EDA 技术是现代电子设计 的发展趋势。 本节主要是阐述设计在 Quartus II7.0 软件中实现编译与仿真。 在 Quartus II7.0 在输入源程序后,我们需要建立一个工程,在工程中我们要把设 计文件加入工程中;然后选择仿真器和综合器类型值得注意的是如果选择默认的 “NONE”,表示选择 Quartus II 软件中自带的仿真器和综合器,结合自己的设计,在此 我选择默认项“NONE”;最后选择目标芯片。在“Family”栏选择芯片系列,在此我选 择“Cyclone II”系列再选择此系列的具体芯片 EP2C35F484C6。 工程建立以后,可以进行源程序的编译。选择“Processing”Start Compilation,启动 全程编译。

5.2 去抖模块的仿真

图 5.1 为键盘输入防抖电路的仿真结果图,由图上可以看出,原来的弹跳现象经 过防抖电路处理后已经清除了,

- 32 -

基于 FPGA 的电子密码锁设计

图 5.1 键盘输入防抖电路的仿真结果图 由图中可以看出,键盘扫描出的信号弹跳现象可以得到改善。

5.3 密码锁输入电路的仿真

电路原理图 5. 2:

mmsr clk_1k key _in[2..0]

INPUT VCC INPUT VCC

clk_1k key _in[2..0]

data_n[3..0] data_f [3..0] f lag_n f lag_f ksrclk kscan[3..0] kpos[1..0] OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT

data_n[3..0] data_f [3..0] f lag_n f lag_f ksrclk kscan[3..0] kpos[1..0] inst1

图 5. 2 密码输入电路原理图

图 5.3 为密码锁输入电路的仿真结果图, 图中的输出信号 kscan, 是为便于仿真时 观察中间结果而增加的观测点的输出。

图 5.3 密码锁输入电路仿真结果图 输入信号 KEY_IN[2..0]依序依 011-101-110-011-101 的顺序周期性循环,对 键盘进行扫描。如有按键发生,键盘扫描输出信号 CLK_SCAN 做出反应。

- 33 -

基于 FPGA 的电子密码锁设计

5.4 密码锁控制电路的仿真

电路原理图 5.4:

ctrl data_n[3..0] data_f [3..0] f lag_n f lag_f ksrclk

INPUT VCC INPUT VCC INPUT VCC INPUT VCC INPUT VCC OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT

data_n[3..0] data_f [3..0] f lag_n f lag_f ksrclk inst

mimain setin old enlock data_bcd[15..0]

mimain setin old enlock data_bcd[15..0]

图 5.4 密码锁控制电路原理图 图 5.5 是密码锁控制电路仿真结果图。

图 5.5 密码锁控制电路仿真结果图

- 34 -

基于 FPGA 的电子密码锁设计

5.5 系统整体仿真 系统整体仿真

设置新密码部分(初始时有出厂时设置的密码为“0000”,用户设置的新密码为 “”0622) ,具体仿真如图 5.6:

图 5.6 密码锁系统整体电路仿真结果图 上锁部分(按下“*11#” 时表示上锁,设置完毕后上锁键 ENLOCK 有效) ,具体 仿真如图 5.7:

密码锁系统整体电路仿真结果图(二 图 5.7 密码锁系统整体电路仿真结果图 二) - 35 -

基于 FPGA 的电子密码锁设计

5.6 数码管译码器仿真 数码管译码器仿真

电路原理图 5.8:

ym data_bcd[3..0]

INPUT VCC

data_bcd[3..0]

dout7[6..0]

OUTPUT

dout7[6..0]

inst

图 5.8 密码锁显示电路原理图 A 为 4 位输入,为 BCD 码格式,通过译码电路,输出 7 位译码,在 LED 数码管 上显示相应的数字信息。仿真图如 5.9:

图 5.9 密码锁显示电路仿真结果图

- 36 -

基于 FPGA 的电子密码锁设计

6 .结束语

本系统是基于 FPGA 来完成的,用现有资源 PC 机、便携式 EDA/SOPC/DSP 实 验系统, Quartus II 7.0 开发系统来完成。本系统经过详细设计,代码编译仿真等,实 现了一个简单的电子密码锁。设计的重点在于控制模块的设计,因为此模块是整个系 统的核心,因此在这个模块中花的时间也是最多的,在整体仿真中,能从仿真图上看 到功能的具体实现,但是仿真图不能完全仿真显示完所有的仿真结果,这个问题一直 是比较困惑的, 考虑许久, 判定是时钟信号给的不够多造成后面无法完全显示完成吧, 可能还有一些问题没考虑到吧,系统也存在一定的不足,由于时间上的限制和环境的 限制,比如在显示模块做的比较简单,还有报警模块等,都没真正的考虑完全,这些 都有待以后提高。

- 37 -

基于 FPGA 的电子密码锁设计

致 谢

在论文完成之际,我要特别感谢我的指导老师 XX 老师的热情关怀和悉心指导。 在我撰写论文的过程中,XX 老师倾注了大量的心血和汗水,无论是在论文的选题、 构思和资料的收集方面,还是在论文的研究方法以及成文定稿方面,我都得到了 XX 老师悉心细致的教诲和无私的帮助,特别是他广博的学识、深厚的学术素养、严谨的 治学精神和一丝不苟的工作作风使我终生受益,在此表示真诚地感谢和深深的谢意。 在论文的写作过程中,也得到了许多同学的宝贵建议,同时还到许多在工作过 程中许多同事的支持和帮助,在此一并致以诚挚的谢意。 感谢所有关心、支持、帮助过我的良师益友。 最后,向在百忙中抽出时间对本文进行评审并提出宝贵意见的各位专家表示衷心 地感谢! 再次感谢所有关心和支持我的老师,朋友和我的家人,感谢他们对我的关心和支 持。

- 38 -

基于 FPGA 的电子密码锁设计

参考文献

[1] 李连华.基于 FPGA 的电子密码锁设计.中国科技信息,2006,(01):64 [2] 许琦.基于 FPGA 的电子密码锁的设计.科技信息,2006,(10):240-241 [3] 王卫兵,刘克刚,朱秋萍.用 FPGA 的电子密码锁.电子技术,2005,(01):26-28 [4] 赵益丹,徐晓林,周振峰.电子密码锁的系统原理、设计程序及流程图.嘉兴学院 学报,2003,15(S1):103-105 [5] 陆重阳,卢东华.FPGA 技术及其发展趋势.微电子技术,2003,(01):5-7 [6] 王晓勇.FPGA 的基本原理及运用.舰船电子工程,2005,(02):82-85 [7] 程耀林.FPGA 的系统设计方法解析.现代电子技术,2005,(19):90-93 [8] K. Benkrid, A. Benkrid and S. Belkacemi .Efficient FPGA hardware development: A multi-language approach .Journal of Systems Architectur -e, 2007(04):184-209 [9] Altera, Novas Team for FPGA Visibility Enhancement .Electronic News (North America).2006,(11):12 [10] 张忠.自顶向下的 FPGA 设计.电子产品世界,1998,(11):33-34,72 [11] 路 而 红 . 专 用 集 成 电 路 设 计 与 电 子 设 计 自 动 化 . 北 京 : 清 华 大 学 出 版 社,2004:162-181,239-280,329-332 [12] 罗杰,康华光.两种硬件描述语言 VHDL/Verilog 的发展及其应用.电气电子教 学学报, 2002,24(04):1-5 [13] 曹建国, 王威, 王丹. 一种基于 VHDL 的电子密码锁的设计与实现.沈阳大学 学报 , 2006,18(04):77-79 [14] 谭会生, 瞿遂春.EDA 技术综合应用实例与分析.西安:西安电子科技大学出版 社,2004.1-42,64-85 [15] 梁丽.电子密码锁的计算机仿真设计.计算机仿真,2005,22(02):218-220 [16] Wayne Wolf. 基于 FPGA 的系统设计: 英文版. 北京: 机械工业出版社, 2005

- 39 -

1

更多相关推荐:
电子密码锁设计报告

设计说明书课程名称单片机技术设计题目基于51单片机的电子密码锁院部电子信息与电气工程学院学生姓名马亚林学号专业班级12通信工程专升本指导教师丁莹亮20xx年05月17日课程课程设计任务书设计以单片机AT89C5...

密码锁课程设计报告

1引言11电子密码锁简介电子密码锁是一种通过密码输入来控制电路或是芯片工作从而控制机械开关的闭合完成开锁闭锁任务的电子产品它的种类很多有简易的电路产品也有基于芯片的性价比较高的产品现在应用较广的电子密码锁是以芯...

电子密码锁设计报告

电子技术课程设计题目名称:电子密码锁重庆大学电气工程学院20XX年6月电子密码锁摘要:本文的电子密码锁是利用数字电子技术中基于JK触发器的锁存电路实现主电路的密码的修改和检测功能,再通过555定时器和一些基本的…

电子密码锁课程设计报告最终版 2

课程设计综合实验报告20xx20xx年度第1学期名称题目院系班级学号学生姓名指导教师设计周数成绩日期20xx年1月13日一目的与要求1目的11课程设计是教学中必不可少的重要环节通过课程设计巩固深化和扩展学生的理...

电子密码锁课程设计报告

电子密码锁一引言随着人们生活水平的提高人们对自己的生活有了越来越高的要求贵重物品也越来越多而传统的机械安全锁由于其构造的简单被撬被盗事件在我们身边经常发生使我们的财产以及人身安全存在很大的安全隐患这致使我们寻求...

基于单片机的电子密码锁设计_单片机课程设计报告

单片机密码锁课程设计报告湖南师大本科生课程设计目录1引言12设计要求23硬件电路设计331设计方案的选择332主要元器件简介433硬件系统结构84程序设计135总结15参考文献16附件一电路原理图及作品实物图1...

电子密码锁 总结报告 李超 电气09-3班

基于单片机的电子密码锁设计TheDesignofElectronicPassword-lockwithSCM第一章课题任务基于51单片机的简易电子密码锁一、实现功能:1、设置6位密码,密码通过键盘输入,若密码正…

电子密码锁毕业设计开题报告

湖北理工学院毕业设计论文开题报告湖北理工学院毕业设计论文开题报告题目基于单片机的超市储物柜密码锁的设计学院专业名称电子信息工程学号20xx40210122学生姓名叶文指导教师章磊20xx年1月8日湖北理工学院毕...

电子密码锁设计 开题报告 - 副本

大学信息工程学院本科毕业论文设计开题报告1选题意义单片机亦称单片机微电脑或单片微型计算机它是把中央处理器CPU随机存取存储器RAM只读存储器ROM输入输出端口IO等主要计算机功能部件都集成在一块集成电路芯片上的...

基于单片机的多功能电子密码锁设计(毕业论文).doc

沈阳理工大学学士学位论文1引言11电子密码锁简介电子密码锁是一种通过密码输入来控制电路或是芯片工作从而控制机械开关的闭合完成开锁闭锁任务的电子产品它的种类很多有简易的电路产品也有基于芯片的性价比较高的产品现在应...

基于单片机的电子密码锁设计开题报告

基于单片机的电子密码锁设计开题报告一毕业论文代写课题背景和意义在日常的生活和工作中住宅与部门的安全防范单位的文件档案财务报表以及一些个人资料的保存多以加锁的办法来解决若使用传统的机械式钥匙开锁人们常需携带多把钥...

优秀单片机课程设计《电子密码锁报告》

基于单片机控制的电子密码锁摘要本系统由单片机系统矩阵键盘LED显示和报警系统组成系统能完成开锁超时报警超次锁定管理员解密修改用户密码基本的密码锁的功能除上述基本的密码锁功能外还具有调电存储声光提示等功能依据实际...

电子密码锁设计报告(26篇)