基于VHDL-4位电子密码锁的设计.docx

上传人:李司机 文档编号:6680112 上传时间:2023-12-24 格式:DOCX 页数:11 大小:61.74KB
返回 下载 相关 举报
基于VHDL-4位电子密码锁的设计.docx_第1页
第1页 / 共11页
基于VHDL-4位电子密码锁的设计.docx_第2页
第2页 / 共11页
基于VHDL-4位电子密码锁的设计.docx_第3页
第3页 / 共11页
基于VHDL-4位电子密码锁的设计.docx_第4页
第4页 / 共11页
基于VHDL-4位电子密码锁的设计.docx_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《基于VHDL-4位电子密码锁的设计.docx》由会员分享,可在线阅读,更多相关《基于VHDL-4位电子密码锁的设计.docx(11页珍藏版)》请在三一办公上搜索。

1、大连理工大学本科实验报告题目:基于VHDL4位电子密码锁的设计课程名称:数字电路课程设计学院(系):电子信息与电气工程专业:电子英强班级:学生姓名:学号:完成口期:成绩:2023年7月08日题目:基于VHDL4位电子密码锁的设计1设计要求电子密码锁为4位842IBCD码,多于4位,密码只取前4位。在输入密码错误,给出一个错误信号,有三次输入时机,假设三次密码都输入错误,那么给出一个报警信号,此后只能由密码管理员取消报警信号。在输入密码正确的情况下,可以再次设定密码。每次输入一个密码,将显示在7段数码管上,并依次左移。每次输入密码的时候,按取消(cancel)键可以取消这次密码的输入,课重新输入

2、4位密码。2设计分析及系统方案设计在实验室DE2开发板的条件下,考虑到key键只有4个,可以用SWitCh开关来实现密码输入模块,用SWitCh9switch0来实现数字90的输入,并通过译码模块将其转化为842IBCD码,由8421BCD码来驱动7段数码管作为密码锁的显示模块。每按一个键,产生一个上升沿,给4个数码管做时钟,实现没输入一个数左移一位的效果。为了实现密码输入多于4位,可以构造一个模为4的计数器来控制只取前4位密码。共有三次输入密码的时机,可以构造一个模为3的计数器来控制。密码比拟模块:当按下确定键(yes)键,那么将输入的密码和内置密码进行比拟。密码输入模块:当输入密码正确时,

3、再输入密码,利用重置密码键(set_psw)直接将其赋值给内置的密码PSW即可实现。1.ED显示模块,用来显示密码输入的正确与否。假设输入密码与内置密码一致,那么锁翻开,输出一个高电平给LEDG,绿灯亮,密码错误那么输出一个高电平给LEDR,红灯亮。综合上述分析,本系统的硬件局部主要由密码锁输入译码模块、密码锁显示模块、密码锁控制模块、密码比拟和重置模块和LED显示模块五个局部组成。3系:说明用的(硬件电路昔卜示模块:Ki体、共F2.密码输入和译码模块:start reset用SWitCh9110实现数字9到O的输!入。CIkOut_(Psw(DE2开发板分频mK至NumCq(15dowI5d

4、ownt上使用的ClkJnelS输入和E让匕拟健q(4downto0)J!TtOO)30)-元件的郭Canc严密码锁密被sCorrectOut_erroralarmOut3端口名FP说明aIarmPi报警信号,红灯亮cancelP取消密码输入elkpin_n250MHz时钟correctPin_ae22密码正确,绿灯亮num0pin_n25输入数字0到9num1pin-1126num2pin_p25num3pin_ae14num4pin_af14num5Pin一ad13num6pin_ac13num7pin_c13num8pin_b13num9pjn_a13outO0pin_af10uo数码管

5、outO1Pin一ab12out02pin_ac12outO3pinad11outO4pin_ae11outO5pin_v14outO6pin_v13out10pin_v20u1数码管out11pin_v21out12pin_w21out13Pin_v22out14pin_aa24out15Pin_aa23out16pin_ab24out20pin_ab23u2数码管out21pin_v22out22pin_ac25out23pin_ac26out24pin_ab26out25pin_ab25out26pin_y24out30pin23u3数码管out31pin_aa25out32pin_aa

6、26out33pin_y26out34pin_y25out35pin_u22out36pin_w24out_errorpin_ae23密码错,红灯亮resetPin_v2管理员权限,为0时取消报警信号set_pswpin_n23设置密码startpin_u4开始输入密码信号yespin_g26确定信号4系统的VHDL设计说明1 .分频模块,即做一个模5000的计数器,从而将50MHZ的时钟转化为100OOHZ的时钟。2 .密码锁输入和译码,显示模块。SWitCh9switch0模拟数字90的输入,例如SWitCh为高电平,而其他为低电平,那么通过程序译码为9,同时产生一个ClOCk时钟上升沿,

7、由于人操作的时间必定大于0.00001s(即100oOHZ的时钟周期),所以在下次按键是,clock已经回到低电平,此后再按键clock又产生一个上升沿。由此构造的clock时钟可以为左移存放器当时钟。3 .密码显示模块:SWitCh改变一次,即每输入一个数,译码产生一个四位的BCD码,来驱动数码管。并随着CIOCk上升沿,依次左移显示。4 .密码比拟和重置模块:在输入了4位密码后,16位BCD码已经保存在out_q里,通过与内置密码比拟即可。数码管的真值表(0代表亮,1代表不亮)Q3fl2QQo012345600000000001000110011I10010Q0100100011Q000I

8、10010010011Q001010100100OllO0100()仆0011100011111000Q0()000010010000E00VHDL源代码.主程序coded_lock代码:Iibraryieee;useieee.Std_IOgic_1164.a11;useieee.std_logic_unsigned.all;entitycoded_IockiSport(elk:instd_logic;start:instd_logic;reset:instd_logic;num:instd_Iogic_vector(9downto0);out3,out2,out1.outO:outstd_I

9、ogic_vector(6downto0);correct:bufferstd_logic;yes:instd_logic:admin:instd_logic;set_psw:std_logic;alarm:outstd_logic;canceI:instd_logic;out_error:bufferstd_logic);end;architecturebehaveofcoded_lockisCOmPOnentdecoderis-显示译码器的元件例化port(qq:instd_Iogic-vector(3downtoO);result:outstd_Iogic_vector(6downtoO

10、);endcomponent;out._q为4位密码锁的8421BCD码signaIq:std_Iogic_vector(3downtoO);一输入一个90的数字,q为其842IBCD码SignaIcIock:std_logic:=0*;-每按一次键,ClOCk输出一yTw上升沿signaIcounter:integerrangeOto2:=0;一模为3的计数器signaIcnt4:integerrange0to4:-0;一模为5的计数器signaIenable:std_logic:=,1,;一当输错3次密码,那么此使能端为0,使无法译码一默认密码为9876SignalClk_in:std_l

11、ogic;-5000分频之后的时钟beginprocess(Clk_in,start,reset,enable)beginifreset=0,thenclockq=1001;clockq=1000;cIockq=0111,;cIockq=0110;cIockq=010,clockq=0100;cIockq=0011;cIockq=,0010;cIockq=0001:cIockq=,0000;CIockq=,1111,jGock=,0,:endcase;eIsenull;endif;endif:endprocess;一左移进程,按下一个按键那么cl。Ck输出一个高电平,显示译码器左移proces

12、s(clock,yes,start,reset,cancel)beginifreset=,0,thencorrect=,0,;out-error=,0;counter=0;enable=,1,;alarm=,0;eIsifcancel=1thencorrect0,;out-error=,0,;out_q=0000000000000000;cnt4=0:一使计数器清零,重新开始译码eIsifstart=,0,thencnt4=0;out_q=0000000000000000;elseifrising_edge(cIock)thenifcnt4=4thennull;eIseout_q=out_q(

13、11downto0)&q;cnt4-cnt4+1;endif;endif;iffaIIing_edge(yes)thenifOUt_q二PSWthencorrect=1;out-error=,0,;alarm=,O,;eIsifcounter=2thencorrect=,0,;out_error=,1,;alarm=;enable=,O,;eIsecorrect=O;out_error=,1;alarm=,O,;counter=counter+1;endif;endif;endif;endprocess;process(correct,set_psw)重新设置密码的进程beginiffaIIi

14、ng_edge(set_psw)thenifcorrect=,1,then-输入密码正确才可以重新设置密码psw=out_q;endif;endif;endprocess;一分频模块:将50Mz的时钟分频为IoooOHZprocess(elk)variabletern:integerrange0to4999;beginifrising_edge(cIk)theniftem=4999thenckin=,;tern:=O;elsetem:=tem+1;clk.inout_q(15downto12),resuIt=out3);u2:componentdecoderportmap(qq=out-q(1

15、1downto8),result=out2);u1componentdecoderportmap(qq=OUt_q(7downto4),result=out1);u:componentdecoderportmap(qq=out_q(3downto0),result=outO);endbehave;.decoder代码:Iibraryieee;useieee.std-1ogic_1164.aII;entitydecoderisport(qq:instd_Iogic_vector(3downto0);resuIt:outstd_Iogic_vector(6downto0);end;architec

16、tureregofdecoderisbeginprocess(qq)begincaseqqiswhenOOOO,=resu11resu11resultresultresultresu11resu11resu11resultresu11result=1111111;endcase;endprocess;endreg;5结论以及结果说明计算机平台为WindOW764bit旗舰版,软件调试环境为QUartUSll6.0.使用的硬件芯片为EP2C35F672C6.下面试各个模块的仿真图:图1图1显示了密码输入和显示模块所实现的功能。当输入9,8,7,6,5五位密码时,数码管只显示前4位,即为,t100

17、0000*,t1111001*,u0100100*,0110000*O由仿真图可知,输入一个密码,在4个数码管上依次左移。图2图2显示了密码假设输错3次,那么有个报警信号,即alarm为高电平。此时只有管理员将reset置于低电平,才能解除报警信号,即为是aIarm为低电平。默认密码为9876,上面的仿真图输入的密码依次为8765.9776,5432)图3图3显示了密码锁密码重置模块实现的功能。密码锁内置的密码为9876,当输入9876并yes给一个下降沿时,correct输出为高电平,此时在输入密码为5432,set_psw给一个下降沿,将5432设为新的密码。再输入9876,OUt_err

18、or为到电平,只有输入5432,correct才为高电平。图4图4显示了CanCel键的功能:按下CanCel键即CanCel为高电平,取消此次密码的输入,将4个数码管清零。结果说明:这次密码锁的设计过程说明,用VHDL可以快速、灵活地设计出符合要求的密码锁控制器,而且操作简单。可以实现密码输入、密码校验、密码设置和更改等功能。设计过程能够在设计完成后在QUartUSn环境下进行电路的模拟仿真,反应结果可以验证程序设计的可行性与可靠性。本密码锁控制器设置的是4位密码,在系统复位后,输入4位的密码串,并在4个7段数码管上依次左移。假设输入多于4位,密码只取前4位。输入完后,按下确定键,如果密码与

19、内置密码一致,那么开锁,否那么继续输入,如果输入的密码3次都是错误的,那么系统报警,此时只有管理员能使报警声停止。同时,密码锁还具有密码修改功能,只有密码输入正确的情况下才能修改密码,符合实际生活中的情况。在设计VHDL程序的过程中,怎么实现每按一次键,数码管的数据左移一次成了这次程序的重点,后来在老师的点拨之下,才明白了要自己构建一个CLoCK时钟。在经过了一遍遍修改程序,编译,查错,一个模块一个模块的仿真,确定这一局部到达要求之后,再参加另外的功能。总而言之,本次设计实现了预期的功能。参考文献1王兢,王洪玉主编数字电路与系统.电子工业出版社,2023.2KennethL.Short著,乔庐峰等译VHDL大学实用教程,电子工业出版社,2023.

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号