




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学能力拓展训练学 号: 能力拓展训练题 目电子密码锁设计学 院专 业班 级姓 名指导教师2016年 月 日能力拓展训练任务书学生姓名: 专业班级: 自动化_班 指导教师: 孙晓明 工作单位: 自动化学院 题 目: 电子密码锁设计 初始条件:计算机、max+plus、eda实验箱。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)设计一个电子密码锁,在锁开的状态下输入密码,设置的密码共4位,用数据开关k1k10分别代表数字1,2,9,0,输入的密码用数码管显示,最后输入的密码显示在最右边的数码管上,即每输入一位数,密码在数码管上的显示左移一位。可删除输入的数字,删除的是最后输入的数字,每删除一位,密码在数码管的显示右移一位,并在左边空出的位上补充“0”。用一位输出电平的状态代表锁的开闭状态。提高部分:为保证密码锁主人能打开密码锁,设置一个万能密码,在主人忘记密码时使用。任务安排:(1) 设计任务及要求分析(2) 方案比较及认证说明(3) 系统原理阐述,写出设计方案结构图(4) 软件设计课题需要说明:软件思想,流程图,源程序及程序注释(5) 调试记录及结果分析(6) 总结(7) 参考资料5篇以上(8) 附录:程序清单时间安排:d1:安排设计任务;收集资料;方案选择d2:程序设计d3:实验室内调试程序并演示d4:撰写报告d5:交能力拓展训练报告主要参考资料:1 谭会生,张昌凡eda 技术及应用西安:西安电子科技大学出版社20042 孙晓明eda实验指导书武汉:武汉理工大学教材中心,20071指导教师签名: 孙晓明 2016 年 月 日系主任(或责任教师)签名: 年 月 日摘要锁是保护人类生命财产安全的重要工具。随着社会发展技术进步,人类发明了保密性能和防盗功能更强的电子密码锁,以取代传统的机械锁。电子密码锁的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其控制核心一般通过数字电路,单片机或fpga实现。fpga作为专用集成电路领域中的一种半定制电路,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。相比单片机开发需要同时设计硬件电路与编写程序,fpga开发以硬件描述语言来实现,可以更高效地实现电子密码锁的功能。本次电子密码锁设计通过使用verilog hdl硬件描述语言在max+plus软件环境下设计编译并仿真,下载至fpga以实现需要的功能。关键词:电子密码锁;fpga;verilog hdl目录1 设计任务及要求分析11.1 设计任务11.2 任务要求分析12 方案设计及选择22.1 设计思路22.2 单片机设计方案22.3 fpga设计方案22.4 方案选择33 基于fpga的电子密码锁设计43.1 按键消抖模块设计53.2 控制模块设计73.3 编码显示模块设计93.4 各模块组合设计104 调试记录及仿真结果分析124.1 调试记录124.2 仿真结果分析124.2.1 按键消抖模块仿真结果分析124.2.2 控制模块仿真结果分析134.2.3 编码显示模块仿真结果分析155 小结及体会16参考文献17附录18本科生能力拓展训练成绩评定表231 设计任务及要求分析1.1 设计任务设计一个4位电子密码锁:(1)用数据开关k1k10分别代表数字1,2,9,0,输入的密码用数码管显示;(2)最后输入的密码显示在最右边的数码管上,即每输入一位数,密码在数码管上的显示左移一位;(3)可删除输入的数字,删除的是最后输入的数字,每删除一位,密码在数码管的显示右移一位,并在左边空出的位上补充“0”;(4)用一位输出电平的状态代表锁的开闭状态;(5)在锁开的状态下输入密码,可以设置新密码;(6)设置一个万能密码,在主人忘记密码时使用。1.2 任务要求分析该电子密码锁输入信号来源有开关k1k10,设置密码键,密码核对键,退格键,关闭键;其输出信号为开闭状态,以及4个七段数码管显示。该电子密码锁输入输出信号与按键对应关系描述如下:(1)k1k10分别对应数字1,2,9,0,输入的密码用数码管显示;最后输入的密码显示在最右边的数码管上,即每输入一位数,密码在数码管上的显示左移一位;(2)按下退格键,可删除输入的数字,删除的是最后输入的数字,每删除一位,密码在数码管的显示右移一位,并在左边空出的位上补充“0”;(3)在锁开的状态下输入密码,按下设置密码键后,可以设置新密码;(4)输入密码后按下密码核对键,用一位输出电平的状态代表锁的开闭状态;(5)在锁开状态下,按下关闭键,代表锁的开闭状态的一位输出电平出现关闭状态。2 方案设计及选择2.1 设计思路该电子密码锁的设计可以分多个模块进行,主要包括如密码输入模块,数据寄存模块,数码管编码显示模块,密码核对模块等。各个模块被分别设计并仿真成功后,再组合起来以构成完整的电子密码锁。2.2 单片机设计方案该电子密码锁的设计可使用80c51单片机与串行e2prom实现。各功能模块主要包括:密码输入模块,单片机控制模块,串行e2prom密码存储模块以及编码显示模块。该方案由硬件电路设计与单片机程序编写两部分组成。其设计方案结构图如图2.1所示。图2.1 单片机设计方案结构图2.3 fpga设计方案该电子密码锁的设计也可由fpga现场可编程门阵列实现。各功能模块主要包括:按键输入消抖模块,控制模块以及七段数码管编码显示模块。该方案可以在max+plus软件案件环境下经过使用verilog hdl硬件描述语言编写,编译,调试和仿真等步骤后下载到fpga实现。其设计方案结构图如图2.2所示。图2.2 fpga设计方案结构图2.4 方案选择通过比较以上单片机设计方案与fpga设计方案发现:单片机设计方案包含硬件设计与软件设计两个部分,而fpga设计方案只需通过使用硬件描述语言实现。后者设计时操作方便,仅需在软件环境下调试。因此,该电子密码锁设计选择上述fpga设计方案。3 基于fpga的电子密码锁设计该fpga电子密码锁设计方案使用verilog hdl语言描述,其程序流程图如图3.1所示。图3.1 程序流程图3.1 按键消抖模块设计该按键消抖模块源程序如下:/设置密码键,核对密码键,退格键,关锁键消抖程序module key_jitter_4(clk_in,key_in,set,check,delete,close);input clk_in;input 3:0 key_in;output set,check,delete,close;reg 3:0 key_in_a;reg 3:0 key_in_b;wire 9:0 changed;reg 19:0 timer;reg set,check,delete,close;/检测输入信号变化always (posedge clk_in)beginkey_in_a = key_in;key_in_b = key_in_a;end/输入信号变化计数器assign changed = key_in_b&(key_in_a);always (posedge clk_in)if(changed)timer = 0;elsetimer = timer + 1b1;/输入信号超过20ms不变化即可输出该信号always (posedge clk_in) if(timer = 20hfffff)set,check,delete,close = key_in;endmodule/数字键k1k10消抖程序module key_jitter_10(clk_in,key_in,key_out);input clk_in;input 9:0 key_in;output 9:0 key_out;reg 9:0 key_in_a;reg 9:0 key_in_b;reg 19:0 timer;reg 9:0 key_out;wire 9:0 changed;/检测输入信号变化always (posedge clk_in)beginkey_in_a = key_in;key_in_b = key_in_a;end/输入信号变化计数器assign changed = key_in_b&(key_in_a);always (posedge clk_in) if(changed) timer = 0; elsetimer = timer + 1b1;/输入信号超过20ms不变化即可输出该信号always (posedge clk_in)beginif(timer = 20hfffff)begin key_out = key_in;endendendmodule该4位与10位按键消抖模块电路图分别如图3.2,图3.3所示。图3.2 4位按键消抖模块电路图图3.3 10位按键消抖模块电路图3.2 控制模块设计该控制模块源程序如下:module controller_3(in,back,check,set,close,lock,clk,num1,num2,num3,num4);input back,check,set,close;input 9:0in;input clk;output lock;output3:0num1,num2,num3,num4;reg3:0num1,num2,num3,num4;reg15:0code;reg3:0temp;reg lock;always(posedge clk)beginif(in!=10b0000000000)/检测数字键输入,并将数值移位寄存begincase(in)10b0000000001:temp=4d1;10b0000000010:temp=4d2;10b0000000100:temp=4d3;10b0000001000:temp=4d4;10b0000010000:temp=4d5;10b0000100000:temp=4d6;10b0001000000:temp=4d7;10b0010000000:temp=4d8;10b0100000000:temp=4d9;10b1000000000:temp=4d0;endcasenum4=num3;num3=num2;num2=num1;num1=temp;endelse if(back)/按下退格键,移位寄存回上一状态beginnum1=num2;num2=num3;num3=num4;num4=1d0;endendalways(posedge clk)beginif(lock=0&check=1)/锁关时,按下核对密码键beginif(code=num4,num3,num2,num1)/与设置的密码想同,开锁lock=1;else if(16h0008=num4,num3,num2,num1)/与万能密码同,开锁lock=1;endelse if(lock=1&close=1) /锁开时,检测关锁键lock=0;endalways(posedge clk)beginif(lock=1&set=1)/锁开时,检测设置密码键code=num4,num3,num2,num1;endendmodule该控制模块电路图如图3.4所示。图3.4 控制模块电路图3.3 编码显示模块设计编码显示模块源程序如下:/共阴极七段数码管编码显示模块module encoder(data_in,data_out);input 3:0 data_in ;output data_out ;reg 6:0 data_out ;always (data_in)begincase(data_in)4d0:data_out=7b1111110;/04d1:data_out=7b0110000;/14d2:data_out=7b1101101;/24d3:data_out=7b1111001;/34d4:data_out=7b0110011;/44d5:data_out=7b1011011;/54d6:data_out=7b1011111;/64d7:data_out=7b1110000;/74d8:data_out=7b1111111;/84d9:data_out=7b1111011;/9default:data_out=7b1111110;/0endcase endendmodule该编码显示模块电路图如图3.5所示。图3.5 控制模块电路图3.4 各模块组合设计将按键消抖模块,控制模块,编码显示模块组合得到该电子密码锁组合后的整体电路图。该各模块组合电路图如图3.6所示。图3.6 各模块组合电路图4 调试记录及仿真结果分析4.1 调试记录max+plus的设计输入、逻辑综合、布局布线、仿真校验和编程下载等功能全部集成在统一的开发环境下,加快了动态开发和调试,缩短开发周期。各模块在max+plus软件环境中,均遵循了新建text editor file,编译成功后建立symbol editor file;新建graphic editor file,使用已生成的symbol editor file作图,编译成功后建立waveform editor file,保存后使用simulator仿真器进行波形仿真等步骤。各模块调试时显示正常。4.2 仿真结果分析4.2.1 按键消抖模块仿真结果分析4位按键消抖模块仿真结果如图4.1所示,10位按键消抖模块仿真结果如图4.2所示。图4.1 4位按键消抖模块仿真结果图4.1中输入信号key_in2置1后一段时间,对应的输出信号check去除了出现时间小于20ms的杂波并保留了大于20ms的波形。实现了按键消抖功能。图4.2 10位按键消抖模块仿真结果图4.2中输入信号key_in9置1后一段时间,对应的输出信号key_out9去除了出现时间小于20ms的杂波并保留了大于20ms的波形。实现了按键消抖功能。4.2.2 控制模块仿真结果分析控制模块仿真波形如图4.3,图4.4,图4.5,图4.6所示。图4.3 输入万能密码解锁仿真结果图4.3中在in9.0输入万能密码后,输入信号check置1,输出信号lock置1。实现了输入万能密码解锁功能。图4.4 按下关锁键关锁仿真结果图4.4中在锁开状态下,输入信号close置1,输出信号lock置0。实现了关锁功能。图4.5 按下退格键删除一位仿真结果图4.5中依次输入了4位数字,输出信号num4num1依次左移一位;输入信号back三次置1,每次back置1,输出信号num4num1依次右移一位。实现了删除一位的功能。图4.6 设置密码仿真结果图4.6中在开锁后输入新的密码,输入信号set置1以设置密码,接着输入信号close置1以关锁;关锁后,输入信号back置1将num1num4清零;清零后输入新密码,再将输入信号check置1以核对密码,输出信号lock置1表示开锁成功。实现了设置密码的功能。4.2.3 编码显示模块仿真结果分析编码显示模块仿真波形如图4.7所示。图4.7 编码显示模块仿真结果图4.7中将输入信号data_in3.0置为0001,接着输出信号data_out6.0置为0110000。实现了编码显示功能。5 小结及体会通过本次设计训练,个人有了很多获得:一,了解了自身各种理论知识的不足之处,强化了自身知识水平;二,知道了理论必须与实践结合,各种技术才能真正达到熟练运用的程度;三,科学技术是严密谨慎的,不能有一丝马虎;四,本次电子密码锁设计在多种方案设计与比较时,进一步明白了单片机与fpga的区别。fpga程序可以并行执行,单片机程序是顺序执行;fpga更偏向于硬件电路,而单片机更偏于软件,两者的应用领域和擅长点大有不同。在具体进行fpga电子密码锁设计时,亦进一步了解了硬件描述语言如verilog hdl语言与程序设计语言如c语言的不同,使用时前者更像是在搭建硬件电路,需要对数字电路等学科知识有一定了解。参考文献1 徐海军,叶卫东fpga在高性能数据采集系统中的应用j计算机技术与应用,20055:44-612 夏宇闻verilog数字系统设计m北京:北京航空航天大学出版社,2013:166-210.3 jbhaskerverilog hdl硬件描述语言m徐振林北京:机械工业出版社,2000:49-90.4 meyerbaese u数字信号处理的fpga实现m刘凌北京:清华大学出版社,2006:1-495 孙晓明eda实验指导书武汉:武汉理工大学教材中心,20071:1-256 李连华基于fpga的电子密码锁设计j中国科技信息,2006,2006.1:1-2附录程序清单:/按键消抖模块/设置密码键,核对密码键,退格键,关锁键消抖程序module key_jitter_4(clk_in,key_in,set,check,delete,close);input clk_in;input 3:0 key_in;output set,check,delete,close;reg 3:0 key_in_a;reg 3:0 key_in_b;wire 9:0 changed;reg 19:0 timer;reg set,check,delete,close;/检测输入信号变化always (posedge clk_in)beginkey_in_a = key_in;key_in_b = key_in_a;end/输入信号变化计数器assign changed = key_in_b&(key_in_a);always (posedge clk_in)if(changed)timer = 0;elsetimer = timer + 1b1;/输入信号超过20ms不变化即可输出该信号always (posedge clk_in) if(timer = 20hfffff)set,check,delete,close = key_in;endmodule/数字键k1k10消抖程序module key_jitter_10(clk_in,key_in,key_out);input clk_in;input 9:0 key_in;output 9:0 key_out;reg 9:0 key_in_a;reg 9:0 key_in_b;reg 19:0 timer;reg 9:0 key_out;wire 9:0 changed;/检测输入信号变化always (posedge clk_in)beginkey_in_a = key_in;key_in_b = key_in_a;end/输入信号变化计数器assign changed = key_in_b&(key_in_a);always (posedge clk_in) if(changed) timer = 0; elsetimer = timer + 1b1;/输入信号超过20ms不变化即可输出该信号always (posedge clk_in)beginif(timer = 20hfffff)begin key_out = key_in;endendendmodule/电子密码锁控制模块module controller_3(in,back,check,set,close,lock,clk,num1,num2,num3,num4);input back,check,set,close;input 9:0in;input clk;output lock;output3:0num1,num2,num3,num4;reg3:0num1,num2,num3,num4;reg15:0code;reg3:0temp;reg lock;always(posedge clk)beginif(in!=10b0000000000)/检测数字键输入,并将数值移位寄存begincase(in)10b0000000001:temp=4d1;10b0000000010:temp=4d2;10b0000000100:temp=4d3;10b0000001000:temp=4d4;10b0000010000:temp=4d5;10b0000100000:temp=4d6;10b0001000000:temp=4d7;10b0010000000:temp=4d8;10b0100000000:temp=4d9;10b1000000000:temp=4d0;endcasenum4=num3;num3=num2;num2=num1;num1=temp;endelse if(back)/按下退格键,移位寄存回上一状态beginnum1=num2;num2=num3;num3=num4;num4=1d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子保单健康委托书
- 南京市江宁区事业单位招聘卫技人员笔试真题2024
- 社区社区服务研究管理基础知识点归纳
- 2024年山东石油化工学院辅导员考试真题
- 石大学前儿童保育学课外必读:关于幼儿是否该用含氟牙膏的讨论
- 2025年二级造价师检测试题
- 纪念中国人民抗日战争胜利80周年心得体会
- 生物炼制技术应用-洞察阐释
- 遗传学在医学教育中的定位与角色演变
- 中药企业经营管理方案
- 浙江省镇海市镇海中学2025届高三最后一卷历史试卷含解析
- 生物实验用试剂与耗材购销协议
- 压力表自校操作规程
- 2024年陕西省中考化学试卷真题(含答案)
- 江西省南昌市南昌县2022-2023学年八年级下学期期末英语试题
- 2024重度哮喘诊断与处理中国专家共识解读课件
- 2024国内各省市五星级酒店分布表全套
- 一例肾破裂伴胸腔积液患者疑难病例讨论
- 成人住院患者静脉血栓栓塞症Caprini、Padua风险评估量表
- JJG 621-2012 液压千斤顶行业标准
- 页岩气及其成藏特征
评论
0/150
提交评论