基于PLD的电子密码锁设计毕业设计论文

基于PLD的电子密码锁设计毕业设计论文

ID:267135

大小:654.50 KB

页数:39页

时间:2017-07-16

上传者:chess95660
基于PLD的电子密码锁设计毕业设计论文_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《基于PLD的电子密码锁设计毕业设计论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

毕业设计题目:基于PLD的电子密码锁设计III 基于PLD的电子密码锁设计摘要本文针对电子密码锁的设计来论述,主要运用的是VHDL语言,这种语言能与PLD器件结合,具有很强的仿真能力和综合能力。电子密码锁系统主要由数字密码输入电路、密码锁控制电路和密码锁的显示电路三部分构成。其中数字密码输入电路的目的是为了完成密码的输入功能;而密码锁控制电路则是整个电路控制的核心,是为了完成对数字键功能键输入的响应和控制;密码锁显示电路是通过七段译码电路从而实现显示功能。此次设计的开发工具基于Xilinx公司的ISE软件,仿真工具则为ModelsimSE。设计中对主要模块的程序进行了仿真,仿真结果表明其功能满足设计的需要。关键词:电子密码锁,PLD,VHDL33 DesignofElectronicPasswordLockBasedonPLDAbstractInthispaper,adesignofelectronicpasswordlockisdiscussed,usingtheVHDLlanguagewhichcanbecombinedwithPLDandhavestrongsimulationandsynthesiscapability.Thesystemiscomposedofthreeparts,whicharethepasswordinputcircuit,thepasswordcontrolcircuitandthedisplaycircuit,thefunctionofthefirstpartisforthepasswordinput.Thesecondpartisthecoreofthisdesign,whichisresponsibleforthecontrolandresponseforthenumberkeysandotherfunctionkeys.Thelastpartisforthedisplayofpasswordthroughseven-segmentdecodercircuit.TheplatformofthisdesignisISEfromXilinxCompanyandthetoolofsimulationisModelsimSE.Thefunctionmatchthedesignrequirementsafterthetimingsimulationforthecodesofmainmodules.Keywords:ElectronicPasswordLock,ProgrammableLogicDevice,VeryHardwareDescriptionLanguage33 目录摘要IIIAbstractIV1绪论11.1电子密码锁的意义11.2电子密码锁的简介及特点11.3电子密码锁国内外发展现状11.4可编程器件FPGA/CPLD与单片机比较的优劣21.5电子密码锁系统的设计要求32设备方案设计与总体设计42.1电子密码锁系统设计方案42.2数字密码输入电路的设计52.2.1矩阵式键盘工作原理52.2.2时序产生电路62.2.3弹跳消除电路72.2.4键盘扫描电路92.2.5键盘译码电路102.2.6键盘存储电路102.3密码锁控制电路的设计102.4密码锁显示的设计102.5密码锁整体设计图143软件系统设计153.1XilinxISE5.x特点介绍153.2设计流程163.2.1设计输入173.2.2功能仿真173.2.3设计综合173.2.4设计实现173.2.5时序仿真174系统扩展思路185总结195.1本设计的总结归纳195.2设计过程中遇到的问题及如何解决195.3体会19参考文献2033 致谢21附录I键盘输入消斗电路源程序、原理图及仿真图22附录II密码锁输入源程序、原理图及仿真图24附录III密码锁控制源程序、原理图及仿真图28附录IV按键译码显示源程序、原理图及仿真图3233 基于PLD的电子密码锁设计1绪论1.1电子密码锁的意义近年来,随着社会经济的不断发展,人们生活水平的日益提高,安全防盗问题已得到越来越多人的关注。安全可靠、使用方便的电子密码锁成了人们防盗的首选,例如保险柜、门卡系统、自动售货机等都涉及到了密码锁。以EDA开发工具为工作平台,使用PLD可编程器件和VHDL语言设计的电子密码锁具有密码预置,误码锁死等功能。这种设计方法不仅简化了系统结构,而且提高了系统的可靠性和保密性。通过运用该可编程逻辑器件开发的数字系统能方便地对所设计的数字电路进行升级和改进。[1]1.2电子密码锁的简介及特点电子密码锁是通过密码的输入对电路工作或芯片工作进行控制,再通过电路设备来控制机械的开关闭合,完成控制锁的开关任务的一种电子产品。其在实际生活应用中使用非常之广,主要的功能是用来保护某些需要保密的东西,以避免其他的人员使用不正当的手段对其进行非法操作。[2]电子密码锁的特点:保密性高,即与普通的机械锁相比较,其运用的是密码开锁,随机按键开锁的成功率比较低;便于操作、方便,即出门不用携带钥匙而且无需担心钥匙掉落或忘带,开门时输入密码锁自动打开,轻松又方便;防盗,即当其他人员输入密码多次错误时,会启动报警系统,提醒家人和邻居。1.3电子密码锁国内外发展现状锁自古以来就是把守护门的铁将军,人们对它要求非常高,不仅要安全可靠的防盗,而且要使用方便,这也是制锁者长期以来研制的目标。随着电子技术的快速发展,各类电子产品都应运而生,电子密码锁就是其中的一个。据有关资料介绍,电子密码锁的研究始于20世纪30年代,在一些特殊场所早就有所应用。这种锁是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷是为提高锁的安全性。当今智能电子密码锁发展已经到了非常高的境界,由于电子元件特别是单片机应用在这几年得到空前发展,无论功能性,稳定性都比较全面,在保密方面已做到人眼识别,指纹识别,人声识别基本上电影上有的现实也有。在国外发展比较早,所以应用也比较广泛,主要在家庭装较贵重地方,银行,保险柜等应用较多,在国内这方面发展也较快,不管自己开发或是引进都有,在重要地方应用也较多,由于价钱比普通弹子锁33 基于PLD的电子密码锁设计较贵,早几年应用较少,现在越来越普及到平常化,未来的发展也会越来越被大众采用,由于它的功能、安全是弹子锁无法相比的。[3]当前使用的电子密码锁大部分是基于单片机技术,以单片机为主要器件,其编码器与解码器的生成为软件方式。在实际应用中,由于程序极易跑飞,系统的可靠性能比较差。基于现场可编程逻辑门阵列FPGA器件的电子密码锁,用FPGA器件构造系统,所有算法完全由硬件电路来实现,使得系统的工作可靠性大大提高。由于FPGA具有现场可编程功能,因此,当设计需要改变时,只需改变FPGA中的控制和接口电路,利用EDA工具将更新后的设计下载到FPGA中即可,无需改变外部电路的设计,大大提高了设计的效率,有极大的发展前景。1.4可编程器件FPGA/CPLD与单片机比较的优劣(1)单片机要深入理解是很有难度的。单片机一般适合去处理一些实时性的东西而且速度很快,比较低级的那种是面对硬件工作的,大多数都是比较高级的使用汇编语言对单片机进行软件编程,所以说要会用单片机一定要先学会汇编语言,汇编语言的难度还是很高的。编程还跟硬件的连接方法有关系。FPGA/CPLD是使用标准的硬件描述语言VHDL,它可以对所有型号的FPGA/CPLD进行编程,而且VHDL是一种行为描述语言,它是不需要对系统的硬件结构了解了之后再进行编程的,编程不需要联系硬件那么就突破了软件与硬件之间的联系,做一个电路板只需要很短的时间,那么就让学习与设计的效率得到很大的提高。 (2)FPGA/CPLD的运行速度比单片机来得快。单片机是把指令通过串行形式系统指令的进行执行,这样的过程会影响系统运行的速度,单片机对于用于高速采样系统是难以完成。可是对于FPGA/CPLD来说却是刚好相反的,在实时处理过程中是通过并行的方式工作的,这样就提高了运行的速度。同时,单片机的每个引脚功能都是固定的,而FPGA/CPLD能通过编程的需要来确定引脚的功能。而且如果需要的话,FPGA/CPLD中也可以设计出一个甚至多个CPU,从而达到控制整个电路功能的运行目的。所以说FPGA/CPLD是在EDA的基础上的被大家广泛的接受和应用,从其他意义上来说,这样的工作方式是跟单片机系统的工作方式是完全相背离。现在的FPGA/CPLD不仅仅拥有单片机的所有工作能力,同时还具有串行并行同时应用的工作方式和高速且高可靠性的特点。可见,用单片机实现的电子密码锁其电路比较复杂、灵活不高、成本较大且可靠性和安全性低。而采用先进EDA技术实现的密码锁功耗低、体积小、价格便宜,维护和升级都十分方便,具有较好的发展前景。[4]1.5电子密码锁系统的设计要求33 基于PLD的电子密码锁设计完成基于PLD的电子密码锁的设计开发。即以EDA开发工具为工作平台,使用PLD可编程器件和VHDL语言设计的电子密码锁具有密码预置,误码锁死等功能。(1)数码输入:按下一个数字键,其对应的数字就显示在最右边的数码管上,同时将先前输人的所有数字向左移动一位。设计密码为4位,系统只能显示前4位输人的数码。(2)数码清除:当按下#键时,清除前面输入的所有值,并显示为“0000”。(3)激活电锁:按下*键时可以使密码锁的门上锁。(上锁前必须预先设定一个四位的数字密码)(4)密码解锁:按下#键,再输入数码;如果输入与系统储存密码一致,密码锁就能开启;否则不能解锁。[5]33 基于PLD的电子密码锁设计2设备方案设计与总体设计2.1电子密码锁系统设计方案电子密码锁主要有三部分组成:数字密码输入电路、密码锁控制电路、密码锁显示电路如图2-1所示。键盘扫描电路时序产生电路键盘弹跳消除电路键盘译码电路开/关门锁电路数字比较电路按键数据缓冲器————————七段数码管显示电路密码锁控制电路寄存器清除信号发生电路BCD至七段译码电路数字密码输入电路图2-1数字电子密码锁系统总体框图⑴密码锁输入电路包括时序产生电路、弹跳消除电路、键盘扫描电路、键盘译码电路和按键存储电路等几个小的功能电路。⑵密码锁控制电路包括按键数据的缓冲存储电路,密码的清除、变更、存储、激活电锁电路(寄存器清除信号发生电路),密码核对(数值比较电路),解锁电路(开/关门锁电路)等几个小的功能电路。⑶33 基于PLD的电子密码锁设计七段数码管显示电路主要将待显示数据的BCD码转换成数码器的七段显示驱动编码。作为电子密码锁的输入电路,可供选择有数字机械式键盘和触摸式数字键盘等多种方案。虽然机械式键盘存在一些诸如机械产生的弹跳消除问题和机械部分的接触等问题,但是和触摸式的3*4键盘相比,机械式键盘具有成本低、可靠性高、电路结构简单、技术成熟和应用广泛特点,因此用于数字电子密码锁中比较合适。数字电子密码锁的显示信息电路可采用LED数码显示和液晶屏幕显示两种。液晶显示频率高、可靠性好、易于扩展等优点,但是普通液晶显示屏存在着亮度低、对复杂环境的适应能力差等缺点,因此本设计的显示电路使用通用的LED数码管。[6]2.2数字密码输入电路的设计密码锁输人模块的电路框图如图2-2所示,它由时序产生电路、弹跳消除电路、键盘扫描电路、键盘译码电路和按键存储电路五部分组成。123456789*0#弹跳消除电路键盘译码电路按键数据缓存器键盘输入键盘扫描电路工作时钟脉冲按键数据键盘扫描信号图2-2密码锁的输入电路框图2.2.1矩阵式键盘工作原理矩阵式键盘由0~9数字键、*键及#键构成。其数字键作为密码输入,*键作为上锁功能键,#键作为清除和解锁键如图2-3所示。33 基于PLD的电子密码锁设计123456789*0#KX2011KX1101KX0110KY0(00)1110KY1(01)1101KY2(10)1011KY3(11)0111接上拉电阻来自计数模块图2-33*4矩阵式键盘的面板配置键盘扫描信号由KY0~KY3四个端口进入,顺序依次为1110-1101-1011-0111,分别对应扫描第一行、第二行、第三行并重复扫描。当扫描信号为1110时,即正在扫描1、2、3这样行的按键,如果1、2、3按键一个都没被按下,则KX0~KX2输出信号为111;当1、2、3按键中2号按键被按下,则KX0~KX2输出信号为101如表2-1.表2-1按键位置与数码关系        按键输出信号扫描信号KX2~KX0011101110KY3~KY0扫描第一行(1110)123扫描第二行(1101)456扫描第三行(1011)789扫描第四行(0111)*0#若从KX2~KX0读出的值为111,代表扫描的那列没有按键按下,则不进行按键译码操作,相反,则应将KL0~KL3读出的值送至译码电路进行编码。2.2.2时序产生电路时序产生电路在电路中用于产生三种不同频率的工作脉冲波形,包括系统时钟信号、键盘扫描信号和弹跳消除取样信号。在电路中我们可以建立一个N为计数器,根据需要让其产生不同频率的时钟信号。设初始的时钟信号为CLK,N位计数器的输出为Q(N-1..0),则Q(0)为CLK的2分频脉冲信号,Q(2)为CLK的8分频脉冲信号,Q(N-1)就为CLK的2N33 基于PLD的电子密码锁设计分频脉冲信号。Q(3DOWNTO2)输出一个脉冲波形序列,其值依次为00-01-10-11周期性变化,其变化频率为CLK的8分频,我们可以利用这个规律设计自己所需的频率信号或信号序列。2.2.3弹跳消除电路由于本设计采用的是矩阵式键盘,是机械式开关的一种,由于机械式开关的核心部件为弹性金属簧片,因而在开关切换的瞬间会在接触点出现来回弹跳的现象。虽然只是进行了一次按键,结果在按键信号稳定的前后出现了多个脉冲如图2-4所示。[7]按键按下瞬间抖动波形按键释放瞬间抖动波形图2-4按键弹跳现象产生图弹跳消除电路可避免误操作发生。为使电子密码锁可靠工作,必须加上弹跳消除电路。弹跳消除电路采用软件延时的方法消除抖动,如下是弹跳消除电路的程序、原理图2-5及仿真图2-6。COMPONENTDCFQISPORT(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;33 基于PLD的电子密码锁设计DD0<=D0;DD1<=D1;QQ1<=Q1;QQ0<=Q0;D_OUT<=NOT(D1ANDNOTD0);D_OUT1<=NOTQ1;图2-5弹跳消除原理图33 基于PLD的电子密码锁设计图2-6键盘消斗仿真图如图2-6可以看出,原来的弹跳现象经过键盘输入去抖电路处理后消除了,必须连续两次取样检测到信号才会有反应,否则电路将视为噪声,不予理会。2.2.4键盘扫描电路键盘扫描信号由KY0~KY3四个端口进入,顺序依次为1110-1101-1011-0111,分别对应扫描第一行、第二行、第三行并重复扫描。当扫描信号为1110时,即正在扫描1、2、3这样行的按键,如果1、2、3按键一个都没被按下,则KX0~KX2输出信号为111;当1、2、3按键中2号按键被按下,则KX0~KX2输出信号为101,并进行按键编码操作及将编码结果储存于寄存器中,如下是按键扫描程序及仿真图2-7。PROCESS(CLK_1K)BEGINIF(CLK_1K'EVENTANDCLK_1K='1')THEN--1KHZ的时钟脉冲信号Q<=Q+'1';--计数器ENDIF;C_KEYSM<=Q(5DOWNTO4);--CLK_1K的32分频ENDPROCESS;SEL<="1110"WHENC_KEYSM="00"ELSE--按键行扫描"1101"WHENC_KEYSM="01"ELSE"1011"WHENC_KEYSM="10"ELSE"0111"WHENC_KEYSM="11"ELSE"1111";图2-7键盘扫描输入仿真图(大图见附录II)33 基于PLD的电子密码锁设计如图2-7所示,当KEY_IN输入为011时:扫描信号为1110,则DATA_N为0001;扫描信号为1101,则DATA_N为0010;扫描信号为1011,则DATA_N为0011;扫描信号为0111,则DATA_N为0100.2.2.5键盘译码电路键盘译码电路其作用是用来规划每个按键的输出形式,以便执行相应的动作如表2-2所示。表2-2键盘参数表扫描信号KY0~KY3输出信号KX0~KX1键盘按键键盘译码电路输出按键功能11100111F=0001数码输入1012F=00101103F=001111010114F=01001015F=01011106F=011010110117F=01111018F=10001109F=10010111011*N=0100激活电锁1010F=0000数码输入110#N=0001清除/解除电锁键盘译码电路主要作用是判别是否有按键按下:若被按下的是数字按键则译码成相应的BCD码,没按下任何数字键时,键盘译码输出为“1111”;若被按下的是功能键,则译码成4位码字,由控制电路做相应的操作。2.2.6键盘存储电路键盘存储电路可将每次扫描产生的新按键数据存储下来,因此新数据可能会覆盖前面的数据,所以需要一个按键存储电路,以将整个键盘扫描完毕的结果记录下来。本设计采用串行输入/输出位移寄存器硬件作为按键存储电路,即数据一个接着一个依次进来,输出时采用先键先出的顺序,也是一个一个输出。[8]2.3密码锁控制电路的设计密码锁控制电路是整个电路控制的核心,是为了完成对数字键输人等功能键输人的响应和控制。其数字键输人的响应控制过程如下:(1)数码输入33 基于PLD的电子密码锁设计:按下一个数字键,其对应的数字就显示在最右边的数码管上,同时将先前输人的所有数字向左移动一位。设计密码为4位,系统只能显示前4位输人的数码。(2)数码清除:当按下#键时,清除前面输入的所有值,并显示为“0000”。(3)激活电锁:按下*键时可以使密码锁的门上锁。(上锁前必须预先设定一个四位的数字密码)(4)密码解锁:按下#键,再输入数码;如果输入与系统储存密码一致,密码锁就能开启;否则不能解锁。如下是控制电路的源程序及仿真图2-8:PROCESS(CLK_KZDLU)--寄存器清零信号的产生进程BEGINIF(CLK_KZDLU'EVENTANDCLK_KZDLU='1')THENR1<=R0;R0<=FLAG_F;ENDIF;CLR<=(NOTR0)ANDR1;ENDPROCESS;KEYIN_PROCESS:BLOCKIS--按键输入数据的存储、清零进程SIGNALRST:STD_LOGIC;BEGINRST<=CLR;PROCESS(FLAG_N,RST)IS--复位BEGINIFRST='1'THENACC<="0000000000000000";COUNT<="000";ELSEIFFLAG_N'EVENTANDFLAG_N='1'THEN--密码输入IFCOUNT<"100"THENACC<=ACC(11DOWNTO0)&DATA_N;COUNT<=COUNT+1;ENDIF;ENDIF;ENDIF;ENDPROCESS;ENDBLOCKKEYIN_PROCESS;LOCK_PROCESS:BLOCKIS--上锁/开锁控制进程33 基于PLD的电子密码锁设计BEGINPROCESS(CLK_KZDLU,DATA_F)ISBEGINIF(CLK_KZDLU'EVENTANDCLK_KZDLU='1')THENIFCOUNT="100"THENIFDATA_F(2)='1'THEN--上锁控制信号有效REG<=ACC;--密码存储ELSIFDATA_F(0)='1'THEN--开锁控制信号有效IFREG=ACCTHEN--密码核对QA<='0';QB<='1';ENDIF;ELSIFACC="1000100010001000"THENQA<='0';QB<='1';ENDIF;ENDIF;ENDIF;ENDPROCESS;ENDBLOCKLOCK_PROCESS;图2-8密码锁控制仿真图(大图见附录III)如图2-8所示,FLAG_F为1使按键数据清零、计数器清零。当连续按下0001、0010、0011、0100四个按键时,其ACC就显示0001001000110100.2.4密码锁显示的设计电子密码锁显示电路设计比较简单,是通过七段译码电路来实现显示的,如下是显示电路的源程序、原理图2-9及仿真图2-10。PROCESS(DATA_N)BEGINCASEDATA_Nis数码管是共阴的高电平发亮33 基于PLD的电子密码锁设计WHEN"0000"=>Y1<="1111110";--0WHEN"0001"=>Y1<="0110000";--1WHEN"0010"=>Y1<="1101101";--2WHEN"0011"=>Y1<="1111001";--3WHEN"0100"=>Y1<="0110011";--4WHEN"0101"=>Y1<="1011011";--5WHEN"0110"=>Y1<="1011111";--6WHEN"0111"=>Y1<="1110000";--7WHEN"1000"=>Y1<="1111111";--8WHEN"1001"=>Y1<="1111011";--9WHENOTHERS=>Y1<="0000000";--不亮ENDCASE;ENDPROCESS;图2-9按键显示译码电路原理图图2-10按键译码显示电路仿真图(大图见附录IV)如图2-10所示,当DATA_N输入0001时,译码显示为(0001)H;当DATA_N再输入0010时,译码显示为(0012)H;一次按到0100时,译码显示为(1234)H.33 基于PLD的电子密码锁设计2.5密码锁整体设计图图2-11密码锁的整体组装设计原理图33 基于PLD的电子密码锁设计3软件系统设计3.1XilinxISE5.x特点介绍ISE是Xilinx公司推出的EDA软件系统,目前最高版本为5.x。XilinxISE软件系统是一个集成化环境,由项目导航工具(ProjectNavigator)、设计输入工具(DesignEntryTools)、逻辑综合工具(DesignSynthesis)、设计实现工具(DesignImplementationTools)、设计约束图形编辑接口(DesignConstraintsGraphicUserInterfaces)等组成的一个的软件平台。XilinxISE软件系统还提供一种叫做Snapshot的工具,用于在设计过程中快速保存设计项目的所有文件。可见,XilinxISE软件系统提供一个完全集成化的EDA环境,可以帮助设计者很方便的完成设计以及设计实现,对Xilinx公司的所有FPGA和CPLD提供了非常好的支持。ISE5.li设计软件的主要用户接口是项目导引器,设计者要利用由项目导引器装配在一起的整套设计工具来产生其可编程ASIC的设计,项目导引器的主要窗口如图3-1所示。记录器窗口HDL编辑器工作空间状态条进程窗口项目源窗口菜单工具条标题HDL编辑窗图3-1项目导引器主窗口图上图所示项目导引器接口包括:⑴项目导引器主窗口;33 基于PLD的电子密码锁设计⑵项目源窗口——包括模块、软件包和库等设计项目源;⑶当前项目源进程窗口——显示项目源窗口中所选模块或文件进行的全部任务;⑷项目工作空间——由项目源窗口和当前项目源进程窗口组成;⑸HDL编辑其工作空间——主要的HDL代码文体编辑区域;⑹记录器窗口——包括项目的工作记录,来自综合和现实工具的错误和警告信息。3.2设计流程下面是ISE5.li软件的使用方法,设计输入、设计仿真、设计综合、设计实现和硬件诊断各部分代表设计过程的主要流程如图3-2所示。硬件仿真布局布线映射/分割转换设计实现设计综合设计输入设计仿真图3-2设计流程图33 基于PLD的电子密码锁设计3.2.1设计输入HDL(HardwareDescriptionLanguage)和原理图是常用的两种设计输入方式。当前设计大规模数字集成电路的主要形式就是HDL设计输入方式。HDL语言描述在控制逻辑、状态机、总线功能方面比较突出,其描述的电路能在特定综合器作用下以具体硬件单元较好地实现;原理图输入在顶层设计、手工最优化电路、数据通路逻辑等方面具有图形化强、功能明确、单元节俭等特点。最常用的是以HDL语言为主,原理图为辅的方式,进行混合设计更好的发挥二者的特性。3.2.2功能仿真仿真是指对于完成的设计使用设计软件包进行测试,模拟实际环境下的工作状况。功能仿真也叫前仿真,是指为了了解它实现的功能是否满足原设计的要求,针对逻辑功能进行测试模拟,仿真过程没有加入时序信息,不涉及具体器件的硬件特性。3.2.3设计综合综合,是指对给定的电路实现功能和实现此电路的约束条件,通过计算机进行优化处理,获得一个最理想的电路设计方案。设计综合包括分析、综合和优化三个步骤。以HDL描述为例,分析是采用标准的HDL语法规则对HDL源文件进行分析并纠正语法错误;综合是以选定的FPGA结构和器件为目标,对HDL和FPGA网表文件进行逻辑综合;优化则是根据用户的设计约束对速度和面积进行逻辑优化,产生一个优化的FPGA网表文件,以供FPGA布局和布线工具使用。3.2.4设计实现设计实现通常可分五个步骤:转换(Translate):将多个设计文件进行转换并合并到一个设计库文件中;映射(Map):将网表中逻辑门映射成物理元素,即把逻辑设计分割到构成可编程逻辑阵列内的可配置逻辑块、输入输出块及其它资源中的过程;布局与布线(PlaceandRoute):布局是指从映射取出定义的逻辑和输入输出块,并把它们分配到FPGA内部的物理位置,使用约束条件操作布线软件,完成设计规定的性能要求。在布局布线过程中,可同时提取时序信息形成报告;时序提取(TimeSim):产生一反标文件,供给后续的时序仿真使用;配置(Configure):产生FPGA配置时需要的位流文件。3.2.5时序仿真时序仿真又叫后仿真,是在布局布线后,提取有关的器件延迟、连线延时等时序参数,并在这些基础上进行的仿真,它是接近真实器件运行的仿真。33 基于PLD的电子密码锁设计4系统扩展思路⑴本系统基本达到作为数字密码锁的绝大部分功能,但还有许多不足或需完善的地方。例如采用3*4的通用机械键盘数量的限制,在很大的程度上限制了其功能的扩展。若在系统中加入语音提示模块,在按下按键的同时给出语音提示,开启或是关闭密码锁的同时给出语音提示,将会使该系统显得更加人性化,更加接近成为一个成熟的电子产品。⑵设计外围电路:系统用方波信号源,直流工作电源。⑶若为毕业设计,可要求设计调速程序、外围电路等,还可要求设计制作整个系统,包括PBC的制作。33 基于PLD的电子密码锁设计5总结5.1本设计的总结归纳⑴概述了电子密码锁的意义、简介及特点。⑵讲述了电子密码锁在国内外的形势和发展。⑶介绍了可编程器件FPGA/CPLD与单片机相比的优劣以及对电子密码锁功能的设计要求。⑷讲述电子密码锁的主要内容:电子密码锁主要有数字密码输入电路、密码锁控制电路、密码锁显示电路三部分组成。5.2设计过程中遇到的问题及如何解决一些语态的错误:在编程运行过程中,通常会犯一些低级的错误,分号漏加多加、信号没定义、信号位数没设定好等。通过编译软件的指出都很轻松地一一解决了。程序上的错误:在自己编写过程中,由于编写的功能、输入信号、输出信号比较复杂,从而导致编写不够完善、意思不够明朗,最后运行时出来的仿真图不是自己想要的。经过自己的反复检查,翻阅了一些有关的资料以及导师的帮助和细心的指导、提示,最后终于看到了自己想要的结果。仿真上的错误:由于在程序中没有设置好相应脉冲信号频率或者设置的脉冲信号频率偏大及偏小导致得不到自己想要的仿真图。经过资料的查询和一些仿真频率的运算(比如译码时钟频率为128HZ、扫描信号频率一般在16HZ),在自己一次又一次的调试中得到了理想的仿真图5.3体会在刚选择好毕业设计题目时,我觉得对于用VHDL语言设计一个电子密码锁应该会是一件很容易的事情,因为我们刚学过VHDL语言不久,但是通过这次毕业设计我才醒悟到我们学到的东西太肤浅了。毕业设计不仅仅是对我们所学知识的一种考验,而且也是对我们各方面的一种提高。通过这次的毕业设计,我学到了很多。在知识方面,我更深入的了解了VHDL语言及运用,完善了以前的不足,特别是一些细节,以前不注意的小问题现在变成了成败的关键;在思想方面,让我坚定了自己的信念,只要功夫深铁棒就能磨成针,我相信只要自己能够努力下去,坚持不懈,成功将不会是幻想。33 基于PLD的电子密码锁设计参考文献[1]王红航,张华斌.电子密码锁的EDA设计与实现[J].广东:电子元器件应用,2009-6,11(6).[2]王静.基于VHDL的电子密码锁设计[J].安防科技,2010-3.[3]孟祥忠.数字电子密码锁的设计[C].大连:大连理工大学,2007-6-1.[4]张雪,殷昌贵.基于VHDL的数字密码锁的设计与实现[J].山东:东华大学学报(自然科学版),2007-6,33(3).[5]吴兵,陈浩田,宏松.基于EDA技术的电子密码锁设计[J].大科技·科技天地,2010(7).[6]许琦.基于FPGA的电子密码锁的设计[J].科技信息(学术版),2006(10).[7]王永祥,刘焱.EDA实验教学的电子密码锁创新设计[J].江西:宜春学院学报,2010,32(8).[8]范柳絮,李宏,陈姻,谷志教.基于CPLD的电子密码锁设计[J].西安:电子测量技术,2008,31(8).[9]高倩,谢海良.基于Max+Plus2和VHDL的电子密码锁设计[J].河南:现代电子技术,2009,32(17).[10]尤国平,陈新,林伟,黄世震.基于VHDL语言的串行密码锁设计[J].国外电子测量技术,2005,24(9).[11]曹建国,王威,王丹.一种基于VHDL的电子密码锁的设计与实现[J].四川:安防科技,2007-2.[12]王显海,贾金玲,陈光建,张海军,于文军.基于FPGA的电子密码锁的研制[J].微型机与应用,2010,29(16).[13]李连华.基于FPGA的电子密码锁设计[J].中国科技信息,2006(1).[14]吴海涛,梁迎春.基于状态机的语音电子密码锁设计[J].电子工程师,2007-4,33(4).[15]陈华丽,何颜平.基于VHDL的数字密码锁设计[J].武汉:国外电子测量技术,2008-4,27(4).[16]KemalAydin,LittleFalls,N.J.ELECTRONICLOCKSYSTEM[C].Mar.16,1981.[17]CareyS.Clark,362935thAve.West,Seattle,Wash.98199;CordonB.Winch,Seattle,Wash.ELECTRONICLOCKSYSTEM[C].Apr.30,1986.33 基于PLD的电子密码锁设计附录I键盘输入消斗电路源程序、原理图及仿真图--DCFQ.VHDlibraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitydcfqisPORT(CLK,CLRN,PRN,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);enddcfq;architectureBehavioralofdcfqisbeginPROCESS(CLK,CLRN,PRN)BEGINIFCLRN='0'ANDPRN='1'THENQ<='0';ELSIFCLRN='1'ANDPRN='0'THENQ<='1';ELSIFCLK'EVENTANDCLK='1'THENQ<=D;ENDIF;ENDPROCESS;endBehavioral;libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entityqudou1isPort(D_IN:instd_logic;CLK:INSTD_LOGIC;DD1,DD0,QQ1,QQ0:outstd_logic;D_OUT,D_OUT1:outstd_logic);endqudou1;architectureBehavioralofqudou1isCOMPONENTDCFQISPORT(CLK,CLRN,PRN,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);33 基于PLD的电子密码锁设计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;endBehavioral;图I键盘输入去抖仿真图33 基于PLD的电子密码锁设计附录II密码锁输入源程序、原理图及仿真图libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entityjianpangsr1isPORT(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_KZDLU:OUTSTD_LOGIC;--控制电路时钟脉冲CLK_QUDOU:OUTSTD_LOGIC--去抖电路时钟信号);endjianpangsr1;architectureBehavioralofjianpangsr1isCOMPONENTXIAODOU1IS--去抖元件声明Port(D_IN:instd_logic;CLK:INSTD_LOGIC;DD1,DD0,QQ1,QQ0:outstd_logic;D_OUT,D_OUT1:outstd_logic);ENDCOMPONENTXIAODOU;SIGNALCLK:STD_LOGIC;--电路工作时钟脉冲SIGNALC_KEYSM:STD_LOGIC_VECTOR(1DOWNTO0);--键盘扫描信号(00-01-10-11)寄存器SIGNALC_QUDOU:STD_LOGIC;--去抖时钟信号SIGNALC:STD_LOGIC_VECTOR(2DOWNTO0);--去抖后键盘输入寄存器SIGNALN,F:STD_LOGIC_VECTOR(3DOWNTO0);--数字、功能按键译码值的寄存器SIGNALFN,FF:STD_LOGIC;--数字、功能按键标志值数字、功能按键33 基于PLD的电子密码锁设计SIGNALSEL:STD_LOGIC_VECTOR(3DOWNTO0);--扫描键盘行BEGINDATA_N<=N;DATA_F<=F;FLAG_N<=FN;FLAG_F<=FF;CLK_KZDLU<=CLK;C<=KEY_IN;COUNTER:BLOCKIS--扫描信号发生器SIGNALQ:STD_LOGIC_VECTOR(6DOWNTO0):="0000000";BEGINPROCESS(CLK_1K)BEGINIF(CLK_1K'EVENTANDCLK_1K='1')THENQ<=Q+1;ENDIF;C_QUDOU<=Q(2);C_KEYSM<=Q(6DOWNTO5);CLK<=Q(0);ENDPROCESS;CLK_QUDOU<=C_QUDOU;SEL<="1110"WHENC_KEYSM="00"ELSE"1101"WHENC_KEYSM="01"ELSE"1011"WHENC_KEYSM="10"ELSE"0111"WHENC_KEYSM="11"ELSE"1111";CLK_SCAN<=SEL;ENDBLOCKCOUNTER;XIAODOU:BLOCKIS--键盘去抖BEGINU1:xiaodouportmap(D_IN=>KEY_IN(0),D_OUT=>C(0),CLK=>C_QUDOU);U2:xiaodouportmap(D_IN=>KEY_IN(1),D_OUT=>C(1),CLK=>C_QUDOU);U3:xiaodouportmap(D_IN=>KEY_IN(2),D_OUT=>C(2),CLK=>C_QUDOU);ENDBLOCKXIAODOU;KEY_DECODER:BLOCKIS--键盘译码SIGNALZ:STD_LOGIC_VECTOR(6DOWNTO0);BEGIN33 基于PLD的电子密码锁设计PROCESS(CLK_1K)BEGINZ<=SEL&C;IF(CLK_1K'EVENTANDCLK_1K='1')THENCASEZISWHEN"0111101"=>N<="0000";WHEN"1110011"=>N<="0001";WHEN"1110101"=>N<="0010";WHEN"1110110"=>N<="0011";WHEN"1101011"=>N<="0100";WHEN"1101101"=>N<="0101";WHEN"1101110"=>N<="0110";WHEN"1011011"=>N<="0111";WHEN"1011101"=>N<="1000";WHEN"1011110"=>N<="1001";WHENOTHERS=>N<="1111";ENDCASE;ENDIF;IF(CLK_1K'EVENTANDCLK_1K='1')THENCASEZISWHEN"0111011"=>F<="0100";WHEN"0111110"=>F<="0001";WHENOTHERS=>F<="1000";ENDCASE;ENDIF;ENDPROCESS;FN<=NOT(N(3)ANDN(2)ANDN(1)ANDN(0));FF<=F(2)ORF(0);ENDBLOCKKEY_DECODER;33 基于PLD的电子密码锁设计图II密码锁输入仿真图33 基于PLD的电子密码锁设计附录III密码锁控制源程序、原理图及仿真图libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitykzdianlu1isPort(DATA_N:instd_logic_vector(3downto0);DATA_F:instd_logic_vector(3downto0);FLAG_N:instd_logic;FLAG_F:instd_logic;CLK_KZDLU:instd_logic;ENCLK:outstd_logic;DATA_BCD:outstd_logic_vector(15downto0));endkzdianlu1;architectureBehavioralofkzdianlu1isSIGNALACC,REG:std_logic_vector(15downto0);--ACC用于暂存键盘输入的信号,REG用于存储输入的密码SIGNALCOUNT:std_logic_vector(2downto0);SIGNALR1,R0:std_logic;SIGNALCLR,BB,QB,QA:std_logic;beginPROCESS(CLK_KZDLU)--寄存器清零信号的产生进程BEGINIF(CLK_KZDLU'EVENTANDCLK_KZDLU='1')THENR1<=R0;R0<=FLAG_F;ENDIF;CLR<=(NOTR0)ANDR1;ENDPROCESS;KEYIN_PROCESS:BLOCKIS--按键输入数据的存储、清零进程SIGNALRST:STD_LOGIC;BEGIN33 基于PLD的电子密码锁设计RST<=CLR;PROCESS(FLAG_N,RST)IS--复位BEGINIFRST='1'THENACC<="0000000000000000";COUNT<="000";ELSEIFFLAG_N'EVENTANDFLAG_N='1'THEN--密码输入IFCOUNT<"100"THENACC<=ACC(11DOWNTO0)&DATA_N;COUNT<=COUNT+1;ENDIF;ENDIF;ENDIF;ENDPROCESS;ENDBLOCKKEYIN_PROCESS;LOCK_PROCESS:BLOCKIS--上锁/开锁控制进程BEGINPROCESS(CLK_KZDLU,DATA_F)ISBEGINIF(CLK_KZDLU'EVENTANDCLK_KZDLU='1')THENIFCOUNT="100"THENIFDATA_F(2)='1'THEN--上锁控制信号有效REG<=ACC;--密码存储QA<='1';QB<='0';ELSIFDATA_F(0)='1'THEN--开锁控制信号有效IFREG=ACCTHEN--密码核对QA<='0';QB<='1';ENDIF;ELSIFACC="1000100010001000"THENQA<='0';QB<='1';ENDIF;ENDIF;ENDIF;33 基于PLD的电子密码锁设计ENDPROCESS;ENDBLOCKLOCK_PROCESS;。ENCLK<=QAAND(NOTQB);--输出上锁/开锁控制信号DATA_BCD<=ACC;--输出显示信息endBehavioral;33 基于PLD的电子密码锁设计图III密码锁控制电路仿真图33 基于PLD的电子密码锁设计附录IV按键译码显示源程序、原理图及仿真图libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entityyima1isPort(DATA_N:instd_logic_vector(3downto0);Y:outSTD_LOGIC_VECTOR(6DOWNTO0);Y_OUT:outstd_logic_vector(31downto0));endyima1;architectureBehavioralofyima1isSIGNALY1:STD_LOGIC_VECTOR(6DOWNTO0);SIGNALY2:STD_LOGIC_VECTOR(31DOWNTO0);beginprocess(DATA_N)begincaseDATA_Niswhen"0000"=>Y1<="1111110";when"0001"=>Y1<="0110000";when"0010"=>Y1<="1101101";when"0011"=>Y1<="1111001";when"0100"=>Y1<="0110011";when"0101"=>Y1<="1011011";when"0110"=>Y1<="1011111";when"0111"=>Y1<="1110000";when"1000"=>Y1<="1111111";when"1001"=>Y1<="1111011";whenOTHERS=>Y1<="0000000";endcase;Y2<=Y2(24DOWNTO0)&Y1;Y<=Y1;Y_OUT<=Y2;33 基于PLD的电子密码锁设计endprocess;endBehavioral;33 基于PLD的电子密码锁设计图IV按键译码显示仿真图33

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭