4位数字密码锁毕业设计.doc

上传人:文库蛋蛋多 文档编号:3930599 上传时间:2023-03-28 格式:DOC 页数:20 大小:214.50KB
返回 下载 相关 举报
4位数字密码锁毕业设计.doc_第1页
第1页 / 共20页
4位数字密码锁毕业设计.doc_第2页
第2页 / 共20页
4位数字密码锁毕业设计.doc_第3页
第3页 / 共20页
4位数字密码锁毕业设计.doc_第4页
第4页 / 共20页
4位数字密码锁毕业设计.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《4位数字密码锁毕业设计.doc》由会员分享,可在线阅读,更多相关《4位数字密码锁毕业设计.doc(20页珍藏版)》请在三一办公上搜索。

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

2、附录141时序电路142密码设置输入163密码验证17参考文献19谢辞20摘要:本设计利用FPGA作为核心控制板,用Verilog 硬件描述语言进行编程,利用计算机软硬件控制技术,设计一个基于FPGA的数字密码锁,能实现密码设定(如果密码没设定则默认密码为0000),密码输入及验证,当密码输入错误时报警或则指示灯亮;反之,密码输入正确时,另外一个指示灯亮。将程序下载到Altera公司的Cyclone系列目标芯片EP2C5T144C8上调试通过,并观察实际现象,满足设计要求。关键词:FPGA Verilog 数字密码锁AbstractThe design using the FPGA as th

3、e core of the control panel, Verilog hardware description language for programming, Computer hardware and software control technology, design an FPGA-based digital code lock, Set the password(if the password is not set then the default password is 000000), Password input and verification, Alarm or t

4、he light when the password input error; On the contrary, enter the correct password , a light. Program downloaded to the target chip EP2C5T144C8 Alteras Cyclone series through debugging , and to observe the actual phenomenon , to meet the design requirements.Keywords: FPGA Verilog Digital code lock引

5、 言随着人们生活水平的提高,如何实现家庭防盗这一问题也变得尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐,电子密码锁的使用体现了人们消费水平、保安意识和科技水平的提高,而且避免了携带甚至丢失钥匙的麻烦。目前设计密码锁的方法很多,例如用传统的PCB板设计、用PLC设计或者用单片机设计等等。而用Verilog可以更加快速、灵活地设计出符合各种要求的密码锁,优于其他设计方法。Verilog是一种符合IEEE标准的硬件描述语言,其最大的特点是借鉴高级程序设计语言的功能特性,对电路的行为与结构进行高度抽象化、规范化的形式

6、描述,并对设计的不同层次、不同领域的模型验证与综合优化等处理,是设计过程延伸到高度自动化。1绪论1.1设计内容设计一个4位数字密码锁子系统1.2设计要求1、 能够预设4位密码;2、 具有密码输入及检测功能;3、 利用MAXplus对所设计的电路进行仿真并分析结果。2 系统设计本设计中,FPGA系统采用硬件描述语言Verilog按模块化方式进行设计,并将各模块集成于FPGA芯片中,然后通过Quartus II9.0软件开发平台对设计文件自动完成逻辑编译、逻辑化简、综合及优化、逻辑布局布线、逻辑仿真,最后对FPGA芯片进行编程,实现系统的设计要求。2.1 模块划分密码锁的的构成主要由密码输入、密码

7、设置,此外密码锁必须能够保存已设置的密码,因而需要一个寄存器来保存密码,同时由于控制电路和报警电路要用到不同的时钟,因而需要一个时序产生电路来生成需要的不同信号,采用分频方法实现。2.1 系统原理框图根据密码锁的电路特点,选用的是实验箱的模式6电路,根据电路功能,在这里设计的密码锁以4位2进制代码作为密码的电子密码锁。其原理框图如下图2.1所示:报警电路时序产生电路比较控制密码输入开锁信号寄存器(保存设置的密码)密码设置图2.1电子密码锁原理框图3功能模块的实现该模块主要是完成密码设置,密码输入,密码验证功能。3.1时序电路在密码锁的电路中,输入计时、报警计时需要的1HZ的时钟脉冲信号,而驱动

8、蜂鸣器工作需要的很高频率的脉冲信号,因而这里采用输入一个高频脉冲(1024HZ)信号来驱动蜂鸣器,采用分频的方法得到1HZ的计时脉冲。process(clk_1k) variable cnt1:integer:=0;beginif rising_edge(clk_1k) thenif cnt1=512 thenclk_1=not clk_1;cnt1:=0;else cnt1:=cnt1+1;end if;end if;end process;程序说明:clk_1k为输入的1024HZ高频脉冲,cnt为分频得到的1HZ计时脉冲。3.2密码设置为了安全性,密码锁必须能够重复的设定密码,在设定密码

9、锁后,应该设置一个寄存器来存储设定的密码。process(rst,password,enter_p) is beginif rst=0 thenif enter_p=1 thenram=password;en1=1;end if;end if;end process;程序说明:rst低电平时所有的模块复位,只有密码设置模块工作;password为设置密码时的输入端,ram就是存储密码的寄存器;enter_p为在这里为密码设置使能端,高电平有效。 密码设置的仿真波形如下图,由图中可以清楚地看到在enter_p高电平时寄存器ram中得到了输入的密码1001。3.3密码输入密码输入部分要求在密码开始

10、输入时进行计时,超时了要求报警,因此在密码输入时设置一个计时使能信号en2,密码开始输入时使能信号en2有效,控制电路的计时器开始计时;而且在密码确认键按下之前,电路不能对输入密码和已设置密码进行比较,因此需要设置一个寄存器,来存储输入的数据,当确认键按下时,就将寄存器里的数据送给控制部分进行比较。 process(rst,enter_c,en1,code) begin if rst=1 thenif en1=1 thenif enter_c=1 thencode_tmp=code;en2=1;end if; else code_tmp=0000;en2=0;end if; else code

11、_tmp=0000;en2=0;end if;end process;密码输入电路图如下图3.2 图3.1密码输入电路此密码输入电路使用74HC147 10线-4线优先编码器,由于147只有9个输入端,因此加入了数码0的按键,当输入端有键被按下时,输出端输出该键的BCD码的反码,并且GS/输出为0,代表有键被按下。GS/用于控制密码存储控制电路的移位。该电路有密码确认按键、密码修改按键和输入清除按钮,密码确认按键和密码修改按键的作用是密码输入完毕时,对控制电路的移位电路清零。密码确认按钮还接密码验证电路中的三态输出门,还连接密码验证电路中的JK触发器的清零端,用于对这个触发器的清零。输出清除按

12、键按下时本次输入清零。密码输入(修改)电路中的按键按下去都自动弹上来,也就是说按键只有被按下时才连接低电平,否则接高电平。3.4密码验证该模块中采用自定义存储器RAM进行密码的存储,主要使用case语句和if_else语句进行程序的衔接。密码验证电路图如下图3.2图3.2密码验证电路密码验证电路用16个异或门组成,每个异或门的输入来自密码存储电路的输入密码存储芯片和预设密码存储芯片,比较输入密码是否和预设密码相同,再加上与非门电路,判断全部输入是否为1,为1则表示输入正确,否则错误。密码输入电路中的确认按钮控制比较结果输出的三态门,输入四位密码后,按下确认键,验证后的结果输出至开锁报警电路。密

13、码修改按键连接JK触发器的CLK,修改密码流程是:输入预设密码按下修改密码按键输入新密码按下密码确认按键,修改结束。在输入新密码后在按下密码确认按键使JK触发器清零,清零后使得预设密码存储芯片不再存储输入密码。JK触发器的正向输出端接报警电路,如果密码输入错误就会报警。4软件仿真rst低电平时所有的模块复位,只有密码设置模块工作;password为设置密码时的输入端,ram就是存储密码的寄存器;enter_p为在这里为密码设置使能端,高电平有效。 密码设置的仿真波形如下图,由图中可以清楚地看到在enter_p高电平时寄存器ram中得到了输入的密码1001。图4.1密码设置仿真波形rst置高,设

14、置密码模块不工作,其他部分正常工作,en1为高时代表密码设置完毕,密码锁开始工作;enter_c是密码输入使能信号,高电平时表示开始密码输入,此时code_tmp中开始存储输入的数据,计时使能信号en2也变成高电平。 密码输入仿真波形如下,由图中可清楚的看到在enter_c为高时,寄存器code_tmp中存储了输入的数据code(系统仿真时有10ns的延时) 图4.2密码输入仿真波形5数字逻辑系统简介5.1 Quartus II软件简介Quartus II是Altera公司在221世纪初推出的可编程逻辑器件的集成开发软件,这个软件是该公司前一代可编程逻辑器件集成开发软件MAX+PLUS II的

15、更新换代产品。Quartus II集成开发软件支持可编程逻辑器件开发的整个过程,它提供一种与器件无关的设计环境。软件界面友好,使设计者能方便地进行设计输入、设计处理和器件编程。Quartus II集成开发软件提供了完整的多平台设计环境,能满足各种特定设计的需要。Quartus II设计工具支持VHDL、Verilog 硬件描述语言的设计流程。它也是在片可编程系统(System on a Programmable Chip, SOPC)的综合设计环境。另外,Quartus II集成开发软件也可以利用第三方软件的结果,并支持第三方软件的工作。为加快应用系统的开发,Quartus II集成开发软件包

16、含许多十分有用的参数化模块库(Library of Parameterized Modules, LPM),它们是复杂或高级系统构建的重要组成部分,在数字系统设计中被大量使用。当然这些模块也可以与用户设计文件一起使用。Altera提供的LPM函数均基于Altera公司器件的结构做了优化设计,在设计中合理地调用LPM不仅可以加快设计进程,还可以提高系统性能。有些LPM宏功能模块的使用必须依赖于一些Altera公司特定器件的硬件功能,如各类存储器模块、DSP模块、LVDS驱动器模块、PLL及SERDES和DDIO模块等,这在使用中需要注意。5.2硬件描述语言5.2.1 VHDL语言VHDL主要用于

17、描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。特点:VHDL 语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来

18、,VHDL 语言主要具有以下优点:(1) VHDL 语言功能强大,设计方式多样 VHDL 语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述功能。此外,VHDL 语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。VHDL 语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法; 既支持模块化设计方法,也支持层次化设计方法。 (2) VHDL 语言具有强大的硬件描述能力 VHDL 语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以

19、采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,VHDL 语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL 语言的强大描述能力还体现在它具有丰富的数据类型。VHDL 语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。 (3) VHDL 语言具有很强的移植能力 VHDL 语言很强的移植能力主要体现在: 对于同一个硬件电路的 VHDL 语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。 (4) VHDL 语言的设计描述与器件

20、无关 采用 VHDL 语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。当硬件电路的设计描述完成以后,VHDL 语言允许采用多种不同的器件结构来实现。 (5) VHDL 语言程序易于共享和复用 VHDL 语言采用基于库 ( library) 的设计方法。在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。 由于 VHD

21、L 语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。5.2.2 Verilog语言Verilog HDL是目前应用最为广泛的硬件描述语言Verilog HDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等。 Verilog HDL适合算法级,寄存器级,逻辑级,开关级、系统级和版图级等各个层次的设计和描述 Verilog HDL进行设计最大的优点是其工艺无关性这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计

22、的要求施加不同的约束条件,即可设计出实际电路 Verilog HDL是一种硬件描述语言(hardware description language),为了制作数字电路而用来描述ASICs和FPGA的设计之用。Verilog 的设计者想要以 C 编程语言为基础设计一种语言,可以使工程师比较容易学习。 Verilog 是由en:Gateway Design Automation公司于大约1984年开始发展。Gateway Design Automation公司后来被 Cadence Design Systems于1990年所购并。现在 Cadence 对于 Gateway 公司的 Verilog

23、和 Verilog-XL 模拟器拥有全部的财产权。 选择VHDL还是verilog HDL? 这是一个初学者最常见的问题。其实两种语言的差别并不大,他们的描述能力也是类似的。掌握其中一种语言以后,可以通过短期的学习,较快的学会另一种语言。 选择何种语言主要还是看周围人群的使用习惯,这样可以方便日后的学习交流。当然,如果您是专用集成电路(ASIC)设计人员,则必须首先掌握verilog,因为在IC设计领域,90%以上的公司都是采用verilog进行IC设计。对于PLD/FPGA设计者而言,两种语言可以自由选择。6 结论在满足本设计要求后,基于该系统的硬件以固定,但是由于使用FPGA做主控制模块,

24、而FPGA是现场可编程器件,以及其可用I/O口很多未用,因此还可以做进一步拓展,例如可以用12864或者1602做显示,还可以外加个蜂鸣器做报警器等等。按照毕业设计要求,采取以上步骤完成设计任务,达到了设计要求的需要,重点对硬件、软件的组成进行了分项、模块化设计,在这次课程设计中,同学之间互相帮助,有什么不懂的大家在一起商量,发现我们所学的知识实在是有限,不过我们能够充分利用网络的优势去查阅资料。最后,课程设计中涉及到的电路图,本想用图片制作工具绘制,但还是水平有限,最后只能自己动手手工找图,就是效率太低也太累,以后要好好学习相关的图片制作。在整个设计过程中我认识到了许多东西,也培养了独立思考

25、和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助, 使自己充分体会到了在设计过程中的成功喜悦。虽然这个设计做的不怎么好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。附录1时序电路library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; - entity exp19 is port( Clk : in std_logic; -时钟信号 Rst : in std_logic; -复位信

26、号 Kr : in std_logic_vector(3 downto 0); -键盘行 Kc : buffer std_logic_vector(3 downto 0); -键盘列 SPK : out std_logic; -扬声器输出 KEY_State : out std_logic; -按键指示 Door : buffer std_logic; -门状态 Display : out std_logic_vector(7 downto 0); -七段码管显示 SEG_SEL : buffer std_logic_vector(2 downto 0); -七段码管片选 end exp19;

27、 - architecture behave of exp19 is signal keyr,keyc : std_logic_vector(3 downto 0); signal kcount : std_logic_vector(2 downto 0); signal kflag1,kflag2 : std_logic; signal buff1,buff2,buff3,buff4,buff5,buff6 : integer range 0 to 15; signal push_num : integer range 0 to 15; -按键次数 signal Disp_Temp : in

28、teger range 0 to 15; signal Disp_Decode : std_logic_vector(7 downto 0); signal SEC1,SEC10 : integer range 0 to 9; signal Clk_Count1 : std_logic_vector(3 downto 0); -1KHz时钟分频计数器 signal Clk_Count2 : std_logic_vector(9 downto 0); -2Hz时钟分频计数器 signal Clk1KHz : std_logic; signal Clk2Hz : std_logic; signal

29、 Clk1Hz : std_logic; signal Error_Num : integer range 0 to 3; signal Error_Flag : std_logic; signal Error_Count : std_logic_vector(2 downto 0); signal Music_Count : std_logic_vector(2 downto 0); begin process(Clk) begin if(Clkevent and Clk=1) then if(Clk_Count110) then Clk_Count1=Clk_Count1+1; else

30、Clk_Count1=0001; end if; end if; end process; Clk1KHz=Clk_Count1(2); process(Clk1KHz) begin if(Clk1KHzevent and Clk1KHz=1) then if(Clk_Count21000) then Clk_Count2=Clk_Count2+1; else Clk_Count2=0000000001; end if; end if; end process; Clk2Hz=Clk_Count2(9); process(Clk2Hz) begin if(Clk2Hzevent and Clk

31、2Hz=1) then Clk1Hz=not Clk1Hz; end if; end process; 2密码设置输入process(rst,password,enter_p) is beginif rst=0 thenif enter_p=1 thenram=password;en1=1;end if;end if;end process;process(rst,enter_c,en1,code) begin if rst=1 thenif en1=1 thenif enter_c=1 thencode_tmp=code;en2=1;end if; else code_tmp=0000;en

32、2=0;end if; else code_tmp=0000;en2=0;end if;end process;3密码验证process(Clk1KHz,Rst) -密码校验 begin if(Rst=0) then Door=0; Error_Num=0; Error_Flag=0; elsif(Clk1KHzevent and Clk1KHz=1) then if(push_num=5 and Error_Num3) then -修改此处的值可修改门的密码,此处密码为1234 if(buff1=1 and buff2=2 and buff3=3 and buff4=4) then Door

33、=1; else Door=0; end if; elsif(push_num=4 and Error_Num1) then if(Door=0) then Error_Flag=1; Error_Num=Error_Num+1; else Error_Flag=0; Error_Num=0; end if; elsif(Error_Count=4) then Error_Flag=0; elsif(Error_Flag=1) then Door=not Error_Count(0); end if; end if; end process; process(Clk2Hz,Rst) begin

34、 if(Rst=0 or Error_Flag=0) then Error_Count=000; elsif(Clk2Hzevent and Clk2Hz=1 and Error_Flag=1) then Error_Count=Error_Count+1; end if; end process; 参考文献1王俊峰等,实用电路手册【M】,北京:机械工业出版社,2009.122韩雪涛等,电子单元电路应用与实测【M】,北京:电子工业出版社,2009.63张金等,电子设计与制作100列【M】,北京:电子工业出版社,2009.104周润景等,基于Quartus II的数字系统Verilog HDL设

35、计实例详解【M】,北京:电子工业出版社,2010.55于海生等,微型计算机控制技术【M】,北京:清华大学出版社,2009.96康华光等,电子技术基础(数字部分)【M】,北京:高等教育出版社,2005.77康华光等,电子技术基础(模拟部分)【M】,北京:高等教育出版社,2005.78徐洋等,基于Verilog HDL 的FPGA设计与工程应用【M】,北京:人民邮电出版社,2009.109Adel S. Sedra and Keneth C.Smith. Microelectronic Circuits. 4th ed. New York: Oxford University Press, 199

36、810Mark N. Horestein,Microelectronic Circuits and Devices. 2nd ed. New Jersey: Prentice-Hall Inc. 1996谢辞流光容易把人抛,红了樱桃,绿了芭蕉。伴随着快乐与艰辛的四年的大学时光转瞬即逝,眼前浮现的是师长、同窗、亲人和朋友那一张张可亲可敬的面孔,心头涌起的是无限感慨和深深谢意。深深地感谢我的指导老师!能够成为陈老师的学生,我觉得很幸运。本论文能够顺利完成,离不开陈老师的耐心指导和严格要求,陈老师在论文的选题、研究理论、框架结构、数据整理,直至撰写、修改和定稿等各个环节均严格把关,并投入了大量的时间和精力。作为指导老师,他知识渊博,造诣深厚,治学严谨;作为师长,他胸襟开阔,以人为本,关爱学生。感谢远方默默支持我的父母,感谢他们的养育之恩!我的成长伴随着无私的母爱和父亲的谆谆教导,他们的关怀和期望是我前行的动力。最后,再次衷心的感谢在我成长过程中关心和帮助过我的所有人,祝你们健康、幸福、快乐!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号