基于FPGA的电子密码锁_第1页
基于FPGA的电子密码锁_第2页
基于FPGA的电子密码锁_第3页
基于FPGA的电子密码锁_第4页
基于FPGA的电子密码锁_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业FPGA电子密码锁 学生姓名:学生学号:院 (系): 电信学院 年级专业:指导教师:助理指导教师: 二一五年五月摘 要本次设计是为解决传统锁的安全与方便的问题,设计一个电子密码锁,该密码锁选用现场可编程门阵列FPGA作为电子密码锁的设计,相对于单片机而言FPGA有一个很大的不同是它采用了硬件电路来实现了所有的算法,这样保证了系统工作时的稳定性,并且由于FPGA的现场可编程特性,对于外部的硬件电路的要求不是很高,这样就使得设计的修改和升级非常的方便,效率也因此增加。本系统

2、以FPGA为核心,再配以相应的外围电路展开设计,利用EDA技术Quartus II平台和硬件描述语言,实现了一个电子密码锁,并且具有清除密码和修改密码的功能。关键词 FPGA,硬件描述语言,电子密码锁ABSTRACTThis design istosolvethetraditionalsecuritylockwith the convenience of theproblem,the design of an electronicpassword lock,password locktheselectedfieldprogrammable gate arrayFPGA as thedesign

3、of electronic password lock,with respect to therelative to themicrocontrollerFPGA there is abig difference is thatit useshardware circuit toachieve all of the algorithm,so thatthestability of the systemwork,and because the FPGAfield programmable characteristic,thehardware circuitof the externaldeman

4、d is not very high,which makes thedesignmodification andupgrade is veryconvenient,thus increasingefficiency.This system uses FPGAas the core,together with thecorresponding peripheral circuitdesign,using EDA technologyQuartusII platformand hardware description language,to achieveanelectronic password

5、 lock.Key words FPGA,Hardware Description Languages ,Electronic locks 目 录TOC o 1-3 h u 1 绪论1.1 课题背景随着当代人们生活水平的不断提高与安全意识的加强,对与安全的要求也越来越高。锁在中国已经有十分悠久的历史,人们对其要求也是甚高,既要保证安全防盗,又要使用起来方便,这也是研究锁的人一直以来的主题。而随着现代电子技术的发展,各种电子产品不断涌现,电子密码锁也由此诞生。其实,电子密码锁从20世纪30年代开始。电子锁是通过在键盘输入密码来完成开锁。研究电子密码锁的原因,也是为提高安全性。由于它的密钥量极大,

6、并且与机械配合起来,可以避免各种传统锁的安全隐患。电子锁只需要记住一组密码,就可以开锁了,无需携带钥匙,避免了带钥匙和丢钥匙的麻烦,因此电子密码锁越来越受欢迎。虽然电子锁的种类有很多,但一般还是按键式的电子密码锁应用得比较多。 到了二十世纪八十年代后以,电子密码锁专们用于的集成电路出现了之后,电子密码锁体积变得很小了,稳定性也变得非常的高,但是有一个不好就是成本提高了不少,只适合使用在那些对于安全性要求很高的地方。在目前,西方一些发达的国家,电子密码锁技术比较先进,种类比较齐全,电子密码锁已广泛的应用到了各种智能门禁系统当中,用多种更加可靠的、安全的技术实现对门的管理。中国电子锁整体水平还只是

7、处于国际上的70年代左右,其成本还很高,市面上仍然以按键式的电子锁为主,按键式和卡片钥匙式的电子锁已经引进了国际先进水平,国内有厂商生产供应市场。但是国内自行研制的电子锁,在市场上尚未形成一种市场结构,应用不广。国内有不少的企业也引进了国际上先进的技术,其发展的前景还是非常可观的。通过不断努力,相信电子密码锁在我们国家也能得到广泛的应用。现在的市场上使用的那些电子密码锁大多都是基于单片机上开发的,实际应用当中,由于单片机的程序容容易跑飞,导致系统可靠性能的降低。他们用单片机作为主要的器件,用其编码器和解码器的生成为软件的方式。其实现实当中,单片机开发出的电子锁的缺点已经暴露无疑,跑飞现象十分明

8、显,系统的整体性能可以说是很低的。而用FPGA作为开发的核心就大大的不同了,一个最大的区别就是FPGA构造的系统中的所有算法都是由硬件电路来实现的,这比软件实现的系统在稳定性上是大大的提高。就是因为FPGA的这种现场可编程特性,使得系统设计中需要进行修改或者升级可以十分方便,并且效率十分的高。1.2 本课题研究的目的和意义在这种智能化的今天,要使得人们的生活更加的安全可靠,更加的方便,不用为了安全而担心,把锁的发展推进,并且针对于以前的锁和市面上的单片机做的电子密码锁的不足,研制一种更安全,更可靠的电子密码锁,所以,本系统就采用了FPGA作为开发的核心部件,在此基础上做出一个真正使人们用得放心

9、,对现代新型锁种有一定信奈度的锁,用FPGA的好处就是它是一种可硬件可编程的,这样就比一般的软件稳定性更好,利用EDA技术与Quartus II平台开发,开发出一种真正完全用硬件描述语言所设计的电子密码锁,比起其他的软件编程带来的程序容易跑飞的缺点,这种设计的好处那就是很明显的从实际应用当中可以体现得出来的,本系统充分利用了FPGA的最突出的一个特性硬件可编程性,这样的特性使得系统设计中需要进行修改或者升级可以十分方便,并且效率十分的高。本系统可以对密码自行的设定,使用十分方便,安全性与可靠性都比一般市面上的密码锁要高出很多,所以,选择用FPGA来开发这一个项目,具有的优势是十分明显的,不仅使

10、得它拥有了更高的安全性和稳定性,还让其维护与升级更加的容易,可以说是前景一片光明。2 电子密码锁的设计方案2.1 方案的提出方案一:第一种方案就是用数字电路来实现,这是一种比较简单的方法,整个设计都是你教简单的,不过如果全部采用电路来实现的话,那么整个系统出现的延时情况会很严重。方案二:这一种方案是用一片单片机来做,这是市面上较为流行的一种方式,通过单片机来作为系统的核心控制部件,单片机比较简单灵活,有很多个IO口,可以方便的用来控制,但是用单片机的话有一个严重的缺点,在系统运行的时候程序容易跑飞,这一点导致了单片机的能够担任本次设计。然而它又拥有很大的实现功能的能力和扩展空间,我们所需要的是

11、功能上的实现与扩展,还要对系统进行方便的升级与维护,通过综合的比较,单片机这一方案最终还是不能很好的实现这一项目,所以在此基础上,提出了第三种方案,用来解决单片机锁不没能解决的问题。方案三:本方案是利用现场可编程逻辑门阵列FPGA来做为开发的核心,比之 前的单片机来说,使用FPGA的好处就是能够是系统更加的稳定,并 且成本也是很低的,可以利用FPGA自带的丰富的资源,实现一个高 性能的系统,并且其带来的维护性和升级性十分重要,在实际开发中 为开发者解决很多的不便,所以本设计最后还是决定用FPGA来设计 并实现怎个系统的设计。2.2 电子密码锁技术指标本系统设计的要求是能够从键盘上输入6位的密码

12、,使系统能够输出一信号去开锁,并且可以清除和设置密码的功能。指标要求有:按键按下是只显示一个数(能够消除抖动);输入密码与设置的密码一致时系统输出一信号;系统可以清除按下的数字;系统可以设置任意6位的密码;数码管显示按下的数字键。3 基于FPGA的实现方案3.1系统总模块图FPGA输入模块控制电路显示电路图3.1 总模块图本次设计的电子密码锁主要是三个部分组合而成,分别是键盘上的密码输入电路,密码锁的控制电路和密码的显示电路。在选择输入电路的方案中,有多个方案可供选择,可以用机械的键盘和现在比较流行的触摸按键式的键盘,但是综合各方面的因素来看,最终在本次设计中选用了机械式的按键键盘,这样可以降

13、低成本和增加使用的寿命。而显示模块也有多种的选择,比较常见的是用数码管和液晶显示两种,两种方式的显示都各有优点和缺点,考虑到本次设计中需要的显示是需要长期使用并且要求亮度较高,显示内容较为简单的特点,就选择了数码管作为本次设计的显示模块,这样不论是设计还是实现都大大的节约了资源,十分简单实用,并且性能也较好。下面就是主要设计系统所划分的三大模块,来实现本系统的各个具体的功能。系统流程图如图3.2图3.2 系统流程图3.2 系统的基本原理一般的电子密码锁基本上都是由三个大的部分组合而成,它们分别是输入电路、控制电路和显示电路。(1)电子密码锁的输入电路就主要是由时序产生电路、键盘的扫描电路和键盘

14、的译码电路等几个小功能电路组成。(2)电子密码锁中核心的是控制电路,它包括了密码的变更、按键的识别、清除、解锁储存、密码的匹配、激活电路,储存等几个小功能电路。(3)电子密码锁的显示电路主是将需要显示的数字的对应的数码管位数的编码确定好。如果选用普通的七段数码管显示电路,就是将他的BCD码转化成为七段数码管的驱动码值,用来驱动数码管。本次设计主要是针对电子密码锁设计的逻辑功能,逻辑电路。然后用来实现逻辑功能的逻辑电路设计的FPGA程序的编写,通过仿真软件调试,最后下载运行实现对板的影响。本系统的原理是根据各个不同的功能模块之间的共同协作,每一个模块完成一个相应的功能。系统从键盘获取到用户输入的

15、密码,并在显示模块显示出来,通过控制模块实现具体的开锁功能。其原理框图如下控制开锁用户输入密码扫描、编码、识别密码显示译码电路图3.3 密码锁原理框图3.3 系统设计简述本系统设计的是一个比较简单但性能较高的一个电子密码锁,主要的开发以一块FPGA开发板为主,再配一个外用键盘,有十六个键,和六个数码管,分别用来输入和显示,图3.3是系统的基础样式。LED6位数码管123459确定607*改密8#解锁控制模块清除图3.3 系统基础式样图3.4 各功能模块描述(1)密码输入模块:该部分的电路又分为时序的产生电路,键盘的扫描电路,键盘的去抖电路和译码电路这几个功能,分别工作组合成一个大的输入模块。这

16、一个模块所需要完成的功能是产生三个不同作用的脉冲波形,用来启动几个不同的功能,将用户从键盘输入的密码获取并存储,并且还将按键按下时所产生的抖动去掉,是系统更加稳定。本系统的输入设备是一个外接的4*4的矩阵键盘,该键盘可根据开发者的需要自行改变结构,比较灵活,比板子上自带的键盘有更好的扩展性,稳定性比开发板上的差点,不过可以通过软件中的消抖电路可以达到稳定的效果,所以综合来看,这样的选择是十分适合应用到本系统当中的。矩阵键盘原理图图3.4 矩阵键盘原理图(2)控制模块:该模块主要要做的事情是将输入电路中输入的密码数据储存到电路中,同时完成密码的变更清除存储等等的功能,它将输入的密码与储存的密码进

17、行比较,如果相同就开锁,不相同则不开,是整个电子密码锁中核心的模块。本模块的功能是用于密码的比对,开锁,清除密码,修改密码等,改变密码锁的工作状态,使电子密码锁更加的智能,减少用户的操作,提高性能,协调各个模块之间的作用。(3)显示模块:这一部分电路主要的工作是将用户输入的密码进行一个显示,让用户可以看到自己所输入的密码,是同过之前的模块将输入的密码转换成为七段数码管的驱动码值,从而驱动数码管来显示密码。从整个系统的总体走向来看,系统内部主要是从时序电路的产生,驱动系统的运行,从而进行对键盘的扫描,检测用户所输入的指令,对按键进行一个消抖过程。再对输入的键值进行处理,编码,将遍成的码值送到系统

18、控制电路,系统控制电路根据所得到的值进行相应的处理,做出清除密码,重置密码,比较密码等等的功能,看密码是否是用户设定的密码,如果是就开锁,不是则不开,并且多次输入错误的时候还进行一个报警,其中,密码在输入的同时还通过显示模块将输入的密码显示出来,让用户更加的明确自己所输入的密码。3.5 FPGA的设计流程FPGA设计流程分别为设计的输入、综合、功能的仿真(前仿真)、系统的实现、时序的仿真(后仿真)、配置的下载等这六个主要的步骤。设计输入:设计包括使用三种硬件描述语言HDL输入,状态图和原理图输入,HDL的设计是一个很好的为当前大规模数字集成电路的设计形式。除了VHDL和Verilog HDL的

19、IEEE标准的两种形式,有它自身的特殊语言的FPGA推出的厂商,如Quartus的AHDL,HDL语言描述的状态机,控制逻辑。总线功能是强大的,它可以描述电路具体合成器(如Synopsys FPGA,FPGA编译器II或表达)在特定的硬件单元实现更好的,和在顶层设计输入的原理,数据路径逻辑,手动优化电路等用图形单元,功能明确,除了强大的经济特点,在Quartus软件,Altera公司的环境。你可以使用编辑器来编辑数据直接存储到内部存储器。常用的方法是基于HDL语言,示意补充,混合设计发挥两者各自的特点。综合设计:就是针对与其给定的实现此电路和电路实现功能的约束条件,比如像速度、功耗、成本及电路

20、类型这些等。通过对于计算机进行优化处理,得到一个可以满足与所提出的要求的一个电路的设计方案,这也就是说,用于被综合的文件是HDL文件,或者是相关的对应文件等等,其依据是根据逻辑设计的出的描述和其他各种约束条件,综合所得到的结果则是其硬件电路的实现方案,这种方案是需要同时满足之前预期的功能和约束条件,也就是对于综合来说,要满足要求的方案就可以是有很多个,综合器将要被出现一个最好的或者是接近最好的一个结果,所以,综合设计的整个过程也是一个设计目标的一个优化的过程,最后获得一个与综合器的工作性能有关的结构。功能仿真:如果要从广义上来讲的话,设计验证就包括了其时序仿真与功能和电路验证。仿真就是指使用一

21、种设计的软件包对已经实现了的某个设计进行一套完整的测试,仿照一个真实的物理环境之下的一种情况,而前仿真则是只仅仅对于逻辑功能进行一种测试模拟,用来了解他实现的功能是不是能够满足原设计的要求,在这种过程当中没有加入时序信息,不会涉及硬件的硬件特性,比如说延时特性这种,而在布局布线后,需要提取出有其关的连线延时、器件延迟等时序参数,并且在这种基础上进行的仿真就被称之为后仿真,这是最接近与真实的硬件环境运行的仿真。设计实现:设计实现可以理解成为利用某种实现工具来把逻辑映射到某个目标器件结构的资源中,这就决定了逻辑最佳的布局,选择这样的逻辑和这种输入输出的功能连接布线通道正在进行的一种连线,通过产生相

22、应文的件,比如配置文件和跟它相关的报告,通常可以分为五个大的步骤,转换,映射,布局与布线,时序提取,配置。时序分析:时序分析是在布局和布线之后,是要对这些功能进行静态时序分析,对实际布线延时和实际布局布线的功能块延时进行静态时序分析。对在设计实现这一步的过程中,映射之后要对一个设计的一些内容进行时序分析,比如实际功能块的延时和估计的布线延时。下载验证:下载验证是在前面的所有步骤完成之后,需要前面所做工作综合成的形成的位流下载到具体的FPGA芯片中,所以这一步也叫做芯片配置。FPGA设计有两种芯片配置方法:一种是由外围配置芯片进行上电时自动配置,另一种是直接由计算机经过专用下载电缆进行配置。3.

23、6 VHDL硬件描述语言3.6.1 VHDL的基本结构VHDL的程序完全是由一个一个的模块所所构成的。每个模块都是嵌套在modul与endmodule语句之间。每个模块之间可以有层次嵌套。在源文件之中,只能有一个顶层模块,其它的就是子模块,子模块嵌套在顶层模块当中。每一个模块必须有端口的定义,必须有输入输出的端口,每个模块的功能也是需要进行逻辑描述的,总体来说,程序的书写格式是很自由的,可以分成很多个形式来写,每一行可以写多条语句,一条语句也可以分为多行来写,只有一些固定的语句是固定的格式,每一个语句和数据定义都必须在最后加分号,表示一个语句的结束,也有其自己的注释,用-对程序的任何部分作注释

24、。注释是必要的一部分,用来增加程序的可读性和可维护性。3.6.2 VHDL的特点(1) 用十分形像化地方式来表示电路的结构和行为方式(2) 借用了很多c语言的语句格式和结构 (3) 对所系统可以在多个层次上加以描述语言对设计规模不加任何限制 (4) 具有混合建模能力:一个设计中的各子模可用不同级别的抽象模型来描述 (5) 基本逻辑门、开关级结构模型均内置于语言中可直接调用的抽象模型 (6) 易创建用户定义原语(UDP,UserDesignedPrimitive)。3.6.3 自上而下的设计方法这种设计方法是现代的电子系统发展趋势,他也是现代电子系统的新型设计策略,它是从需要设计的总体要求出发,

25、这种模式已经慢慢的从以前的数学模型的设计仿真变成了数据流的设计和仿真。选择一种系统的设计方案,再完成整个系统的硬件设计。这用设计方法不仅仅体现在它的基本结构上,从描述外观特性的一个实体和描述内饰应为和结构的结构体构成,在同一个实体上可以有多个的结构体,用来方便设计的方案选择,具体还体现了系统设计的三个层次,分别为是RTL级描述与仿真、行为级描述与仿真、逻辑综合与门级仿真。所有的逻辑综合都和逻辑综合所使用的逻辑综合工具有关,而又逻辑综合工具优化后的门级逻辑电路EDIF网表。它是一种标准的接口,是一个以ASCII字符为基础中间的互相装患得格式,已经被大多数供应商所提供的CAE或CAD系统支持。那些

26、半导体制造厂就在这种网表的基础上生成了ASIC芯片的制造工艺,FPGA也是以这种网表为基础生成了用来配置其芯片的位流文件。总体来说,都是由这三种仿真贯穿了整个系统硬件设计的全部过程,这样就可以在系统设计的早期阶段中发现设计中所存在的种种问题,他有利于方案的综合选取和评价,并且与传统的自下而上的后期的仿真比较起来系统就缩短了很多的设计周期,并且利于方案的综合评价与选取。这也就是用Verilog设计最为突出的优点。3.7 Quartus软件介绍3.7.1 软件基本介绍Quartus II是一种用户评价十分高的集成开发软件,它是Altera公司提供的用于FPGA、CPLD开发集成环境,它的界面做得十

27、分的友好,使用起来十分的方便,被用户评价为了最容易学习和使用的软件,它给开发者提供了一种跟结构完全没有关系的开发环境,上面可以完成各种需要的操作,比如设计的输入,员监督饿是适配和时序的仿真等等,开发这可以在此上面十分方便的进行设计,和处理各种设计任务,进行编程,其提供者Altera更是世界上最大的可编程逻辑器件的供应商之一。Quartus II可以支持逻辑门上百万的开发,这是其他可编程逻辑器件不可比的,而且还给第三方的工具软件提供了一种无缝的链接,用户在编程和仿真上都可以十分方便,他与第三发的MATLAB相结合,就是一个DSP开发硬件系统的关键工具,它的编程快速并且直接易懂,是一个十分有发展前

28、途的开发软件。Quartus II 开发系统特点有:开发界面Quartus II的开发界面支持与其他的工具,如cadence,Exemplarlogic,Mentor Graphics等等和其他的公司提供的EDA工具接口。Quartus II系统的核心与接口没有关系Complier支持Alter公司所有可编程逻辑器件,提供了世界上的唯一和结构无关的可编程逻辑设计环境。Quartus II可以加快动态调试,缩短开发周期,是一个完全集成化的设计输入、处理与校验得功能全部集成在统一开发环境下。开发人员可以进行各种模块化的设计输入,处理和校验选项中,这样使得设计环境更加的用户化,适合开发。Quartu

29、s II软件可以支持很多种硬件描述语言,HDL设计输入选项,其中包括有VHDL、Verilog HDL和Altera自己的硬件描述语言AHDL。3.7.2 顶层模块设计在现代的数字系统设计中,从电路的在总体要求出发,划分为不同的模块进行设计,这种方法是自顶向下的设计方法,在这种设计方法中,每一个不同用处的逻辑功能都是一个功能模块,用来完成相应的逻辑功能,所有的这种设计方法都是从总体思路出发,首先将确定出顶层模块的设计,在设计出各个子模块,这根据的事总体模块中的各个功能来划分的,将模块一层一层的设计下去,形成系统的总体,最后才来进行详细的功能设计。总的来说,将系统划分成一个一个的模块是系统设计的

30、一个非常重要的步骤,这一部直接影响到了后面的设计和开发是的进度,并且对于电路的设计也有很大的影响,这也是最花时间的一步,这一步做好了,后面的工作会节约很大的时间,既可以保证各个功能模块的相应的逻辑功能,又保证了系统的最优化,这样,我们就可以用Verilog语言编程,描述出整个所设计的数字系统。4 系统模块电路设计4.1 输入模块4.1.1 时序电路产生时序电路是整个系统的心脏,提供所有模块的“动力“,本系统的时序电路需要产生三个不同频率的工作波形,分别是用于整个系统的时钟脉冲,它是怎么系统所有脉冲的源头,去抖动脉冲和键盘扫描脉冲,三个脉冲共同支撑整个系统的运作。要产生多个不同的脉冲波形来支持系

31、统的运作,可以通过一个主要的脉冲来对其进行分频,得到其他所需要的频率脉冲,可以先建立一个n位的计数器,其大小需要根据实际的电路决定,值越大所分频的次数就可以越多,得到更适合系统的频率,提供多种不一样的频率,其公式为,如果输入时钟为clk,n位的计数器就可以提供qn-1.0的脉冲,而q(0)是clk的2分频信号,以此类推,可有分成4分频的信号和8分频的信号等等,其规律变化可以用00,01,10,11,00,01来表示,根据它的变化,就可以得到我们所需要的不同的信号序列和脉冲频率。4.1.2 去抖电路去抖电路是每一个机械式的键盘都必须的一个步骤,由于机械式物理开关在按下的时候会出现触碰点来回抖动的

32、情况,使得输入的信号十分不稳定,系统会由此出现许多问题,降低了按键的灵敏度,特别是对于本设计是需要对按键灵敏度要求较高的电子密码锁,这种现象是会直接影响到系统的性能,对安全性和稳定性都是一个致命的缺点,我们在实际操作当中,只需要按键接触一次就够了,而机械式键盘会接触多次,系统内部的取样就会有误差,不能准确的采集到真正的数据,对密码进行错误的判断。所以在这种情况下就必须加上去抖电路来消除这一误差,避免发生错误的情况,在分频的到的用于消抖的脉冲信号一定要比普通的脉冲信号的频率更高,这样才能保证能够正确的消除其抖动锁产生的影响,基本上都要保持在200KHZ左右,或者更高,一般都是在扫面电路的脉冲工作

33、频率的2倍或者是以上。4.1.3 键盘扫描电路键盘扫描电路就是用来检测出用户按下了键盘上的哪一个键,使用一个扫描信号来对其进行检测,扫描信号的变化 是1110,1101,1011,0111,1110这样来进行变化,一直不停的 循环变化扫。扫描信号依次对按键上的4列进行扫描,如果扫描到的那一排正好被按下,就检测到其按键的值并保存到寄存器里面,如果扫描到的那一排没有被按下,就什么也不做,继续往下扫描,四个扫描信号依次的对应关系是1110对应第一排,1101对应第二排,1011对应的是第三排,0111对应的则是第四排,整个电路就这样一直不停的反复检测,一直这样的工作下去,为输入模块提供重要的功能。使

34、用一个扫描信号来对其进行检测,扫描信号的变化 是1110,1101,1011,0111,1110这样来进行变化,一直不停的 循环变化扫。除去数字键外还有一些功能键,比如“A”,“B”这些,按键位置的关系表如下表4.1 扫描信号与按键对应表扫描信号111011101110110111011101101110111011输出信号011110111101011110111101011110111101按键号1234567894.1.4 键盘译码电路在本系统的键盘当中,输了又0到9的数字键外,还有一些功能键,它们每一个对应一个功能,比如清除密码,确认键等。键盘的译码电路就是将检测到的按键分为不同的功能

35、进行译码从而识别用户所按下的是一个什么功能的键,将其码值保存起来用于下一个模块取用,当识别到之后再根据不同的功能做出不同的动作,达到设计所需要的功能。4.2 电子密码锁控制模块整个系统的核心模块就是控制模块了,它是协调其他模块的中心,本身需要完成一定的动作还要根据其他模块来执行动作,它的功能也是系统的一个核心,控制着密码锁的大部分功能。1、对键盘上的密码输入的响应 (1)用户输入密码,按下相应的数字键后,显示模块就开始从最右边显示,每一个数字按下后,都会出现在数码管的最右边,其余的数字就向左边移动,知道所有的数字都输入完毕。 (2)如果用户不小心输入了一个错误的数字,那么就可以通过键盘上的清除

36、键来清除所有的输入数字,并且重新输入。(3)本系统设计的是一个需要用六位数密码来解锁的电子密码锁,当用户输入的数字超过了六位数之后,系统将会把后面的数字自动删除,并且不会显示后面的数字。 2、对键盘上的功能键的响应 (1)清除键:将输入的所有数字全部清除,清除后需重新输入。 (2)激活锁键: 此键的作用是用于将设置的密码激活,用于平时的解锁。 (3)确认键:这是一个是重要的键,它会检查用户所输入的密码是不是正确的,如果正确的话才开锁,反之则需要重新输入密码。一般情况,用户用到的都是数字键和确认键,不过有时候很容易将密码输入错误,这就需要用清除键,所以清除键也是常用的一个键,激活锁键一般只是在最

37、初的时候用于设置密码用,整个键盘上的功能键和数字键构成了整个输入端,用于人与机器的交流,而内部的处理都是经过控制模块来处理的。4.3 电子密码锁显示模块4.3.1 数码管显示原理数码管的显示主要是靠数码管里面的LED灯来显示,每一个数码管里面都有8个了发光二极管,其中的7个围成一个8字,另外一个是小数点,由于发光二极管根据电压的不同施加而出现导通与阻断,这样就十分方便的被我们控制,可以发出各种不同的颜色,根据我们的需求选择颜色,各个发光二极管可以组成不同的图形或者是数字,这样我们就可以利用起来帮我么显示图形或者数字。这种数码管又分为共阴极和共阳极,下图介绍了共阴极和共阳极数码管的原理图,和他们

38、的连接方法,驱动的原理。图4.1 共阳极数码管原理图数码管的驱动是用七段译码器来将BCD码译成数码管的驱动码值,一边输入BCD码,另一端出来的就是可以用来直接驱动数码管的码值,本系统用的是共阴极的数码管,所以译码器输出的是高电平有效,这些电平信号被送到数码管当中,里面的灯就根据各位数值来进行亮或者不亮的动作,由于数码管里面的灯构成的是数字的图形,我们就可以根据哪些亮或者不亮来看到不同的数字,比如译码器输出的是,数码管上显示的就是3这个数字,一共九个数字,都需要用不同的码值来驱动,下图就是这9个数字锁对应的七段译码器的真值表。输入D C B A输出a b c d e f g字型0 0 0 00

39、0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 1 1 1 1 1 00 1 1 0 0 0 01 1 0 1 1 0 11 1 0 1 0 0 10 1 1 0 0 1 11 0 1 1 0 1 11 0 1 1 1 1 11 1 1 0 0 0 01 1 1 1 1 1 11 1 1 1 0 1 10123456789表4.2 七段译码器真值表5 系统仿真5.1 仿真软件与步骤本次来发所用的quartus ii 11.0上没有集成仿真的功能,因此仿真用的旧版本quartus ii 9.0,在此软件上可直接对编译的

40、程序进行仿真,省去了用第三方软件的种种步骤,下面是在quartus ii 9.0上的仿真。5.1.1 建立仿真文件新建一个仿真文件,下图标出的文件图5.1 建立仿真文件图5.1.2 模拟输入将需要模拟的输入信号加入到仿真文件图5.2 空白仿真文件图5.2 输入电路仿真输入信号KEY_IN3.0依序依01111011110111100111的顺序周期性循环,对键盘进行扫描。如有按键发生,键盘扫描输出信号CLK_SCAN做出反应。图5.3 输入电路仿真前图图5.4 输入电路仿真后图5.3 数码管译码仿真通过译码电路,输出7位译码,在led数码管上显示相应的数字图5.5 数码管译码仿真前图图5.6

41、数码管译码仿真图6 组装与结果演示6.1 焊接与组装本系统的制作是基于一块FPGA的开发板,核心控制与数码管和led都用的是开发板上的资源,自己制作的只有键盘输入这一个硬件模块,其实物图如下:图6.1 键盘输入实物图系统整体的实物图图6.2 键盘输入实物图6.2 结果演示系统初始状态没有设置任何密码,所以第一步应该设置好密码,当再次输入设置好的密码时,开发板上的4个led灯亮,本次测试设置密码为。开机的初始状态如图6.3图6.3 实物演示初始图然后是设置密码为图6.4 实物演示设置密码图再次输入密码,4个LED灯亮,证明成功,实际应用中驱动led的信号去开锁图6.5 实物演示结果图结论本系统是

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

43、,比如在显示模块做的比较简单,还有报警模块等,都没真正的考虑完全,这些都有待以后提高。将设计好的密码输入,开发板上的4个LED正常发光,证明系统正常,并且能够清除密码,设置密码。参 考 文 献李连华基于FPGA的电子密码锁设计.中国科技信息,2006,(01):64许琦.基于FPGA的电子密码锁的设计.科技信息,2006,(10):240-241王卫兵,刘克刚,朱秋萍.用FPGA的电子密码锁.电子技术,2005,(01):26-28赵益丹,徐晓林,周振峰.电子密码锁的系统原理.嘉兴学院,2003,15(S1):103-105陆重阳,卢东华.FPGA技术及其发展趋势.微电子技术,2003,(01

44、):5-7王晓勇.FPGA的基本原理及运用.舰船电子工程,2005,(02):82-85程耀林.FPGA的系统设计方法解析.现代电子技术,2005,(19):90-93张忠.自顶向下的FPGA设计.电子产品世界,1998,(11):33-34,72路而红.专用集成电路设计与电子设计自动化.北京:清华大学出版社,2004:162-181,239-280,329-332罗杰,康华光.两种硬件描述语言VHDL/Verilog的发展及其应用.电气电子教学学报, 2002,24(04):1-5曹建国, 王威, 王丹. 一种基于VHDL的电子密码锁的设计与实现.沈阳大学学报, 2006,18(04):77

45、-79谭会生,瞿遂春.EDA技术综合应用实例与分析.西安:西安电子科技大学出版社,2004.1-42,64-85梁丽.电子密码锁的计算机仿真设计.计算机仿真,2005,22(02):218-220苏永振,胡延霖,陈晖基于ARMm1M55800A的无人机飞控器设计J测控技术,2005,24(4):3032毛德操,胡希明嵌入式操作系统采用公开源代码和srton副螺MxScale处理器M杭州:浙江大学出版社。2004简弘伦精通Verilog皿L:Ic设计核心技术实例详解M北京:电子工业出版社,2005雄伟,等高质量的06Kbs声码器算法J清华大学学报(自然科学版),2003,43(4)449252K

46、. Benkrid, A. Benkrid and S. Belkacemi .Efficient FPGA hardware development: A multi-language approach .Journal of Systems Architectur -e, 2007(04):184-209ang TKoishida K,CupermanVtet a1A 12002400 bpscodingsuite based on MELPJIEEE Speech Coding Workshop Proceedings,200290-92hlerM AA comparison of th

47、e new2400 bpsMELP federalstandard with otherstandarCodersCInl Proceedings ofICASSP,IEEEApril1 997附:程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;-entity saomiao isport( clk: in std_logic; -扫描 kincol: in std_logic_vector(3 downto 0); - 读入列码 scanrow:out std_logic_vector(3

48、downto 0); -输出行码,扫描信号 -key: out integer range 0 to 16 sel : out STD_LOGIC_VECTOR (5 downto 0); dig : out STD_LOGIC_VECTOR (7 downto 0); suoout : out STD_LOGIC_VECTOR (3 downto 0) ); -输出键值end entity;-architecture realization of saomiao issignal scanand:std_logic_vector(7 downto 0);signal row: std_log

49、ic_vector(3 downto 0); -行扫描信号signal cntscan:integer range 0 to 3; -用于计数产生扫描信号signal counter:integer range 0 to 3;signal key: integer range 0 to 16;Signal cnt_6: STD_LOGIC_VECTOR (2 downto 0) := 000;Signal h : STD_LOGIC;Signal Clk_scan : STD_LOGIC := 0; Signal Clk_5ms : STD_LOGIC := 0;Signal Clk_scan

50、_1 : STD_LOGIC := 0; Signal Clk_50ms : STD_LOGIC := 0;Signal q : STD_LOGIC_VECTOR(47 downto 0);Signal password : STD_LOGIC_VECTOR(47 downto 0);Signal num : STD_LOGIC_VECTOR(7 downto 0);Signal m_cnt_6: STD_LOGIC_VECTOR (2 downto 0);Signal mode2: STD_LOGIC_VECTOR(1 downto 0) := 00;Signal mode3: STD_LO

51、GIC_VECTOR(1 downto 0) := 00;Signal mode4: STD_LOGIC_VECTOR(1 downto 0) := 00;beginprocess(clk)begin if rising_edge(Clk) then if cntscan=3 then cntscan=0; else cntscanrowrowrowrow=1110; -P04口为低电平 end case; end if; end process;process(clk)begin if falling_edge(clk) then if kincol=1111 then -上升沿产生行扫描信

52、号,下降沿产生读入列码 if counter=3 then -多次检测为1111,表示无按键按下 key=16; counter=0; else counter=counter+1; end if; else counter key=4;-sel = ;dig key key key key key key key key key key key key key key keykey=16;-sel = ;dig = ; end case; end if; end if; end process; scanand=row&kincol; scanrow=row; Proc_Clk_5ms :

53、process(Clk) variable cnt_clk : integer range 0 to := 0; begin if(rising_edge(Clk) then if(cnt_clk ) then cnt_clk := cnt_clk + 1; Clk_scan = 0; elsif(cnt_clk ) then cnt_clk := cnt_clk + 1; Clk_scan = 1; else cnt_clk := 0; end if; Clk_5ms = Clk_scan; end if; end process Proc_Clk_5ms;Proc_Clk_50ms : p

54、rocess(Clk) variable cnt_clk_1 : integer range 0 to 50 := 0; begin if(rising_edge(Clk) then if(cnt_clk_1 25) then cnt_clk_1 := cnt_clk_1 + 1; Clk_scan_1 = 0; elsif(cnt_clk_1 49) then cnt_clk_1 := cnt_clk_1 + 1; Clk_scan_1 = 1; else cnt_clk_1 := 0; end if; Clk_50ms = Clk_scan_1; end if; end process Proc_Clk_5

温馨提示

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

评论

0/150

提交评论