毕业设计论文基于FPGA电子密码锁设计_第1页
毕业设计论文基于FPGA电子密码锁设计_第2页
毕业设计论文基于FPGA电子密码锁设计_第3页
毕业设计论文基于FPGA电子密码锁设计_第4页
毕业设计论文基于FPGA电子密码锁设计_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

摘要伴随电子技术的发展,具有防盗报警等功能的电子密码锁替代密码量少、安全性差的机械式密码锁已是必然趋势。电子密码锁与一般机械锁相比,具有许多独特的长处:保密性好,防盗性强,可以不用钥匙,记住密码即可开锁等。目前使用的电子密码锁大部分是基于单片机技术,以单片机为重要器件,其编码器与解码器的生成为软件方式。在实际应用中,由于程序轻易跑飞,系统的可靠性能较差。本文重要论述了一种基于现场可编程门阵列FPGA器件的电子密码锁的设计措施。用FPGA器件构造系统,所有算法完全由硬件电路来实现,使得系统的工作可靠性大为提高。由于FPGA具有现场可编程功能,当设计需要更改时,只需更改FPGA中的控制和接口电路,运用EDA工具将更新后的设计下载到FPGA中即可,无需更改外部电路的设计,大大提高了设计的效率。因此,采用FPGA开发的数字系统,不仅具有很高的工作可靠性,并且升级也极其以便。本文采用EDA技术,运用QuartusII工作平台和硬件描述语言,设计了一种电子密码锁,并通过一片FPGA芯片实现。关键词:电子密码锁;FPGA;硬件描述语言;EDA

AbstractWiththedevelopmentofelectronictechnology,electronicpasswordlockwithburglaralarmandotherfunctionsreplacinglesspasswordandpoorsecuritymechanicalcodelockisaninevitabletrend.comparedelectronicpasswordlockwithordinarymechanicallocks,ithasmanyuniqueadvantages:confidentiality,andsecurityinnature,donotusethekey,rememberpasswordcanunlockitetc.MostelectronicpasswordlocksweusednowisbaseduponSCMtechnology,SCMisitsmainlydevice,andthecreatingofencodinganddecodingdevicesisthefashionofSoftwaremode.Inpracticalapplication,thereliabilityofthesystemmaybeworsebecauseofeasyrunningflyoftheprogramme.ThispapermainlyexpatiatesadesignmethodofelectronicpasswordlockbaseduponFieldProgrammableGateArraydevice.WeuseFPGAdevicestoconstructsystem,allofthealgorithmentirelyachievedbythehardwarecircuit,becauseofFPGAhasthefunctionofISP,whenthedesignneedstobechangedWeonlyneedtochangethecontrolandinterfacecircuitofFPGA,EDAtoolsareusedtodownloadtheupdateddesigntoFPGAwithoutchangingthedesignoftheexternalcircuit,thisgreatlyenhancetheefficiencyofthedesign.Therefore,weuseFPGAtoempolderthedigitalsystemhasnotonlyhighreliabilitybutalsoextremelyconvenientofupgradingandimprovement.Inthispaper,weuseEDAtechnology,QuartusIIplatformandhardwaredescriptionlanguagedesigninganelectronicpasswordlock,anditachievedthroughanFPGAchip.Keywords:electronicpasswordlock;FPGA;hardwaredescriptionlanguage;EDA目录1绪论(标题部分的格式诸多不对,检查修改) 11.1本课题研究的国内外现实状况及其发展 21.2本课题研究的目的和意义 22关键技术简介 42.1FPGA硬件设计描述 42.1.1 FPGA的设计流程 42.1.2 VHDL语言的基本构造 62.1.3 自上而下(TOPDOWN)的设计措施 72.2设计语言、仿真平台与开发系统 82.3用QuartusⅡ进行系统开发的设计流程 83系统总体设计 93.1电子密码锁设计的原理 93.2方案的提出 103.3系统设计规定 113.4系统设计描述 113.5各功能模块描述 123.6系统流程 134系统详细设计 154.1输入模块 154.1.1 时序产生电路 154.1.2 按键消抖电路 154.1.3 键盘扫描电路 174.1.4 键盘译码电路 194.1.5 键盘输入模块的实现 204.2电子密码锁控制模块 214.2.1 控制模块的描述 214.2.2 控制模块的状态图与ASM图 214.2.3 控制模块的实现 234.3电子密码锁显示模块 244.3.1 数码管显示原理 244.3.2 译码显示的实现 275系统仿真 285.1系统的有关编译与仿真 285.2去抖模块的仿真 285.3密码锁输入电路的仿真 295.4密码锁控制电路的仿真 305.5系统整体仿真 315.6数码管译码器仿真 326.结束语 33道谢 34参照文献 35绪论伴随大规模和超大规模可编程器件在FPGA技术支持下的广泛应用,使现代化设计计算已进入一种全新的阶段,从设计思想、设计工具一直到实现方式都发生了诸多变化。在FPGA技术中,最为引人瞩目的是以现代电子技术为特性的逻辑设计仿真测试技术。改技术只需通过计算机就能对所设计的电子系统从不一样层次的性能特点上进行某些列精确测试和仿真;在完毕实际系统的设计后,还能对系统上的目的器件进行边界扫描测试。伴随技术的发展,科技的日趋夜新电子密码锁种类比较多,发展更是快。电子密码锁系统重要由电子锁体、电子密匙等部分构成,一把电子密匙里能寄存多组开锁密码,顾客在使用过程中可以随时修改开锁密码,更新或配制钥匙里开锁密码。一把电子锁可配制多把钥匙。下面就是目前主流电子密码锁。遥控式电子防盗锁目前常见的遥控式电子防盗锁重要有光遥控和无线电遥控两类。键盘式电子密码锁从目前的技术水平和市场承认程度看,使用最为广泛的是键盘式电子密码锁,该产品重要应用于保险箱、保险柜和金库,尚有一部分应用于保管箱和运钞车。卡式电子防盗锁使用多种“卡”作为钥匙的电子防盗锁是目前最为活跃的产品,无论卡的种类怎样多种多样,按照输入卡的操作方式,都可分为接触式卡和非接触式卡两大类。生物特性防盗锁人的某些与生俱来的个性特性(如手、眼睛、声音的特性)几乎不可反复,作为“钥匙”就是唯一的(除非被强迫或伤害),因此,运用生物特性做密码的电子防盗锁,也尤其适合金融业重视“验明正身”的行业特点。本文简介的基于FPGA的电子密码锁电路具有显示接口,显示时可以是明文也可以是密文星号。由于FPGA具有ISP功能,当顾客需要更改时,如增长口令位数和更改口令权限管理时,只需更改FPGA中的控制和接口电路,运用EDA工具将更新后的设计下载到FPGA中即可,无需更改外部电路,这就大大提高了设计效率。并且采用FPGA设计的电子密码锁与单片机控制的电子密码锁相比构造简朴、具有更高的系统保密性和可靠性。这种基于FPGA的电子密码锁可以应用在办公室、仓库、宾馆等人员常常变动的场所。FPGA技术是现代电子工程领域的一门新技术,提供了基于计算机和信息技术的电路系统设计的措施。它是从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)等技术发展而来的。设计者只需要对系统功能进行描述,在FPGA工具的协助下即可完毕系统设计,从而为电子产品的设计和开发缩短了实践减少了成本,提高了系统的可靠性。本课题研究的国内外现实状况及其发展伴随人们生活水平的提高和安全意识的加强,对安全的规定也就越来越高。锁自古以来就是扼守护门的铁将军,人们对它规定甚高,既要安全可靠的防盗,又要使用以便,这也是制锁者长期以来研制的主题。伴随电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。据有关资料简介,电子密码锁的研究从20世纪30年代就开始了,在某些特殊场所早就有所应用。这种锁是通过键盘输入一组密码完毕开锁过程。研究这种锁的初衷,就是为提高锁的安全性。由于电子锁的密钥量(密码量)极大,可以与机械锁配合使用,并且可以防止因钥匙被仿制而留下安全隐患。电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。但较实用的还是按键式电子密码锁。20世纪80年代后,伴随电子锁专用集成电路的出现,电子锁的体积缩小,可靠性提高,成本较高,是适合使用在安全性规定较高的场所,且需要有电源提供能量,使用还局限在一定范围,难以普及,因此对它的研究一直没有明显进展。目前,在西方发达国家,电子密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于智能门禁系统中,通过多种愈加安全,愈加可靠的技术实现大门的管理。在我国电子锁整体水平尚处在国际上70年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几种厂生产供应市场。但国内自行研制开发的电子锁,其市场构造尚未形成,应用还不广泛。国内的不少企业也引进了世界上先进的技术,发展前景非常可观。但愿通过不停的努力,使电子密码锁在我国也能得到广泛应用。目前使用的电子密码锁大部分是基于单片机技术,以单片机为重要器件,其编码器与解码器的生成为软件方式。在实际应用中,由于程序轻易跑飞,系统的可靠性能较差。基于现场可编程逻辑门阵列FPGA器件的电子密码锁,用FPGA器件构造系统,所有算法完全由硬件电路来实现,使得系统的工作可靠性大为提高。由于FPGA具有现场可编程功能,当设计需要更改时,只需更改FPGA中的控制和接口电路,运用EDA工具将更新后的设计下载到FPGA中即可,无需更改外部电路的设计,大大提高了设计的效率。本课题研究的目的和意义为了使目前的电子密码锁更能智能化的管理,让人们更能以便的使用,让其具有更高的安全性和经济性,针对基于单片机的电子密码锁的局限性之处,本文采用EDA技术,运用QuartusⅡ工作平台硬件描述语言,设计一种电子密码锁,并通过一片FPGA芯片实现。采用VHDL语言使用自顶向下的措施对系统进行了描述,并在FPGA芯片CycloneⅡ上实现。设计充足运用了FPGA的资源可编程特性,可高效率的对系统进行升级与改善。设计的密码锁可设置任意密码,比一般的四位密码锁具有更高的安全可靠性,因此,采用FPGA开发的数字系统,不仅具有很高的工作可靠性,其升级与改善也极其以便,应用前景十分良好。

关键技术简介FPGA硬件设计描述FPGA的设计流程FPGA设计流程包括系统设计和设计实现,系统方案完毕之后即进入设计实现阶段的工作,他以系统方案为输入,进行RTL级描述、功能仿真(RTL级仿真)、逻辑综合、布线前门级仿真、适配(布局布线)、时序仿真(布线后门级仿真)、时序分析、器件编程、系统验证一系列流程的处理才能完毕FPGA芯片的设计,其设计流程如图2.1所示。需要阐明的是,假如仿真验证不对或者某一步有错,就要返回修改。有必要检查和修改的地方有RTL级描述、系统方案、约束和测试鼓励等。一般状况下,对RTL级的描述即原理图或者HDL设计代码的修改最多也最有效。修改后要重新走一遍流程。有时要反复修改,通过多次这样的迭代才能完毕最终的设计。在理论上,把VLSI(UltraLargeScaleIntegration,超大规模集成电路)的设计描述为6个层次[1,2],即系统级(系统功能、参数定义)、算法级(描述系统功能行为)、RTL级、门级(逻辑门)、电路级(晶体管)、版图级(物理工艺)。每一级又都分3个侧面来描述:行为域描述、构造域描述、物理域描述。但在实际状况中往往把算法级行为域描述或者RTL级行为域描述都称为行为级描述。图2.1系统设计流程(左边的箭头线太短了,最佳和右边对称)对于FPGA的设计而言,不需要关怀电路级和版图级,只考虑系统级、算法级、RTL级、门级4个层次的行为域描述和构造域描述即可。上述的FPGA系统设计中的系统实际上是指系统级和算法级,而“RTL级描述”重要是指RTL级行为域的描述。在门级,由综合工具产生的门级网表来描述。FPGA的设计流程和有关概念阐明如下:库:指FPGA器件厂家提供的工艺库和EDA工具提供的原则通用库(如IEEE库等)。工艺库中有多种宏功能模块和基本功能单元,具有他们的行为级模型、门级模型、布线模型等信息。需要阐明的是,系统行为仿真和RTL级功能仿真有时要用到某种功能模块,例如RAM模型。对于RAM模型的控制信号,不一样的厂家其规定不一定相似,如写使能信号,有的厂家规定高电平有效,有的厂家规定低电平有效。其实,在厂家提供的工艺库中,RAM模型有行为级模型、门级模型、版图级模型等。而行为级模型只是规定其功能,无延时信息,跟工艺无关,但门级模型和版图级模型跟工艺亲密有关。处理的措施是系统行为仿真时可以使用高级语言自己建立一种模型或者调用厂家库中提供的行为级模型,功能仿真时调用行为级模型,时序仿真时调用门级模型。测试鼓励:指测试文献,他调用FPGA设计的顶层模块,同步产生顶层模块需要的输入信号,称之为鼓励信号,使用行为描述即可,不规定可综合。仿真时他作为最顶层的文献,从而可以观测FPGA的输出与否对的。所有的仿真都可使用同一种测试鼓励。约束:指对逻辑综合和布局布线时的约束。包括器件型号、速度、面积、功耗、引脚分派、时钟网络资源的分派、模块在器件中的定位等约束。一部分在软件中设置,一部分以约束文献的形式存在。VHDL语言的基本构造VHDL(VeryhighspeedintegratedcircuitHardwareDescriptionLanguage)硬件描述语言从高于逻辑级的抽象层次上描述硬件的功能、信号连接关系及定期关系。VHDL的设计流程如2.2图。图2.2VHDL的设计流程一种完整的VHDL语言程序一般包括实体(Entity)、构造体(Architecture)、配置(Configuration)、包集合(Package)和库(Library)五个部分。1、实体实体阐明部分是阐明一种器件的外观视图,即从器件外部看到的器件外貌,其中包括器件的端口,同步也可以定义参数,并把参数从外部传入模块内部,重要用于描述所设计的系统的外部接口。2、构造体构造体是描述一种器件的内部视图,是次级设计单元。在其对应的初级设计单元实体阐明被编译并且被并入设计库之后,它就可以单独地被并入该设计库中。构造体描述一种设计的构造和行为,把一种设计的输入和输出之间的关系建立起来。一种设计可以有多种构造,分别代表该器件的不一样实现方案。根据对一种器件设计由抽象到详细的过程,可把构造体的描述方式分为三个层次:行为描述方式、寄存器传播描述方式(RTL)和构造描述方式。3、库库是经编译后的实体、构造体、包集合和配置的集合。使用库时总要在设计单元的前面予以阐明。一旦阐明,库中的数据对该设计单元就是可见的,从而共享已经编译过的设计成果。VHDL语言中存在的库大体有IEEE库、STD库、ASIC厂家提供的库、顾客定义的库和现行作业库。4、包集合包集合属库中的一种层次,是一种可编译的源设计单元。它搜集了VHDL语言中所用到的信号、常数、数据类型、函数和过程的阐明等。顾客可以构造一种包集合,用以寄存常数、数据类型、函数和过程,该包集合经编译后便自动加到WORK库中。使用库中的包集合时,在打开库后要用USE语句阐明,例如:LIBRARYIEEE;USEIEEE.STD-LOGIC-1164.ALL;5、配置配置语句从一种库中为一种实体选择一种特定的构造体,是一种放在库中的被编辑单元,并有对应的配置名。通过配置技术,可以选用多种不一样的构造体,以便对一种设计任务采用仿真工具进行多种配置的性能试验。此外,配置阐明和规定的特性还可以用在多层描述中。自上而下(TOPDOWN)的设计措施自上而下的设计措施是现代电子系统的新型设计方略,它从设计的总体规定出发,自上而下地逐渐从系统数学模型的设计与仿真,到数据流级的设计与仿真,选择系统设计方案,最终完毕系统硬件的整体设计。VHDL的自上而下的设计措施不仅体目前它的基本构造由描述外视特性的实体与描述内视行为和构造的构造体构成,同一实体可以有一种以上的构造体,以便设计方案的选择,还体目前系统硬件设计过程的三个层次:行为级描述与仿真、RTL级描述与仿真、逻辑综合与门级仿真。逻辑综合与所使用的逻辑综合工具有关,由逻辑综合优化工具生成详细的门级逻辑电路的EDIF(ElectronicDesignInterchangeFormat)网表。EDIF网表是一种原则接口,它是一种以ASCII字符为基础的中间互换格式,被大多数供应商提供的CAE/CAD系统所支持。半导体制造厂基于这种网表生成ASIC芯片的制造工艺,FPGA则基于这种网表生成用以配置FPGA芯片的位流文献。这三种仿真贯穿系统硬件设计的全过程,从而可以在系统设计初期发现设计中存在的问题,与老式的自下而上的后期仿真相比大大缩短系统的设计周期,并且利于方案的综合评价与选用。这是用VHDL语言设计系统硬件的最突出的长处。设计语言、仿真平台与开发系统(1)硬件描述语言电子密码锁的设计采用了功能强大的通用硬件描述语言VHDL,它具有很强的行为描述能力,设计措施灵活,可以支持自顶向下(TopDown)和基于库(Library-Based)的设计措施,硬件描述与详细的工艺技术和硬件构造无关,能轻易地变化设计的规模和构造,原则、规范易于共享与复用,易于向ASIC移植。(2)QuartusⅡ软件开发工具本设计采用的软件开发工具是美国Altera企业的QuartusⅡ,它支持多种设计输入措施,包括原理图输入、文本输入(如AHDL,VHDL,VerilogHDL文本文献)和第三方EDA工具输入文献(如EDIF,HDL,VQM文献),运用该工具所配置的编辑、编译、仿真综合、芯片编程等功能,可将设计电路图或电路描述程序变成基本的逻辑单元写入到可编程的芯片中(如FPGA芯片),做成ASIC芯片。(3)EDA试验开发系统设计中采用的EDA试验开发系统,重要用于提供可编程逻辑器件的下载电路及EDA试验开发的外围资源,供硬件验证用。一般包括:①试验或开发所需的各类基本信号发生模块;②FPGA/CPLD输出信息显示模块;③监控程序模块;④目的芯片适配座以及上面的FPGA/CPLD目的芯片和下载电路。用QuartusⅡ进行系统开发的设计流程使用QuartusⅡ进行电子密码锁设计的流程为(1)编写VHDL程序(使用VHDLFile)(见附录);(2)编译VHDL程序(使用Compiler);(3)仿真验证VHDL程序(使用WaveformEditor,Simulator);(4)进行芯片的时序分析(使用TimingAnalyzer);(5)安排芯片管脚位置(使用FloorplanEditor);(6)下载程序至芯片(使用Programmer)。系统总体设计电子密码锁设计的原理1、编码总量确实定电子密码锁随机开锁成功的概率定义为:P=1/NT其中P为随机开锁成功概率,NT为密码编码总量。显然要使密码锁保密安全性高,NT应尽量大,使P趋于零,但NT越大,对应电路越复杂,密码的记忆与操作也越麻烦。故NT应有合理的上限和下限。下限NTL的选择应使密码落在随机开锁也许成功的操作时区以外。若每一次开锁操作时间为t,为便于做随机试验,将NT分为n段并期望在1/n段的1/2处开锁成功。此时p=1/2n则随机开锁试验期望成功的时间为:Tr=NT×t/2n假定系统设计不考虑误码输入的保护,密码锁在无保护的状况下使操作人员任意作随机开锁试验的时间为TEN,则:NTL=(2n×TENt)×x,其中x为最低安全系数。即:TEN=(NTL×t/2n)/x显然若使NT>=NTL,则Tr>TEN,则使分段随机试验不易成功。由此可得出数字密码锁的编码总量设定是系统设计安全性、保密性的首要技术指标。一般来说,当NT选定之后,NT的上限NTH原则上是越大越安全,但一般设计时取NTH=(10~1000)NTL较为合理。2、编码制式的选择编码制式应根据NT的大小选用,可分为如下三种:(1)密码的各位都可以重码:NT1=ai;(2)密码的非相邻位可以重码:NT2=a(a-1)i;(3)密码的任何一位都不能重码:NT3=a(a-1)……(a-i+1)。其中a为基数,i为位数,a和i的选用应当满足NT≥NTL,a=2,3,4,10,12,14,16。目前以最常用的a=10,i=6为例,可以计算出NT2=0159NT1,NT3=0.15NT1,因此编码制式考虑与否重码对NT有很大影响。此外,相似制式下不一样的基底对编码总量NT会有影响,并且基底的选择也会影响到硬件电路的设计。本文设计的密码锁采用十进制编码,密码各位容许重码,为简化电路设计,密码锁口令采用对串行脉冲计数的方式输入。3、误码输入的保护措施如前所述,电子密码锁的设计应考虑自身的安全保密性,由于编码和捕捉密码的试验都是随机的,若要使P=1NT趋近于0,必须采用误码输入的保护措施。假定设定的误码输入次数不超过三次,误码到达三次时系统应关闭主控电路,拒绝不小于三次的密码输入,并且系统进入报警状态。系统正常状态的恢复可采用万能密码输入或者系统掉电恢复。方案的提出方案一:采用数字电路控制。虽然采用数字密码锁电路的好处是设计简朴,不过由于其是纯电路实际,在系统运行时,延时会比较严重。方案二:通过单片机实现,目前一种新的方案就是采用一种是用以AT89S51为关键的单片机控制方案。虽然有灵活的设计和丰富的IO端口,不过单片机设计的缺陷是程序运行时轻易出现跑飞现象。通过以上比较显然单片机方案有较大的活动空间,不仅能实现所规定的功能并且能在很大的程度上扩展功能,并且还可以以便的对系统进行升级,不过由于所学知识不能将其有效的应用,既有环境不能满足,并且单片机的密码锁有一定的局限性之处,在运行时程序有时会产生PC指针错误,尚有基于目前所学知识的应用,因此基于以上比较提出了第三种方案。方案三:运用FPGA设计电子密码锁,其成本低,设计以便(有对应的开发板),既有资源充足,实现比较轻易,更利于系统的维护改善和升级,可靠性更高,更安全。通过以上比较描述,本设计采用基于FPGA的电子密码锁设计方案。系统设计规定设计一种具有较高安全性和较低成本的通用电子密码锁,详细功能规定如下:(1)数码输入:每按下一种数字键,就输入一种数值,并在显示屏上的显示出该数值,同步将先前输入的数据依序左移一种数字位置。(2)数码清除:按下此键可清除前面所有的输入值,清除为“0000”。(3)密码更改:按下此键时会将目前的数字设定成新的密码。(4)激活电锁:按下此键可将密码锁上锁。(5)解除电锁:按下此键会检查输入的密码与否对的,密码对的即开锁。系统设计描述本系统为一种简洁型的电子密码锁,该系统以开发板为重要关键,采用4*4的键盘,前10个键为数字键,8个数码管显示密码输入,背面的按键实现电子密码锁的各个功能,总体外观如图3.1所示。图3.1电子密码锁外观图上图为在试验开发板上实现,使用开发板有十六个按键,分别对应数字0到9和各个功能键,LED显示为开发板上数码管显示。设计思绪及各功能模块描述电子密码锁可以由三个部分构成:数字密码输入电路、密码锁控制电路、密码锁显示电路。作为密码锁的输入部分,可选择的方案有数字机械式键盘和触摸式数字键盘等多种。考虑种种原因重要是成本和使用寿命原因,本设计采用通用的数字机械式键盘。数字电子密码锁的显示信息电路可采用LED数码管显示和液晶屏幕显示两种。液晶显示具有高速显示、高可靠性、易于扩展和升级等长处,不过一般液晶显示屏存在亮度低、对复杂环境的适应能力差等缺陷,在低亮度的环境下还需要加入其他辅助的照明设备,驱动电路设计相对复杂,因此本设计的显示电路使用通用的LED数码管。根据以上选定的输入设备和器件,并考虑到实现各项数字密码锁功能的详细规定。本设计分为三个大的功能模块。图3.2为数字电子密码锁系统总体框图。图3.2数字电子密码功能模块图(1)密码锁输入电路包括时序产生电路、键盘扫描电路、键盘弹跳消除电路、键盘译码电路等几种小的功能电路。模块的功能是:将顾客通过键盘输入的数字密码,确认密码与否输入,产生电路中使用的三种不一样频率的工作脉冲波形,即系统时钟脉冲、弹跳消除取样信号和键盘扫描信号;为了加强按键按下的精确性加了去抖模块。作为电子密码锁的输入电路,数字密码输入电路可采用一种4×4的通用开发板上的键盘作为本设计的输入设备。开发板键盘具有低成本、可靠性高、构成电路简朴、技术成熟和应用广泛等特点,因此将其应用到通用电子密码锁中还是比较合适的。(2)密码锁控制电路包括按键数据的缓冲存储电路,密码的清除、变更、存储、激活电锁电路(寄存器清除信号发生电路),密码查对(数值比较电路),解锁电路(开/关门锁电路)等几种小的功能电路。模块功能:用于密码的更改,密码的清除,以及对密码锁的工作状态更改,对输入密码次数的计数功能,尚有就是更智能化,更符合人们的思维,按键的时候都是习惯看输入数字的移位状况。(3)密码显示电路重要将显示数据的BCD码转换成相对应的编码。如,若选用七段数码管显示电路,重要将待显示数据的BCD码转换成数码器的七段显示驱动编码。从图3.2系统的总体走向图可知:通过时序产生键盘扫描信号,由键盘输入密码或者功能按键,当然在这过程中要通过按键去抖,最终将将所输入的键盘值译码得到详细的数字或者功能键;将输入值输入键盘数据存储器,在这里面可以将键盘值存储或者清除,再通过比较电路,比较输入值与本来存储的与否一致,假如一致则启动锁,假如不一致则报警(在报警后可以通过输入万能密码或者断电复位等可以处理);在通过存储电路时,同步将所输入的值通过LED显示出来,显示将通过BCD译码电路,将所获取的值显示在LED数码管上。系统流程系统流程图如图4.1:(不能光有一种图,必须配有对图的文字阐明,把系统的流程说清晰)图3.3系统流程图

系统详细设计输入模块图4.1是电子密码锁的输入电路框图,由键盘扫描电路、弹跳消除电路、键盘译码电路、按键数据缓存器,加上外接的一种3×4矩阵式键盘构成。 图4.1电子密码锁的输入电路框图

矩阵式键盘是一种常见的输入装置,在平常的生活中,矩阵式键盘在计算机、电话、手机、微波炉等各式电子产品上已经被广泛应用。图2.3是一种3×4矩阵式键盘的面板配置图,其中数字0~9作为密码数字输入按键,*作为“上锁”功能按键,#作为“解锁/清除”功能按键。图4.2

3×4矩阵式键盘的面板配表4.1行扫描信号、列按键输入信号与按键位置的关系KY3~KY0111011101110110111011101101110111011011101110111KX2~KX0011101110011101110011101110011101110按键号123456789*0#时序产生电路本时序产生电路中使用了三种不一样频率的工作脉冲波形:系统时钟脉冲(它是系统内部所有时钟脉冲的源头,且其频率最高)、弹跳消除取样信号、键盘扫描信号。当一种系统中需使用多种操作频率的脉冲波形时,最以便的措施之一就是运用一计数器来产生多种需要的频率。也就是先建立一种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:INSTD_LOGIC; --系统原始时钟脉冲(1kHz)KEY_IN:INSTD_LOGIC_VECTOR(2DOWNTO0);--按键输入CLK_SCAN:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--(仿真时用)键盘扫描序列DATA_N:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--数字输出DATA_F:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--功能输出FLAG_N:OUTSTD_LOGIC;--数字输出标志FLAG_F:OUTSTD_LOGIC;--功能输出标志CLK_CTR:OUTSTD_LOGIC;--控制电路工作时钟信号CLK_DEBOUNCE:OUTSTD_LOGIC--(仿真时用)去抖电路工作时钟信号按键消抖电路由于设计采用的矩阵式键盘是机械开关构造,因此在开关切换的瞬间会在接触点出现信号来回弹跳的现象,对于电子密码锁这种敏捷度较高的电路这种弹跳将很也许会导致误动作输入,从而影响到密码锁操作的对的性。从图4.2中可以观测出弹跳现象产生的原因,虽然每次只是按下按键一次然后放掉,然而实际产生的按键信号却不知跳动一次,通过取样信号的检查后,将会导致误判断,认为键盘按了两次。假如调整抽样频率(如图4.3所示),可以发现弹跳现象获得了改善。图4.2弹跳现象产生错误的抽样成果假如调整抽样频率,弹跳现象就可以获得改善。图4.3调整抽样频率后得到的抽样成果因此必须加上弹跳消除电路,防止误操作信号的发生。尤其要注意的是,弹跳消除电路所使用的脉冲信号的频率必须比其他电路使用的脉冲信号的频率更高;一般将扫描电路的工作频率定在100KHz左右,而将弹跳消除电路的工作频率定在200KHZ左右,其工作频率一般是前者的2倍或者更高。弹跳消除电路的实现原理如图4.4所示,先将键盘的输入信号D_IN做为电路的输入信号,CLK是电路的时钟脉冲信号,也就是取样信号,D_IN通过两级D触发器延时后再使用RS触发器处理。图4.4弹跳消除电路的内部实现原理图此处RS触发器的前端连接和非门的处理原则是:

(1)

由于一般人的按键速度至多是10次/秒,亦即一次按键时间是100

ms,因此按下的时间可估算为50

ms。以取样信号CLK的周期为8

ms计,则可以取样到6次。

(2)

对于不稳定的噪声,在4

ms如下则至多抽样一次。

(3)

在触发器之前,接上AND-NOT之后,SR的组态如表1.2所示。表4.3

RS触发器真值表SRD-OUT00不变101010消除抖动模块程序如下:--DEBOUNCING.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;LIBRARYALTERA;USEALTERA.MAXPLUS2.ALL;ENTITYDEBOUNCINGISPORT(D_IN,CLK:INSTD_LOGIC;DD1,DD0,QQ1,QQ0:OUTSTD_LOGIC;D_OUT,D_OUT1:OUTSTD_LOGIC);ENDENTITYDEBOUNCING;ARCHITECTUREARTOFDEBOUNCINGISCOMPONENTDCFQISPORT(CLK,CLRN,PRN,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDCOMPONENTDCFQ;SIGNALVCC,INV_D:STD_LOGIC;SIGNALQ0,Q1:STD_LOGIC;SIGNALD1,D0:STD_LOGIC;BEGINVCC<='1';INV_D<=NOTD_IN;U1:DCFQPORTMAP(CLK=>CLK,CLRN=>INV_D,PRN=>VCC,D=>VCC,Q=>Q0);U2:DCFQPORTMAP(CLK=>CLK,CLRN=>Q0,PRN=>VCC,D=>VCC,Q=>Q1);PROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THEND0<=NOTQ1;D1<=D0;ENDIF;ENDPROCESS;DD0<=D0;DD1<=D1;QQ1<=Q1;QQ0<=Q0;D_OUT<=NOT(D1ANDNOTD0);D_OUT1<=NOTQ1;ENDARCHITECTUREART;--DCFQ.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDCFQISPORT(CLK,CLRN,PRN,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDENTITYDCFQ;ARCHITECTUREARTOFDCFQISBEGINPROCESS(CLK,CLRN,PRN)BEGINIFCLRN='0'ANDPRN='1'THENQ<='0';ELSIFCLRN='1'ANDPRN='0'THENQ<='1';ELSIFCLK'EVENTANDCLK='1'THENQ<=D;ENDIF;ENDPROCESS;ENDARCHITECTUREART;这段程序的作用就是通过对信号的分频处理,从而将按键产生的不规则信号转换为便于识别的按键信号,到达消除抖动的目的。键盘扫描电路扫描电路的作用是用来提供键盘扫描信号(表4.1中的KY3~KY0)的,扫描信号变化的次序依次为1110-1101-1011-0111-1110……依序的周而复始。扫描时依序分别扫描四列按键,当扫描信号为1110时扫描KY3这一排按键;当扫描信号为1101室,扫描KY2这一排按键;当扫描信号为1011时,扫描KY1这一排按键;当扫描信号为0111时,扫描KY0这一排按键。每扫描一排按键就检查一次与否有键被按下,假如这排没有按键被按下就忽视,反之,假如出现被按下的键则立即进行按键编码的动作,且将编码的成果储存于寄存器中。--扫描信号发生器COUNTER:BLOCKISSIGNALQ:STD_LOGIC_VECTOR(5DOWNTO0);SIGNALSEL:STD_LOGIC_VECTOR(3DOWNTO0);--1110-1101-1011-0111BEGINPROCESS(CLK_1K)IS BEGINIFCLK_1K'EVENTANDCLK_1K='1'THENQ<=Q+1;ENDIF;C_DEBOUNCE<=Q(2); --去抖时钟信号,大概125HzC_KEYBOARD<=Q(2DOWNTO1);--产生键扫信号***“00-01-10-11”,大概16Hz--C_DEBOUNCE<=Q(1);--仿真时用--C_KEYBOARD<=Q(5DOWNTO4); --仿真时用CLK<=Q(0);ENDPROCESS; CLK_DEBOUNCE<=C_DEBOUNCE; SEL<= "1110"WHENC_KEYBOARD=0ELSE"1101"WHENC_KEYBOARD=1ELSE"1011"WHENC_KEYBOARD=2ELSE"0111"WHENC_KEYBOARD=3ELSE"1111";CLK_SCAN<=SEL;ENDBLOCKCOUNTER;键盘译码电路在密码输入电路中,按键又分为数字按键和文字按键,每一种按键也许负责不一样的功能,例如清除键、上锁键和解锁键等。数字按键重要是用来输入数字的,不过键盘所产生的输出是无法直接拿来用作密码锁控制电路的输入的,此外,不一样的按键具有不一样的功能,因此必须由键盘译码电路来规划每个按键的输出形式,以便执行对应的动作。键盘译码电路重要将所对应的键盘值设定成所要用的功能键,其重要程序如下: --键盘译码KEY_DECODER:BLOCKSIGNALZ:STD_LOGIC_VECTOR(4DOWNTO0);--按键位置BEGINPROCESS(CLK)BEGINZ<=C_KEYBOARD&C; IFCLK'EVENTANDCLK='1'THENCASEZIS WHEN"11101"=>N<="0000"; --0 WHEN"00011"=>N<="0001"; --1 WHEN"00101"=>N<="0010"; --2 WHEN"00110"=>N<="0011"; --3 WHEN"01011"=>N<="0100"; --4 WHEN"01101"=>N<="0101"; --5 WHEN"01110"=>N<="0110"; --6 WHEN"10011"=>N<="0111"; --7 WHEN"10101"=>N<="1000"; --8 WHEN"10110"=>N<="1001"; --9 WHENOTHERS=>N<="1111";ENDCASE;ENDIF;键盘输入模块的实现图4.7键盘输入电路符号图模块外部信号端口:clk_1k:时钟脉冲输入端口,为系统提供工作的时钟脉冲。key_in:按键输入端口,为按键输入提供输入信号。kscan:键盘扫描序列(仿真时用),为按键扫描提供信号。data_n:数字输出端口,为数字的输出提供信号。data_f:功能输出端口,为功能的输出提供信号。flag_n::数字输出标志,用于识别数字与否输出。flag_f:功能输出标志,用于识别功能与否输出。ksrclk:键盘输入采样时钟。kpos:按键位置,用于识别按键所在位置提供信号。模块内部信号:scan:键扫信号“00-01-10-11”寄存器k_ksrclk:去抖时钟信号,为去抖提供信号。c:键盘输入去抖后的寄存器,用于键盘去抖后存储键盘输入的寄存器。n,f:数字、功能按键译码值的寄存器,用于存储数字、功能按键译码后的值。fn,ff:数字、功能按键标志值数字、功能按键。q:模块内部信号,用于识别各个信号所用。k_pos:按键位置信号,用于提供按键位置所在信号。电子密码锁控制模块控制模块的描述控制锁的控制模块是整个电路的控制中心,重要完毕对数字按键输入和功能按键输入的对应控制。1、数字按键输入的响应控制(1)假如按下数字键,第一种数字会从显示其的最右端开始显示,此后每新按一种数字时,显示屏上的数字必须左移一种数码管,以便将新的数字显示出来。(2)假如要更改输入的数字,可以按倒退按键来清除前一种输入的数字,或者按清除键清除所有出入的数字,再重新输入四位数。(3)由于这里设计的是一种四位的电子密码锁,因此当输入的数字键超过预设位数时,电路不予理会,并且不再显示后来的数字。2、功能按键输入的响应控制(1)清除键:清除所有的输入数字,即作归零动作。(2)激活电锁键:按下此键时可将密码锁的门上锁(上锁前必须预先设定一种四位的数字密码)。(3)解除电锁键:按下此键会检查输入的密码与否对的,若密码对的无误则开门。使用电子密码锁的时候,只会用到三种工作模式,其中输入文字模式用的是数字按键,只有上锁和开锁两个模式必须占用功能按键。不过在实际操作中,难免会有按错键的状况发生,使得“清除输入”功能是用的机率很高,因此在设计中共设置了两个功能按键,其中“接触电锁”和“清除电锁”共用一种功能按键,另一种功能按键是“激活电锁”。--控制电路--CTRL.VHDLIBRARY

IEEE;

USE

IEEE.STD_LOGIC_1164.ALL;

USE

IEEE.STD_LOGIC_ARITH.ALL;

USE

IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY

CTRL

ISPORT

(DATA_N:

IN

STD_LOGIC_VECTOR(3

DOWNTO

0);

DATA_F:

IN

STD_LOGIC_VECTOR(3

DOWNTO

0);

FLAG_N:

IN

STD_LOGIC;

FLAG_F:

IN

STD_LOGIC;

CLK:

IN

STD_LOGIC;

ENLOCK:

OUT

STD_LOGIC;

--1:

LOCK,

0:

UNLOCKDATA_BCD:

OUT

STD_LOGIC_VECTOR

(15

DOWNTO

0));

END

ENTITY

CTRL

;

ARCHITECTURE

ART

OF

CTRL

ISSIGNAL

ACC,

REG:

STD_LOGIC_VECTOR

(15

DOWNTO

0);

--ACC用于暂存键盘输入的信息,REG用于存储输入的密码SIGNAL

NC:

STD_LOGIC_VECTOR

(2

DOWNTO

0);

SIGNAL

RR2,

CLR,

BB,

QA,

QB:

STD_LOGIC;

SIGNAL

R1,

R0:

STD_LOGIC;

BEGIN--寄存器清零信号的产生进程PROCESS(CLK)BEGINIF

CLK'EVENT

AND

CLK='1'

THENR1<=R0;

R0<=FLAG_F;

END

IF;

RR2<=R1

AND

NOT

R0;

CLR<=RR2;

END

PROCESS;

--按键输入数据的存储、清零进程KEYIN_PROCESS

:

BLOCK

ISSIGNAL

RST,

D0,

D1:

STD_LOGIC

;

BEGIN

RST

<=

RR2;

PROCESS(FLAG_N,

RST)

ISBEGINIF

RST

=

'1'

THEN

ACC

<=

"0000"

;

--CLEAR

INPUTNC

<=

"000"

;

ELSEIF

FLAG_N'EVENT

AND

FLAG_N

=

'1'

THEN

IF

NC

<

4

THENACC

<=

ACC(11

DOWNTO

0)

&

DATA_N

;

NC

<=

NC

+

1

;

END

IF;

END

IF

;

END

IF

;

END

PROCESS

;

END

BLOCK

KEYIN_PROCESS

;

--上锁/开锁控制进程LOCK_PROCESS

:

BLOCK

ISBEGINPROCESS(CLK,

DATA_F)

ISBEGINIF

(CLK'EVENT

AND

CLK

=

'1')

THENIF

NC

=

4

THENIF

DATA_F(2)

=

'1'

THEN

--上锁控制信号有效

REG

<=

ACC

;

--密码存储QA

<=

'1'

;

QB

<=

'0';

ELSIF

DATA_F(0)

=

'1'

THEN--开锁控制信号有效IF

REG

=

ACC

THEN

--密码查对QA<=

'0';

QB

<=

'1'

;

END

IF

;

ELSIF

ACC

=

"1000"

THEN

--设置“8888”为万用密码QA

<=

'0'

;

QB<=

'1';

END

IF

;

END

IF;

END

IF

;

END

PROCESS

;

END

BLOCK

LOCK_PROCESS

;

--输出上锁/开锁控制信号ENLOCK

<=

QA

AND

NOT

QB

;

--输出显示信息DATA_BCD<=

ACC

;

END

ARCHITECTURE

ART;

对密码控制电路模块进行时序仿真如下图:FLAG_N为数字输出标志,高电平时确认输出数字,FLAG_F为功能输出标志,密码控制模块根据4位按键输入在判断其为功能输入还是数字输入后输出16位BCD码。图5.3密码锁控制电路仿真成果图图4.9控制模块的ASM图控制模块的实现生成符号图4.10图4.10控制模块电路符号图模块外部信号端口:data_n:数字输入端口,用于提供数字输入信号。data_f:功能输入端口,用于提供功能输入信号。flag_n:数字输入标志,用于识别数字与否输入。flag_f:功能输入标志,用于识别功能与否输入。ksrclk:键盘输入采样时钟,用于提供键盘输入的采样时钟。enlock:密码锁控制信号输出端口,提供密码锁控制信号输出。data_bcd:按键显示输出端口,用于提供按键显示输出信号。mimain:密码输入标志,用于提供密码输入信号。setin:密码设定标志,提供密码设置信号。old:旧密码设置标志,提供旧密码设置标志。模块内部信号:acc:暂存键盘输入信息reg:密码存储位置电子密码锁显示模块数码管显示原理数字显示重要由LED数码管实现。LED可单独使用,也可组装成分段式或点阵式LED显示屏件。分段式显示屏由7条线段围成8型,每一段包括一种发光二极管,外加正向电压时二极管导通,发出清晰的光,有红、黄、绿等色。可以按照有关的规律控制各个发光段的亮、灭,这样就能到达显示多种字形或者符号的目的。图4.11简介了左边右边是共阴式和共阳式LED数码管的原理图,以及共阴式的连接法和驱动原理。

图4.11七段数码管电路图BCD七段译码器的输入时一位BCD码(以D、C、B、A表达),输出是数码管各段的驱动信号(以Fa~Fg表达),也称4——7译码器。若用它驱动共阴极LED数码管,则输出应为高有效,即输出高1时,对应显示段发光。例如,当输入8421码DCBA=0100时,应显示4,即规定同步点亮b、c、f、g段,熄灭a、d、e段,故译码器的输出应为Fa~Fg=0110011,这也是一组代码,常称为段码。同理,根据构成0~9这10个字形的规定可以列出8421BCD七段译码器的真值表,见表4.12。表4.2七段译码器真值表重要程序设计如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDECL7SISPORT(A:INSTD_LOGIC_VECTOR(3DOWNTO0);LED7S:OUTSTD_LOGIC_VECTOR(6DOWNTO0));END;ARCHITECTUREoneOFDECL7SISBEGINPROCESS(A)BEGINCASEAISWHEN"0000"=>LED7S<="0111111";WHEN"0001"=>LED7S<="0000110";WHEN"0010"=>LED7S<="1011011";WHEN"0011"=>LED7S<="1001111";WHEN"0100"=>LED7S<="1100110";WHEN"0101"=>LED7S<="1101101";WHEN"0110"=>LED7S<="1111101";WHEN"0111"=>LED7S<="0000111";WHEN"1000"=>LED7S<="1111111";WHEN"1001"=>LED7S<="1101111";WHEN"1010"=>LED7S<="1110111";WHEN"1011"=>LED7S<="1111100";WHEN"1100"=>LED7S<="0111001";WHEN"1101"=>LED7S<="1011110";WHEN"1110"=>LED7S<="1111001";WHEN"1111"=>LED7S<="1110001";WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;END;译码显示的实现生成电路符号图4.13:图4.13译码显示电路符号图模块外部信号端口:A:密码信号输入端口,提供密码信号输入。LED7S:密码锁状态信号显示灯,提供状态显示信号。

系统仿真系统的有关编译与仿真在计算机辅助电子系统设计出现此前,人们一直采用老式的硬件电路设计措施来设计系统的硬件。这种硬件设计措施的重要特点是:(1)采用自底向上的设计措施;(2)采用通用的逻辑器件;(3)在系统硬件设计的后期进行仿真和调试;(4)重要设计文献是电原理图。老式的硬件电路设计措施已经沿用几十年,是目前广大电子工程师所熟悉和掌握的一种措施。伴随电子技术和计算机的飞速发展,一种崭新的、采用硬件描述语言的硬件电路设计措施已经兴起。EDA(电子设计自动化)技术是90年代电子设计的最新技术,能使电子系统设计人员在计算机上完毕电路的设计、分析、仿真、指标测试,直到印刷电路板的自动化设计,它的出现给硬件电路设计带来一次重大的变革。运用EDA技术进行电子系统的设计,具有如下几种特点:(1)用软件的方式设计硬件;(2)用软件的方式设计的系统到硬件系统的转换是由有关的开发软件自动完毕的;(3)设计过程中可用有关软件进行多种仿真;(4)系统可现场编程,在线升级;(5)整个系统可集成在一种芯片上,体积小、功耗低、可靠性高。因此,EDA技术是现代电子设计的发展趋势。本节重要是论述设计在QuartusII7.0软件中实现编译与仿真。在QuartusII7.0在输入源程序后,我们需要建立一种工程,在工程中我们要把设计文献加入工程中;然后选择仿真器和综合器类

温馨提示

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

评论

0/150

提交评论