基于FPGA的密码锁设计(共19页)_第1页
基于FPGA的密码锁设计(共19页)_第2页
基于FPGA的密码锁设计(共19页)_第3页
基于FPGA的密码锁设计(共19页)_第4页
基于FPGA的密码锁设计(共19页)_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上评语学号 成绩 现代数字系统设计课程论文 题目 基于FPGA的密码锁设计 作 者 嘿嘿 班 级 0803BF 院 别 信息与通信工程 专 业 电子信息工程 完成时间 2011年5月8日 基于FPGA的密码锁设计 【摘要】基于FPGA设计的电子密码锁是一个小型的数字系统,与普通机械锁相比, 具有许多独特的优点: 保密性好, 防盗性强, 可以不用钥匙, 记住密码即可开锁等。目前使用的电子密码锁大部分是基于单片机技术, 以单片机为主要器件, 其编码器与解码器的生成为软件方式。在实际应用中, 由于程序容易跑飞, 系统的可靠性能较差。本文介绍一种基于现场可编程门阵列FPGA 器

2、件的电子密码锁的设计方法采用Verilog HDL语言对系统进行描述,并在EP1K10TC100-3上实现。系统所实现的功能:用户给电子密码锁设定一个密码,当使用本机键盘开锁时,该密码与用户设定的密码比较,如果密码正确,则开锁;如果密码不正确,则允许用户重新输入密码,最多可输入三次,若三次都不正确,则扬声器报警,直到按复位键才允许再次输入代码。通过仿真调试,利用可编程器件FPGA的电子密码锁的设计基本达到了预期目的。当然,该系统在一些细节的设计上还需要不断的完善和改进,特别是对系统的扩展有很好的实用和设计的价值。【关键词】:现场可编程门阵列, 硬件描述语言, 电子密码锁, 扬声器【Abstra

3、ct】FPGA-based design of the electronic code lock is a small digital system, electronic password lock compared with ordinary mechanical locks, with many unique advantages: good privacy, security and strong, can not key to remember passwords to unlock, and so on. At present the use of the electronic c

4、ode lock on most of SCM technology to SCM as the main devices, encoders and decoders of Health and the software approach. In practice, since the process easy run to fly, the reliability of the system can be poor. Based on this paper, a field programmable gate arrays FPGA devices electronic password

5、lock design, Verilog HDL language used to describe the system and achieve EP1K10TC100-3.Implementation of the system features: users of electronic password lock to set a password, when using the keyboard unlock the machine, the user password and set the password, if the correct password, then unlock

6、 if the password is not correct, allows Users to enter a password, can enter up to three times, three times if not correct, the speaker alarm, until the reset button only allowed to re-enter the code.The simulation tests using programmable devices FPGA electronic password lock the basic design to ac

7、hieve the expected goal. Of course, some of the details of the system in the design of the need to constantly refined and improved, in particular the expansion of the system have a good design and practical value. 【Key words】: FPGA , Verilog HDL, electronic password lock , speaker1、 概述1.1 电子密码锁的现状随着

8、我国对外开放的不断深入,高档建筑发展很快,高档密码锁具市场的前景乐观。我国密码锁具行业对密码锁具高新技术的投入正逐年增大,高档密码锁的市场需求也逐年增加。在安防工程中,锁具产品是关系到整个系统安全性的重要设备,所以锁具产品的优劣也关系了整个安防工程的质量和验收。目前,市场上比较先进的智能电子密码锁分别有:IC卡电子密码锁、射频卡式电子密码锁、红外遥控电子密码锁、指纹识别电子密码锁和瞳孔识别电子密码锁等。IC卡电子密码锁成本低,体积小,卡片本身无须电源等优点占领了一定的市场份额,但是由于有机械接触,会产生接触磨损,而且使用不太方便,在一定程度上限制了它的应用;射频卡式电子密码锁是非接触式电子密码

9、锁,成本也不太高,体积跟IC卡密码锁相当,卡片使用感应电源,重量很轻,技术成熟,受到了广泛的欢迎,但是与IC卡电子密码锁相比,成本偏高;指纹识别电子密码锁和瞳孔识别电子密码锁可靠性很高,安全性是目前应用系统中最高的,但是成本高昂,还没进入大众化使用阶段。在国外,美国、日本、德国的电子密码锁保密性较好,并结合感应卡技术,生物识别技术,使电子密码锁系统得到了飞跃式的发展。这几个国家的密码锁识别的密码更复杂,并且综合性比较好,已经进入了成熟期,出现了感应卡式密码锁,指纹式密码锁,虹膜密码锁,面部识别密码锁,序列混乱的键盘密码锁等各种技术的系统,它们在安全性,方便性,易管理性等方面都各有特长,新型的电

10、子密码锁系统的应用也越来越广。基于FPGA的电子密码锁是新型现代化安全管理系统,它集微机自动识别技术和现代安全管理措施为一体,它涉及电子,机械,计算机技术,通讯技术,生物技术等诸多新技术。它是解决重要部门出入口实现安全防范管理的有效措施,适用各种场合,如银行、宾馆、机房、军械库、机要室、办公间、智能化小区、工厂、家庭等。在数字技术网络技术飞速发展的今天,电子密码锁技术得到了迅猛的发展。它早已超越了单纯的门道及钥匙管理,逐渐发展成为一套完整的出入管理系统。它在工作环境安全、人事考勤管理等行政管理工作中发挥着巨大的作用。在该系统的基础上增加相应的辅助设备可以进行电梯控制、车辆进出控制,物业消防监控

11、、餐饮收费、私家车库管理等,真正实现区域内一卡智能管理。 目前使用的电子密码锁大部分是基于单片机技术, 以单片机为主要器件, 其编码器与解码器的生成为软件方式。在实际应用中, 由于程序容易跑飞, 系统的可靠性能较差。基于FPGA的电子密码锁已经是现代生活中经常用到的工具之一,用于各类保险柜、房门、防盗门等等。用电子密码锁代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点。由于采用的是可编程逻辑器件FPGA,使得系统有相当大的灵活性,随时可以进行硬件升级、扩展,而且系统设计完善以后还可以将主控的FPGA固化成一片ASIC,那么这块ASIC就可以作为专用的数字密码锁芯片。而且由于

12、硬件可升级,还可随时增加密码位数或增加新的功能,使得密码锁有更高的安全性、可靠性和方便性。1.2 论文主要完成的工作课题主要解决系统硬件和软件两方面的问题。硬件方面要解决FPGA可编程器件与其外围电路的接口设计的问题;软件方面主要问题是利用Verilog HDL语言完成基于FPGA的电子密码锁的编程问题。除此之外,程序还要完成基本的密码开锁功能,并通过扬声器长时间鸣叫报警。本设计是由FPGA可编程逻辑器件编程实现的控制电路,具体有按键指示、输入错误提示、密码有效指示、控制开锁、控制报警等功能。它具有安全可靠、连接方便、简单易用、结构紧凑、系统可扩展性好等特点。2、 系统硬件设计2.1 系统设计

13、方案2.1.1 系统功能需求分析本系统主要集中在以FPGA以核心外围扩展设计,整个电路主要电子锁具的组成框图是以可编程逻辑器件(FPGA)为核心,配以相应硬件电路,完成密码的设置、存贮、识别和显示、驱动电磁执行器并检测其驱动电流值,报警等功能。 FPGA接收键入的代码,并与存贮在闪存中的密码进行比较,如果密码正确,则驱动电磁执行器开锁;如果密码不正确,则允许操作人员重新输入密码,最多可输入三次;如果三次都不正确,则通过FPGA产生报警,FPGA将每次开锁操作和此时电磁执行器的驱动电流值作为状态信息发送给监控器,同时将接收来自接口的报警信息也发送给监控器。2.1.2 系统实现方案的论证比较方案一

14、 :采样台湾凌阳科技有限公司推出的以凌阳自主研发的SPCE061A芯片为主控芯片,用一条下载线连接到计算机就可以实现在线仿真、在线调试、在线下载,低廉的价格保证了系统可靠开发;此外,61板具有SOC概念、DSP功能和语音特色,为电子密码锁的语音报警提供了方便,但是基于单片机设计的密码锁外围电路比较复杂,系统可靠性差,密码的数量少,尤其是系统的程序不够稳定,功率较大,需要专门的电源供电,所以不采用这个方案。 方案二:设计一种基于FPGA的电子密码锁的设计,用FPGA设计的系统已经是现代生活中经常用到的工具之一,通过键盘输入密码,用FPGA作为主控芯片,用数码管显示输入的数字,如果出现错误便通过报

15、警电路发出报警,主控芯片又可分为按键处理部分、控制部分和译码显示部分用电子密码锁代替传统的机械式密码锁。由于采用的是可编程逻辑器件FPGA,使得系统有相当大的灵活性,随时可以进行硬件升级、扩展。而且系统设计完善以后还可以将主控的FPGA固化成一片ASIC,那么这块ASIC就可以作为专用的数字密码锁芯片。方案的论证比较 在实际应用中, 由于程序容易跑飞, 系统的可靠性能较差,而基于FPGA设计的电子密码锁克服了基于单片机设计密码锁的缺点。基于上述比较以上两种方案,根据系统设计要求,采用方案二。2.1.3 系统方案的总体设计系统原理框图本系统由主控芯片(FPGA)、键盘、显示电路、报警电路和开/关

16、门电路组成,而主控芯片又可分为按键处理部分、控制部分和译码显示部分。系统原理框图如图2.1.3所示:图2.1.3 系统总体框架总体设计原理实现系统大量逻辑电路的集成,在设计中使用了现场可编程逻辑门阵列器件(FPGA)。FPGA主要实现以下逻辑功能:键盘处理、数码显示、设置密码、解码开门以及报警等控制功能。本系统有13个按键,包括09共10个数字键和1个确认键,1个警报复位键,1个清0键。输入正确密码后,按确认键即可开门,在门开的状态下,第一次输入新密码后再确认密码可设置密码,输入的密码在八位数码管上显示,最后输入的数字显示在最右边,每输入一位数字,密码在数码管上的显示左移一位。高位的零不用输入

17、,因此密码可以为18位。初始密码为0,即上电后,按确认键即可开门。门开后可通过锁门按钮关门,门关上后要再次输入密码才能开门。在输入密码的过程中,当用户键入错误密码时,系统就会报警,由扬声器发出报警声,当连续三次出现密码错误时,则系统会长时间报警不止,这时必须按警报复位键方可停止。2.2 主控模块2.2.1 主控芯片EP1K10TC100-3的介绍主控芯片采用ACEX1K 系列的EP1K10TC100-3。ACEX 系列是当今Altera CPLD 中应 用前景最好的器件系列之一1,2,该系列的FPGA 由逻辑阵列块LAB(Logic array block)、 嵌入式阵列块EAB(embedd

18、ed array block)、快速互联以及IO 单元构成,每个逻辑阵列块 包含8 个逻辑单元LE(logic element)和一个局部互联。每个逻辑单元则由一个4 输入查找 表(LUT)、一个可编程触发器、快速进位链、级连链组成,多个LAB 和多个EAB 则可通过快速通道互相连接3。EAB 是ACEX 系列器件在结构设计上的一个重要部件,他是输入 端口和输出端口都带有触发器的一种灵活的RAM 块,其主要功能是实现一些规模不太大的 FIFO、ROM、RAM 和双端口RAM 等。2.3 键盘模块按键方式分为独立式和行列式两种,本设计采用行列式按键结构,是4×4键盘,本设计中只用了其中

19、的11个按键。行列式按键是指直接用I/O口线通过动态扫描构成的按键电路。每个按键通过动态扫描需要八根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线的工作状态。它的电路配置灵活,软件结构简单,占用的I/O资源少。首先固定输出4行为高电平(接到电源),然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应

20、的那一列有按键按下。 获取到行值和列值以后,组合成一个8位的数据,根据实现不同的编码在对每个按键进行匹配,找到键值后在7段码管显示。按键控制电路如图2.3所示:图2.3 4*4矩阵键盘2.4 显示模块LED显示块是由发光二极管显示字段的显示器件。在单片机应用系统中通常使用的是7段LED,本设计将采用共阳极。共阳极LED显示块的发光二极管与阳极并接。数码管显示块中共有8个发光二极管,其中7个发光二极管构成七笔字形“8”,1个发光二极管构成小数点。7段显示块与FPGA接口非常容易。只要将一个8位并行输出与显示块的发光二极管引脚相连即可。8位并行输出口输出不同的字节数据即可获得不同的数字或字符,如表

21、5.1所示。通常将控制发光二极管的8位字节数据称为段选码。共阳极与共阴极的段选码互为补数。显示字符共阴极段选码共阳极段选码显示字符共阴极段选码共阳极段选码 0 3FH C0H C 39H C6H 1 06H F9H D 5EH A1H 2 5BH A4H E 79H 86H 3 4FH B0H B 7CH 83H 4 66H 99H F 71H 8EH 5 6DH 92H P 73H 8CH 6 7DH 82H U 3EH C1H 7 07H F8H L 31H CEH 8 7FH 80H Y 6EH 91H 9 6FH 90H A 77H 88H表2.4 LED显示块功能表2.5 报警模块驱

22、动端为高电平则报警电路启动。三、系统软件设计3.1系统主控制流程框图 当用户输入密码后,按确认键即可开门,在门开的状态下,输入新密码,再按确认键可设置密码,输入的密码在八位数码管上显示,最后输入的数字显示在最右边,每输入一位数字,密码在数码管上的显示左移一位。高位的零不用输入,因此密码可以为18位。初始密码为0,即上电后,按确认键即可开门。 本系统控制流程如图3.1所示图3.1 系统控制图否否否否否是是是是是否报警开门存入新密码,清除显示输入一位密码清除显示,关门开始次数加一密码不正确累计三次密码正确门已开数字键键盘扫描有锁门信号 3.2 键盘扫描程序框图开始时钟上升沿触发?列为高电平?逐列扫

23、描图3.2 键盘扫描程序框图开始3.3 获取键值程序框图 时钟上升键盘扫描确认键数字键数码管整体左移一位,并在空出的最低位显示扫描结果密码判断图3.3 键值程序框图3.4 解码、报警模块开始门已开?输入密码后确认密码正确?开门,不响警报计数器+1,仍关门不正确次数大于3?复位位?计数器清0,警报停止报警 图3.4 解码报警模块3.5 系统软件设计总RTL级图4、 系统测试与总结4.1 仿真波形图因为功能实现需要键盘输入,在波形仿真中无法体现。4.2 本次课题设计体会本次课题设计完成的是基于FPGA的密码锁设计,通过一个多星期的不断努力、克服各种困难,最终实现了任务目标。本次设计解决的主要问题是

24、是利用verilog HDL语言完成基于FPGA的电子密码锁的编程问题。设计是理论知识与实践的完美结合,对于现代大学生的实践能力是个很好的培养。短短的一个星期的时间的设计虽然短暂,但是它给我的收获确实难忘,不仅仅在智能仪器方面有了很大的进步,而且在FPGA、Quartus软件等方面也学到了不少在上课学不到的知识。这段时间我查阅到很多关于课程设计的书籍,对我帮助也很大。我觉得自己以前的盲目,现在明白了很多。也对我们专业动手实践的兴趣提高了很多。有了这些经历对于我日后工作一定会有很大帮助。相信这次设计中学到的种种东西一定会存在我的脑海里,令我终身受益。在课程设计的过程中也可以看到我的不足,如原理知

25、识掌握不实,曾经学过的知识如今却不会应用,软件的应用也不熟练,希望日后提供给我们更多的锻炼机会来培养我们的实践能力。参考文献1 高移南.遥控变号电子锁J.电子世界,1994,07:152 许琦.基于FPGA 的电子密码锁设计J . 中国科技信息, 2007 (1) : 240-2413 刘韬,楼兴华.FPGA数字电子系统设计与开发实例导航M.人民邮电出版社,2005.4 王金明.数字系统设计与Verilog HDL附 录1.主控程序module keyword( key , clk ,lock , alarm , door , word0 , word1 , word2 , word3 , w

26、ord4 , word5 , word6 , word7);/主控程序output3:0 word0,word1,word2,word3,word4,word5,word6,word7;output door;/开/关门信号,1为开,0为关output reg alarm;/密码输入错误3次后的报警信号input3:0 key;/键盘输入后检测到的一个键值input clk,lock;/lock门为锁闭状态时的标志位reg3:0 w0,w1,w2,w3,w4,w5,w6,w7,k0,k1,k2,k3,k4,k5,k6,k7;/w代表的是电子密码锁的密码,k代表的是按键输入的数值reg1:0 i

27、;reg m;/m为door的标志位always (posedge clk)beginif(lock = 1)begin m <= 0;k0 <= 0;k1 <= 0;k2 <= 0;k3 <= 0;k4 <= 0;k5 <= 0;k6 <= 0;k7 <= 0;/门未开时清屏end else if(key = 10)/确认键按下时begin if(m = 0)/门未开begin if(k0 != w0 | k1 != w1 | k2 != w2 | k3 != w3 | k4 != w4 | k5 != w5 | k6 != w6 | k

28、7 != w7)/判断密码是否正确begin if(i<3)begin i <= i+1;k0 <= 0;k1 <= 0;k2 <= 0;k3 <= 0;k4 <= 0;k5 <= 0;k6 <= 0;k7 <= 0;/密码错误后清屏end else alarm <= 1;/报警打开end elsebegin m <= 1;/密码正确,门打开 alarm <= 0;/报警关闭endend elsebegin w0 <= k0;w1 <= k1;w2 <= k2;w3 <= k3;w4 <

29、= k4;w5 <= k5;w6 <= k6;w7 <= k7; /门为开时设置密码k0 <= 0;k1 <= 0;k2 <= 0;k3 <= 0;k4 <= 0;k5 <= 0;k6 <= 0;k7 <= 0;/清屏endendelse if(key < 10) /数字键按下时begink7 <= k6;k6 <= k5;k5 <= k4;k4 <= k3;k3 <= k2;k2 <= k1;k1 <= k0;k0 <= key;/新键值显示在最右端,其余数值左移一位end

30、end assign door = m;assign word0 = k0;assign word1 = k1;assign word2 = k2;assign word3 = k3;assign word4 = k4;assign word5 = k5;assign word6 = k6;assign word7 = k7;endmodule 2.解码显示程序module decode( t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , clk , code , led );/数码显示模块output reg7:0 code,led;/code为数码管显示的数值

31、,led为数码管位选信号,input3:0 t0,t1,t2,t3,t4,t5,t6,t7; input clk;reg2:0 n;reg3:0 m;always (posedge clk)beginif(n < 8) n <= n+1; else n <= 0;endalways (n)begincase(n) 0:begin m <= t7;led <= 8'b;end 1:begin m <= t6;led <= 8'b;end 2:begin m <= t5;led <= 8'b;end 3:begin m

32、<= t4;led <= 8'b;end 4:begin m <= t3;led <= 8'b;end 5:begin m <= t2;led <= 8'b;end 6:begin m <= t1;led <= 8'b;end 7:begin m <= t0;led <= 8'b;end endcaseend always (m)begin case(m) 0:code <= 8'b; 1:code <= 8'b; 2:code <= 8'b; 3:co

33、de <= 8'b; 4:code <= 8'b; 5:code <= 8'b; 6:code <= 8'b; 7:code <= 8'b; 8:code <= 8'b; 9:code <= 8'b; 10:code <= 8'b;/确认值 11:code <= 8'b;/复位值endcaseend Endmodule3.键盘扫描获取键值程序module keyscan( clk , reset , row , col , key_value );output reg3

34、:0 key_value;output reg3:0 col;input clk,reset; input 3:0 row;reg 5:0 count;/delay_20msreg 2:0 state; /状态标志reg key_flag; /按键标志位reg clk_500khz; /500KHZ时钟信号reg 3:0 col_reg; /寄存扫描列值reg 3:0 row_reg; /寄存扫描行值always (posedge clk or negedge reset)beginif(!reset)begin clk_500khz <= 0; count <= 0; endel

35、sebeginif(count >= 50) begin clk_500khz <= clk_500khz;count <= 0;endelse count <= count+1; endendalways (posedge clk_500khz or negedge reset)beginif(!reset) begin col <= 4'b0000;state <= 0;endelse begin case (state)0:begin col3:0 <= 4'b0000;key_flag <= 1'b0;if(row3:0 != 4'b1111) begin state <= 1;col3:0 <= 4'b1110;end /有键按下,扫描第一列 else state <= 0; end 1: begin if(row3:0 != 4'b1111)state <= 5; /判断是否是第一列 else begin state <= 2;col3:0 <= 4'b1101;end /扫描第二列 end 2: be

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论