数字电子密码锁大作业_第1页
数字电子密码锁大作业_第2页
数字电子密码锁大作业_第3页
数字电子密码锁大作业_第4页
数字电子密码锁大作业_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

“数字电子与EDA技术”考核作业汇报姓名:吕佳航专业:测控技术与仪器班级:测控14-2学号:20141774基于VerilogHDL六位电子密码锁控制器的设计20151209背景:锁是指加在门、箱子、抽屉等物体上的封缄器,要用专用的钥匙才能打开。自古以来锁都是人们财产安全乃至生命安全的一种重要保障。伴随着人类历史的发展和人们对自身财产安全和人生安全的重视,各种各样的多功能的锁具也相继出现,人们使用的锁具也由传统的机械式锁逐渐发展为安全性能更好,功能更多的电子密码锁。意义:保障人民的财产和生命安全。20151209设计任务确保财产和人身安全不会在很短的时间内不受到威胁设计要求1、拥有6位数字密码2、输入错误时可以选择复位键和删除键进行重新输入3、错误三次将启动警鸣报警4、内部固定密码将不会被修改20151210方案1:基于硬件描述语言,将所需器件进行封装连线完成方案2:基于Verilog有限状态机进行设计确定选择方案2:由于原理图太过复杂,不好操作难度大并且易发生错误,方案2较方案1更为优化,所以选择方案22015121020151211输入变量:基于密码确认原因,所以确定queren为输入变量,其连接的对应部件是确认按键;基于密码取消原因,所以确定quxiao为输入变量,其连接的对应部件是取消按键;基于密码输入原因,所以确定key-in为输入变量,其连接的对应部件是密码输入按键;20151212输出变量:基于密码安全的原因,所以确定baojing为输出变量基于密码锁的作用安全的原因,所以确定open为输出变量20151212输入密码(1)状态进入到panduan状态,如果密码(2)正确进入状态correct,如果密码(3)错误进入threeerror,然后回归(4)状态panduan。如果输入三次错误(5)进入状态baojing20151212状态任务输出特性分析输出包括:baojing,open,各个状态时状态机的输出分别为:

idle=3'b000

panduan=3'b001,sancierror=3'b011,correct=3'b010,baojingzt=3'b100;由于密码安全原因,输出需要寄存器输出由于密码输入和输出关系,输出与输入有关确定状态机类型是需要寄存器输出,所以采用三段式状态机输入与输出有/无关,所以采用Mealy型状态机20151213状态机中的工作时钟clk,reset;状态机的异步工作时钟特点reset状态机的主工作时钟频率clk

由于按键需要提供按键的控制,抖动时间一般不会超过10ms,所以用一个100Hz连续脉冲对它进行采样,即为处于稳定状态20151213用3位编码的原因是由于我输出了5个状态。编码:idle=3'b000,panduan=3'b001,sancierror=3'b011,correct=3'b010,baojingzt=3'b100状态机的安全设计说明:按照格雷码进行编码。易于理解。其余状态回到初始态异步清零,可以人为保证安全。20151214modulemimasuo(clk,reset,quxiao,queren,key_in,open,baojing);inputclk,reset;//时钟,复位,inputquxiao,queren;//取消按键,确认按键,0-按键按下,1-按键弹起input[5:0]key_in;//6位密码按键,0-按键按下,1-按键弹起outputopen,baojing;//打开,密码错误。1-打开,0-不打开。1-密码错误,0-无错reg[2:0]mima[5:0];//密码initialbeginmima[0]=3'b010;//2//密码设定为213465,修改顺序可以改变密码mima[1]=3'b001;//120151215mima[2]=3'b011;//3mima[3]=3'b100;//4mima[4]=3'b110;//6mima[5]=3'b101;//5endreg[2:0]mima_in[5:0];//用户输入密码存储regopen;regbaojing;reg[2:0]cs;//当前状态reg[2:0]ns;//下一个状态regis_correct;//密码输入正确1-正确regis_incorrect;//密码输入错误1-错误20151215reg[2:0]i;//用户输入第几位密码reg[1:0]count;//计算输错密码的次数,实现三次报警parameter[2:0]idle=3'b000,panduan=3'b001,sancierror=3'b011,correct=3'b010,baojingzt=3'b100;//四个状态,空闲(密码输入),判断状态,三次是否都错,密码正确,报警状态//第一个always语句块,顺序状态转化always@(posedgeclk,negedgereset)beginif(!reset)cs<=idle;else20151215cs<=ns;end//第二个always语句块,根据不同的输入转换到不同的状态always@(reset,cs,queren,is_correct,is_incorrect,count)begincase(cs)idle:if(!queren)//如果确认键按下,进入判断状态ns=panduan;elsens=idle;//没有按下,保持在空闲状态panduan:if(is_correct)//判断结果为正确,则进入密码正确状态ns=correct;20151215elseif(is_incorrect)ns=sancierror;//如果结果为错误,则进入密码错误状态elsens=panduan;//如果判断没有结束,则保持在本状态sancierror:if(count==3'd3)ns=baojingzt;elsens=idle;correct:ns=correct;//保持在正确状态,等待复位按键baojingzt:ns=baojingzt; //保持在正确状态,等待复位按键endcaseend20151215//第三个always模块,状态机的输出,根据状态不同输出不同的信号always@(posedgeclk,negedgereset)beginif(!reset)begin//复位,全部置零{open,baojing,is_correct,is_incorrect}<=4'b0000;i<=0;mima_in[0]<=0;mima_in[1]<=0;mima_in[2]<=0;mima_in[3]<=0;mima_in[4]<=0;mima_in[5]<=0;20151215count<=0;endelsebegin{open,baojing,is_correct,is_incorrect}<=4'b0000;//本句只是让程序更加严谨,可不要case(ns)idle://在空闲状态的操作begin{open,baojing,is_correct,is_incorrect}<=4'b0000;if(!key_in[0])//判断按键是否被按下,如果按下,根据按键编号以及i的值给对应密码位进行赋值,同时i+1,20151215//(在这里没有处理i的上限,因为可以直接判断i的大小来判断是否错误)//共有六个按键,所以判断六次beginmima_in[i]=3'b001;i<=i+1'b1;endelseif(!key_in[1])beginmima_in[i]=3'b010;i<=i+1'b1;endelse20151215if(!key_in[2])beginmima_in[i]=3'b011;i<=i+1'b1;endelseif(!key_in[3])beginmima_in[i]=3'b100;i<=i+1'b1;endelseif(!key_in[4])20151215beginmima_in[i]=3'b101;i<=i+1'b1;endelseif(!key_in[5])beginmima_in[i]=3'b110;i<=i+1'b1;endelsei<=i;//到此处,按键输入判断结束20151215if(!quxiao)//此处判断取消键是否按下,如果按下将对应为赋值为0,同时将i-1,设置下限,不能小于零beginmima_in[i]=3'b000;if(i>0)i<=i-1'b1;elsei<=i;endendpanduan:if(i!=3'b110)begin20151215

//判断状态,判断密码输入是否正确,如果长度不一致,则直接判错{is_correct,is_incorrect}<=2'b01;endelseif(mima[0]==mima_in[0]&&mima[1]==mima_in[1]&&mima[2]==mima_in[2]&&mima[3]==mima_in[3]&&mima[4]==mima_in[4]&&mima[5]==mima_in[5])begin//如果密码正确,则判断正确{is_correct,is_incorrect}<=2'b10;end20151215elsebegin{is_correct,is_incorrect}<=2‘b01;//如果密码正确,否则全错endsancierror:count<=count+1'b1;correct:{open,baojing}<=2'b10;//正确状态,open=1,baojing=0baojingzt:{open,baojing}<=2'b01;//错误状态,open=0,baojing=1endcaseendendendmodule201512

温馨提示

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

评论

0/150

提交评论