




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 课程名称硬件描述语言与EDA技术实践题目名称 数字密码锁 学生学院 专业班级 学 号 学生姓名 指导教师 年 月 日目录1.引言11.2 、电子密码锁的介绍21.3、本设计所要实现的基本要求22. 密码锁总体设计32.1 、基本工作原理32.2、实现方式32.3、功能电路设计32.3.1、总体设计32.3.2、密码储存42.3.3、键盘消抖及扫描42.3.4、主状态机62.3.5输入密码从状态机72.3.6、整体RTL视图123. 外部电路134.管脚分配145.结束语156.参考文献157.附录16采用EDA实现数字密码锁1.引言随着科技的不断发展,人们越来越重视对具有私密、重要物质的场所的安全性,所以具有报警功能的电子密码锁在日常生活中用的越来越多,因此研究与设计单片机为主要控制器的电子密码锁具有工程意义和解决日常应用需求的价值。1.1 、电子密码锁的背景与发展趋势随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,又要使用方便,这也是制锁者长期以来研制的主题。随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。据有关资料介绍,电子密码锁的研究从20世纪30年代就开始了,在一些特殊场所早就有所应用。这种锁是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就是为提高锁的安全性。由于电子锁的密钥量(密码量)极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。但较实用的还是按键式电子密码锁。20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠性提高,成本较高,是适合使用在安全性要求较高的场合,且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对它的研究一直没有明显进展。目前,在西方发达国家,电子密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于智能门禁系统中,通过多种更加安全,更加可靠的技术实现大门的管理。在我国电子锁整体水平尚处于国际上70年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。国内的不少企业也引进了世界上先进的技术,发展前景非常可观。希望通过不断的努力,使电子密码锁在我国也能得到广泛应用。 目前使用的电子密码锁大部分是基于单片机技术,以单片机为主要器件,其编码器与解码器的生成为软件方式。在实际应用中,由于程序容易跑飞,系统的可靠性能较差。基于现场可编程逻辑门阵列FPGA器件的电子密码锁,用FPGA器件构造系统,所有算法完全由硬件电路来实现,使得系统的工作可靠性大为提高。由于FPGA具有现场可编程功能,当设计需要更改时,只需更改FPGA中的控制和接口电路,利用EDA工具将更新后的设计下载到FPGA中即可,无需更改外部电路的设计,大大提高了设计的效率。1.2 、电子密码锁的介绍电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。应用较广的电子密码锁是以芯片为核心,通过编程来实现的。电子密码锁有以下性能特点:1.保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。2.密码可变。用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。3.误码输入保护。当输入密码多次错误时,报警系统自动启动。4.电子密码锁操作简单易行,一学即会。5.干扰码功能。在输入正确密码前可输入任意码。6.安保功能。密码出错过多时,将锁定键盘。7.操作方便。1.3、本设计所要实现的基本要求(1)采用4位二进制密码,密码通过键盘输入,若密码正确,则将锁打开。(2)报警、锁定键盘功能。密码输入错误LED会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。(3) 修改密码,通过修改密码增强密码锁可靠性。 (4) 系统具有一键还原出厂密码功能,如果对密码管理不善可以使用本功能进行密码还原。(5)成功开锁后,通过关锁键关锁。(6)报警及锁定键盘后可通过解锁报警键取消报警。2. 密码锁总体设计2.1 、基本工作原理电子密码锁结构如图2-1。键盘输入LED提示密码储存开锁报警密码处理图2-1.电子密码锁结构图2.2、实现方式本次电子密码锁的设计采用现场可编程逻辑门阵列FPGA器件。利用硬件描述语言Verilog描述功能电路,下载到FPGA器件里,利用FPGA及其所需外设实现本次设计所要求的功能。2.3、功能电路设计2.3.1、总体设计整个电路的输入输出接口。2.3.2、密码储存将初始密码作为常量储存在PASSWORD,初始密码为1111。password_check作为现有密码寄存器,password作为输入密码寄存器和第一次输入的修改密码的寄存器。password1作为检测用的第二次输入的修改密码的寄存器。2.3.3、键盘消抖及扫描如图为按键消抖及扫描模块。一般按键的抖动时间为5ms到10ms。模块中在检测到按键按下后使用计数器计时满20ms,然后再按键值锁存到寄存器中。而按键扫描则是用寄存器中本次时钟脉冲锁存的值的取反和下次时钟脉冲所所存的值相与来的得到按键被按下的一个时钟的高脉冲。例化按键消抖及扫描模块和判断按键是否被按下(4个按键为按下为1111,有按键被按下相应位变为0)。2.3.4、主状态机主状态机包括5个状态,分别为初始态(idle)、输入(in_put)、开锁(pass)、修改密码(change)、警告(alarm)。如图为状态机的状态图。初始开机处于初始态,等待输入标志的到来,当输入标志到来后进入输入状态。处于输入状态时等待密码输入判断位的到来。当判断密码正确时进入开锁态,而当输入密码错误次数达到三次时,进入警告状态。处于开锁态是等待修改密码或者关锁,关锁返回初始态,修改密码进入修改密码状态。进入修改密码状态后等待修改密码完成(无论成功或者失败)返回初始态。处于警告状态后锁定按键,等待取消警告标志到来,取消警告标志到来后返回初始态。2.3.5输入密码从状态机密码输入状态机分为输入密码和修改密码两部分。如图为输入密码的状态图。num0为等待第1位密码输入,输入完成进入num1。num1为等待第2位密码输入,输入完成进入num2。num2为等待第3位密码输入,输入完成进入num3。num3为等待第4位密码输入,输入完成进入num4。num4为等待确认输入,输入完成进入num5。num5为判断密码输入是否正确。正确的话密码输入标志位correct置一,返回到num0,否则密码错误输入标志位try_error自加一, 返回到num0。其他情况返回到num0。如图为修改密码的状态图。num10为等待第1位修改密码输入,输入完成进入num11。num11为等待第2位修改密码输入,输入完成进入num12。num12为等待第3位修改密码输入,输入完成进入num13。num13为等待第4位修改密码输入,输入完成进入num14。num14为等待第1次修改密码确认输入,输入完成进入num20。num20为等待再次输入第1为修改密码,输入完成进入num21。num21为等待再次输入第2为修改密码,输入完成进入num22。num22为等待再次输入第3为修改密码,输入完成进入num23。num23为等待再次输入第4为修改密码,输入完成进入num24。num24为等待再次输入修改密码确认输入,输入完成进行判断,正确则修改密码正确标志位ch_correct置一,否则修改密码错误标志位ch_error置一,无论正确错误,都返回num10。2.3.6、整体RTL视图如图为整体RTL视图。3. 外部电路外部电路包括一个产生时钟的时钟电路,4*1键盘,复位按键,蜂鸣器,4*1LED指示电路。如图为时钟电路。如图为蜂鸣器电路。如图为LED指示电路。如图为4*1键盘电路。如图为复位按键电路。4.管脚分配如图为管脚分配图。不同的FPGA实验开发板所使用的管脚不同。5.结束语此次设计的基于FPGA的电子密码锁实现了密码锁的常用功能和技术指标。课程设计是培养学生综合运用所学知识发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新月异,EDA设计和FPGA的应用已经成为当今计算机应用中空前活跃的领域,在生活中可以说是无处不在。因此作为二十一世纪的大学生来说掌握EDA设计的开发技术是十分重要的。对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。6.参考文献1徐志军等编著,EDA技术与VHDL设计,电子工业出版社,2010年5月;2曹昕燕等编著,EDA技术实践与课程设计,清华大学出版社,2006年5月; 3刘欲晓等编著,EDA技术与VHDL电路开发应用实践,电子工业出版社,2009年4月;4刘昌华等编著,数字逻辑EDA设计与实践:MAX+plus与Quartus双剑合璧,国防工业出版社,2009年;5刘江海主编,EDA技术课程设计,华中科技大学出版社,2009年1月,6王掁红主编,VHDL数字电路设计与应用实践教程;机械工业出版社,2003年6月。7.附录module lock(rst_n,clk,num3:0,warn,led3:0,led1,led2);parameter PASSWORD=4b1111;input rst_n;input clk;input 3:0 num; /键盘输入output warn,led1,led2;/输出警告output 3:0 led;/LED输出reg 3:0 password,password1,password_check; /密码寄存器wire 3:0 numbuf; /输入键盘连线 numbuf3=enter /numbuf2=ch numbuf1=1 numbuf0=0reg 3:0 led;/LED控制寄存器reg key_en; /键盘是否按下wire warn;wire sys_clk=clk;key k1(/按键消抖.clk(clk),.rst_n(rst_n),.key_in(num3:0),.key_out(numbuf3:0);reg 4:0 cstate; /状态机现在状态reg 4:0 nstate;/状态机下个状态reg correct,error,ch_correct,ch_error,alarmed;/密码正确,错误,修改密码正确,错误,警告标志reg 1:0 try_error;/密码错误次数always(numbuf3:0) /判断键盘是否按下beginif(numbuf=4b0000)key_en=0;elsekey_en=1;endparameter idle=5b00001,in_put=5b00010,pass=5b00100,change=5b01000,alarm=5b10000;always(posedge sys_clk or negedge rst_n) /状态机beginif (!rst_n) begincstate=idle;endelse cstate=nstate;endalways( cstate or key_en)begincase(cstate)idle:begin led=4b0000;if(numbuf3) beginnstate=in_put;endelse nstate=idle; endin_put:beginled0=1;if(correct)nstate=pass;else if(try_error=3)nstate=alarm;else nstate=in_put; endpass:beginled3:0=4b0010;if(numbuf3) nstate=idle;else if(numbuf2)nstate=change;elsenstate=pass;endchange:begin led3:0=4b0100;if(ch_correct)nstate=idle;else if(ch_error) nstate=idle;else nstate=change;endalarm:begin led3:0=4b1000;if(numbuf2)nstate=idle;else nstate=alarm;enddefault nstate=idle;endcaseendreg led1,led2; /测试用LEDparameter num10=4b0000,num11=4b0001,num12=4b0010,num13=4b0011,num14=4b0100,num20=4b0101,num21=4b0110,num22=4b0111,num23=4b1000,num24=4b1001;parameter num0=4b0000,num1=4b0001,num2=4b0010,num3=4b0011,num4=4b0100,num5=4b0101;reg 3:0 pstate,qstate;/密码输入位数状态always(posedge sys_clk or negedge rst_n) /输入密码状态机beginif(!rst_n) beginpassword=4b0000;password1=4b0000;pstate=num0;qstate=num10;password_check=PASSWORD; /出厂密码alarmed=0;correct=0;try_error=0;ch_correct=0;ch_error=0;led1=0;led2=0;endelse if(cstate=idle)beginled1=0;led2=0;alarmed=0;correct=0;try_error=0;ch_correct=0;ch_error=0;pstate=num0;qstate=num10;endelse if(cstate=in_put)/输入及判断密码begincase (pstate)num0: beginled1=0;if(numbuf1:0)beginpassword3=numbuf1&(numbuf0);pstate=num1;endelse pstate=num0;endnum1:beginif(numbuf1:0)beginpassword2=numbuf1&(numbuf0);pstate=num2;endelse pstate=num1;endnum2: beginif(numbuf1:0)beginpassword1=numbuf1&(numbuf0);pstate=num3;endelse pstate=num2;endnum3: beginif(numbuf1:0)beginpassword0=numbuf1&(numbuf0);pstate=num4;endelse pstate=num3;endnum4: beginif(key_en&(numbuf3)beginpstate=num5;endelse pstate=num4;endnum5:beginif(password3:0=password_check3:0)begincorrect=1;pstate=num0;led1=1;led2=0;endelse if(try_error=3) beginalarmed=1;try_error=0;pstate=num0;endelse begintry_error=try_error+1;pstate=num0;led2=1;endend default pstate=num0;endcaseendelse if(cstate=change) /修改密码begincase (qstate)num10:begin if(numbuf1:0)begin password3=numbuf1&(numbuf0);qstate=num11;endelse qstate=num10;endnum11:begin led1=0;led2=1;if(numbuf1:0)beginpassword2=numbuf1&(numbuf0);qstate=num12;endelse qstate=num11;endnum12: begin led1=1;led2=0;if(numbuf1:0)beginpassword1=numbuf1&(numbuf0);qstate=num13;endelse qstate=num12;endnum13: begin led1=1;led2=1;if(numbuf1:0)beginpassword0=numbuf1&(numbuf0);qstate=num14;endelse qstate=num13;endnum14:begin led1=0;led2=0;if(numbuf3)beginled1=1;qstate=num20;endelse qstate=num14;endnum20:begin if(numbuf1:0)begin password13=numbuf1&(numbuf0);qstate=num21;endelse qstate=num20;endnum21:begin led1=0;led2=1;if(numbuf1:0)beginpassword12=numbuf1&(numbuf0);qstate=num22;endelse qstate=num21;endnum22: begin led1=1;led2=0;if(numbuf1:0)beginpassword11=numbuf1&(numbuf0);qstate=num23;endelse qstate=num22;endnum23: begin led1=1;led2=1;if(numbuf1:0)beginpassword10=numbuf1&(numbuf0);qstate=num24;endelse qstate=num23;endnum24:beginled1=1;led2=1;if(numbuf3)beginif(password3:0=password13:0)beginpassword_check3:0=password3:0;ch_correct=1;led1=0;qstate=num10;endelse beginch_error=1;qstate=num10;endendelse qstate=num24;enddefault qstate=num10;endcaseendelse if(cstate=alarm)beginalarmed=1;endendassign warn=alarmed;endmodulemodule key( clk,rst_n,key_in, key_out );input clk;/主时钟信号,50MHzinput rst_n;/复位信号,低有效input 3:0 key_in; /四个独立按键,低表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版环保型砂金矿开采与治理工程承包合同
- 2025年市场策划经理面试指南与热点问题解析
- 2025版民品典当借款业务合同范本
- 二零二五年度第八章:交易筹备及磋商优化合同
- 二零二五年度农产品贸易存货质押融资协议
- 2025版服装店员工职业发展规划合同范本
- 2025版离婚协议范本专业指导婚姻解除与财产分割
- 二零二五年度绿色建筑房地产评估合作协议范本
- 2025年物资储备与管理专业应聘手册模拟题与答案解析一应俱全
- 2025版夜间高速公路驾驶培训服务协议
- 沪教深圳版八年级英语下册单词表
- 变岗调薪协议书模板
- 环境监测与污染源在线监控考核试卷
- 青贮饲料创业项目计划书
- 螺杆空压机微电脑控制器MAM-KY16S(B)型(中文液晶显示-200)
- 2015年全国高校体育单招考试英语卷真题及答案解析
- GB/T 13305-2024不锈钢中α-相含量测定法
- NB-T47003.1-2022常压容器第1部分:钢制焊接常压容器
- DL∕T 618-2022 气体绝缘金属封闭开关设备现场交接试验规程
- 上海市中考英语考纲词汇表
- 胶质瘤影像诊断
评论
0/150
提交评论