4位数字密码锁毕业设计_第1页
4位数字密码锁毕业设计_第2页
4位数字密码锁毕业设计_第3页
4位数字密码锁毕业设计_第4页
4位数字密码锁毕业设计_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

华中科技大学文华学院毕业设计(论文)题目:4位数字密码锁设计(密码设置及验证电路)学生姓名:学号:学部(系):信息科学与技术学部专业年级:08通信工程指导教师:陈超原职称或学位:年05月31日目录1绪论 51.1设计内容 51.2设计规定 52系统设计 52.1模块划分 52.1系统原理框图 53功能模块的实现 63.1时序电路 63.2密码设置 73.3密码输入 73.4密码验证 84软件仿真 95数字逻辑系统简介 105.1QuartusII软件简介 105.2硬件描述语言 115.2.1VHDL语言 115.2.2Verilog语言 126结论 13附录 141时序电路 142密码设置输入 163密码验证 17参照文献 19谢辞 20

摘要:本设计运用FPGA作为关键控制板,用Verilog硬件描述语言进行编程,运用计算机软硬件控制技术,设计一种基于FPGA的数字密码锁,能实现密码设定(假如密码没设定则默认密码为0000),密码输入及验证,当密码输入错误时报警或则指示灯亮;反之,密码输入对的时,此外一种指示灯亮。将程序下载到Altera企业的Cyclone系列目的芯片EP2C5T144C8上调试通过,并观测实际现象,满足设计规定。关键词:FPGAVerilog数字密码锁AbstractThedesignusingtheFPGAasthecoreofthecontrolpanel,Veriloghardwaredescriptionlanguageforprogramming,Computerhardwareandsoftwarecontroltechnology,designanFPGA-baseddigitalcodelock,Setthepassword(ifthepasswordisnotsetthenthedefaultpasswordis000000),Passwordinputandverification,Alarmorthelightwhenthepasswordinputerror;Onthecontrary,enterthecorrectpassword,alight.ProgramdownloadedtothetargetchipEP2C5T144C8Altera’sCycloneseriesthroughdebugging,andtoobservetheactualphenomenon,tomeetthedesignrequirements.Keywords:FPGAVerilogDigitalcodelock引言伴随人们生活水平的提高,怎样实现家庭防盗这一问题也变得尤其的突出,老式的机械锁由于其构造的简朴,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大顾客的青睐,电子密码锁的使用体现了人们消费水平、保安意识和科技水平的提高,并且防止了携带甚至丢失钥匙的麻烦。目前设计密码锁的措施诸多,例如用老式的PCB板设计、用PLC设计或者用单片机设计等等。而用Verilog可以愈加迅速、灵活地设计出符合多种规定的密码锁,优于其他设计措施。Verilog是一种符合IEEE原则的硬件描述语言,其最大的特点是借鉴高级程序设计语言的功能特性,对电路的行为与构造进行高度抽象化、规范化的形式描述,并对设计的不一样层次、不一样领域的模型验证与综合优化等处理,是设计过程延伸到高度自动化。1绪论1.1设计内容设计一种4位数字密码锁子系统1.2设计规定可以预设4位密码;具有密码输入及检测功能;运用MAXplus对所设计的电路进行仿真并分析成果。2系统设计本设计中,FPGA系统采用硬件描述语言Verilog按模块化方式进行设计,并将各模块集成于FPGA芯片中,然后通过QuartusII9.0软件开发平台对设计文献自动完毕逻辑编译、逻辑化简、综合及优化、逻辑布局布线、逻辑仿真,最终对FPGA芯片进行编程,实现系统的设计规定。2.1模块划分密码锁的的构成重要由密码输入、密码设置,此外密码锁必须可以保留已设置的密码,因而需要一种寄存器来保留密码,同步由于控制电路和报警电路要用到不一样的时钟,因而需要一种时序产生电路来生成需要的不一样信号,采用分频措施实现。2.1系统原理框图根据密码锁的电路特点,选用的是试验箱的模式6电路,根据电路功能,在这里设计的密码锁以4位2进制代码作为密码的电子密码锁。其原理框图如下图2.1所示:报警电路时序产生电路报警电路时序产生电路比较控制比较控制密码输入开锁信号密码输入开锁信号寄存器(保留设置的密码)寄存器(保留设置的密码)密码设置密码设置图2.1电子密码锁原理框图3功能模块的实现该模块重要是完毕密码设置,密码输入,密码验证功能。3.1时序电路在密码锁的电路中,输入计时、报警计时需要的1HZ的时钟脉冲信号,而驱动蜂鸣器工作需要的很高频率的脉冲信号,因而这里采用输入一种高频脉冲(1024HZ)信号来驱动蜂鸣器,采用分频的措施得到1HZ的计时脉冲。process(clk_1k) variablecnt1:integer:=0; begin ifrising_edge(clk_1k)then ifcnt1=512then clk_1<=notclk_1; cnt1:=0; elsecnt1:=cnt1+1; endif; endif; endprocess;程序阐明:clk_1k为输入的1024HZ高频脉冲,cnt为分频得到的1HZ计时脉冲。3.2密码设置为了安全性,密码锁必须可以反复的设定密码,在设定密码锁后,应当设置一种寄存器来存储设定的密码。process(rst,password,enter_p)is begin ifrst='0'then ifenter_p='1'then ram<=password; en1<='1'; endif; endif; endprocess;程序阐明:rst低电平时所有的模块复位,只有密码设置模块工作;password为设置密码时的输入端,ram就是存储密码的寄存器;enter_p为在这里为密码设置使能端,高电平有效。密码设置的仿真波形如下图,由图中可以清晰地看到在enter_p高电平时寄存器ram中得到了输入的密码1001。3.3密码输入密码输入部分规定在密码开始输入时进行计时,超时了规定报警,因此在密码输入时设置一种计时使能信号en2,密码开始输入时使能信号en2有效,控制电路的计时器开始计时;并且在密码确认键按下之前,电路不能对输入密码和已设置密码进行比较,因此需要设置一种寄存器,来存储输入的数据,当确认键按下时,就将寄存器里的数据送给控制部分进行比较。process(rst,enter_c,en1,code) begin ifrst='1'then ifen1='1'then ifenter_c='1'then code_tmp<=code; en2<='1'; endif; elsecode_tmp<="0000";en2<='0'; endif; elsecode_tmp<="0000";en2<='0'; endif; endprocess;密码输入电路图如下图3.2图3.1密码输入电路此密码输入电路使用74HC14710线-4线优先编码器,由于147只有9个输入端,因此加入了数码0的按键,当输入端有键被按下时,输出端输出该键的BCD码的反码,并且GS/输出为0,代表有键被按下。GS/用于控制密码存储控制电路的移位。该电路有密码确认按键、密码修改按键和输入清除按钮,密码确认按键和密码修改按键的作用是密码输入完毕时,对控制电路的移位电路清零。密码确认按钮还接密码验证电路中的三态输出门,还连接密码验证电路中的JK触发器的清零端,用于对这个触发器的清零。输出清除按键按下时本次输入清零。密码输入(修改)电路中的按键按下去都自动弹上来,也就是说按键只有被按下时才连接低电平,否则接高电平。3.4密码验证该模块中采用自定义存储器RAM进行密码的存储,重要使用case语句和if_else语句进行程序的衔接。密码验证电路图如下图3.2图3.2密码验证电路密码验证电路用16个异或门构成,每个异或门的输入来自密码存储电路的输入密码存储芯片和预设密码存储芯片,比较输入密码与否和预设密码相似,再加上与非门电路,判断所有输入与否为1,为1则表达输入对的,否则错误。密码输入电路中确实认按钮控制比较成果输出的三态门,输入四位密码后,按下确认键,验证后的成果输出至开锁报警电路。密码修改按键连接JK触发器的CLK,修改密码流程是:输入预设密码——按下修改密码按键——输入新密码——按下密码确认按键,修改结束。在输入新密码后在按下密码确认按键使JK触发器清零,清零后使得预设密码存储芯片不再存储输入密码。JK触发器的正向输出端接报警电路,假如密码输入错误就会报警。4软件仿真rst低电平时所有的模块复位,只有密码设置模块工作;password为设置密码时的输入端,ram就是存储密码的寄存器;enter_p为在这里为密码设置使能端,高电平有效。密码设置的仿真波形如下图,由图中可以清晰地看到在enter_p高电平时寄存器ram中得到了输入的密码1001。图4.1密码设置仿真波形rst置高,设置密码模块不工作,其他部分正常工作,en1为高时代表密码设置完毕,密码锁开始工作;enter_c是密码输入使能信号,高电平时表达开始密码输入,此时code_tmp中开始存储输入的数据,计时使能信号en2也变成高电平。密码输入仿真波形如下,由图中可清晰的看到在enter_c为高时,寄存器code_tmp中存储了输入的数据code(系统仿真时有10ns的延时)图4.2密码输入仿真波形5数字逻辑系统简介5.1QuartusII软件简介QuartusII是Altera企业在2二十一世纪初推出的可编程逻辑器件的集成开发软件,这个软件是该企业前一代可编程逻辑器件集成开发软件MAX+PLUSII的更新换代产品。QuartusII集成开发软件支持可编程逻辑器件开发的整个过程,它提供一种与器件无关的设计环境。软件界面友好,使设计者能以便地进行设计输入、设计处理和器件编程。QuartusII集成开发软件提供了完整的多平台设计环境,能满足多种特定设计的需要。QuartusII设计工具支持VHDL、VerilogHDL硬件描述语言的设计流程。它也是在片可编程系统(SystemonaProgrammableChip,SOPC)的综合设计环境。此外,QuartusII集成开发软件也可以运用第三方软件的成果,并支持第三方软件的工作。为加紧应用系统的开发,QuartusII集成开发软件包括许多十分有用的参数化模块库(LibraryofParameterizedModules,LPM),它们是复杂或高级系统构建的重要构成部分,在数字系统设计中被大量使用。当然这些模块也可以与顾客设计文献一起使用。Altera提供的LPM函数均基于Altera企业器件的构造做了优化设计,在设计中合理地调用LPM不仅可以加紧设计进程,还可以提高系统性能。有些LPM宏功能模块的使用必须依赖于某些Altera企业特定器件的硬件功能,如各类存储器模块、DSP模块、LVDS驱动器模块、PLL及SERDES和DDIO模块等,这在使用中需要注意。5.2硬件描述语言5.2.1VHDL语言VHDL重要用于描述数字系统的构造,行为,功能和接口。除了具有许多具有硬件特性的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序构造特点是将一项工程设计,或称设计实体(可以是一种元件,一种电路模块或一种系统)提成外部(或称可视部分,及端口)和内部(或称不可视部分),既波及实体的内部功能和算法完毕部分。在对一种设计实体定义了外部界面后,一旦其内部开发完毕后,其他的设计就可以直接调用这个实体。这种将设计实体提成内外部分的概念是VHDL系统设计的基本点。特点:VHDL语言可以成为原则化的硬件描述语言并获得广泛应用,它自身必然具有诸多其他硬件描述语言所不具有的长处。归纳起来,VHDL语言重要具有如下长处:(1)VHDL语言功能强大,设计方式多样VHDL语言具有强大的语言构造,只需采用简朴明确的VHDL语言程序就可以描述十分复杂的硬件电路。同步,它还具有多层次的电路设计描述功能。此外,VHDL语言可以同步支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。VHDL语言设计措施灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计措施;既支持模块化设计措施,也支持层次化设计措施。(2)VHDL语言具有强大的硬件描述能力VHDL语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传播描述或者构造描述,也可以采用三者的混合描述方式。同步,VHDL语言也支持惯性延迟和传播延迟,这样可以精确地建立硬件电路的模型。VHDL语言的强大描述能力还体目前它具有丰富的数据类型。VHDL语言既支持原则定义的数据类型,也支持顾客定义的数据类型,这样便会给硬件描述带来较大的自由度。(3)VHDL语言具有很强的移植能力VHDL语言很强的移植能力重要体目前:对于同一种硬件电路的VHDL语言描述,它可以从一种模拟器移植到另一种模拟器上、从一种综合器移植到另一种综合器上或者从一种工作平台移植到另一种工作平台上去执行。(4)VHDL语言的设计描述与器件无关采用VHDL语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。当硬件电路的设计描述完毕后来,VHDL语言容许采用多种不一样的器件构造来实现。(5)VHDL语言程序易于共享和复用VHDL语言采用基于库(library)的设计措施。在设计过程中,设计人员可以建立多种可再次运用的模块,一种大规模的硬件电路的设计不也许从门级电路开始一步步地进行设计,而是某些模块的累加。这些模块可以预先设计或者使用此前设计中的存档模块,将这些模块寄存在库中,就可以在后来的设计中进行复用。由于VHDL语言是一种描述、模拟、综合、优化和布线的原则硬件描述语言,因此它可以使设计成果在设计人员之间以便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。5.2.2Verilog语言VerilogHDL是目前应用最为广泛的硬件描述语言.VerilogHDL可以用来进行多种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等。VerilogHDL适合算法级,寄存器级,逻辑级,开关级、系统级和版图级等各个层次的设计和描述.VerilogHDL进行设计最大的长处是其工艺无关性.这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的详细细节,只需根据系统设计的规定施加不一样的约束条件,即可设计出实际电路.VerilogHDL是一种硬件描述语言(hardwaredescriptionlanguage),为了制作数字电路而用来描述ASICs和FPGA的设计之用。Verilog的设计者想要以C编程语言为基础设计一种语言,可以使工程师比较轻易学习。Verilog是由en:GatewayDesignAutomation企业于大概1984年开始发展。GatewayDesignAutomation企业后来被CadenceDesignSystems于1990年所购并。目前Cadence对于Gateway企业的Verilog和Verilog-XL模拟器拥有所有的财产权。选择VHDL还是verilogHDL?这是一种初学者最常见的问题。其实两种语言的差异并不大,他们的描述能力也是类似的。掌握其中一种语言后来,可以通过短期的学习,较快的学会另一种语言。选择何种语言重要还是看周围人群的使用习惯,这样可以以便后来的学习交流。当然,假如您是专用集成电路(ASIC)设计人员,则必须首先掌握verilog,由于在IC设计领域,90%以上的企业都是采用verilog进行IC设计。对于PLD/FPGA设计者而言,两种语言可以自由选择。6结论在满足本设计规定后,基于该系统的硬件以固定,不过由于使用FPGA做主控制模块,而FPGA是现场可编程器件,以及其可用I/O口诸多未用,因此还可以做深入拓展,例如可以用12864或者1602做显示,还可以外加个蜂鸣器做报警器等等。按照毕业设计规定,采用以上环节完毕设计任务,到达了设计规定的需要,重点对硬件、软件的构成进行了分项、模块化设计,在这次课程设计中,同学之间互相协助,有什么不懂的大家在一起商议,发现我们所学的知识实在是有限,不过我们可以充足运用网络的优势去查阅资料。最终,课程设计中波及到的电路图,本想用图片制作工具绘制,但还是水平有限,最终只能自己动手手工找图,就是效率太低也太累,后来要好好学习有关的图片制作。在整个设计过程中我认识到了许多东西,也培养了独立思索和设计的能力,树立了对知识应用的信心,相信会对此后的学习工作和生活有非常大的协助,使自己充足体会到了在设计过程中的成功喜悦。虽然这个设计做的不怎么好,不过在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。附录1时序电路libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityexp19isport(Clk:instd_logic;--时钟信号Rst:instd_logic;--复位信号Kr:instd_logic_vector(3downto0);--键盘行Kc:bufferstd_logic_vector(3downto0);--键盘列SPK:outstd_logic;--扬声器输出KEY_State:outstd_logic;--按键指示Door:bufferstd_logic;--门状态Display:outstd_logic_vector(7downto0);--七段码管显示SEG_SEL:bufferstd_logic_vector(2downto0));--七段码管片选endexp19;architecturebehaveofexp19issignalkeyr,keyc:std_logic_vector(3downto0);signalkcount:std_logic_vector(2downto0);signalkflag1,kflag2:std_logic;signalbuff1,buff2,buff3,buff4,buff5,buff6:integerrange0to15;signalpush_num:integerrange0to15;--按键次数signalDisp_Temp:integerrange0to15;signalDisp_Decode:std_logic_vector(7downto0);signalSEC1,SEC10:integerrange0to9;signalClk_Count1:std_logic_vector(3downto0);--1KHz时钟分频计数器signalClk_Count2:std_logic_vector(9downto0);--2Hz时钟分频计数器signalClk1KHz:std_logic;signalClk2Hz:std_logic;signalClk1Hz:std_logic;signalError_Num:integerrange0to3;signalError_Flag:std_logic;signalError_Count:std_logic_vector(2downto0);signalMusic_Count:std_logic_vector(2downto0);beginprocess(Clk)beginif(Clk'eventandClk='1')thenif(Clk_Count1<10)thenClk_Count1<=Clk_Count1+1;elseClk_Count1<="0001";endif;endif;endprocess;Clk1KHz<=Clk_Count1(2);process(Clk1KHz)beginif(Clk1KHz'eventandClk1KHz='1')thenif(Clk_Count2<1000)thenClk_Count2<=Clk_Count2+1;elseClk_Count2<="";endif;endif;endprocess;Clk2Hz<=Clk_Count2(9);process(Clk2Hz)beginif(Clk2Hz'eventandClk2Hz='1')thenClk1Hz<=notClk1Hz;endif;endprocess;2密码设置输入process(rst,password,enter_p)is begin ifrst='0'then ifenter_p='1'then ram<=password; en1<='1'; endif; endif; endprocess;process(rst,enter_c,en1,code) begin ifrst='1'then ifen1='1'then ifenter_c='1'then code_tmp<=code; en2<='1'; endif; elsecode_tmp<="0000";en2<='0'; endif; elsecode_tmp<="0000";en2<='0'; endif; endprocess;3密码验证process(Clk1KHz,Rst)--密码校验beginif(Rst='0')thenDoor<='0';Error_Num<=0;Error_Flag<='0';elsif(Clk1KHz'eventandClk1KHz='1')thenif(push_num=5andError_Num<3)then--修改此处的值可修改门的密码,此处密码为1234if(buff1=1andbuff2=2andbuff3=3andbuff4=4)thenDoor<='1';elseDoor<='0';endif;elsif(push_num=4andError_Num<1)thenif(Door='0')thenError_Flag<='1';Error_Num<=Error_Num+1;elseError_Flag<='0';Error_Num<=0;endif;elsif(Error_Count=4)thenError_Flag<='

温馨提示

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

评论

0/150

提交评论