基于VHDL语言的电子密码锁设计.doc_第1页
基于VHDL语言的电子密码锁设计.doc_第2页
基于VHDL语言的电子密码锁设计.doc_第3页
基于VHDL语言的电子密码锁设计.doc_第4页
基于VHDL语言的电子密码锁设计.doc_第5页
免费预览已结束,剩余8页可下载查看

下载本文档

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

文档简介

基于VHDL语言的电子密码锁设计 摘 要 本次设计基于VHDL语言,使用MAX+plusII并行两位电子密码锁进行设计,并对设计过程进行了详细描述。采用VHDL语言进行电子密码锁的设计可使设计工作简洁直观,快速实现既定功能。电子密码锁在对财产安全保护等方面都有着重要作用,应用前景非常广泛。该电子密码锁使用两位十进制并行密码,当输入的密码与锁内密码一致时,绿灯亮,开锁;当输入的密码与锁内的密码不一致时,红灯亮,不能开锁。密码锁的密码可由用户自行设置。 关键词 密码锁;VHDL;MAX+plusII The Design Of Electronic Lock Based On The VHDL Abstract The design is based on the VHDL language, using the MAX + plusII parallel electron two locks design, and design process described in detail. VHDL language used to conduct electronic code lock design enables simple and intuitive design, fast implementation of established function. Electronic locks at the security of property protection has an important role in a very broad application prospects. The electronic locks used in parallel two decimal password, when the input password with the password lock consistent with, the green light, unlock; when the input password with the password lock is inconsistent, the red light, should not become disengaged. Password Lock user password can be set up.Key words electronic lock ; VHDL ;MAX+plusII1 引言1.1 系统设计背景及意义在当今社会中,人们对于隐私的保护和对物品安全的重视程度与日俱增。因此,使用了现代电子技术的电子密码锁便有了广泛的应用前景。本次所设计的电子密码锁,能够实现该两位十进制并行密码保护,当输入的密码与锁内密码一致时,绿灯亮,开锁;当输入的密码与锁内的密码不一致时,红灯亮,不能开锁。密码锁的密码可由用户自行设置,并可在共阴极七段数码管上显示所输入的密码。为人们的财产、信息安全提供了可靠地保障。1.2 VHDL语言及MAX+plusII介绍VHDL语言:VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)即超高速积体电路硬件描述语言,在基于CPLDFPGA和ASIC的数位系统设计中有着广泛的应用。VHDL语言诞生于1983年,1987年被美国国防部和IEEE确定为标准的硬件描述语言。自从IEEE发布了VHDL的第一个标准版本IEEE 1076-1987后,各大EDA公司都先后推出了自己的支持VHDL的EDA工具。VHDL在电子设计行业得到了广泛的认同。此后IEEE又先后发布了IEEE 1076-1993和IEEE 1076-2000版本。它的主要特点有:功能强大、设计灵活,支持广泛、易于修改,强大的系统硬件描述能力和很强的移植能力。【1】MAX+plusII:Max+plus是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件的供应商之一。Max+plus界面友好,使用便捷,被誉为业界最易用易学的EDA软件。在Max+plus上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。Max+plus开发系统的特点有如下几点 :1、开放的界面2、与结构无关3、完全集成化4、丰富的设计库5、模块化工具6、硬件描述语言(HDL)7、Opencore特征。 22需求分析2.1 功能需求电子密码锁要求实现如下功能:开锁代码为2位十进制并行码。 当输入的密码与锁内的密码一致时,绿灯亮,开锁;当输入的密码与所内的密码不一致时,红灯亮,不能开锁。密码可由用户自行设置。密码可由七段数码管显示出来。2.2 器材需求本电子密码锁的设计可供选用的器材有EPM7128s,共阴极七段数码馆,发光二极管,DIP开关(110),开关,电阻,电容。3功能设计3.1 设计总体框图密码锁对密码进行更改或对密码进行验证并给出判断和显示的运行总体框图如图3.1所示:数据输 入译码显示显 示数据寄存显 示密码确认显 示密码存储显 示密码检验显 示指 示 灯指 示 灯CCN图3.1 密码锁总体框图首先,系统由两个DIP开关以十位标准逻辑矢量的形式输入密码,分别对十位和个位进行转换,用if语句将十位逻辑矢量转化为对应七段数码管的输入转换成七位逻辑矢量存入c和d并用四位逻辑矢量表示的二进制数存入两个变量。系统对输入数据进行的两步处理,第一是把密码对应的七段数码管的七位标准逻辑矢量进行输出,以在两个七段数码管上显示十进制输入密码(译码显示部分);第二步是把输入的密码以四位标准逻辑矢量表示的二进制数形式寄存在两个变量中(数据寄存部分)。系统支持对密码的修改,当密码确认输入端为高电平时,系统对寄存当前密码的变量进行修改,系统是通过把当前密码存入两个变量来达到对于密码的记录的,默认密码为00;当对密码进行修改时系统把上面转化的两个寄存当前输入的变量与存储密码的两个密码用if语句进行比较,如果正确则把存储密码的两个变量改为当前值(密码确认与存储)。若密码检验输入端为1时,系统对寄存当前输入的变量与存储密码的变量进行比较,进而判断是否相同,若密码正确则绿灯亮,否则红灯亮(密码检验)。3.2 输入部分设计密码的输入部分由两个DIP开关(110)来组成,分别对十位和个位进行转换。首先判断两个开关是否有输入,如果是,则两个七段数码管都显示0。如果有,通过if语句判断是在DIP开关的第几位上的是1。第一位为1则表示密码为十进制的0,第二位为1表示十进制的1,依此类推可得到十位和个位的输入密码,并用e,f两个四位二进制变量暂存。其密码对应表如表3-1所示表3-1 输入密码对应表输入标准逻辑矢量对应十进制密码000000000000000000010000000001010000000100200000010003000001000040000100000500010000006001000000070100000000810000000009另外两个输入,密码确认输入和密码验证输入分别用一个开关进行操作,高电平有效。程序中分别用en表示密码确认,en1表示密码验证,另加入判断变量s(初值为0)用以判断当前是否已经输入过正确的密码,用四位标准逻辑矢量变量g和h分别表示十位和个位的当前设定密码(默认是0000)。当en1为高电平时,系统对e和g,f和h进行比较,如果两者都相等则判断密码正确,将判断变量s设为1,表示密码正确。如果en为高电平且s为1时系统将g和h的值改为当前a,b所代表的密码的四位二进制数,达到改变密码的作用。3.3 输出部分设计输出由两部分组成,第一部分为输入密码的显示,由对应的十进制数字转换成七段数码管的输入3。此处两个七段数码管的输出为7位标准逻辑矢量c和d,当a,b的值发生变化时在进行输入部分的操作后还会把相对应的7位逻辑矢量赋给c和d。其对照表如表3-2所示:表3-2 密码七段数码馆输出对照表输入密码七段数码管输出00111111100001102101101131001111411001105110110161111101700001118111111191100111第二部分为指示灯的输出。系统当前设置的密码存储在g和h中。当a,b改变时,它们对应的二进制密码会分别存入四位标准逻辑矢量e和f中。当en1为高电平时,系统对e,g和f,h进行比较,如果两者皆相等则将代表密码正确的绿灯k置为1,m置为0,否则将k置0,m置1.。当en和en1都为0时,k和m都为低电平,亮灯同灭。3.4 芯片总体设计电子锁芯片共有五个输入,四个输出,分别表示如下:A9.0和B9.0,密码输入;EN,密码确认键,用于修改密码;CLK,时钟信号;EN1,密码检验键;C6.0和D6.0,七段数码管输入;K和M分别表示绿灯(密码正确)和红灯(密码错误)4。根据不同的输入,系统课自动判断是对密码进行修改还是对密码进行检验,从而产生相应动作,实现电子密码锁的功能。总体设计如图3.2所示:图3.2 芯片总体设计图4 VHDL语言设计实现密码锁功能的VHDL语言源程序及注解如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_signed.all;entity lock2 isport(a:in std_logic_vector(9 downto 0); -十位输入端 b: in std_logic_vector(9 downto 0); -个位输入端en,clk:in std_logic; -en 为密码确认开关 en1:in std_logic; -en1为密码检验开关c,d:out std_logic_vector(6 downto 0):=0111111; -输出七段数码馆的控制k,m:out std_logic); -k绿灯,m红灯end lock2;architecture behave of lock2 issignal e : std_logic_vector(3 downto 0);signal f : std_logic_vector(3 downto 0);signal g : std_logic_vector(3 downto 0);-:=0000; -g,h用于修改密码的保存signal h : std_logic_vector(3 downto 0);-:=0000;signal count1,count2:std_logic:=0;signal s: std_logic:=0;beginprocess(a,e) -十位的数据转换beginif(a(9 downto 0)=0000000000)then c(6 downto 0) =0111111;elsif (a(0)=1) thene=0000;c(6 downto 0) =0111111;elsif(a(1)=1) thene=0001;c(6 downto 0) =0000110;elsif(a(2)=1) thene=0010;c(6 downto 0) =1011011;elsif(a(3)=1) thene=0011;c(6 downto 0) =1001111;elsif(a(4)=1) thene=0100;c(6 downto 0) =1100110;elsif(a(5)=1) thene=0101;c(6 downto 0) =1101101;elsif(a(6)=1) thene=0110;c(6 downto 0) =1111101;elsif(a(7)=1) thene=0111;c(6 downto 0) =0000111;elsif(a(8)=1) thene=1000;c(6 downto 0) =1111111;elsif(a(9)=1) thene=1001;c(6 downto 0) =1100111;end if;end process;process(b,f) -个位的数据转换beginif( b (9 downto 0) =0000000000) thend(6 downto 0)=0111111;elsif(b(0)=1) thenf=0000;d(6 downto 0)=0111111;elsif(b(1)=1) thenf=0001;d(6 downto 0)=0000110;elsif(b(2)=1) thenf=0010;d(6 downto 0)=1011011;elsif(b(3)=1) thenf=0011;d(6 downto 0)=1001111;elsif(b(4)=1) thenf=0100;d(6 downto 0)=1100110;elsif(b(5)=1) thenf=0101;d(6 downto 0)=1101101;elsif(b(6)=1) thenf=0110;d(6 downto 0)=1111101;elsif(b(7)=1) thenf=0111;d(6 downto 0)=0000111;elsif(b(8)=1) thenf=1000;d(6 downto 0)=1111111;elsif(b(9)=1) thenf=1001;d(6 downto 0)=1100111;end if;end process;process(clk,en,en1,a,b,g(3 downto 0),h(3 downto 0) -判断密码是否正确,可否开锁。beginif (s=1) and (en=1) and (count1=0) then -密码检验程序g(3 downto 0) = e(3 downto 0);h(3 downto 0) = f(3 downto 0);count1 = not(count1);end if;if ( en1 = 1 ) and (count2=0) then -修改密码程序 m=1; k=1;if(e(3 downto 0)=g(3 downto 0) and (f(3 downto 0)=h(3 downto 0) ) thenk=1; m=0;s=1;else k=0;m=1;end if;count2= not(count2);end if;if(en=0) and (en1=0) then -复位程序count1=0;count2=0;k=0;s=0;m=0;end if;if( en =0 and s = 1) thencount1 = 0;end if;end process;end behave;5 系统仿真在对程序进行编译通过后,在MAX+plusII中使用波形文件对系统进行仿真5。其仿真效果如图5.1所示:图5.1 系统仿真图下面对仿真结果进行分析:从图中可以看出,在0100ns中en和en1都在低电平,电子锁复位,a为0000000010即十进制的1,B为0000010000即4,c和d输出0000110和1100110至七段数码管。在100ns是en1变高电平,系统对a,b所输入的密码进行验证(系统默认密码为0,0),现在密码是1,4,密码错误,m置高电平,红灯亮。在200ns时a,b输入变为0,0,en1仍为高电平,对密码进行检验,密码正确,m置0,k置1,红灯灭,绿灯亮。400ns时en和en1都为低电平,系统复位。在500ns时en变高电平,系统对a,b所输入的密码进行确认,将密码改为现在的1,6.。在700ns时en1变高电平,系统对密码进行检验,a,b所输入的密码为2,2,密码错误,将m置1,红灯亮。在800ns时a,b发生变化,变成1,6,en1此时仍未高电平,密码正确,m置0,k置1,红灯灭,绿灯亮。最后en,en1都变为低电平,系统复位,红灯和绿灯都灭。由此可见,系统运行正常,满足设计要求。6 结 束 语通过本次课程设计对电子密码锁的设计,确实积累和总结了不少的经验,锻炼了我的独立工作和实际动手能力,加深了对V

温馨提示

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

评论

0/150

提交评论