《基于FPGA的电子密码锁的设计.doc》由会员分享,可在线阅读,更多相关《基于FPGA的电子密码锁的设计.doc(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、本科毕业设计基于FPGA的电子密码锁的设计摘 要随着现代电子技术的迅猛发展,相信电子密码锁将会逐渐取代普通的机械密码锁。主要是由于电子密码锁拥有几个普通机械密码锁不可能替代的优点:保密系能好、安全度高、即防盗性能强,不需要使用钥匙、即记住密码就可开锁等等。本文主要阐述了一种基于现场可编程门阵列FPGA器件的电子密码锁的设计方法。用FPGA器件构造系统,所有算法完全由硬件电路来实现,使得系统的工作可靠性大为提高。而且由于FPGA具有现场可编程功能,当设计需要更改时,只需更改FPGA中的控制和接口电路,利用EDA工具将更新后的设计下载到FPGA中即可,无需更改外部电路的设计,大大提高了设计的效率。
2、因此,采用FPGA开发的数字系统,不仅具有很高的工作可靠性,而且升级也极其方便。此设计采用EDA技术,利用MAX+PLUS工作平台和VHDL硬件描述语言,设计了一种电子密码锁,并通过本学院的实验箱FPGA芯片实现。关键词:电子密码锁 FPGA VHDL硬件描述语言 EDA MAX+PLUSThe Design of Electronic Locks Based on FPGAWu Yaoxiao(College of Engineering, South China Agricultural University, Guangzhou , China)Abstract:With the rap
3、id development of modern electronic technology, electronic locks will gradually replace the ordinary mechanical locks. Confidential Department has the advantages of several ordinary mechanical locks can not substitute electronic locks, such as high security, anti-theft performance, and does not requ
4、ire the use of a key, Remember password can unlock. This article focuses on the design method which is based on field programmable gate array (FPGA) devices, electronic locks. FPGA device constructed system, all of the algorithms completely realized by a hardware circuit so that the operational reli
5、ability of the system can be greatly improved. And with field-programmable function, when it need to change the methods of the design, just change the FPGA control and interface circuit with using EDA tools updated design that is downloaded to the FPGA without the need to change the external circuit
6、 design, greatly improving the efficiency of the design. Therefore, the use of digital systems developed by the FPGA, not only has a very high operating reliability, but also extremely easy to upgrade. The design of the system uses the EDA technology, MAX+PLUSsoftware and VHDL hardware description l
7、anguage, designed an electronic lock, and implemented by the Institute of experimental box FPGA chip.Keywords: electronic locks FPGA VHDL hardware description language EDA MAX + PLUS II目 录1 前言11.1 EDA技术及其发展11.2 电子密码锁的国内外发展状况11.3 电子密码锁的重要性22 MAX+PLUS软件环境概述32.1 MAX+PLUS设计流程32.2 MAX+PLUS支持的硬件描述语言52.3 M
8、AX+PLUS工作过程53 硬件环境FPGA的工作原理及其结构63.1 FPGA的基本结构63.2 FPGA的设计流程74 基于FPGA电子密码锁系统的基本描述94.1 电子密码锁的系统的方案比较与选择94.2 基于FPGA的电子密码锁的设计的思路104.3 本系统设计的目的和意义105 基于FPGA电子密码锁系统的仿真与分析115.1 底层文件仿真与分析115.1.1 扫描时钟产生模块115.1.2 按键去抖模块125.1.3 键盘扫描模块125.1.4 4*4键盘编码及其按键功能的设置模块135.1.5 数码管显示模块155.1.6 比较判断和功能描述模块165.2 顶层文件仿真与分析17
9、6 结论18参 考 文 献20附 录21致 谢38华南农业大学本科生毕业设计成绩评定表1 前言1.1 EDA技术及其发展在计算机技术的推动下,20世纪末,电子技术获得了飞速的发展,现代电子产品几乎渗透于社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时又促使现代电子产品性能的进一步提高,产品更新换代的节奏也越来越快(潘松,等,2005)。电子技术发展的基本根基是微电子技术的发展及进步,它表现在大规模的集成电路的加工技术,即是指半导体工艺技术的发展上。现在的集成电路的集成度越来越高,并且其设计成本也越来越低,加上其功能和结构也已经能够实现单片电子系统的要求,因此,现代对其的
10、应用越来越广泛,它已成为电子产品的一个不可缺少的核心部分。而EDA(Electronic Design Automation)技术作为现代电子技术设计的核心,它依赖功能强大的计算机,在EDA设计工具软件平台上,对已硬件描述语言为系统逻辑描述表示方式完成的设计文件,自动地完成逻辑化简、逻辑分割、逻辑综合、结构布线以及逻辑优化和仿真测试等多项的功能,直至实现既定性能的电子综合电路的系统功能。EDA设计工作的设计者的设计工作几乎仅限于利用软件的方式,这样为设计工作带来了许多便利和资源节省。EDA技术在硬件实现方面融合了大规模集成电路制造技术、IC(Integrated Circuit)版图设计技术、
11、ASIC(Application Specific Integrated Circuit)测试和封装技术、FPGA(Field Programmable Gate Array)和CPLD(Complex Programmable Logic Device)编程下载技术、自动测试技术等;在计算机辅助工程方面结合了计算机辅助设计、计算机辅助制造、计算机辅助测试、计算机辅助工程技术以及众多计算机语言设计的概念;而在现代电子学方面则容纳了更多的内容,如电子线路设计理论、数字信号系统处理技术、嵌入式系统和计算机设计技术、数字系统建模和优化设计及微波技术等。所以,EDA技术为现代电子理论和设计表达与实现提
12、供了更多的可能性(潘松,等,2005)。在现代技术的所有领域中,许多一飞速发展的科学技术,多属于计算机辅助设计,而不是自动化设计。显然,最早进入真正的设计自动化的技术领域非电子技术莫属,这就是为什么电子技术始终处于所有科学技术发展的前列的原因之一。这也是为什么本系统的设计采用基于FPGA的EDA设计的电子密码锁。1.2 电子密码锁的国内外发展状况在当今这个智能化快速发展的科技技术时代,人们对安全性的要求也越来越高。从古至今,人们对各种各类的锁研究从未中断过,它被视为守护安全的重要盾牌。安全性高、方便使用的锁是人们的追求。随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。据有关资
13、料介绍,电子密码锁的研究从20世纪30年代就开始了,在一些特殊场所早就有所应用。这种锁是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就是为提高锁的安全性。由于电子锁的密钥量,即密码量极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。但较实用的还是按键式电子密码锁。20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积逐渐缩小,可靠性日益提高,成本也较高,是适合使用在安全性要求较高的场合,且需要有电源提
14、供能量,使用还局限在一定范围,难以普及,所以对它的研究一直没有明显进展(赵雅兴,2003)。当今智能电子密码锁发展已经到了非常高的境界,在这几年得到空前发展,无论功能性,稳定性都比较全面,在保密方面已做到人眼识别,指纹识别,人声识别基本上电影上有的现实也有。其在国内发展也较快,不管自己开发或是引进都有,在重要地方应用也较多,由于价钱比普通弹子锁较贵,早几年应用较少,现在越来越普及到平常化,未来的发展也会越来越被大众采用,由于它的功能、安全是弹子锁无法相比的。发展前境是非常大的。而在国外发达国家,其发展比较早,应用也比较广泛,电子密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于智能门禁系统
15、中,通过多种更加安全,更加可靠的技术实现大门的管理。例如,FPGA会被用于军人和另外的敏感应用程序中,攻击这些设备的一个对手的威胁是曾经存在的危险。当有能力被重新设置对开发有用的信息时,它的硬件设计的风险正在被克隆。所以,对于研究免受这种攻击而用作为多态的电路的加密钥匙或者控制其特定的钥匙在FPGA上保护必要的信息的技术设备是十分重要的(McGee.Miles E,2011)。以上这个应用相对来说也是具有一个保密性的系统,而且相对本系统比较难,但是存在着一定的联系。总之,为保证信息安全,以后的电子密码锁必须使其具有机密性、完整性、可获取性、真实性和持久性。电子密码锁在未来肯定会得到迅猛的发展和
16、更加广泛的应用,因为对于重视维护各方面信息安全的时代,它是必不可少的。相信以后在政治、经济、军事和文化服务这几方面中,电子密码锁得以更好的发展和应用。1.3 电子密码锁的重要性电子密码锁,我们从其名可以很明显地知道,它对信息的安全防护起着重要的作用。在这个科技技术快速发展的时代,人们的知识水平也越来越高,而且犯罪分子的犯罪手段和犯罪方法也越来越高超。在电子密码锁使用并不广泛的时代,有段时期犯罪分子的犯罪工具中一种称为万能钥匙出现了,它的特点是可以轻易地将普通居民住所的非电子密码锁大门“打开”,造成这些居民的财产甚至是人身安全巨大的损失。而电子密码锁就可以大大地避免这种情况的发生。电子密码锁门禁
17、系统是只有主人才知道密码,只允许主人打开。要是盗贼试图打开,撬门的方式是几乎不可行的,因为会有报警;而且完善的电子密码锁一般会限制输入次数,要是输入密码多次错误,也会发出报警信号。虽然本系统没设计报警这一模块,但是安全性要是比较高的,而且成本也较低。因此,电子密码锁在我们生活中、军事中、政治中、文化服务中都起着保护信息安全或财产安全的重要性(赵雅兴,2003)。2 MAX+PLUS软件环境概述MAX+PLUS是Altera提供的FPGA/CPLD(Complex Programmable Logic Device)开发集成环境,Altera是世界最大可编程逻辑器件供应商之一。MAX+PLUS的
18、界面友好,使用便捷,并且还被誉为业界最易用易学的EDA软件。在MAX+PLUS上可完成FPGA/CPLD设计的整个流程,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件的编程。2.1 MAX+PLUS设计流程如图1所示,其上方是MAX+PLUS编译设计主控界面,它显示了MAX+PLUS自动设计的各主要处理环节和设计流程。包括设计输入编辑、编译网表提取、数据库建立、逻辑综合、逻辑分割、适配、延时网表提取、编程文件汇编(装配)以及编程下载,一共9个步骤。图中下方的流程框图是与上面MAX+PLUS设计流程相对照的标准的EDA开发流程。首先,设计者以图形或者HDL(Har
19、dware Description Language)编辑器的方式将所需要的设计在MAX+PLUS的编辑界面输入,编辑完毕后,点击该软件环境的编译和建立按钮,则输入的设计会进入到综合或编译这一步骤中,即先经编译网表提取,在进行数据库的建立,最后对设计进行逻辑综合;在这三个步骤顺利通过以后,设计便会进入到适配器件中的调试。即对设计内容先进行逻辑分割,再通过适配器选择适应其的适配配件,最后提取延时网表,当设计都通过以上所述的步骤后,便可对其进行仿真,仿真无错误便进入到编程文件汇编中,将仿真下载到编程器中。完成对设计的仿真和调试。通过这一系列步骤,基本可以确定设计者的设计是否符合逻辑、是否正确。虽然
20、这个设计软件环境并不是十全十美,可以发现所有情况下的错误信息,但是基本可以帮助设计者意识到自己的设计缺陷和错误,并会给出相关提示,有助于设计者快速查找出错误之处,甚至编程无错误,通过仿真测试可以看出原本的设计的结果是否满足预期的设计,为设计者的设计提供更加完善的判断,更为修改设计方案提供了更多的方便(陈楚,等,2009)。CompilerNetlistExtractorDatabaseBuilderLogicSynthesizerPartitionerFitterTimingSNFExtractor编程器Assembler图形或HDL编辑器仿真综合或编译设计输入适配器件下载编译网表提取数据库的
21、建立逻辑综合逻辑分割适配延时网表提取编程文件汇编图1 MAX+PLUS编译设计主控界面2.2 MAX+PLUS支持的硬件描述语言MAX+PLUS编译器支持的硬件描述语言有VHDL(Very High Speed Integrated Circuit HDL)(支持87及97标准)、Verilog HDL及AHDL(Altera HDL)。前两种为IEEE标准支持的硬件描述语言,最后一种AHDL是Aatera公司自己设计、制定的硬件描述语言,是一种以结构描述方式为主的硬件描述语言。本系统设计用的硬件描述语言是VHDL。VHDL作为一个规范语言和建模语言,随着VHDL的标准化,出现了一些支持该语言
22、的行为仿真器。由于创建VHDL的最初目标是用于标准文档的建立和电路功能模拟,其基本想法是在高层次上描述系统和元件的行为。但到了20世纪90年代初,人们发现VHDL不仅可以作为系统模拟的建模工具,而且可以作为电路系统的设计工具,可以利用软件工具将VHDL源码自动转化为文本方式表达的基本逻辑元件的连图,即网表文件。这种方法显然对于电路自动设计是一个极大的推进。很快,电子设计领域出现了第一个软件设计工具,即VHDL逻辑综合器,它把标准VHDL的部分语句描述转化为具体电路实现的网表文件。VHDL具有与具体硬件电路和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述能力。与Verilog相比,V
23、HDL有下列优势:第一,语法比Verilog严谨,通过EDA工具自动语法检查,易排除许多设计中的疏忽。第二,有很好的行为级描述能力和一定的系统级描述能力,而Verilog建模时,行为与系统级抽象及相关描述能力不及VHDL(陈楚,等,2009)。2.3 MAX+PLUS工作过程MAX+PLUS允许来自第三方的EDIF(Electronic Design Interchange Format)文件输入,这可以与其他EDA工具进行接口。MAX+PLUS支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的工程模块(元件)进行调用,从而解决了原理图与HDL混合输入设计的问题。在设计输
24、入之后,MAX+PLUS的编译器将给出设计输入的错误报告,将错误显示出来。MAX+PLUS拥有性能良好的设计错误定位器,用于确定文本或图形设计中的错误。在进入编译网表功能块后,MAX+PLUS将从适配文件中提取SNF(Simulation Netlist Format)时序仿真文件Simulation Netlist(仿真网表文件)。SNF文件详细记录了当前适配的延时和逻辑功能信息,可用于对设计进行时序仿真。在仿真前,需要利用波形编辑器编辑一个波形激励文件。编译和仿真经检测无误后,便可以将下载信息通过MAX+PLUS提供的编程器下载到目标器件中(陈楚,等,2009)。3 硬件环境FPGA的工作
25、原理及其结构3.1 FPGA的基本结构现场可编辑门阵列FPGA同CPLD一样都是可编程逻辑器件,现场可编辑逻辑门阵列是在PAL(Programmable Array Logic)、GAL(Generic Array Logic)等逻辑器件的基础之上发展起来的。同以往的PAL、GAL等相比,FPGA的规模更大,它可以替代几十甚至几千块通用的IC芯片。这样的FPGA实际上就是一个子系统部件,这种芯片受到全世界范围内电子工程设计人员的广泛关注和普遍欢迎(袁文波,等,2007)。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的
26、缺点。FPGA一般由一个二维的逻辑块阵列、输入/输出块和连接逻辑块的互连资源这三大部分组成。通常PLD(Programmable Logic Device)器件可分为两种结构:一种是基于乘积项的PLD结构,另一种是基于查找表的结构,采用这种结构的PLD也可称之为FPGA。本质上,查找表(Look Up Table)就是一个RAM(Random Access Memory)。目前FPGA中使用4输入的LUT,所以每一个LUT可以看成是一个有4位地址线的16*1的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入R
27、AM,这样每输入一个信号进行逻辑运算就等于输入一个地址进行查找表,找出地址对应的内容,然后输出即可。一般来说,FPGA芯片主要由三部分组成,分别是输入输出单元、逻辑阵列块。对于FPGA,用户可配置的输入、输出和缓冲端口为芯片外部引脚和内部逻辑提供了一个界面,每个输入、输出端口控制一个外部引脚,并可定义为输入、输出或双向三种功能。当其定义为输入时,输入信号经Pad进入输入缓冲器,并根据配置可以直接输入,亦可以通过边沿触发器或电平敏感锁存器输入。当其定义为输出时,输出信号可以通过配置选择是否反相,是直接传输到Pad,还是通过边沿触发器寄存后传输。可以选择用输出使能信号使输出缓冲器是否为高阻状态,以
28、实现三态输出或双向I/O传输。其内部连线由一些具有可编程开关点或开关矩阵的金属线段组成,结构对称、规范,适合于建立自动有效的布局布线算法。布线通道的数目由阵列规模决定。内部连接线联通FPGA内部的所有单元,而连线的长度和工艺决定着信号再连接线上的驱动能力和传输速度。在实际开发中,设计者不需要直接选择连接线,布局布线器可自动地根据输入逻辑网表(这由综合生成)的拓扑结构和约束条件选择连接线来连通各个逻辑单元,所以,从本质上来说,布线资源的使用方法和设计的结果有密切和直接的关系。3.2 FPGA的设计流程FPGA设计大体分为设计输入、综合、功能仿真、实现、时序仿真、配置下载等六个步骤(潘松,等,20
29、05;袁文波,等,2007;赵雅兴,2003)。设计输入包括使用硬件描述语言、状态图与原理图输入三种方式。设计综合就是针对给定的电路实现功能和实现此电路的约束条件,如速度、功耗、成本及电路类型等,通过计算机进行优化处理,获得一个能满足上述要求的电路设计方案。也就是说被综合的文件时HDL文件或相应的文件等,综合的依据是逻辑设计的描述和各种约束条件,综合的结果则是一个硬件电路的实现方案,该方案必须同时满足预期的功能和约束条件。对综合来说,满足要求的方案可能有多个,综合工具将产生一个最优的或着接近最优的结果。因此,综合的过程也就是设计目标的优化过程,最后获得的结构与综合工具的工作性能有关。从广义讲,
30、设计验证包括功能与时序仿真和电路验证。仿真是指使用设计软件包对已实现的设计进行完整的测试,模拟物理环境下的工作情况。功能仿真是指仅对逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求,仿真过程中没加入时序信息,不涉及具体器件的硬件特性,如延时特性;而在布局布线后,提取有关的器件延时、连线延时等时序参数,并在此基础上进行的仿真称为后仿真,它是接近真实器件运行的仿真。设计实现是利用实现工具把逻辑映射到目标器件结构的资源中,决定逻辑的最佳布局,选择逻辑与输入输出功能连接的布线通道进行连线,并产生相应的文件。其通常分为转换、映射、布局与布线、时序提取和配置共5个步骤。在设计实现的过程中,在映
31、射后需要对一个设计的实际功能的延时和估计的布线延时进行时序分析;而在布局布线后,也要对实际布局布线的功能块的延时和实际布线延时进行静态时序分析。从某种程度讲,静态时序分析可以说是整个FPGA设计中最重要的步骤,它允许设计者详尽地分析所有关键路径并得出一个有次序的报告,而且报告中含有其他调试信息。静态时序分析器可以用来检查设计的逻辑和时序,以便计算各通路性能,识别可靠的踪迹,检测建立和保持时间的配合。时序分析不要求用户产生输入激励或测试矢量。而下载是在功能仿真与时序仿真正确的前提下,将综合后形成的位流下载到具体的FPGA芯片中,也叫芯片配置。FPGA设计也有两种配置形式:直接由计算机经过专用下载
32、电缆进行配置;由外围配置芯片进行上电时自动配置。将位流文件下载到FPGA器件内部后进行实际器件的物理测试即为电路验证,当得到正确的验证结果后就证明了设计的正确性。电路验证对FPGA投片生产具有较大的意义。以下对上述某些部分进行详细分析,其中,在系统设计之前,首先要进行的是方案论证、系统设计和FPGA芯片选择等准备工作。系统工程师根据任务要求,如系统的指标和复杂度,对工作速度和芯片本身的各种资源、成本等方面进行权衡,选择合理的设计方案和合适的器件类型。一般都采用自顶向下的设计方法,把系统分成若干个基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接使用EDA元件库
33、为止。还有RTL级(RegisterTransferLevel,寄存器传输级)指不关注寄存器和组合逻辑的细节(如使用了多少个逻辑门、逻辑门的连接拓扑结构等),通过描述数据在寄存器之间的流动和如何处理、控制这些数据流动的模型的HDL设计方法。RTL级比门级更抽象,同时也更简单和高效。RTL级的最大特点是可以直接用综合工具将其综合成为门级网表,其中RTL级设计直接决定着系统的功能和效率。RTL级仿真也称为功能(行为)仿真,或是综合前仿真,是在编译之前对用户所设计的电路进行逻辑功能验证,此时的仿真没有延迟信息,仅对初步的功能进行检测。仿真前,要先利用波形编辑器和HDL等建立波形文件和测试向量即将所关
34、心的输入信号组合成序列,仿真结果将会生成报告文件和输出信号波形,从中便可以观察各个节点信号的变化。如果发现错误,则返回设计修改逻辑设计。虽然功能仿真不是FPGA开发过程中的必需步骤,但却是系统设计中最关键的一步。门级仿真也称为综合后仿真,综合后仿真检查综合结果是否和原设计一致。在仿真时,把综合生成的标准延时文件反标注到综合仿真模型中去,可估计门延时带来的影响。但这一步骤不能估计线延时,因此和布线后的实际情况还有一定的差距,并不十分准确。目前的综合工具较为成熟,对于一般的设计可以省略这一步,但如果在布局布线后发现电路结构和设计意图不符,则需要回溯到综合后仿真来确认问题之所在。在功能仿真中介绍的软
35、件工具一般都支持综合后仿真。实现是将综合生成的逻辑网表配置到具体的FPGA芯片上,将工程的逻辑和时序与器件的可用资源匹配。布局布线是其中最重要的过程,布局将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件结构上,并且往往需要在速度最优和面积最优之间作出选择。布线根据布局的拓扑结构,利用芯片内部的各种连线资源,合理正确地连接各个元件。也可以简单地将布局布线理解为对FPGA内部查找表和寄存器资源的合理配置,布局可以被理解挑选可实现设计网表的最优的资源组合,而布线就是将这些查找表和寄存器资源以最优方式连接起来。目前,FPGA的结构非常复杂,特别是在有时序约束条件时,需要利用时序驱动的引擎
36、进行布局布线。布线结束后,软件工具会自动生成报告,提供有关设计中各部分资源的使用情况。由于只有FPGA芯片生产商对芯片结构最为了解,所以布局布线必须选择芯片开发商提供的工具。时序仿真是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规(即不满足时序约束条件或器件固有的时序规则,如建立时间、保持时间等)现象。时序仿真包含的延迟信息最全,也最精确,能较好地反映芯片的实际工作情况。由于不同芯片的内部延时不一样,不同的布局布线方案也给延时带来不同的影响。因此在布局布线后,通过对系统和各个模块进行时序仿真,分析其时序关系,估计系统性能,以及检查和消除竞争冒险是非常有必要的(潘松,等,2005;袁
37、文波,等,2007;赵雅兴,2003)。4 基于FPGA电子密码锁系统的基本描述4.1 电子密码锁的系统的方案比较与选择方案一:采用数字电路控制。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制将密码保存在JK触发器中与输入密码通过比较器比较,判断结果是否相符合。采用数字电路设计的方案好处就是设计简单,但控制的准确性和灵活性差,故不采用。 方案二:采用单片机作为控制核心。选用单片机作为系统的核心部件实现控制与处理的功能。单片机具有资源丰富、速度快、编程容易等优点。利用单片机内部的随机存储器RAM和只读存储器ROM(Read Only Memory)及其引脚资源,外接液晶显示
38、LCD(Liquid Crystal Display)键盘输入等实现数据的处理传输和显示功能。方案三:采用现场可编程逻辑门阵列FPGA器件作为控制核心。选用现场可编程逻辑门阵列FPGA器件实现控制和处理功能。利用FPGA器件实现对密码输入电路、密码锁控制电路、密码显示电路的控制。用FPGA器件构造系统,所有算法完全由硬件电路来实现,使得系统的工作可靠性大为提高。综上所述,可知数字电路设计控制的准确性和灵活性差;以单片机为主要器件,其编码器与解码器的生成为软件方式。在实际应用中,由于程序容易跑飞,系统的可靠性能较差(李连华,2006)。而基于现场可编程逻辑门阵列FPGA器件的电子密码锁,由于FP
39、GA具有现场可编程功能,通常它都有着上万次的重写次数,也就是说现在的硬件设计和软件设计一样灵活、方便。当设计需要更改时,只需更改FPGA中的控制和接口电路,利用EDA工具将更新后的设计下载到FPGA中即可,无需更改外部电路的设计,大大提高了设计的效率。故本系统设计采用方案三。4.2 基于FPGA的电子密码锁的设计的思路由对基于FPGA的电子密码锁各位研究者的基本设计的分析(侯静,2012;李连华,2006;王卫兵,等,2005;王心水,2011;许琦,2006),并且结合自身对该系统的认识和社会的需要,本人总结出了以下的设计思路:(1)对时钟进行分频,为扫描按键和扫描数码管配置合适的扫描时钟。
40、(2)利用4*4按键,为密码输入和功能控制端口。(3)为按键进行消除抖动的动作。(4)对按键进行编码。(5)控制LED(Light Emitting Diode)显示,对按键编码进行字型译码,让密码在LED上显示一下便将其隐藏。(6)密码输入三次还不正确就报警并锁定,在三次之内输入正确便开锁。 以下是本系统的设计思路图:Clk扫描控制信号分频键盘扫描、数码管扫描时钟6个LED4*4键盘消除抖动按键编码译码功能控制顶层文件开锁输出上锁输出报警输出功能信号输出图2 基于FPGA的电子密码锁系统的设计思路图4.3 本系统设计的目的和意义 由于本系统是基于FPGA器件的硬件系统。它在抵御攻击、密码的安
41、全存储、运算速度等方面可以提供比单纯的软件加密系统更优质的服务。其可通过系统硬件资源安全,便捷地对上层应用提供包括密码运算、密钥存储、随机数生成在内的诸多安全服务。FPGA都有着上万次的重写次数,也就是说现在的硬件设计和软件设计一样灵活、方便。而且FPGA具有现场可编程的功能,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物,是一种超大规模集成电路,具有对电路可重配置能力。即当设计需要更改时,只需修改FPGA中的控制和接口电路,利用EDA工具将更新后的设计下载到FPGA中即可,无需更改外部电路的设计,大大提高了设计的效率,而且又为我们的需求提供便捷。通过本次系统,我可以重新再
42、次接触到EDA这门知识,加深了我对FPGA的理解和认识,更加深了我对FPGA开发软件的使用,即对MAX+PLUS软件环境也更加熟悉,不再像以前那样一知半解。而且,更加清楚了电子密码锁的架构及其对我们生活的重大意义,积累实践经验,为以后的学习或工作奠定了一定的基础。5 基于FPGA电子密码锁系统的仿真与分析5.1 底层文件仿真与分析5.1.1 扫描时钟产生模块 如下所示,图3是扫描时钟的电路仿真图;图4是其仿真波形图,从中可看到clk是输入口,klclk_scan是扫描时钟,为数码管和LED的扫描提供合适的扫描时钟,它是对clk的100分频。 图3 扫描时钟的仿真电路图图4 扫描时钟的仿真波形每
43、一次clk脉冲上升沿count累积一次,当count时累积到一百次的时候,klclk_scan相应从0跳跃为1或者从1跃变为0,然后count清零,继续下一轮的计数。5.1.2 按键去抖模块如图5为键盘按键弹跳导致按键输出产生错误的波形图,所以为了使按键信息正确地输出,即消除因为按键抖动而引起输出不必要的错误和保证键入信息通过传输不出错,按键去抖电路是必须的。图6,图7分别是按键去抖模块的逻辑电路图和波形图。图5 键盘按键弹跳导致产生的错误波形图图6 键盘按键去抖模块逻辑电路图 图7 键盘按键去抖的波形图如图7,keyin为按键输入信号,clk为时钟输入信号,在每一次脉冲上升沿,keyl就对键
44、入的低电平进行计数,知道按键信号输入为高电平,即按键按钮已被松开;同理keyh是对按键信号输入的高电平进行计数,直至有按键按下,此时其被清零。5.1.3 键盘扫描模块如图8所示为键盘扫描模块的仿真电路图;图9为其波形仿真图,由图可知该模块主要完成对键盘按键的扫描,以确定究竟是哪个按键被按下。键盘扫描模块也可谓为本系统的重要组成部分之一,它是后面判断和功能描述模块的判断依据,其掌控着密码输入的控制以及对应的输出。首先,逐一设定键盘列的值,之后再逐行扫描,通过判断行信号的低电平和列信号的低电平的交点来确定究竟是哪个按键被按下。图8 键盘扫描模块的仿真电路图图9 键盘扫描模块的仿真波形如图9,key
45、clk_scan为键盘扫描信号,keyout在此为按键去抖后的按键输入信号,keyr4 、keyr3、 keyr2、 keyr1为按键行信号,即用来输入哪一行有按键被按下的信息,而keycol为按键列扫描信号,与行信号结合起来判断出究竟是哪个按键被按下。keynum是用来组建按键按键行信息和按键列信息的输出按键信号,即可直接观察输出信号keynum来判断哪个按键被按下。5.1.4 4*4键盘编码及其按键功能的设置模块如图10所示为4*4键盘编码及其按键功能的设置模块的仿真电路图;图11、图12和图13为其波形仿真图,其中图11是数字键按下时的波形仿真图,图12是功能键按下时的波形仿真图,图13
46、是其他未定义键按下时的波形图。4*4键盘编码及其按键功能的设置模块也是本系统中不可缺少的重要部分。因为通过对键盘编码,才会知道其代表的密码数值,这样才会给予这个系统的密码一个编号并且用于实际的安全系统中。编码固然重要,但是其按键功能设置也是不可忽视的,功能按键的加入会使密码锁的系统的功能更加完善。图10 4*4键盘编码及其按键功能的设置模块的仿真电路图 图11 4*4键盘编码及其按键功能的设置模块数字键按下时的仿真波形如图11,keyclk_scan为键盘扫描信号,fun_sign是功能键按下判断的标志,fun_sure是代表功能键确定是否被按下的标志,fun_clear是功能键是否清除此刻所
47、输入的密码的标志,fun_change则代表是否重新设置密码的标志。由上图可知,当键盘输入信号的按键信息keynum为数字键输入时,keyvalue直接将键值显示出来,同时fun_sign、fun_sure、fun_clear、fun_change的输出信号都为高电平,代表无功能键输入。图12 4*4键盘编码及其按键功能的设置模块功能键按下时的仿真波形如图12,当键盘输入信号的按键信息keynum为功能键输入时,keyvalue直接将键值显示出来,并且fun_clear和fun_sign的值变为0,代表有功能键输入,并且该功能键实现的功能是清除现有输入密码的功能,而fun_sure、fun_change的输出信号都为高电平,代表无这两个功能键输入。图13 4*4键盘编码及其按键功能的设置模块无定义键按下时的仿真波形 如图13,当键盘输入信号的按键信息keynum为其他键输入时,keyvalue直接显示出E,其实是代表着输入键错误(Error),即没有实现任何输入,同时fun_sign、fun_sure、fun_clear、fun_change的输出信号都为高电平,代表无功能键输入。5.1.5