1、0安徽大学江淮学院本科毕业论文(设计)(内封面)题 目: 基于 VHDL 的数字式电子密码锁学生姓名: 刘玲玲 学号:J20134025 院(系): 理工部 专业:电子信息工程 入学时间: 二 O 一三 年 九 月导师姓名: 程鸿 职称/学位:副教授/博士 1基于 VHDL 的数字式电子密码锁设计摘要本次设计运用的方法是数字系统设计中的自顶向下,是将电子密码锁的总体设计细化成许多个小模块,其中主要的模块包含了三个,分别为电子密码锁的输入模块、控制模块以及显示模块。此外多加了一个报警模块作为辅助功能,提示输入了错误密码。各个模块是由对应的 VHDL 程序来实现,并通过 MAX+PLUS II 仿
2、真验证其正确与否。数字密码锁可以检查4 位十进制密码,具备显示密码输入,密码删除,更改,错误报警等功能。同时这种密码锁的体积小,操作方便,实用性强。关键字:电子密码锁;模块;硬件描述语言2Design of the Digital Electronic Password Lock Based on VHDLAbstractThis design method is the top-down design of digital system,divided the password lock into multiple small module, it includes three main m
3、odule, respectively,the password input module, control module and display module.In addition to ,add an alarm module as the auxiliary function to tell people that they enter the wrong password. The password module consists of the homologous VHDL program to compile it.In cord to tell if it is true ,w
4、e can use MAX+PLUS II. The digital password lock can check 4 decimal number password, it be equipped with password input, remove the password, change the wrong password and alarming functions. Whats more,it hassmall size ,easy to operation,high practicability.Keywords:password clock; modular;hardwar
5、e description language3目 录第一章 绪论 11.1 研究意义 11.2 研究现状及发展趋势 11.3 本文的主要内容和组织结构 2第二章基于 VHDL 语言及开发环境 22.1 VHDL 简介 22.2 开发环境 MAX+PLUS3第三章 基于 VHDL 的数字式电子密码锁实现 43.1 系统总结构图设计 43.2 各模块 VHDL 语言描述及讲解 53.3 系统仿真 13第四章 结束语 15主要参考文献 16致 谢 170基于 VHDL 的数字式电子密码锁设计第一章 绪 论1.1 研究意义随着当今世界的发展,人们的生活水平越来越高,家庭安全问题受到了足够的重视。比较传
6、统的机械锁虽然价格便宜,安全性能却很低,门锁被撬事件经常出现。而如今通过电路控制锁体设计而成的新式电子密码锁,通过触摸键盘按键输入密码来开锁,操作简单。这种输入采用键盘触摸式的电子密码锁,具有保密性高,使用的灵活性好,安全系数高,无活动零件,不容易受到磨损,使用的时间长等特点,因此也被很多用户所亲昵。为满足人们方便、安全等各方面的需求,各类有特色的电子密码锁设计成功并被人们使用。但这类产品只能适用于保密并且个人使用的房间、橱柜、箱子等,因为不能实现远程控制,只针对声音或指纹、特定有效卡有效。而卡片式 IC 卡也有容易丢失等特点,加之其成本高,在一定程度上制约了此类产品的普及和推广。数字电子密码
7、锁发挥防盗员的作用正在被认真对待。现今大多基于数字电路设计的密码锁,设计思路简单且易于实现,可是不便的是电路中使用的过多元器件的组合影响了这类密码锁的流行和普及。而卡式 IC 卡也容易丢失等特点,加之其成本高,在一定程度上制约了此类产品的普及和推广。而今 VHDL 语言仍被很多公司采用,它具有广泛的适用范围、描述能力强、抽象能力强等特色,因此遇到元器件太多的设计时,便可选择 VHDL 来建立模型。使用 VHDL 可以高效易于设计,以满足数字电子密码锁的各种要求,并且易于使用,根据人们的需求可以更改密码锁定的位数,提高锁的可靠性和安全性,并可制成 ASIC 芯片,这是高度自动化的设计过程。并且在
8、设计了程序之后,可以将 MAX+PLUSII 软件仿真模拟在正确的原理下。1.2 研究现状及发展趋势20 世纪 80 年代以来,随着电子锁专用电子线路的出现,电子锁的实用性得到提高,体积变小。对于安全性能要求较高的地方可以使用,但是成本较高,同时还需要有电源供电才能工作,使用的局限性使之难以普及,所以对它的研究改进发展的相对缓慢。2006 年曹建国,王威,把 ISE 作为开发工具,讨论了基于 VHDL 语言设计数字电子密码锁的原理和方法,Modelsim SE 作为仿真工具1。2008 年陈华丽,何颜平介绍运用 VHDL 技术设计数字密码锁的过程,以及在 Quartus II 环境下进行仿真的
9、方法 2;2010 年韩团军使用开发工具 FPGA,运用了 MAXPLU II 仿真软件完成了密码锁的设计 3;2013 年徐大诏把 VHDL 语1言作为主要表达方式,最后实现了一种基于有限状态机完成主控功能的电子密码锁 4。当前,在西方发达国家,电子密码锁设计的水平较高,品种也较丰富,智能门禁系统中已广泛使用数字式电子密码锁,经过许多更为可靠、更为安全的技术帮助了人们防止盗贼。不过,我国国内电子锁锁整体设计水平仍处于国际 70 年左右,相对来说还比较落后,成品设计成本依然较高,市场更多的还是键钮电子密码锁。卡片类和按键类的电子锁借鉴了西方国家的先进技术,市场上这类电子锁在国内被几个工厂生产供
10、应着。虽然国内自发研制的密码锁使用率还不是很高,很普及,市场结构还未形成,但很多企业也采取积极的措施和态度引进世界上先进的技术,发展前景也是十分可观的。1.3 本文的主要内容和组织结构基于 VHDL 的数字式电子密码锁,使用自顶向下的方法和 VHDL 语言实现。具体结构如下:第一章绪论介绍了研究意义及研究现状和发展趋势;第二章简单介绍了 VHDL 语言及 MAX+PLUS开发软件;第三章分模块讲解及各模块实现的VHDL 语言描述,以及各模块编译仿真图;第四章对本论文的设计总结与展望。第 2 章 VHDL 语言及开发环境2.1 VHDL 简介VHDL 诞生于 1982 年,它的英文全称即 Ver
11、y-High-Speed Integrated Circuit Hardware Description Languag。到 1987 年底,美国国防部和 TEEE认定了 VHDL 作为标准硬件描述语言。由于 IEEE 发布了 IEEE-1076(简称 87 版)的 VHDL 标准版,已经有 EDA 公司宣布了自己的设计工具和 VHDL 接口,推出了属于自己的 VHDL 设计环境。自那时以来,大部分电子设计领域就开始采用VHDL,原来的非标准硬件描述语言已逐渐被取代。 1993 年,IEEE 又提高了抽象层次以及加强了硬件的描述能力,进而增添了 VHDL 的内容,并对其作了修改。从而公布了 V
12、HDL 的新版本,即 IEEE 标准的 1076-1993 版本,(简称 93 版)。如今,IEEE 推出的 VHDL 语言和 Verilog 在电子工程的领域已经是实际上通用的硬件描述语言了,并且获得了不少公司的支持。有些专家认为,VHDL 语言将在电子工程领域发挥着更加重要的作用。 利用 VHDL 完成数字系统设计的益处是不同方面的。 (1)VHDL 语言已成为工程设计的最佳选择,因为与其他硬件描述语言相比,VHDL 的行为描述能力要更高。为了能够在不需要清楚器件内部构造的情况下,进而设计出比较复杂的系统,从逻辑行为上对其进行描述 ,那么较强的行为描述能力就更是不能忽视。 (2)VHDL
13、可以用来检验所设计的任何系统所具备的功能可行性,不论复杂程度,因为它含有大量的仿真语句和库函数。(3)VHDL 语言具备细化设计比较大规模的系统以及能随时调用已有设计的2特点,这是由它的程序结构和行为描述能力所决定的。为了高速、高效的实现市场需求的大规模系统,必要时需要很多人或者不同的代发组同时进行来完成任务。(4)通过 VHDL 独立而正确的设计,使用 EDA 工具将能够优化和逻辑综合,而且还可以将 VHDL 设计描述进一步生成门级网表。 (5)设计者能够在不了解硬件内部结构,也不用知道设计实现的最终器件是哪些的情况下来进行独立的设计,对于设计的描述,VHDL 具有其相对的独立性。2.2 开
14、发环境 MAX+PLUSAltera 公司是世界上最大的可编程逻辑器件供应商之一,它采用了新的逻辑结构和先进的技术,该器件可以实现最高的性能和集成度,同时还引入了具有 MAX +PLUS的现代设计软件 Altera 公司的第三代 PLD 可编程逻辑开发软件。 在这样的设计环境中,通过编译器的内部组件,程序设计输入,Altera CPLD 设计人员可以自由操作。MAXPLUS II 提供了一套全面的逻辑设计特性,包括原理图,程序编译和模块设计输入,编译,逻辑综合,仿真,时序分析和器件编程等诸多功能。特别是在原理图输入等方面,MAX + PLUS被认为是最容易使用和最友好的 PLD 软件。MAX
15、+ PLUS II 可以开发除 APEX20K 以外的任何CPLD / FPGA。MAX+PLUS设计软件拥有很多独特的方面:(1)开放式的界面。(2)设计和结构无关:MAX +PLUS支持 Altera 的 Classic,ACEX 1K,MAX 3000,MAX 5000,MAX 7000,MAX 9000,FLEX 6000,FLEX 8000 和FLEX 10K 等不同的可编程逻辑器件,可高达 25 万门,并提供了一个真正的与结构无关的可编程逻辑开发环境。 而为了减轻用户在设计过程中的负担,MAX +PLUS编译器也具有强大的逻辑综合和优化功能。(3)可以运行在各种平台上:MAX +P
16、LUS软件不仅在基于 PC 的 Windows NT 4.0,Windows 98,Windows 2000 操作系统运行,而在 Sun SPARCstations中,HP 9000 系列 700/800,IBM RISC 系统/ 6000 等工作平台运行。 (4) 完全集成:MAX +PLUS软件设计输入,编译,测试功能完全包含在可编程逻辑开发工具中,使设计可以更快速的调试,从而缩短开发周期。 (5)模块化工具:设计者根据需要能够拣选各种设计输入、编辑、校验及器件编程工具,从而形成具有用户自己独特的开发环境,如果有必要,可以在原有的功能基础上增添新的功能。因为 MAX+PLUS支持多种设备,
17、设计者可以开发新的结构而不必学习新的开发工具。(6)支持邮件描述语言(HDL):MAX+PLUS软件支持各类 HDL 的设计输入,3包含标准的 VHDL、Verilog HDL 及 Altera 公司自身所推出的硬件描述语言AHDL。 (7) MegaCore 功能:MegaCore 是一个 HDL 网表文件,通过先前的验证提供,以完成复杂的系统级功能。它是为 ACEX 1K,MAX 7000,MAX 9000,FLEX 6000,FLEX 8000 和 FLEX 10K 设计的。用户可以从 Altera 公司购买这些 MegaCore,直接使用它们可以降低任务的强渡,使设计人员能够改进设计,
18、投入更多的精力和时间,从而完成最终的产品。 (8)OpenCore 特征:MAX+PLUS软件拥有开放性内核的特征,设计者若是在购买产品之前需要对自己的设计评估一下,OpenCore 可供其评估。 同时,MAX +PLUS具有多种输入方式,包括:图形设计输入,文本编辑器输入,波形输入,混合输入。第三章基于 VHDL 的数字式电子密码锁实现3.1 系统总结构图设计本次设计采用键盘输入,输入密码值范围为 09,*键为上锁键,#键为开锁键并且可清除密码。键盘译码功能表如下所示,便于仿真时检查对照其正确性。图 1 为系统总结构图,图中有四个模块,其中主要模块为密码锁输入模块即KEYBOARD,输入模块
19、包含时序产生、键盘扫描、键盘弹跳消除、键盘译码等功能;密码锁控制模块即 CTRL,控制模块包含密码变更、清除、激活电锁、密码核对解锁等功能;密码锁显示模块即 DECL7S,显示模块主要将待显示数据的 BCD 码转换成数码器的七段显示编码,四位密码锁需要四个数码管分别对应输入密码的 BCD 码;另外包含报警模块即 CR_DRIVER,连接蜂鸣器密码连续输错两次会报警。表 1 :键盘译码功能表4图 1:系统总结构设计原理图3.2 主要模块 VHDL 语言实现3.2.1 输入模块密码锁输入电路程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE
20、.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY KEYBOARD ISPORT (CLK_1K:IN STD_LOGIC; KEY_IN:IN STD_LOGIC_VECTOR(2 DOWNTO 0); 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_
21、LOGIC; CLK_CTR:OUT STD_LOGIC; KEY_SOUND:OUT STD_LOGIC;CLK_SOUND:OUT STD_LOGIC);END ENTITY KEYBOARD;ARCHITECTURE ART OF KEYBOARD ISCOMPONENT DEBOUNCING ISPORT(D_IN:IN STD_LOGIC;CLK:IN STD_LOGIC;5D_OUT:OUT STD_LOGIC);END COMPONENT DEBOUNCING;SIGNAL CLK:STD_LOGIC;SIGNAL C_KEYBOARD:STD_LOGIC_VECTOR(1 DO
22、WNTO 0);SIGNAL C_DEBOUNCE:STD_LOGIC;SIGNAL C_SOUND:STD_LOGIC;SIGNAL C:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL N,F:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL FN,FF,CC:STD_LOGIC;SIGNAL SEL:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINDATA_NKEY_IN(0),D_OUT=C(0),CLK=C_DEBOUNCE);U2:DEBOUNCING PORT MAP(D_IN=KEY_IN(1),D_OUT=C(1
23、),CLK=C_DEBOUNCE);U3:DEBOUNCING PORT MAP(D_IN=KEY_IN(2),D_OUT=C(2),CLK=C_DEBOUNCE);CCNNNNNNNNNNNFFFLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SNULL;END CASE;END PROCESS;END;编译形成模块:图 4:显示模块框图显示模块主要将控制端口密码输出的 BCD 码转换成七段共阴极数码管显示,每四位二进制显示一个数字,随控制模块控制,每输入一个密码左移一位。3.2.4
24、 报警模块报警模块程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CD_DRIVER ISPORT (CLK:IN STD_LOGIC;KEY_SOUND:IN STD_LOGIC;ALARM:IN STD_LOGIC;12SOUND:OUT STD_LOGIC);END ENTITY CD_DRIVER;ARCHITECTURE ART OF CD_DRIVER ISBEGINPROCESS(ALARM,KEY_SOUND)BEGINIF ALARM=1 THENSOUND=CLK;ELSIF KEY_SOUND=1 THENSOUN
25、D=CLK;ELSE SOUND=0;END IF;END PROCESS;END ART;编译形成模块:图 5:报警模块报警模块输入端 ALARM 与控制模块的输出对应端相连,KEY_SOUND 与输入模块的输出对应端相连,SOUND 与蜂鸣器相连。3.3 系统仿真3.3.1 密码锁输入电路仿真图 6 为密码锁输入电路的仿真结果图。从图中可以看出,KEY_IN 为 3*4 矩阵式键盘上列向的值,它与扫描信号 CLK_SCAN 对应组成一个相对应的输出的数字,比如说当 CLK_SCAN 和 KEY_IN 对应为 1011 110 时,即对应数字键为9,CLK_SCAN 和 KEY_IN 分别为
26、 0111 011 时,即对应*键。FLAG_N 为控制数字键的端口,即有数字键输出时,其显示为高电平,DATA_N 则对应的输出数字。与之对应的 FLAG_F 为控制符号键的端口,比如若按下#,则 FLAG_F 显示为高电平,DATA_F 则输出功能按键#的对应码字 H1。当每有一个数字键被按下时,FLAG_N都会有一个高电平出现,而每有一个功能键被按下时,即*或#时,FLAG_F 都会显示高电平。由此图可以看出,输入的数字和符号为 109*2675348#, 证明密码锁输入设计程序是正确的。 13图 6:KEYBOARD 模块仿真图3.3.2 密码锁控制电路仿真图 7 为密码锁控制电路仿真
27、结果图。从该图可以看出,输入的密码值之后FLAG_F 会显示有一个高电平,既有符号键输入,这里即为上锁键*,此时我们可以看到在输出端 ENLOCK 处出现高电平,即电路上锁成功。接着又出现DATA_N 端的四个高电平,此时是有解锁密码的输入,图中输入的是正确的解锁密码,DATA_N 显示的是 1234,然后 FLAG_F 再次出现高电平,即又有符号键输入,这时是开锁键#,由 DATA_F 显示,这时可以看到输出端 ENLOCK 电平由高变低,即电路实现开锁。当两次输入错误密码后,会发现在 ALARM 输出端产生高电平,即为连续输错两次报警的功能(将在总仿真图中体现)。综上所述,完全满足密码锁控
28、制电路的设计要求,程序是正确的。图 7:CTRL 模块的仿真图3.3.3 密码锁显示模块仿真图 8 为密码锁显示模块的仿真图。对照仿真图并由共阴极数码管元件的特点可以看到,当为 0110000 时,对应数码管的 a d e f g 为高电平,只有 b c为低电平,即数码管显示为 1,同理当为 1101101 时对应的数码管的 c f 为低电平,则在数码管上显示数字 2,当要待显示 9 的时候对应的二进制数字为1111011,由此可以看出密码锁显示模块的 VHDL 程序是正确的。14图 8:DECL7S 模块的仿真图3.3.4 系统总体仿真以上已经对整个密码锁总体设计各模块进行了仿真,现在对整体
29、的仿真图进行分析。图 9 为密码锁总体设计原理图的时序仿真波形。由仿真图能够看得出当设定密码为 1 3 4 6,再按下*时,ENLOCK 出现高电平,上锁成功。然后开始解码,输入的解码值为 2 5 8 0 按下#解锁,密码错误,ENLOCK 仍然保持高电平,证明锁没有被打开,SOUND 为按键音,每当有按键被按下的时候就会有一个伴随音。当密码错误时,SOUND 总是为高,当输入正确的密码时,SOUND 为低电平。然后输入解锁密码 2 5 8 0,按确认键#,正确判断系统,ENLOCK 转变成低电平,SOUND 端也变为低电平,解锁成功。综上所述,整个密码锁的设计通过时序仿真的观察和分析,符合原
30、有方案的思路,能够满足电子密码锁的功能要求。图 9:系统总体仿真图第四章 结束语本文主要介绍了四位密码锁的设计原理和实现方案,主要有三个模块组成,密码输入模块、控制模块、密码显示模块,另加一个报警模块。使用 4 个数码管显示输入密码,可以更改密码输入,密码删除等操作。由此设计的数字密码锁过程可知,VHDL 语言能够灵活、快速的实现数字式电子密码锁的设计,而且易于操作,稍作修改就可实现不同位数的密码锁,并且能在 MAX+PLUS环境下完成所设计的方案原理图的仿真,显示结果可以验证程序设计的可行性。这类密码锁具备体积小,操作方便和实用性强的特点,所以具有良好的应用前景。15主要参考文献:1曹建国,
31、王威,王丹. 一种基于 VHDL 的电子密码锁的设计与实现J. 沈阳大学学报,2006,(04):77-79.2高倩,谢海良. 基于 Max+Plus和 VHDL 的电子密码锁设计J. 现代电子技术,2009,(17):131-132+136.4 陈华丽,何颜平. 基于 VHDL 的数字密码锁设计J. 国外电子测量技术,2008,(04):27-30.5韩团军. 基于 VHDL 的电子密码锁设计J. 科技广场,2010,(09):113-115.6王静. 基于 VHDL 的电子密码锁设计J. 安防科技,2010,(03):16-18.7徐大诏. 基于 VHDL 语言有限状态机的电子密码锁设计J
32、. 信息通信,2013,(10):39-40.8王道宪 CPLD/ FPGA 可编程逻辑器件应用与开发 M北京:国防工业出版社, 20059刘钰,张有志. 一种用 VHDL 语言设计的数字密码锁J. 信息技术与信息化,2004,(04):37-40.10林凤海. 用 VHDL 实现电子密码锁J. 软件导刊,2009,(04):105-107.16致 谢刚接到论文题目我并没有开始着手写论文,而是等到考研复试结束后才开始,时间对我来说已经比较紧了。到定稿的这段时间里,自己在网上搜集资料查阅相关书籍,这也耗费了不少时间,从海量的资源截取有用的信息也是一件费精力的事,但是同学教了我一些方法使我节省了时间。 在做论文期间遇到了不少困难,有些程序的调试错误自己找不出来很苦恼,但是问问同学他们都帮我解决了,软件使用同学也耐心的教了我。实在解决不了的问题询问老师,也帮我清晰的解答了,论文各方面存在的问题老师也帮忙指出不断的进行修改。这个过程使我明白做研究不是一件容易的事,每一个步骤都应该精益求精,遇到问题要想办法去解决而不是一味地苦恼。总之这次毕业论文设计经历是一个不错的经验,使我明白在今后的研究生研究中更要竭尽所能的做好。本设计在程鸿老师的指导和同学的帮助下完成,在此衷心向老师表达崇高的敬意,表达对学生的深深谢意。