VHDL密码锁设计_第1页
VHDL密码锁设计_第2页
VHDL密码锁设计_第3页
VHDL密码锁设计_第4页
VHDL密码锁设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、VHDLf言及应用课程设计论文一VHDL平台下密码锁的设计学院:电子信息学院专业:_学号:_姓名:_指导老师:_团队成员:完成日期:目录1 .引言12 .实验目的13 .实验任务与要求14 .设计原理及工作流程24.1 密码锁设计原理24.2 密码锁系统框图24.3 密码锁设计提示25 .密码锁的顶层设计源程序36 .密码锁各功能模块源程序及其仿真分析56.1 密码设定锁存器源程序及其仿真分析56.2 密码输入锁存器源程序及其仿真分析66.3 开锁控制系统源程序及其仿真分析86.4 比较器源程序及其仿真分析96.5 LED显示源程序及其仿真分析116.6 顶层源文件白仿真分析12七.密码锁设计

2、源程序的下载调试137.1 电路结构137.2 管脚分配147.3 程序下载调试过程148 .实验分析与总结159 .组内分工16十.参考文献161 .引言随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。因此人们对锁要求甚高,既要求可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。数字密码锁是二十一世纪制锁业的一次革命,锁的特点是不用钥匙、无锁孔、机械传动、不易损坏、不磨损、不易被破译、可多次更换密码、换号不换锁、一把锁多个密码,具有防拨、防砸、防撬、防堵等功能。安装门锁时不破坏原门的结构,避免用

3、钥匙开启旋芯式锁具的一切烦恼(如丢、落、拆、堵门被反锁等),数字密码锁是利用数字密码来开启的锁具,其重复概率极低,有着很高的安全性;而旋芯式锁具使用不够安全。通过对社会各阶层千余人的调查,百分之百的人对目前身上挂着的用串钥匙无可奈何,都愿意一身轻松没有任何顾虑的出入家门,都愿意用上一种既安全方便又不用钥匙的锁具。因此,数字密码锁产品的市场发展前景极为广阔。而EDA技术设计电子系统具有用软件的方式设计硬件,设计过程中可用有关软件进行各种仿真,系统可现场编程、在线升级,整个系统可集成在一个芯片上等特点;不但设计周期短、设计成本低,而且将提高产品或设备的性能,缩小产品体积、提高产品的技术含量,提高产

4、品的附加值。可见,用VHDL可以更加快速、灵活地设计出符合各种要求的密码锁,优于其他设计方法,使设计过程达到高度自动化。本设计的各个模块由相应的VHDLE序具体实现,并在QuartusH9.0环境下进行了整体电路的模拟仿真,最终实现“密码锁设计”的要求。2 .实验目的1 .掌握VHDI®言的使用,学会用VHDL®言来编程解决实际问题;2 .学会使用EDAFF发软件设计小型综合电路,掌握仿真的技巧;3 .学会应用开发系统实现硬件电路,检验电路的功能;4 .设计一个八位二进制密码锁,实现所要求的功能。5 .实验任务与要求1、安锁状态。按下开关键SETUP密码设置灯亮时,方可进行

5、密码设置操作。设置初始密码09(或二进制8位数),必要时可以更换。再按SETUPS,密码有效。2、开锁过程。(1)、按启动键(START启动开锁程序,此时系统内部应处于初始状态。(2)、依次键入09(或二进制8位数)。(3)、按开门键(OPEN准备开门。若按上述程序执行且拨号正确,则开门指示灯A亮,若按错密码或未按上述程序执行,则按动开门键OPENt,报警装置鸣叫、灯B亮。(4)、开锁处理事务完毕后,应将门关上,按SETUP®使系统重新进入安锁状态。若在报警状态,按SETUP8或STARTS应不起作用,应另用一按键RESET才能使系统进入安锁状态。3、使用者如按错号码可在按OPENS

6、之前,按START1重新启动开锁程序。4、设计符合上述功能的密码锁,并用层次化方法设计该电路。5、用功能仿真方法验证,通过观察有关波形确认电路设计是否正确。6、完成电路设计后,通过在实验系统中下载,验证设计的正确性。四.设计原理及工作流程4.1 密码锁设计原理如下示框图,密码锁系统主要由开锁控制,设置密码的锁存器,输入密码的锁存器,比较器,LED显示和报警系统几个部分组成。每一个模块功能的实现都是通过VHD印言实现的,并通过顶层电路与例化语句将功能模块整合起来,之后对整个系统进行模拟仿真和硬件实现。4.2 密码锁系统框图4.3 密码锁设计提示(1)锁存器:用于实现设定密码和输入密码的锁存。(2

7、)比较器:用于将设定密码与输入密码相比较。其中,CLK为外部输入的时钟信号。若输入密码正确,则A灯亮;否则B灯亮,同时比较器输出与CLK一样的信号,驱动蜂鸣器发出报警声。(3)开锁控制:当反馈信号下降沿来到时,开锁控制输出低电平,用于在输入错误密码后禁止再次安锁;当RESET?为高电平时,开锁控制输出高电平,打开与门,这时锁存器1使能端的变化受控于SETUPS,重新进入安锁状态。(4)LED显示:用于设定密码或输入密码的显示。此项设计的目的是为了在下载演示时,能清楚地看到设置和输入的密码值。五.密码锁的顶层设计源程序调用各模块形成元件例化语句:LIBRARYIEEE;USEIEEE.std_l

8、ogic_1164.All;ENTITYtopfileISPORT(SETUP,RESET,START,OPN,CLK:INSTD_LOGIC;setpassword:INSTD_LOGIC_VECTOR(7DOWNTO0);inputpassword:INSTD_LOGIC_VECTOR(7DOWNTO0);led_A,led_B,warner:OUTSTD_LOGIC;DOUT11,DOUT12,DOUT21,DOUT22:OUTSTD_LOGIC_VECTOR(6DOWNTO0);ENDENTITYtopfile;ARCHITECTUREbrfOFtopfileISCOMPONENTlo

9、ckcontrolPORT(RESET,FEEDBACK:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTcodesetPORT(ENABLE:INSTD_LOGIC;PASEWORD:INSTD_LOGIC_VECTOR(7DOWNTO0);Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ENDCOMPONENT;COMPONENTcodeinputPORT(ENABLE:INSTD_LOGIC;PASEWORD:INSTD_LOGIC_VECTOR(7DOWNTO0);Q:OUTSTD_LOGIC_VECTOR(7DOWN

10、TO0);ENDCOMPONENT;COMPONENTcomparatorPORT(OPN,CLK,RESET:INSTD_LOGIC;rightpassword,password:INSTD_LOGIC_VECTOR(7DOWNTO0);A,B,warner:OUTSTD_LOGIC;D11,D12,D21,D22:OUTSTD_LOGIC_VECTOR(3DOWNTO0);ENDCOMPONENT;COMPONENTAND2PORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTNOR2PORT(e,d:INSTD_LOGIC;

11、f:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTLEDPORT(DATA:INSTD_LOGIC_VECTOR(3DOWNTO0);DOUT7:OUTSTD_LOGIC_VECTOR(6DOWNTO0);ENDCOMPONENT;SIGNALnet1,net2:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALnet8,net9,net10,net11:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALnet3,net4,net5,net6,net7:STD_LOGIC;BEGINU0:lockcontrolPORTMAP(RESET

12、=>RESET,feedback=>net3,y=>net4);U1:AND2PORTMAP(a=>net3,b=>START,c=>net5);U2:AND2PORTMAP(a=>SETUP,b=>net4,c=>net6);U3:CODEINPUTPORTMAP(PASEWORD=>inputpassword,ENABLE=>net5,Q=>net1);U4:codesetPORTMAP(PASEWORD=>setpassword,ENABLE=>net6,Q=>net2);U5:comparator

13、PORTMAP(rightpassword=>net2,password=>net1,OPN=>OPN,CLK=>CLK,A=>led_A,B=>net7,warner=>warner,RESET=>RESET,D12=>net9,D11=>net8,D21=>net10,D22=>net11);U6:NOR2PORTMAP(e=>net7,d=>net7,f=>net3);U7:LEDPORTMAP(DATA=>net8,DOUT7=>DOUT11);U8:LEDPORTMAP(DATA=&

14、gt;net9,DOUT7=>DOUT12);U9:LEDPORTMAP(DATA=>net10,DOUT7=>DOUT21);U10:LEDPORTMAP(DATA=>net11,DOUT7=>DOUT22);led_B<=net7;ENDARCHITECTUREbrf;六.密码锁各功能模块源程序及其仿真波形6.1 密码设定锁存器源程序及其仿真波形源程序为:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYcodesetISPORT(ENABLE:INST

15、D_LOGIC;PASSWORD:INSTD_LOGIC_VECTOR(7DOWNTO0);Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ENDcodeset;ARCHITECTUREbhvOFcodesetISBEGINPROCESS(ENABLE,PASSWORD)BEGINIFENABLE='1'THENQ<=PASSWORD;Q(6)<=PASSWORD(6);Q(5)<=PASSWORD(5);Q(4)<=PASSWORD(4);Q(3)<='0'Q(2)<='0'Q(1)<=

16、'0'Q(0)<='0'ENDIF;ENDPROCESS;ENDbhv;仿真波形图为:使能控制端高电平时:使能控制端变回低电平时:通过由于硬件设备限制,不能检验全部端口,因此将低位的四位设置为低电平,改变使能控制端与高位的电平观察正确性。6.2 密码输入锁存器源程序及其仿真波形源程序为:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYcodeinputISPORT(ENABLE:INSTD_LOGIC;PASSWORD:INSTD_LOGIC_VECTO

17、R(7DOWNTO0);Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ENDcodeinput;ARCHITECTUREbhvOFcodeinputISBEGINPROCESS(ENABLE,PASSWORD)BEGINIFENABLE='1'THENQ<=PASSWORD;Q(6)<=PASSWORD(6);Q(5)<=PASSWORD(5);Q(4)<=PASSWORD(4);Q(3)<='0'Q(2)<='0'Q(1)<='0'Q(0)<='0'

18、;ENDIF;IFENABLE='0'THENQ<="00000000"ENDIF;ENDPROCESS;ENDbhv;仿真波形为:当使能信号为低电平,锁存器输出状态保持不变,输入信号没有读入;当使能信号有低电平变为高电平,锁存器开始读入输入的信号。6.3 开锁控制系统源程序及其仿真波形源程序为:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYlockcontrolISPORT(FEEDBACK,RESET:INSTD_LOGIC;Y:OUTSTD_

19、LOGIC);ENDlockcontrol;ARCHITECTUREbhvOFlockcontrolISBEGINPROCESS(FEEDBACK,RESET)BEGINY<='1'IFFEEDBACK='0'THENY<='0'ENDIF;IFRESET='1'THENY<='1'ENDIF;ENDPROCESS;ENDbhv;仿真波形为:FEEDBACK反馈信号,RESE必重置密码信号。当反馈信号下降沿来到时,开锁控制输出Y低电平,用于在输入错误密码后禁止再次安锁;当RESET?为高电平时,开

20、锁控制输出高电平。6.4 比较器源程序以及仿真波形源程序为:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.All;ENTITYcomparatorISPORT(rightpassword,password:INSTD_LOGIC_VECTOR(7DOWNTO0);OPN,CLK,RESET:INSTD_LOGIC;A,B,warner:OUTSTD_LOGIC;D11,D12,D21,D22:OUTSTD_LOGIC_VECTOR(3DOWNTO0);ENDcomparator;ARCHITECTUREbhvOFcomparatorISBEGINPROCESS(OPN,

21、CLK,RESET,rightpassword,password)BEGIND11(3)<=rightpassword;D11(2)<=rightpassword(6);D11<=rightpassword(5);D11(0)<=rightpassword(4);D12(3)<=rightpassword(3);D12(2)<=rightpassword(2);D12(1)<=rightpassword(l);D12(0)<=rightpassword(O);D21(3)<=password;D21(2)<=password(6);D

22、21(1)<=password(5);D21(0)<=password(4);D22(3)<=password(3);D22(2)<=password(2);D22(1)<=password(1);D22(0)<=password(0);IFOPN='1'THENIFrightpassword=passwordTHENA<='1'B<='0'warner<='0'ENDIF;IFrightpassword/=passwordTHENA<='0'B<=

23、'1'warner<=CLK;IFRESET='1'THENA<='0'B<='0'warner<='0'ENDIF;ENDIF;ELSEA<='0'B<='0'warner<='0'ENDIF;ENDPROCESS;ENDbhv;仿真波形为:(1)密码正确时:密码匹配时,如果OPENF打开,电路不工作,如果OPEN丁开,则A灯变为高电平,B灯和蜂鸣器不工作。而D11D12始终显示正确密码,D21D22始终显示当前输入密码。(

24、2)密码错误时:密码不匹配时,如果OPENF打开,电路不工作,如果OPEN丁开,则A灯不工作,B灯亮,蜂鸣器随CLK周期而周期性鸣响。止匕时,关闭OPEM启动RESET才可以使比较器停止工作并可以再次输入密码。6.5 LED显示源程序及其仿真波形源程序为:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYLEDISPORT(DATA:INSTD_LOGIC_VECTOR(3DOWNTO0);DOUT7:OUTSTD_LOGIC_VECTOR(6DOWNTO0);ENDENTITYLED;ARC

25、HITECTUREaOFLEDISBEGINPROCESS(DATA)BEGINCASEDATAISWHEN"0001"=>DOUT7<="0000110”;WHEN"0010"=>DOUT7<="1011011”;WHEN"0000"=>DOUT7<="0111111”;WHEN"0011"=>DOUT7<="1001111”;WHEN"0100"=>DOUT7<="1100110”;

26、WHEN"0101"=>DOUT7<="1101101”;WHEN"0110"=>DOUT7<="1111101”;WHEN"0111"=>DOUT7<="0001111”;WHEN"1000"=>DOUT7<="1111111”;WHEN"1001"=>DOUT7<="1101111”;WHENOTHERS=>DOUT7<="0000000”;ENDCASE;ENDPROCESS;ENDARCHITECTUREa;仿真波形为:可以由二进制代码的值判断出仿真结果真确,从图中还可以观察到,当输入的四位数中有两位及以上同时跳变时,出现了竞争冒险现象。6.6 顶层源文件的仿真波形分析(1)密码输入正确时:按下SETU限置密码。按启动键START启动开锁程序,当输入的密码与设定的密码相同,按下OPEN1,A灯亮起,锁打开,B灯和蜂鸣器不工作。(2

温馨提示

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

最新文档

评论

0/150

提交评论