《CPLD电子密码锁设计.doc》由会员分享,可在线阅读,更多相关《CPLD电子密码锁设计.doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、四川信息职业技术学院毕业设计说明书(论文)设计(论文)题目: 基于CPLD/FPGA的 电子密码锁 专 业: 通信技术 班 级: 通技06-2 学 号: 姓 名: 刘 剑 指导教师: 潘 锋 谭望春 二八年十二月三十日四川信息职业技术学院毕业设计(论文)任务书学 生姓 名刘剑学号班级通技06-2专业通信技术设计(或论文)题目基于CPLD/FPGA的电子密码锁指导教师姓名职 称工作单位及所从事专业联系方式备 注潘 锋讲 师四川信息职业技术学院电子系0839-谭望春高级工程师四川九洲电子科技股份有限公司设计(论文)内容:(1)设计指标具有密码输入功能,密码最多为4位;设置退格键,以便删除输入错误的
2、密码;在输入的密码时数码管上只显示8,并根据输入位数依次横移;设置确认键,当确认键按下后,判断输入密码是否正确;当输入密码正确时,点亮发光二极管;当输入密码不正确时,发光二极管不亮并且蜂鸣器报警,重新输入,当三次密码输入不正确时,系统应锁定键盘10s。将用户分为管理者和使用者,管理者拥有超级密码,可以修改其他人的密码。使用者不能修改密码。(2)设计要求画出电路原理图(或仿真电路图);元器件及参数选择;CPLD器件逻辑设计与编程;电路仿真与调试;PCB文件生成与打印输出。进度安排:第5周:任务下达,理解消化任务要求;初步设计方案确定;第6周第10周:设计方案确定,分模块部分完成;第11周:中期检
3、查,查找问题,分析解决难点;第12周第15周:分模块调试,整体电路调试,论文书写等;第16周:答辩。主要参考文献、资料(写清楚参考文献名称、作者、出版单位):审批意见教研室负责人:年 月 日备注:任务书由指导教师填写,一式二份。其中学生一份,指导教师一份。目录摘要1第1章绪论2第2章方案设计32.1设计要求32.2方案比较3第3章单元电路设计63.1主控芯片的选择73.2输入部分电路设计73.1.1矩阵键盘模块73.1.2键盘扫描模块83.1.3弹跳消除模块83.1.4键盘译码模块93.3控制部分电路设计93.4输出部分电路设计10第4章系统仿真测试11总结13参考文献14附录源程序15摘要近
4、年来,电子密码锁的使用越来越广泛,目前使用的电子密码锁大部分是基于单片机用分离元件实现的,其电路比较复杂、性能不够灵活、成本较高且可靠性和安全性差。基于此,本文设计了一种新型的电子密码锁,其采用先进的EDA技术,利用MAX+PLUX工作平台,CPLD芯片和VHDL语言,阐述了其工作原理和软硬件设计方法。该密码锁通过扫描电路、键盘译码电路、弹跳消除电路、比较电路和七段译码电路等实现了密码输入、数码清除、密码激活、电锁解除、密码更改和误码报警等功能,用一片复杂可编程逻辑芯片CPLD实现,因此它体积小、功耗低、价格便宜,维护和升级都十分方便,具有较好的应用前景。关键词电子密码锁VHDLFPGA/CP
5、LD第1章绪论随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。在EAD桌面设计环境下用计算机来完成电路的系统综合设计和仿真。作为学习通信专业的学生,更应该熟练掌握各种电路编辑软件,作为专业必需的技能更要及时地对这一类软件的更新版本进行学习,其日趋强大的功能是对我们专业技能的补充。科学的进步要求我们在不断的实践中熟练各种制板的技术,并不断地总结经验。这次课设对我们来说非常重要,这是我们第一次独立地完成一篇相对完整的学科设计,好的开头是成功的第一步,我们更应该加
6、倍努力去完成,尽力做到最好,为将来的学习及毕业设计的完成奠定良好的基础!本文概述了电子制作软件的操作知识以及数字电路的基本知识,介绍了本次课设的设计过程以及相关的数字电路知识,包括数字电路知识、设计原理、原理图制作、心得等内容。第2章方案设计2.1设计要求设计一个基于CPLD/FPGA的电子密码锁。当输入密码正确时,点亮发光二极管;当输入密码不正确时,发光二极管不亮并且蜂鸣器报警,重新输入,当三次密码输入不正确时,系统应锁定键盘10s。将用户分为管理者和使用者,管理者拥有超级密码,可以修改其他人的密码。使用者不能修改密码。2.2方案比较方案一:采用数字逻辑电路制作,用IC组件焊接实现。其特点是
7、直接用现成的IC组合而成,简单方便,但由于使用的器件较多,连线复杂,体积大,功耗大,焊点和线路较多将使成品稳定度与精确度大打折扣。方案一的原理方框图如图2-1所示。密码修改电路键盘输入限时报警报警次数检测市电供电电路电子切换开关蓄电池断电检测充电电路锁定5分钟密码校验电路开锁电路执行电路开始计 时消除报警信号正确开门电源VCC锁定脉冲3220V6V图2-1基于数字逻辑电路的电子密码锁采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零
8、,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。方案二:采用单片机实现,通过软件编程,仿真后将程序用编程器写入到单片机芯片上,该方案成本低,稳定度较好,但外围电路也较多,调试不够直观方便灵活。采用一种是用以AT89
9、S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。方案二的原理如图2-2所示。矩阵键盘控制89S51单片机指示电路开锁控制电路延时报警控制电路输入错误锁定键盘AT24C02掉电存储串口显示电路图2-2基于单片机的电子密码锁方案三:采用可编程逻辑器件(CPLD)制作,利用EDA软件编程,下载烧制实现。将所有器件集成在一块芯片上,体积大大减小的同时还提高了稳定性,并且可应用EDA软件仿真,调试,每个设计人员可以充分利用软件代码,提高开发效率,缩短研发周期,降低研发成本。实现方法灵活,
10、调试方便,修改容易。比较以上几种方案,易见采用方案三更优。第3章单元电路设计本论文设计的电子密码锁主要由输入部分、控制部分和输出部分组成其硬件结构图如图3-1所示。其中输入部分包括34矩阵键盘、弹跳消除电路、键盘译码电路、键盘扫描电路、控制部分包括按键存储电路、密码存储电路、比较路输出部分包括多路选通器、七段译码器、扫描信号发生器。其中键盘扫描模块、弹跳消除模块、键盘译码块、控制模块、多路选通模块、七段译码模块都是通过软件实现的。下面对本次设计的主要模块进行一一讨论。弹跳消除路键盘译码路键盘扫描电路按键数据缓存器密码锁存器比 较 器多路选通器七段译码器时钟发生器扫描信号发生器比较结果输出修改密
11、码时输入开锁时输入工作时钟脉冲信号按键数据键盘输入CLK-scan七段码输出clk1图3-1基于CPLD的电子密码锁的结构框图3.1主控芯片的选择本电路的主要控制部分和接口输入部分都是在CPLD内部通过VHDL语言实现的,所以CPLD模块位本设计的核心。根据系统要求的功能,以及CPLD芯片容量的分级,本论文选用ALTERA公司MAX7000S系列的EPM7128SLC器件作为主控芯片,它是一种基于乘机项结构的复杂可编程逻辑器件,它的基本逻辑单元时由一些与、或阵加上触发器构成,其中与或阵列完成组合逻辑功能,触发器完成时序逻辑。它的逻辑控制灵活,可反复编程,有利于系统的扩展和改进,而且其集成度高,
12、保密性好。3.2输入部分电路设计3.1.1矩阵键盘模块本次设计选用的是3X4矩阵键盘,基本结构如图3-2所示,它是用3条I/O线作为行线,4条I/0线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键,当某键被按下时,该按键的接点会连接行线和列线,这样有按键按下时行线呈现逻辑0的状态,未按下时则呈现逻辑1状态。图3-2键盘电路键盘电路的工作原理时通过行线送入扫描信号,然后从列线读取状态判断是否有按键按下。其方法时依次给行线送低电平,检查列线的输出。如果列线信号为高电平,则代表低电平信号所在的行中无按键按下;如果列线输入为低电平,则低电平信号所在的行和出现低电平的列的交点处有按键按下
13、。扫描信号由KY3-KY0进入键盘,变化的顺序依次是:1110-1101-1011-0111-1110,每次扫描一行,依次循环。假设现在扫描信号为1101,即扫描“4”、“5”、“6”这一排按键,如果这排当中没有按键被按下的话,则列扫描信号KX2-KX0读出的值为111;反之,当6按键被按下时则由KX2-KX0读出的值位110,其他依次类推。由于矩阵式键盘是无法独自地完成按键工作的,要搭配时序产生电路 键盘扫描电路 弹跳消除电路 键盘译码电路才能可靠工作。键盘上的有效数据是0到9这十个数字键和两个功能键(*键:修改密码键:#键:输入数字小于四位时按下此键表示消除键,输入数字等于四位时表示开锁键
14、)。根据上面所述原理,可以得到各按键的位置与数码关系如表3-1所示。表3-1按键位置与数码关系KY3KYO110111101110110111011101101110111011011101110111KX2KX0011101110011101110011101110011101110按键号123456789*0#3.1.2键盘扫描模块键盘扫描的实现过程如下:对于34键盘,通常连接为3行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出3行为高电平,然后输出4列为低电平,再读入输出的3行的值,通常高电平会被低电平拉低,如果读入的3行均为高电
15、平,那么肯定没有按键按下,否则,如果读入的3行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。同理,获取列值也是如此,先输出4列为高电平,然后在输出3行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。获取到行值和列值以后,组合成一个8位的数据,根据实现不同的编码在对每个按键进行匹配,找到键值后在7段码管显示。3.1.3弹跳消除模块因为本次设计的按键采用机械式开关结构,在开关切换的瞬间会在接触点出来会弹跳的现象,这种弹跳现象可能造成误动作而影响到正确性。本设计中采用延时的软件方法消除抖动,若采样信号检测到输入由“1”变到“0”或由“0
16、”变为“1”,先延时2个周期,仍旧检测到是“0”或“1”,则说明按键状态确实发生了变化,否则作抖动处理,不予理会。这样就消除了抖动.原理图如下:图3-3弹跳电路3.1.4键盘译码模块上述键盘中的按键可分为数字按键和功能按键,每个按键都有自己相应的作用,比如#键可以消除密码和开锁,*键可以设置密码。数字按键主要用来输入数字,键盘所产生的输出(KX2-KX0)无法直接拿来使用,因此必须由键盘译码来规划每个按键的输出形式,以便执行相应的动作。3.3控制部分电路设计电子密码锁的控制电路结构如图3-4所示,包括输入数字寄存部分、预存密码部分和比较部分。输入数字寄存器输入数字寄存器比较器按数字键输入比较结
17、果输出图3-4控制部分结构框图其中输入数字寄存器部分是一个16位的寄存器,负责保存输入的4位数字,在按下解说信号后其全部数据送入比较器,解锁后,如果按下更改密码按键,则把所有数据送入预存密码寄存器。预存密码寄存器也是一个16位的寄存器,负责保存密码。比较器的功能是比较输入的数字和预存密码是否相等,相等则解锁,不等则红灯亮。如果输入数字,第一个数字会从显示器的最右端显示,每按一个新数字,显示器上的数字往左移动一格,以便将新数字显示出来;如果想更改输入的数字,按清除键清除所有输入的数字,再重新输入4位数。因为设计的是四位电子密码锁,当输入的数字键超过4格时,电路不予理会,且不显示第四个以后输入的数
18、字功能按键的作用如下:(1) 密码核对:在密码变更、解除电锁之前,必须先核对密码是否正确。(2) 密码变更:按下此键可将目前的数字设定成新的密码。要变更密码前须输入旧的密码。(3) 上锁:按下此键可将密码锁上锁。上锁之前必须先设定密码,才能上锁,此密码必须是四位才有效。(4) 解锁:检查输入的密码是否正确,密码正确即开锁。(5) 密码清除:为了怕使用者忘记密码,设计一个四位数字作为万能密码,不论所设密码是什么,只要输入万能密码即可开锁。3.4输出部分电路设计该设计的输出电路由显示缓存器、多路选通器、时钟发生器、扫描信号发生器、七段译码器组成,其结构和模块划分如图3-5所示。显示缓存器多路选通器
19、七段译码器时钟发生器扫描信号发生器图3-5输出部分结构框图其中显示缓存器是一个存储量为16位的寄存器,它用于存储LED显示的内容。所以4个数码管就需要16位的存储器。多路选通器用于从显示缓存器中选择出某一个LED的内容用于显示。扫描信号用于选择片选信号,片选信号依次并循环地选通各个LED管时钟发生器,通过对全局时钟的分频得到扫描模块所需的时钟。七段译码模块把4位BCD码译成便于显示的七段码。该显示电路的工作过程如下:寄存器所存储的数据经由数据选择器送到译码电路, 将其转换成七段显示器的显示码, 转送到七段显示器, 数据选择与显示管选择必须同步。由于设计的是4位数的数字密码锁, 一位十进制数需要
20、4个二进制位表示, 所以寄存器必须是16 位的。因为是以扫描的方式轮流被点亮的, 因此寄存器上的数据必须一组一组地分开传送, 每次送4个位。第4章系统仿真测试该密码锁利用ALTERA公司的仿真软件MAX+PLUS对所设计的电子密码锁进行编译和综合仿真,其仿真结果如图4-1所示。图4-1电子密码锁仿真示意图KX是输入列扫描信号,即按下键盘后键盘输出的信号。当在行扫描信号为B时,列扫描信号输入为3,则代表数字键7按下,这时输入数字计数器NUMB_CNT自动加一,输入数字缓存器值变为0007,数字键标志FLAG-NUMB发出一个时钟周期的脉冲;当行扫描信号为E时,列扫描信号输入为5,经过译码后知数字
21、键2按下,NUMB_CNT自动又加一,数字键标志又发出脉冲;行扫描信号为7时,列扫描信号送入3代表功能解锁键按下,这时功能键标志FLAG-FUNC发出一个时钟周期的脉冲,并且把输入的数字清除,把送入的数字和密码寄存器的数字进行比较后ENLOCK输出为1代表输入密码正确,并且解锁。DBOUT、SEGOUT、SELOUT是独立的模块,只是负责包BCD _CODE的值依次轮流的输出到数码管上。至此密码锁的整体程序的仿真结果表明本设计完全可以达到所要求的功能。在将程序下载到EPM7128SLC84-15芯片中,在自己制作的板上进行硬件测试,经实验验证,该电子密码锁达到了设计要求,其试验结果如下:(1)
22、当使用时,输入4位密码,然后按上锁键*,如果这个键时开的,那么用户刚输入4位密码就时预存密码,等下一次开锁时输入在4位密码,按解锁键#,就可开锁;如果锁这时时锁的,输入的4位密码按解锁键#后就和原来预存密码进行比较,正确的话,锁自动打开,错误的话,刚输入的4位密码被清零,重新输入4位密码。其中号键即为开锁键又为清零键。(2)输入4位万能密码锁时,锁自动开。(3)当用户不小心按错数字时,按#键,可作清零处理,显示器显示为0000,重新输入4位密码。(4)当需要修改密码时,先开锁,然后输入四位新密码,并按下密码修改键(*号键)完成密码修改。总结从仿真及实验结果可以看出,本文提出的电子密码锁具有很强
23、的实践性,对于不同的场合所需要的不同的密码的位数和输入密码的次数,只需稍加修改就可实现,这样升级和维护都很方便。若要求更复杂的功能还可以进一步完善。 通过这三周的学习,我感觉有很大的收获:首先,通过学习使自己对课本上的知识可以应用于实际,使的理论与实际相结合,加深自己对课本知识的更好理解,同时实习也段练了我个人的动手能力:能够充分利用图书馆去查阅资料,增加了许多课本以外的知识。能对Protel99Se、和EWB等仿真软件操作,能达到学以致用。对我们学生来说,理论与实际同样重要,这是我们以后在工作中说明自己能力的一个重要标准。在实习中,我感受到了老师对学生的那种悔人不卷的精神,每天的固定时间,老
24、师都来给我们指导,使我们少走弯路,顺利完成实习任务,请允许我向你们致意崇高的敬意,感谢你们,老师!参考文献1侯伯亨,顾新VHDL硬件描述语言与数字逻辑电路设计西安:西安电子科技大学出版社,20042姜立冬VHDL语言程序设计及应用北京:北京邮电大学出版社,20013朱明程,孙普可编程逻辑系统的VHDL设计技术南京:东南大学出版社,19884林敏,方颖VHDL数字系统设计与高层次综合北京:电子工业出版社,20025王道宪CPLD/FPGA可编程逻辑器件应用与开发北京:国防工业出版社,20056祖龙起,刘仁杰一种新型可编程密码锁大连:大连轻工业学院学报,20027宁爱民应用AT89C2051单片机
25、设计电子密码锁淮海工学院学报,20038王卫兵,刘克刚,朱秋萍用FPGA 的电子密码锁电子技术,2005附录源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CTRL IS PORT(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_LOGI
26、C; CLK:IN STD_LOGIC; ENLOCK:OUT STD_LOGIC; DATA_BCD:OUT STD_LOGIC_VECTOR(15 DOWNTO);END ENTITY CTRL;ARCHITECTRE ART OF CTRL IS SIGNAL 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
27、; BEGIN -寄存器清零信号的产生进程 PROCESS(CLK) BEGIN IF CLKEVENT AND CLK=1THEN R1=R0;R0=FLAG_F; END IF; RR2=R1 AND NOT R0; CLR=RR2; END PROCESS; -按键输入数据的储存、清零进程 KEYIN_PROCESS:BLOCK IS SIGNAL RST,D0,D1:STD_LOGIC; BEGIN RST=RR2; PROCESS(FLAG_N,RST)IS BEGIN IF RST=1THEN ACC=00000; -CLEAR INPUT NC=000; ELSE IF FLAG
28、_NEVENT AND FLAG_N=1 THEN IF NC4 THEN ACC=ACC(11 DOWNTO 0)&DATA_N; NC=NC+1; END IF; END IF; END IF; END PROCESS; END BLOCK KEYIN_PROCESS; -上锁/开锁控制进程 LOCK_PROCESS:BLOCK IS BEGIN PROCESS(CLK,DATA_F)IS BEGIN IF(CLKEVENT AND CLK=1)THEN IF NC=4 THEN IF DATA_F(2)=1THEN -上锁控制信号有效 REG=ACC; -密码锁储 QA=1; QB=0;
29、 ELSIF DATA_F(0)=1THEN -开锁控制信号有效 IF REG=ACC THEN -密码核对 QA=0; QB=1; END IF: ELSIF ACC=01000THEN -设置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; 四川信息职业技术学院学生姓名刘剑学号班级通技06-2专业通信技术设计(论文)题目基于CPLD/FPGA的电子密码锁指导教师潘锋、谭望春指导老师考核意见等级: 指导教师:答辩评语等级: 答辩老师: 总评成绩等级: 考核小组组长:备注以上两项成绩综合后,指导老师考核成绩占总分的60%,答辩成绩占总分的40%,按五级记分(优、良、中、及格、不及格)。毕业设计(论文)评语