




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
题目:基于VerilogHDL的智能保险柜防控系统的设计,一、设计的背景、目的和意义,背景:锁是一种保险措施,是人类为了保护自己私有财产而发明的一种钥匙才能开启的装置,随着人们生活水平的提高和安全意识的加强,对锁的要求也越来越高,智能保险柜在这时应求而生。目的和意义:满足现代社会的防盗需要,避免钥匙极易丢失的缺陷,保险柜有保密性高,使用时活性好,安全系数高的特点。,二、设计任务及要求,1.设计一个密码锁,密码为一个4位的十进制数,密码固化在锁内2.用户输入密码正确,则开锁灯亮;若不正确,则报警.3.若用户输入密码不正确,可以按复位键重新输入密码,重复三次锁死。,三、确定输入和输出变量,输入:K0,K1,K2,K3,K4,K5,ret,clk输出:passed,errorK0,K1,K2,K3,K4,K5代表数字0-9共10个数字和1个确认键,1个复位键,四、输入变量对应部件说明,考虑到按键数目不够,采用了一位按键作为功能转换按键;即前5位按键输入04,同时按下功能转换按键时,按键04即转换为按键59,这就弥补了按键数目的不足。最后两位按键设定为确认输入按键和复位按键。密码输入完成后可以按确认键检验密码的正误,报警、输入错误或者其他情况可以按复位按键重新输入。,五、方案论证,方案1:基于VerilogHDL原理实现方案2:基于单片机原理实现确定选择方案1,理由是单片机操作复杂,数字电路过程容易调试,六、状态机设计(状态转换图),状态图,七、程序设计(状态编码),modulepasswd_lock(clk0,passed,one1,two1,three1,four1,zero1,change,error,resetb);inputone1,two1,three1,four1,zero1,change;regzero,one,two,three,four;inputyes;inputresetb;/输入复位信号inputclk0;/输入时钟信号output7:0passed;/输出信号output7:0seg;/段选output7:0dig;/位选,程序设计,reg3:0key;regRXBuf0,RXBuf1,RXBuf2,RXBuf3,RXBuf4;/displayregclk0_div;reg2:0digyi;/yiwei/reg7:0dig;/weixuanreg3:0seg0;/duanxuanreg7:0seg;reg12:0CNT_R0;reg18:0CNT_R1;regclk1;reg21:0CNT_R2;regclk2;reg7:0passed;,程序设计,parameterPASSWORD=16b0001000100010001;/盛放密码的参数reg15:0password;/输入数值盛放寄存器/输入的数字编码always(posedgeclk1)begin/检测线路的下降沿RXBuf1=one1;one=(RXBuf1end/消除多重按,程序设计,always(posedgeclk1)begin/检测线路的下降沿RXBuf3=three1;three=(RXBuf3,程序设计,/警报计时寄存器reg10:0alarm_count;/尝试次数寄存器reg1:0try_count;/输入状态寄存器:error和correctregerror;regcorrect;/以上为中间状态的一些寄存器和一些所用到的参数/主机状态机部分always(posedgeclk0)beginCNT_R2=CNT_R2+1b1;if(CNT_R24000000)beginclk1=1;endelsebeginclk1=0;endend,程序设计,always(main_stateorcorrectorerror)begincase(main_state)waits:if(correct=1)/由waits转换到pass的条件next_state=pass;elseif(error=1else,程序设计,always(posedgeclk1ornegedgeresetb)beginif(!resetb)/复位时,开锁输出与警报输出都为零beginpassed=8b00000000;endelseif(main_state=pass)/当主机状态为pass时,开锁beginpassed=8b10000000;endelseif(main_state=alarm)/当主机状态为alarm时,警报beginpassed=8b00000001;endelse/其它状态复位beginpassed=8b00000000;endend/alarm一段时间后,自动进入waits状态/alarm定时器,程序设计,always(posedgeclk1ornegedgeresetb)beginif(!resetb)alarm_count=0;elseif(main_state=alarm)/alarm状态计时器alarm定时器加1alarm_count=alarm_count+1;elsealarm_count=0;end/锁pass以后计数开始,当规定的时间到达后自动上锁,并进入waits状态/pass定时器always(posedgeclk1ornegedgeresetb)beginif(!resetb)pass_count=0;elseif(main_state=pass)/pass状态计时器pass定时器加1pass_count=pass_count+1;else,程序设计,pass_count=0;end/从状态机,用于输入4位密码always(posedgeclk1ornegedgeresetb)beginif(!resetb)sub_state=first;elsesub_state=next_sub_state;endalways(!zero|!one|!two|!three|!four|!yesorsub_state)/always(keyorsub_state)beginif(key_pressed_flag|!yes)if(!yes)/4个密码输完时,进行确认next_sub_state=first;/default为输入了某位密码,输入完自动将状态转入下一位elseif(!zero|!one|!two|!three|!four)case(sub_state),程序设计,next_state=pass;alarm:if(alarm_count10=1)/由alarm转换到waits的条件next_state=waits;elsenext_state=alarm;default:/默认状态:waitsnext_state=waits;endcaseend/状态转换always(posedgeclk1ornegedgeresetb)beginif(!resetb)main_state=waits;elsemain_state=next_state;end/输出控制部分,程序设计,pass_count=0;end/从状态机,用于输入4位密码always(posedgeclk1ornegedgeresetb)beginif(!resetb)sub_state=first;elsesub_state=next_sub_state;endalways(!zero|!one|!two|!three|!four|!yesorsub_state)/always(keyorsub_state)beginif(key_pressed_flag|!yes)if(!yes)/4个密码输完时,进行确认next_sub_state=first;/default为输入了某位密码,输入完自动将状态转入下一位elseif(!zero|!one|!two|!three|!four)case(sub_state),程序设计,first:next_sub_state=second;second:next_sub_state=third;third:next_sub_state=fourth;fourth:next_sub_state=finish;/当输入完4位密码以后状态保持不变,等待输入enter命/令finish:next_sub_state=finish;default:next_sub_state=sub_state;endcaseelsenext_sub_state=sub_state;end/比较密码,产生正确或者错误信息always(posedgeclk1ornegedgeresetb)begin,程序设计,first:next_sub_state=second;second:next_sub_state=third;third:next_sub_state=fourth;fourth:next_sub_state=finish;/当输入完4位密码以后状态保持不变,等待输入enter命/令finish:next_sub_state=finish;default:next_sub_state=sub_state;endcaseelsenext_sub_state=sub_state;end/比较密码,产生正确或者错误信息always(posedgeclk1ornegedgeresetb)begin,程序设计,error=0;endend/记录密码always(posedgeclk1ornegedgeresetb)beginif(!resetb)password=0;elseif(!zero|!one|!two|!three|!four)case(sub_state)first:password15:12=key;second:password11:8=key;third:password7:4=key;fourth:password3:0=key;default:,程序设计,password=password;endcaseelsepassword=password;end/记录错误次数always(posedgeclk1ornegedgeresetb)beginif(!resetb)try_count=0;elseif(error=1)try_count=try_count+1;elseif(main_state=pass|main_state=alarm)try_count=0;endregkey_pressed_flag;/键盘按下标志always(posedgeclk1ornegedgeresetb)beginif(!resetb)beginkey_pressed_flag=0;,程序设计,key=4b0000;endelseif(!zeroend,程序设计,elseif(!twoendend,程序设计,elseif(!twoendend,程序设计,endcaseend/xuanshu/always(digyi)begincase(digyi)3b000:seg0=password15:12;3b001:seg0=password11:8;3b010:seg0=password7:4;3b011:seg0=password3:0;endcaseend/segyima/always(seg0)begincase(seg0)4b0000:seg=7b0111111;/04b0001:seg=7b0000110;/14b0010:seg=7b1011011;/24b0011:seg=7b1001111;/3,程序设计,4b0100:seg=7b1100110;/44b0101:seg=7b1101101;/54b0110:seg=7b1111101;/64b0111:seg=7b0000111;/74b1000:seg=7b1111111;/84b1001:seg=7b1101111;/9endcaseendendmodule,八、状态机设计,九、RTL图,十、仿真时序图,可以看到,在复位以后,输入第1,2,3,4个密码(依次为1101)后,passed变成高电平当过了一定的时间后,passed变成低电平,重新计入键盘读入值,进行下一轮的密码辨别。,十一、演示照
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024六年级语文下册 第三单元 交流平台与初试身手说课稿 新人教版
- 六年级品德与社会下册 第四单元 毕业之歌 第11课《我们的祝福》说课稿 粤教版
- 脊柱侧弯3D扫描与评估系统企业制定与实施新质生产力项目商业计划书
- 美术作品展示行业跨境出海项目商业计划书
- 模特经纪人服务创新创业项目商业计划书
- 虚拟现实旅游体验与展创新创业项目商业计划书
- 木材供应链可视化管理系统创新创业项目商业计划书
- 幼儿园大班主题教案设计实务
- 转基因提高木材品质-洞察与解读
- 2025-2030口腔数字化诊疗设备采购行为与民营医院投资回报分析报告
- 文物保管考试题及答案
- 2025年叉车司机上岗证N1理论考试练习题(附答案)
- 下肢深静脉血栓的预防和护理新进展 3
- 可持续绿色100MW光伏发电站集群建设可行性研究报告
- 2025-2026学年高二地理上学期第一次月考卷 (原卷及答案)(北京)
- 物业资产安全培训宣传稿课件
- 财务预算编制与执行控制案例汇编
- 2025年大学实验室安全知识试题及答案
- 农民专业合作社资金使用管理协议
- 国庆期间安全驾驶培训课件
- 商场品牌引进
评论
0/150
提交评论