数电课程设计电子密码锁gerf.docx

上传人:you****now 文档编号:68863413 上传时间:2022-12-30 格式:DOCX 页数:60 大小:612.53KB
返回 下载 相关 举报
数电课程设计电子密码锁gerf.docx_第1页
第1页 / 共60页
数电课程设计电子密码锁gerf.docx_第2页
第2页 / 共60页
点击查看更多>>
资源描述

《数电课程设计电子密码锁gerf.docx》由会员分享,可在线阅读,更多相关《数电课程设计电子密码锁gerf.docx(60页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、数字逻辑辑设计课程设计计报告书书题目名称称:电子子密码锁锁学院:光光 电 信息 学 院小组成员员:钟永永捷20011005900800024侯晨涛220111059917000033徐 昊昊20111055906600229指导教师师:李力力日 期:20113年66月28日一、 小组成员员分工情情况侯晨涛:所有编编程工作作、资料查查找 工作量量:600%钟永捷:辅助编编程、图图表制作作、资料查查找 工作量量:200%徐昊:论论文写作作、图表表制作、资料查查找 工作作量:220%二、 题目分析析1. 输入信号号通过扫描描键盘的行行与检测测键盘的的列得到到输入信信号。2. 输出信号号通过译码码器得

2、到到的显示示器显示示信息,开开关锁动动作。三、 设计总框框图四、 各模块说说明(一) 键盘扫描描模块1. 原理通过时序序信号产产生脉冲冲,不间间断地向向矩阵键键盘的行行输入11110-11001-110111-01111的的循环序序列。同时将各各列的电电平置高高,检测测矩阵键键盘各列列的电平平变化。若在一定定时间内内,扫描描到第列列电平为为零时恰好第行的输入入电平也为为零,则判断键键盘上位位置上键键被按下下。2. 模块框图图时序信号4*3键盘寄存器 比较行列行3. 状态表此模块只只需要通通过编码码器实现现即可,假假定前四四位表示示各行扫扫描结果果,后三三位表示示各列扫扫描的结结果。动作行输入列

3、输入状态命名名编码输出出按下“00”键01111101S000000按下“11”键11100110S100011按下“22”键11100101S200100按下“33”键11100011S300111按下“44”键11011110S401000按下“55”键11011101S501011按下“66”键11011011S601100按下“77”键10111110S701111按下“88”键10111101S810000按下“99”键10111011S910011按下“#”键01111011S1010100按下“*”键01111110S11101114. 仿真结果果Key_in代代表按键键按下与与

4、否情况况,Keey_mmem将将其记录录并输出出,sccan为为行扫描描信号,KKey_outt为按键键输出值值。如上上仿真结结果所示示,当sscann为11110时时,扫描描第一行行。按下下第一个个键,即即Keyy_inn为1110,此此时Keey_oout为为00001,即即输出值值为1。其其它状态态依此类类推。(二) 输入模块块1. 原理设置两个个寄存器器,一个个作为用用户所想想设置密密码的密密码寄存存器。另另一个寄寄存器则则是将键键盘Innputt的键值值存储起起来。最最后通过过一个比比较器将将两个寄寄存器的的值进行行比较。若若相同则则输出“opeen”,反之之,输出出“errror”

5、。比较器器内部通通过多位位异或门门实现。2. 模块框图图判 断寄存器输 入寄存器3. 状态图4. 仿真结果果1) 删除字符符第一次输输入值为为01001,NNumbber_sigg第0到到3位将将其保存存。第二二次输入入值为000111,Nuumbeer_ssig第第4到77位将其其保存。第第三次输输入值为为00001,NNumbber_sigg第8到到11位位将其保保存。第第四次输输入值为为10110,即即删除键键。第五五次输入入值为001111,Nuumbeer_ssig第第8到111位的的值由000011变为001111,即实实现了删删除功能能。2) 密码输入入正确Corrrectt=1

6、说说明密码码输入正正确,NNumbber_sigg的值为为00000111001110111111000000000000,Nuumbeer_ssig的的值通过过七段显显示译码码器之后后将使数数码管显显示OPPEn000。3) 密码输入入错误Corrrectt=1说说明密码码输入正正确,NNumbber_sigg的值为为11001111111111110000011111000000,Nuumbeer_ssig的的值通过过七段显显示译码码器之后后将使数数码管显显示ERRRORR0。(三) 密码判断断及更改1. 原理密码判断断模块:通通过比较较器将输输入寄存存器与存存储寄存存器中的的数据进进行比

7、较较,如果果数据相相同,则则判断密密码正确确。如果果数据不不同,则则返回输输入等待待状态,并并对输入入寄存器器中的数数据清零零。密码更改改模块:将第一一次与第第二次输输入寄存存器中的的数据输输入比较较器比较较,如果果数据相相同则将将该数据据输入进进密码存存储寄存存器中。如如果数据据不同,则则返回数数据输入入前的数数据等待待状态。2. 模块框图图比较器相同不同存 储寄存器返回输入前状态第一次输入寄存器第二次输入寄存器输入输入比较器输入寄存器存储寄存器输入输入不同相同判断密码正确3. 仿真结果果mainn_sttatee为1000000即uppdatte状态态,按键键六次输输入值为为01110,0

8、01100,01110,01110,001100,00010,第第二次输输入相同同。即将将密码由由66666666改为22666666。第第二次输输入完成成samme为11,说明明两次输输入相同同。按“#”键确认认后。当状态态变为0010000时,即in_put输入密码Inputpd为001001100110011001100110即266666,correct为1说明密码修改成功并开锁。(四) 主状态机机1. 原理状态分五五个状态态:Waaitss,Innputt,Paass,UUpdaate,FForbbid。在Waiits状状态下,摁摁下“#”进入密密码“Inpput”状态,在在“Inp

9、put”状态下下摁“*”可删除除当前IInpuut的字字符。若若密码输输入正确确则进去去“Passs”状态,否否则进入入“Forrbidd”状态,这这时若摁摁下“#”键,则则重新返返回“Waiits”状态。摁摁下“*”键进入入“Upddatee”状态,输输入两次次密码然然后摁“#”键进行行确定,若若两次密密码不相相同则UUpdaate失失败,重重新返回回到“Passs”状态。若若两次密密码相同同,则返返回到“Waiits”状态。2. 模块框图图#ForbidPass两次输入不同+#键 *UpdateWaitsInput#RightWrong两次输入相同+ # 键3. 状态表4. 仿真结果果1)

10、 密码输入入错误按下“#”键,进进行密码码输入(mmainn_sttatee由0000011变为0010000),此此时errrorr为1说说明密码码输入错错误。mmainn_sttatee变为fforbbid状状态(由由010000变变为0001000)。再再按下“#”键,重重新返回回waiits状状态(由由001100变变为0000011)。2) 密码输入入正确,且修改改密码成成功按下“#”键,进进行密码码输入(mmainn_sttatee由0000011变为0010000),此此时coorreect为为1说明明密码输输入正确确。由iin_pput变变为paass(由由010000变变为0

11、000100)。按按下“*”进行密密码修改改,由0000110变为为100000修修改正确确,主状状态重新新返为wwaitt。3) 密码输入入正确,但但密码修修改失败败按下“#”键,进进行密码码输入(mmainn_sttatee由0000011变为0010000),此此时coorreect为为1说明明密码输输入正确确。由iin_pput变变为paass(由由010000变变为0000100)。按按下“*”进行密密码修改改,由0000110变为为000010主主状态由由修改错错误重新新返为ppasss。(五) 显示1. 原理这里的选选择244位数码码管控制制模块,将将24位位拆分为为六组四四位编

12、码码输入七七段译码码器。将将译码输输出与扫扫描模块块产生的的扫描时时序共同同作用于于六位数数码管。得得到所需需显示结结果。2. 模块框图图数码管控制模块(24位)七段译码器扫描模块六位数码管输入扫描分六组输入四位编码开始扫描3. 仿真结果果输入信号号Nummberr_siig的值值为00001000100001110110000101101110即11234456,SScann_siig的值值为01111111时,即即第一个个数码管管亮时DDuann_daate的的值为0011000000即数码码管显示示数字为为1。综综合以上上,此时时第一个个数码管管显示为为1,之之后第二二个数码码管显示示为

13、2,第第三个数数码管显显示为33五、 验证方案案采取自上上而下的的设计方方案,首首先将题题目要求求拆分成成各大模模块,然然后通过过编写VVeriilogg语言的的程序实现现各模块块的功能能。在 中仿仿真出时时序逻辑辑图,并并验证程程序的正正确性。图1.设设计总框框图的实实现六、 课程设计计心得体体会通过这次次数字密码码锁的课课程设计计,我们们掌握了了如何通通过数字字逻辑知知识来设设计一个个可应用用于生产产生活中中的拥有有实际应应用功能能的数字字逻辑器器件。首首先我们们要了解解其具体体功能要要求,然然后采用用自上而而下的设设计方法法,建立立整体逻逻辑框图图并将其其划分为为各个具具体功能能模块。之

14、之后,我我们通过过编写Veerillog程程序实现现每一模模块的功功能。在在编译无无错误后后,通过过quaartuus 22软件自自带的波波形仿真真功能检测测模块功功能是否否实现。当波形达到要求,将各模块拼接,得到最终的密码锁整体逻辑结构(如图1)。在讨论课课程设计计时,我我们最初初想通过过简单的的逻辑门门和逻辑辑器件来来实现密密码锁功功能,以以简化程程序部分分。但是是因为状状态之间间转换的的复杂性性,无法法实现。之之后我们们决定每每一功能能模块均均通过程程序来实实现,并并自动生生成状态态图及逻逻辑图。这这样工作作的任务务全部转转移到编编程上。编程的感感想:对对于编程程,我想想说从对对verr

15、iloog一窍窍不通(CC也不太太会)到到能独立立地使用用其进行行编程,这这将近一一月的时时间里,我我学会了了很多,一一开始面面对这个个题目,完完全不知知道从何何下手,从从图书馆馆借了一一本书就就开始慢慢慢看,然然后就尝尝试着去去写,有有时候一一个简单单的错误误困扰了了我整整整一天甚甚至两天天都想不不出来。这这个题目目的程序序是我这这将近一一个月的的心血,每一行都是经过思考后写下的。通过这次课程设计,我体会到了编程的乐趣,当你长时间困扰在一个问题上,突然间的一个奇思妙想就可以解决问题或者实现一个以前实现不了的功能,就是这种偶尔的惊喜使得我坚持了下来。这次课程设计美中不足的是,虽然各个模块都可以

16、实现其功能,但是将其和在一起就会有问题,虽然编译无错误,但是功能无法实现。因为时间原因,无法对其进行修正,这是我的一个遗憾。程序编写写的同时时我们进进行状态态表的绘绘制,不不同于软软件仿真真出的状状态表,我我们将状状态简化化绘制表表格,只只体现编编程时的的大致思路路。在这这个过程程中,我我们熟练练掌握了了如何将将抽象的的状态变变化绘制制成状态态转移表表。以及及简单状状态图的的绘制方方法。七、 源文件(详详见附件件)源代码:top.v /顶层文文件*moduule topp(cllk,RRst,keyy_ouut,DDuann_daate,Scaan_ssig);inpuut cclk;inpu

17、ut RRst;inpuut 3:00 kkey_outt;outpput 6:0 Duaan_ddatee;outpput 5:0 Scaan_ssig;wiree 33:0 sccan;wiree 22:0 keey_iin;wiree 22:0 keey_mmem;wiree coorreect;wiree errrorr;wiree saame;wiree 44:0 maain_staate;wiree 223:00 NNumbber_sigg;wiree 223:00 IInpuutpdd;mainn_sttatee_maachiine M1(.cllk(cclk),.Rsst(RR

18、st),.keey_oout(keyy_ouut),.coorreect(corrrecct),.errrorr(errrorr),.saame(samme),.maain_staate(maiin_sstatte),.keey_mmem(keyy_meem);key_scaan MM2(.cllk(cclk),.Rsst(RRst),.keey_iin(kkey_in),.sccan(scaan),.keey_oout(keyy_ouut),.keey_mmem(keyy_meem);In_pput M3(.cllk(cclk),.Rsst(RRst),.keey_oout(keyy_ouu

19、t),.keey_mmem(keyy_meem),.coorreect(corrrecct),.errrorr(errrorr),.maain_staate(maiin_sstatte),.Nummberr_siig(NNumbber_sigg),.Innputtpd(Inpputppd);passswdccom M4(.cllk(cclk),.Rsst(RRst),.keey_oout(keyy_ouut),.Innputtpd(Inpputppd),.maain_staate(maiin_sstatte),.keey_mmem(keyy_meem),.coorreect(corrrecct

20、),.errrorr(errrorr),.saame(samme);top_ledd M55(.cllk(cclk),.Rsst(RRst),.Nuumbeer_ssig(Nummberr_siig),.Duuan_datte(DDuann_daate),.Sccan_sigg(Sccan_sigg);endmmoduule*Key_scaan.vv/键键盘扫描描*moduule keyy_sccan(clkk,sccan,keyy_inn,keey_oout,keyy_meem,RRst);inpuut cclk; inpuut RRst;inpuut 2:00 kkey_in;outppu

21、t 3:0 scaan;outpput 3:0 keyy_ouut;outpput 2:0 keyy_meem;reg 3:0 scaan;reg 3:0 keyy_ouut;reg 311:0 coountter;reg _220cllk;reg 1:0 Q;reg 2:0 keyy_meem;alwaays (pposeedgee cllk oor nnegeedgee Rsst)if(!Rsst)beeginncoountter = 0;enndelsse beeginncouunteer = ccounnterr + 1bb1;if( coountter = 125500)beggin

22、 coountter = 0;_220cllk = _200clkk;endd enndalwaays ( possedgge _20cclk )begginQ = QQ + 1bb1;enddalwaays (pposeedgee cllk oor nnegeedgee Rsst)begiin iff(!RRst)keyy_meem = 33b1111; ellse casse(QQ) 2bb00: beeginn sccan = 44b111100; caase( keey_iin ) 3b1110 : beeginnkkey_outt = 4d1;kkey_memm = 3b1110;e

23、nnd 3b1001 : beeginnkkey_outt = 4d2;kkey_memm = 3b1001;ennd 3b0111 : beeginnkkey_outt = 4d3;kkey_memm = 3b0111;ennd deefauult : kkey_outt = 4dz; enndcaase ennd 2bb01: beeginn sccan = 44b111011; caase( keey_iin ) 3b1110 : beeginnkkey_outt = 4d4;kkey_memm = 3b1110;ennd 3b1001 : beeginnkkey_outt = 4d5;

24、kkey_memm = 3b1001;ennd 3b0111 : beeginnkkey_outt = 4d6;kkey_memm = 3b0111;ennd deefauult : kkey_outt = 4dz; enndcaase ennd 2bb10: beeginn sccan = 44b110111; caase( keey_iin ) 3b1110 : beeginnkkey_outt = 4d7;kkey_memm = 3b1110;ennd 3b1001 : beeginnkkey_outt = 4d8;kkey_memm = 3b1001;ennd 3b0111 : bee

25、ginnkkey_outt = 4d9;kkey_memm = 3b0111;ennd deefauult : kkey_outt = 4dz; enndcaase ennd 2bb11: beeginn sccan=4bb01111; caase( keey_iin ) 3b1110 : keey_oout = 4dd10; 3b1001 : beeginnkkey_outt = 4d0;kkey_memm = 3b1001;ennd 3b0111 : keey_oout = 4dd11; deefauult : kkey_outt = 4dz; enndcaase ennd enddcas

26、se ennd enddmoddulee*In_pput.v/输入*moduule In_putt (cclk,Rstt,keey_mmem,Nummberr_siig,kkey_outt,Innputtpd,corrrecct,eerroor,mmainn_sttatee);inpuut cclk;inpuut RRst;inpuut 3:00 kkey_outt;inpuut 2:00 kkey_memm;inpuut ccorrrectt;inpuut eerroor;inpuut 4:00 mmainn_sttatee;outpput 233:0 Nuumbeer_ssig; /数码码

27、管显示示数据outpput 233:0 Innputtpd;reg 233:0 Nuumbeer_ssig;reg 233:0 Innputtpd;reg 5:0 curr_sttatee;reg 5:0 nexxt_sstatte;paraametter firrst = 6b0000_0001, seccondd = 6bb0000_0110, thiird = 6bb0000_1000, fouurthh = 6bb0011_0000, fiffth = 6bb0100_0000, sixxth = 6bb1000_0000, finnishh = 6bb1111_1111;paraam

28、etter 4:0 waiits = 5bb000001,passs = 5bb000010,forrbidd = 5bb001100,in_putt = 5bb010000,upddatee = 5bb100000;alwaays (pposeedgee cllk oor nnegeedgee Rsst)begiinif(!Rsst)cuur_sstatte = ffirsst; elssecuur_sstatte = nnextt_sttatee;endreg KH22L_ff1;/检检测按键键电平reg KH22L_gg1;reg KH22L_ff2;reg KH22L_gg2;reg

29、KH22L_ff3;reg KH22L_gg3;wiree H22L_ssig11;wiree H22L_ssig22;wiree H22L_ssig33;alwaays (pposeedgee cllk oor nnegeedgee Rsst)if(!Rsst)beeginnKKH2LL_f11 = 1b1;KH2LL_g11 = 1b1;KKH2LL_f22 = 1b1;KKH2LL_g22 = 1b1;KKH2LL_f33 = 1b1;KH2LL_g33 = 1b1;enndelssebeeginnKKH2LL_f11 = keey_mmem0;KKH2LL_g11 = KHH2L_f1

30、;KKH2LL_f22 = keey_mmem1;KKH2LL_g22 = KHH2L_f2;KKH2LL_f33 = keey_mmem2;KKH2LL_g33 = KHH2L_f3;enndassiign H2LL_siig1 = (KH22L_gg1&(!KHH2L_f1)? 1bb1:11b00;assiign H2LL_siig2 = (KH22L_gg2&(!KHH2L_f2)? 1bb1:11b00;assiign H2LL_siig3 = (KH22L_gg3&(!KHH2L_f3)? 1bb1:11b00;alwaays (pposeedgee cllk oor nnegee

31、dgee Rsst)begiinif(!Rsst)Nuumbeer_ssig = 24b00000_00000_000000_00000_00000_000000;elsse iif(mmainn_sttatee = inn_puut)begginif(corrrecct = 11)Nuumbeer_ssig = 24b00000_11000_111011_11110_00000_000000;elsse iif(eerroor = 11)Nuumbeer_ssig = 24b11101_11111_111111_00000_11111_000000;elsse iif(eerroor = 0

32、0 & coorreect = 0)caase(curr_sttatee)fiirstt : if(H22L_ssig11|HH2L_sigg2|H2LL_siig3) & (kkey_outt = 4d100)nexxt_sstatte = ffirsst; elsse iif(H2LL_siig1|H22L_ssig22|HH2L_sigg3) & (keey_oout != 4dd10)begginNummberr_siig33:0 = keey_oout;nexxt_sstatte = ssecoond;endd elssenexxt_sstatte = ffirsst;seeconn

33、d :iif(H2LL_siig1|H22L_ssig22|HH2L_sigg3) & (keey_oout = 4dd10)nexxt_sstatte = ffirsst;eelsee iff(HH2L_sigg1|H2LL_siig2|H22L_ssig33) & (keyy_ouut != 44d110)begginNummberr_siig77:4 = keey_oout;nexxt_sstatte = tthirrd;endd elssenexxt_sstatte = ssecoond;thhirdd : if(H22L_ssig11|HH2L_sigg2|H2LL_siig3) &

34、 (kkey_outt = 4d100)nexxt_sstatte = ssecoond; elsse iif(H2LL_siig1|H22L_ssig22|HH2L_sigg3) & (keey_oout != 4dd10)begginNummberr_siig111:88 = kkey_outt;nexxt_sstatte = ffourrth;endd elssenexxt_sstatte = tthirrd;foourtth : if(H22L_ssig11|HH2L_sigg2|H2LL_siig3) & (kkey_outt = 4d100)nexxt_sstatte = tthi

35、rrd; elsse iif(H2LL_siig1|H22L_ssig22|HH2L_sigg3) & (keey_oout != 4dd10)begginNummberr_siig115:112 = keyy_ouut;nexxt_sstatte = ffiftth;endd elsse nexxt_sstatte = ffourrth;fiifthh : if(H22L_ssig11|HH2L_sigg2|H2LL_siig3) & (kkey_outt = 4d100)nexxt_sstatte = ffourrth; elsse iif(H2LL_siig1|H22L_ssig22|H

36、H2L_sigg3) & (keey_oout != 4dd10)begginNummberr_siig119:116 = keyy_ouut;nexxt_sstatte = ssixtth;endd elssenexxt_sstatte = ffiftth;siixthh : if(H22L_ssig11|HH2L_sigg2|H2LL_siig3) & (kkey_outt = 4d100)nexxt_sstatte = ffiftth; elsse iif(H2LL_siig1|H22L_ssig22|HH2L_sigg3) & (keey_oout != 4dd10)begginNum

37、mberr_siig223:220 = keyy_ouut;nexxt_sstatte = ffiniish;endd elssenexxt_sstatte = ssixtth;fiinissh : if(H22L_ssig11|HH2L_sigg2|H2LL_siig3) & (kkey_outt = 4d100)nexxt_sstatte = ssixtth; elssenexxt_sstatte = ffiniish;deefauult nexxt_sstatte = ffirsst;enndcaaseenddendalwaays (pposeedgee cllk oor nnegeedgee Rsst)if(!Rsst)Innputtpd = 00;elsse iif (curr_sttatee = fiinissh)Innputtpd = NNumbber_sigg;endmmoduule

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理制度

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁