基于FPGA的电子密码锁电路设计.docx
《基于FPGA的电子密码锁电路设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的电子密码锁电路设计.docx(37页珍藏版)》请在冰豆网上搜索。
![基于FPGA的电子密码锁电路设计.docx](https://file1.bdocx.com/fileroot1/2023-2/2/171631b6-50dd-4b62-9617-f7a66fcb73f6/171631b6-50dd-4b62-9617-f7a66fcb73f61.gif)
基于FPGA的电子密码锁电路设计
四川师范大学成都学院专科毕业设计
基于FPGA的电子密码锁电路设计
学生姓名
XXX
学号
XXXXXXXXXXXX
所在系
通信工程系
专业名称
计算机通信
班级
09级计算机通信班
指导教师
XXXXXXX
四川师范大学成都学院
二○一二年五月
基于FPGA的电子密码锁电路设计
学生:
杨琴指导教师:
张莹
内容摘要:
本文主要介绍了一种运用可编程逻辑器件(FPGA)技术来编程实现电子密码锁的设计方法。
在整个系统设计实现中采用FPGA器件作为控制器,所有算法完全由硬件电路来实现,使得系统的工作可靠性大大提高。
该密码锁具有的功能是可以设置4位密码,通过数字键盘进行输入并在数码管上进行显示。
同时,该密码锁还设计了一个万能密码,在忘记了密码的情况下可使用万能密码来开锁。
本文的内容主要包含以下几个部分:
EDA技术的介绍,电子密码锁总体设计,系统详细设计,系统仿真和结束语。
文中重点介绍了应用EDA技术和硬件描述语言,在QuartusII工作平台上完成电子密码锁系统总体设计的详细过程。
通过时序仿真,验证了整个设计的正确性以及系统的完整性。
关键词:
电子密码锁可编程逻辑器件EDA技术
CircuitDesignofDigitalLockBasedonFPGA
Abstract:
ThearticlemainlyintroducethetechnologyofdesigningadigitallockwiththeutilityofFPGA.Allthecalculationaretotallyfinishedbythehardware,basedontheFPGA,soastoimprovethereliabilityofthesystem.WejustchangethecontrolandinterfacecircuitofFPGAwhenthereissomethingneededtochangeinthedesigningbecauseofthefieldprogrammefunction.It’stremendouslyincreasetheefficiencybecauseweonlyneedtodownloadthenewestdesignintotheFPGAbythehelpofEDAwithoutmodifyingtheexternalcircuitdesign.Therefore,FPGAwillnotonlyimprovethereliability,buttheconveniencesofpromotion.Therearefourpasswordfordigitallockandwecanalsosetauniversalpasswordincaseofforgettingthepassword.
Thearticlemainlyincludesseveralparts:
TheintroductionofEDA,theoveralldesignofdigitallock,thedesignindetailofsystem,emulationandconclusion.ThroughtheintroductionofEDA,weknowthesoftwarerequirementofproductionthedigitallock.Intheoveralldesignanddetaildesignofdigitallock,itintroduceindetailthetheoryandthesystemdesigning.ThearticledesignedadigitallockandmadeitbeinformwithFPGA.
KeyWord:
EDAverallPasswordDigitalLockChip
.
基于FPGA的电子密码锁电路设计
前言
当今人们对物质的积累越来越多,觉得要如何有效的保护好自己的财产,这已成为了全社会的问题,人们对锁的要求越来越高,既要安全性很高,又要能很好的防盗,又要能让他使用很方便,这也导致了电子行业的蓬勃发展。
现今的电子锁非常入人们的眼中,市场上就出现了不同款型的电子密码锁。
但在实际应用中,密码锁用不同的器件来构造的系统,就会出现不同的程序故障。
本文的电子密码锁是运用FPGA来编程的,所有的运算方法完全由硬件电路来实现,这使得密码锁的工作可靠性大大的提高了,而且当想改变电子密码锁的程序设计时,只需要改变FPGA中的控制电路和接口电路,用EDA工具将更换后的设计码下载导入FPGA中就行了,没有必要改变外部电路的设计,很大程度的提高了电子密码锁设计的效率。
为了让电子密码锁像现在的智能手机一样,能随时更改系统,下载运用软件,方便人们的使用,本文采用EDA技术,利用QuartusⅡ工作平台硬件描述语言,设计一种电子密码锁,并通过用FPGA芯片实现。
用VHDL语言使用自顶向下的方法对系统进行了描述,并在FPGA芯片上实现。
设计充分利用了FPGA的资源可编程特性,可高效率的对系统进行升级与改进。
设计的密码锁可设置任意密码,比一般的四位密码锁具有更高的安全可靠性,因此,采用FPGA开发的数字系统,不仅具有很高的工作可靠性,其升级与改进也极其的方便,应用前景十分宽广。
1设计背景知识介绍
EDA技术是以计算机为工作平台,用相关的EDA开发软件技术为工具,以大规模可编程逻辑器件(包括CPLD,FPGA,EPLD等)为设计载体,以硬件描述语言[1](HardwareDescriptionLanguage,HDL)为系统逻辑描述的主要表达方式,自动完成系统算法和电路设计,最终形成电子系统或专用集成芯片的一门新技术。
EDA技术研究的对象是电力或系统芯片设计的过程,可分为系统级、电路级和物理级三个层次。
EDA设计领域和内容包括从低频、高频到微波,从线性到非线性,从模拟到数字,从可编程逻辑器件、通用集成电路到专用集成电路的电子自动化设计。
1.1常用EDA软件介绍
EDA软件可根据其复位的对象分为:
用于电路级设计、分析的EDA软件,如PSpice和Multisim8等;用于数字电子电路设计的EDA软件,如QuartusⅡ等;用于射频电子电路设计的EDA软件,如ADS等;用于电路板设计及电路仿真的EDA软件,如Protel,EWB等。
EDA软件根据其设计模块大致分为设计输入编辑器、仿真器(Simulator)、HDL综合器(Synthesizer)适配器(PlaceandRouting,P&R)或布局布线器、下载器五大部分。
EDA软件还有两种分类方法:
一种是按公司类别进行分类,另一种是按功能进行分类。
若按公司类别可分为两类:
一类是EDA专业软件公司的EDA软件,另一类是PLD厂商为了销售其产品而开发的EDA软件。
若按功能分类,EDA软件可分为:
集成的FPGA/CPLD开发软件、综合类软件、仿真类软件、面向ASIC设计的软件。
集成的FPGA/CPLD开发软件由半导体公司提供,基本上可以完成设计输入(,基本上可以完成设计输入(状态图、原理图或文本)→仿真→综合→布线→下载到器件等PLD开发流程中的所有工作。
其优势是功能全且集成化,可以加快动态调试,缩短开发周期;缺点是在综合和仿真环节与专业软件相比,都不是最优秀的。
综合类软件的功能是对设计输入进行逻辑分析、综合和优化,将硬件描述语句(通常是系统级、寄存器级的描述语句)翻译成最基本的与、或、非门的连接关系(网表),导出给FPGA/CPLD厂商的软件布线。
为了优化设计,在进行较复杂的设计时,基本上都是用这些专业的逻辑综合软件,如ynplicity,FPGAexpress、FPGACompilerⅡ等。
仿真类软件的功能是对设计进行模拟仿真,包括布局布线前的“功能仿真”和后端的包含了门延时、布线延时等的“时序仿真”。
如Modelsim,Cadence公司的NC-Verilog/NC-VHDL/NC-SIM等。
面向ASIC设计的软件包括数字电路设计、模拟电路设计、数模混合设计、系统设计、仿真验证等电子设计的许多领域。
这些软件对硬件环境要求高,,一般的运行平台要求是工作站、UNIX或Linux操作系统,其功能齐全、性能优良,一般由专门开发EDA软件的软件公司提供,如Cadence、MentorGraphics和Synopsys等都有其特色工具。
1.2FPGA硬件设计描述
FPGA出现在20世纪80年代中期,与阵列型PLD有所不同,FPGA由许多独立的可编程逻辑模块组成,用户可以通过编程将这些模块连接起来实现不同的设计。
FPGA具有跟高的集成度、更强的逻辑实现能力和更好的设计灵活性。
FPGA器件具有高密度、高速率、系列化、标准化、小型化、多功能、低功耗、低成本,设计灵活方便,可无限次反复编程,并可现场模拟调试验证等特点。
FPGA由可编程逻辑块(CLB)(主要由逻辑函数发生器、触发器、数据选择器等电路组成)、输入/输出模块(IOB)(主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成,IOB控制一个引脚,它们可被配置为输入、输出或双向I/O功能)及可编程互连资源(PIR)(由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现各种电路的连接,从而实现FPGA内部的CLB和CLB之间、CLB和IOB之间的连接)等3中可编程电路和1个SPAM结构的配置存储单元组成。
CLB是实现逻辑功能的基本单元,它们通常规则地排列成一个阵列,散布于整个芯片中;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部引脚的接口,它通常排列在芯片的四周;可编程互连资源(PIR)包括各种长度的连接线段和一些可编程连接开关,它们将各个CLB之间或CLB与IOB之间以及IOB之间连接起来,构成特定功能的电路。
由于LUT主要适合SRAM工艺生产,所以目前大部分FPGA都是基于SRAM工艺的,而基于SRAMA工艺的芯片在掉电后信息就会丢失,一定需要外加一片专用配置芯片,上电时由这个专用配置芯片把数据加载到FPGA中,然后FPGA就可以正常工作,由于配置时间很短,不会影响系统正常工作。
也有少数FPGA采用烦熔丝或Flash工艺,对这种FPGA,就不需要外加专用的配置芯片了。
FPGA不像PLD那样受结构的限制,它可以靠门与门的连接来组成任何复杂的逻辑电路,更适合实现多级逻辑功能。
FPGA的编程单元基于SRAM结构,从理论上讲,具有无限次重复编程的能力。
现在最新的FPGA,具有很高的逻辑密度、很丰富的特性和很高的性能,如XilinxVirtex系列中的部分器件,可提供八百万个“系统门”(相对逻辑密度)。
这些先进的器件还提供诸如内建的硬连线处理器(如IBMPowerPC)、大容量存储器、始终管理系统等,并支持多种最新的超快速器件至器件(device-to-device)的信号技术。
FPGA应用范围广泛,从数据处理和存储,到仪器仪表、数字信号处理等都有使用。
目前市场上有三种FPGA编程技术:
SRAM、反熔丝、Flash.其中,基于SRAM工艺的FPGA是迄今为止应用范围最广的架构,主要是因为它快速且具有可重复编程能力,而基于反熔丝工艺的FPGA只有一次可编程(OneTimeProgrammable,OTP)能力基于Flash工艺的FPGA经常带来一些其他的额外成本,包括启动PROMS支持安全和保密应用的备用电池等。
基于Flash和反熔丝工艺的GPGA没有这些隐含成本,因此可保证较低的总系统成本。
●基于SRAM工艺的FPGA
这类FPGA是基于SRAM结构的可再配置型器件,上电时要将配置数据读入片内SRAM中,配置完成就可进入工作状态。
掉电后SRAM中的配置数据丢失,FPGA内部逻辑关系随之消失。
这类FPGA可以反复使用。
●基于反熔丝工艺的FPGA
这类FPGA内部具有反熔丝阵列开关,其逻辑功能的定义由专用编辑器根据设计实现所给出的数据文件,对其内部的反熔丝阵列进行烧录,从而使器件实现星月的逻辑功能。
这类器件的缺点是只能一次性编程;优点是具有高抗干扰性和低功能,适合于要求高可靠性、高保密性的定性产品。
●基于Flash工艺的FPGA
这类FPGA中集成了SRAM和非易失性EEPROM两类存储结构。
其中SRAM用于在器件正常工作时对系统进行控制,而EEPROM则用来装载SRAM.由于这类FPGA将EEPROM集成在基于SRAM工艺的现场可编程器件中,因而可以充分发挥EEPROM中,因此不需要片外的配置芯片,有助于降低系统成本,提到设计的安全性。
FPGA设计流程包括系统设计和设计实现,系统方案完成之后即进入设计实现阶段的工作,他以系统方案为输入,进行RTL级描述、功能仿真(RTL级仿真)、逻辑综合、布线前门级仿真、适配(布局布线)、时序仿真(布线后门级仿真)、时序分析、器件编程、系统验证一系列流程的处理才能完成FPGA芯片的设计,其设计流程如图1.2-1所示。
需要说明的是,如果仿真验证不对或者某一步有错,就要返回修改。
有时要反复修改,经过多次这样的迭代才能完成最后的设计。
对于FPGA的设计而言,只考虑系统级、算法级、RTL级、门级4个层次的行为域描述和结构域描述即可。
上述的FPGA系统设计中的系统实际上是指系统级和算法级,而“RTL级描述”主要是指RTL级行为域的描述。
在门级,由综合工具产生的门级网表来描述。
图1.2-1系统设计流程
1.3QuartusⅡ综述及设计流程
QuartusⅡ是Altera公司在20世纪初推出的FPGA/CPLD新一代开发软件,是Altera前一代FPGA/CPLD集成开发环境MAX+PLUSⅡ的更新换代产品,其特点是功能强大、界面简单易懂、使用方便。
适合于大规模逻辑电路设计,其设计流程概括为设计输入、设计编辑输入法,VHDL、VerilogHDL和AHDL的文本编辑输入法,符号编辑输入法,以及内存编辑输入法。
QuartusⅡ软件集成了Altera的FPGA/CPLD开发流程中所涉及的所有工具和第三方软件接口。
QuartusⅡ与MATLAB和DSPBuilder结合可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA工具,与SOPCbuider结合,可实现SOPC系统开发。
QuartusⅡ软件的特点:
支持多时钟定时分析、LogicLock基于块的设计、SOPC(可编程片上系统)、内嵌SignalTapⅡ逻辑分析器、功率估计器等高级工具;易于引脚分配和时序约束;强大的HDL综合能力;包含有MAX+PLUSⅡ的GUI,且易于MAX+PLUSⅡ的工程平稳地过渡到QuartusⅡ开发环境;对于Fmax的设计具有很好的效果;支持的器件种类众多;支持Windows、Solaris、HP-UNIX和Linux等多种操作系统;第三方工具如综合、仿真等的链接。
2电子密码锁系统总体设计
2.1电子密码锁系统设计要求
设计一个具有较高安全性和较低成本的通用电子密码锁,具体功能要求如下:
数码输入:
每按下一个数字键,就输入一个数值,并在显示器上的显示出该数值,同时将先前输入的数据依序左移一个数字位置。
数码清除:
按下此键可清除前面所有的输入值,清除为“0000”。
密码更改:
按下此键时会将目前的数字设定成新的密码。
激活电锁:
按下此键可将密码锁上锁。
解除电锁:
按下此键会检查输入的密码是否正确,密码正确即开锁。
数字位退格:
按下此键可清除最低的数字位,并使各位向右移。
万能密码:
为了怕使用者忘记密码,系统可在设计时考虑设计一个万用密码,不论原来密码是什么,只要输入万能密码就能开锁。
2.2方案的提出
方案一:
采用数字电路控制。
虽然采用数字密码锁电路的好处是设计简单,但是由于其是纯电路实际,在系统运行时,延时会比较严重。
方案二:
通过单片机实现,现在一种新的方案就是采用一种是用以AT89S51为核心的单片机控制方案。
虽然有灵活的设计和丰富的IO端口,但是单片机设计的缺点是程序运行时容易出现跑飞现象。
通过以上比较显然单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,但是由于所学知识不能将其有效的应用,现有环境不能满足,而且单片机的密码锁有一定的不足之处,在运行时程序有时会产生PC指针错误,还有基于现在所学知识的应用,所以基于以上比较提出了第三种方案。
方案三:
利用FPGA设计电子密码锁,其成本低,设计方便(有相应的开发板),现有资源充足,实现比较容易,更利于系统的维护改进和升级,可靠性更高,更安全。
通过以上比较描述,本设计采用基于FPGA的电子密码锁设计方案。
2.3系统设计和各功能模块的描述
本系统为一个简洁型的电子密码锁,该系统以开发板为主要核心,采用4*4的键盘,前10个键为数字键,8个数码管显示密码输入,后面的按键实现电子密码锁的各个功能,总体外观如图2.3-1所示。
图2.3-1电子密码外观图
上图为在实验开发板上实现,使用开发板有十六个按键,分别对应数字0到9和各个功能键,LED显示为开发板上电子密码锁主要由四个部分组成:
数字密码输入电路、密码锁控制电路、密码锁显示电路和报警模块。
也就是说,设计分为四个大的功能模块。
图2.3-2为数字电子密码功能模块图。
密码锁输入电路包括时序产生电路、键盘扫描电路、键盘弹跳消除电路、键盘译码电路等几个小的功能电路。
模块的功能是:
将用户通过键盘输入的数字密码,确认密码是否输入,产生电路中使用的三种不同频率的工作脉冲波形,即系统时钟脉冲、弹跳消除取样信号和键盘扫描信号;为了加强按键按下的准确性加了去抖模块。
密码锁控制电路包括按键数据的缓冲存储电路,密码的清除、变更、存储、激活电锁电路(寄存器清除信号发生电路),密码核对(数值比较电路),解锁电路(开/关门锁电路)、报警电路等几个小的功能电路。
模块功能:
用于密码的更改,密码的清除,以及对密码锁的工作状态更改,对输入密码次数的计数功能,还有就是更智能化,更符合人们的思维,按键的时候都是习惯看输入数字的移位情况。
图2.3-2数字电子密码功能模块图
密码显示电路主要将显示数据的BCD码转换成相对应的编码。
如,若选七段数码管显示电路,主要将待显示数据的BCD码转换成数码器的七段显示驱动编码。
通过上面所描述的系统结构可知,通用的电子密码锁主要由三个部分组成:
数字密码输入电路、密码锁控制电路和密码锁显示电路。
从图2.3-2可知:
通过时序产生键盘扫描信号,由键盘输入密码或者功能按键,当然在这过程中要经过按键去抖,最后将所输入的键盘值译码得到具体的数字或者功能键;将输入值输入键盘数据存储器,在这里面可以将键盘值存储或者清除,再经过比较电路,比较输入值与原来存储的是否一致,如果一致则开启锁,如果不一致则报警(在报警后可以通过输入万能密码或者断电复位等可以解决);在经过存储电路时,同时将所输入的值通过LED显示出来,显示将通过BCD译码电路,将所获取的值显示在LED数码管上。
3系统详细设计
3.1电子密码锁输入模块
3.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分频脉冲信号;Q(5DOWNTO4)取得的是一个脉冲波形序列,其值依00-01-10-11-00-01周期性变化,其变化频率为CLK的32分频。
我们利用以上规律即可得到各种我们所需要频率的信号或信号序列。
CLK_1K:
时钟信号
SIGNALK_SRCLK:
STD_LOGIC;--键盘输入采样时钟
SIGNALK_POS:
STD_LOGIC_VECTOR(1DOWNTO0);
--按键位置信号
SIGNALKSCAN:
STD_LOGIC_VECTOR(3DOWNTO0);--键盘扫描信号
KEYIN:
STD_LOGIC_VECTOR(2DOWNTO0);--按键输入信号
KSRCLK:
STD_LOGIC;--键盘输入采样时钟
3.1.2按键消抖电路
由于设计采用的矩阵式键盘是机械开关结构,因此在开关切换的瞬间会在接触点出现信号来回弹跳的现象。
弹跳现象产生的原因是,虽然每次只是按下按键一次然后放掉,然而实际产生的按键信号却不知跳动一次,经过取样信号的检查后,将会造成误判断,以为键盘按了两次。
图3.1.2-1弹跳现象产生错误的抽样结果
图3.1.2-2调整抽样频率后得到的抽样结果
因此必须加上弹跳消除电路,避免误操作信号的发生。
特别要注意的是,弹跳消除电路所使用的脉冲信号的频率必须比其他电路使用的脉冲信号的频率更高;通常将扫描电路的工作频率定在100KHz左右。
(图见附录1)
按键消抖部分是由两个小的模块集成为一个去抖电路的,所以在此分开介绍此两个模块。
Dcfq模块:
dcfq模块的主要程序(图见附录2)。
此段程序作用是判断输入信号是否有效,如有效则输出,无效清零。
Debouncing模块主要程序(图见附录3)
这段程序的作用就是通过对信号的分频处理,从而将按键产生的不规则信号转换为便于识别的按键信号,达到消除抖动的目的。
3.1.3键盘扫描电路
扫描电路的作用是用来提供键盘扫描信号的,扫描信号变化的顺序依次为1110-1101-1011-0111-1110……依序的周而复始。
每扫描一排按键就检查一次是否有键被按下,如果这排没有按键被按下就忽略,反之,如果出现被按下的键则立刻进行按键编码的动作,且将编码的结果储存于寄存器中。
--扫描信号发生器(图见附录4)
键盘扫描电路的作用是提供键盘扫描信号,扫描信号变化的顺序为1110--1101-1011-0111-1110……周而复始。
扫描信号0111代表扫描的为*、0、#这一排按键,当*这个按键被按下时,由CSR[1..0]读出的值为11,按键位置的数码关系如表3.1.3-1所列。
表3.1.3-1按键位置的数码关系
扫描信号CSR[1..0]
00
00
00
01
01
01
10
10
10
11
11
11
键盘输出信号SEL[3..0]
0011
0101
0110
0011
0101
0110
0011
0101
0110
0011
0101
0110
按键号
1
2
3
4
5
6
7
8
9
*
0
#
3.1.4键盘译码电路
在密码输入电路中,按键又分为数字按键和文字