您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于-Verilog的数字密码锁设计
课程设计报告课程设计题目:基于Verilog的数字密码锁设计学号:201520070209学生姓名:尹景兴专业:通信工程班级:1521301指导教师:钟凯2018年1月12日目录一、课程设计内容...........................................................-1-二、实现思路....................................................................-1-1.解锁过程....................................................................-1-2.报警过程....................................................................-1-3.重置密码过程...........................................................-2-三、实现程序....................................................................-2-四、仿真验证....................................................................-7-1.解锁过程....................................................................-7-2.报警过程..................................................................-10-3.重置密码过程...........................................................-13-五、设计心得..................................................................-17-一、课程设计内容设计一个4位串行数字密码锁,要求如下:1.开锁密码为4位二进制,当输入密码与锁内给定的密码一致时,方可开锁。否则进入“错误”状态,发出报警信号。2.锁内的密码可调。3.串行数字密码锁的报警,直到按下复位开关,才停下。此时,数字密码锁又自动等待下一个开锁状态。二、实现思路1.解锁过程密码锁出厂之前预设一个初始密码,在本课程设计中将其预设为0101。在密码锁上锁状态下,输入正确密码,密码锁打开。2.报警过程当输入的密码与锁内密码不一致时,蜂鸣器响起,直到按下取消按键,蜂鸣器才停止鸣叫。3.重置密码过程重置密码时,需先验证原密码是否正确。当输入原密码正确,才可以输入新密码,设置新密码为锁内密码。三、实现程序modulecoded_lock(clk,in,set,pause,value1,value2,store,bee,status,temp_set,ook);inputclk,in,set,pause;outputregbee=0;outputregstatus=0;outputregtemp_set=0;outputregook=0;outputreg[3:0]value1;outputreg[3:0]value2;outputreg[3:0]store;regen=1;reg[2:0]i=0;reg[2:0]j=0;reg[2:0]k=0;reg[2:0]count1=0;reg[2:0]count2=0;reg[2:0]count3=0;reg[3:0]keynum=4'b0101;always@(posedgeclk)beginif(set==1)forktemp_set=1;value1=4'bxxxx;value2=4'bxxxx;store=4'bxxxx;i=0;j=0;k=0;ook=0;count1=0;count2=0;count3=0;joinendalways@(posedgeclk)beginif(temp_set==0)begincase({en,in})2'b11:beginvalue1[i]=1'b1;i=i+1;count1=count1+1;end2'b10:beginvalue1[i]=1'b0;i=i+1;count1=count1+1;endendcaseendendalways@(posedgeclk)beginif(count1==4)beginif(value1==keynum)status=1;elsebee=1;i=0;count1=0;value1=4'bxxxx;endendalways@(posedgeclk)beginif(pause==1)bee=0;endalways@(posedgeclk)beginif(temp_set==1&&ook==0)begincase({en,in})2'b11:beginvalue2[j]=1'b1;j=j+1;count2=count2+1;end2'b10:beginvalue2[j]=1'b0;j=j+1;count2=count2+1;endendcaseendendalways@(posedgeclk)beginif(count2==4)beginif(value2==keynum)ook=1;j=0;count2=0;value2=4'bxxxx;endendalways@(posedgeclk)beginif(ook==1)begincase({en,in})2'b11:beginstore[k]=1'b1;k=k+1;count3=count3+1;end2'b10:beginstore[k]=1'b0;k=k+1;count3=count3+1;endendcaseendendalways@(posedgeclk)beginif(count3==4)beginkeynum=store;temp_set=0;ook=0;k=0;count3=0;endendendmodule四、仿真验证1.解锁过程测试平台代码:`timescale1ns/1nsmoduletext;regclk,set,pause;regin;wirebee,status,ook;wire[3:0]value1,value2;wire[3:0]store;wiretemp_set;coded_locktemp(.clk(clk),.in(in),.set(set),.pause(pause),.bee(bee),.ook(ook),.status(status),.value1(value1),.value2(value2),.store(store),.temp_set(temp_set));always#10clk=~clk;initialforkclk=0;in=1'bx;set=0;pause=0;joininitialbegin#123in=1'b1;#23in=1'bx;#45in=1'b0;#23in=1'bx;#45in=1'b1;#23in=1'bx;#45in=1'b0;#23in=1'bx;endendmodule如图,当输入预设密码0101时,图中status由0变为1,表示密码锁打开。2.报警过程测试平台代码:`timescale1ns/1nsmoduletext3;regclk,set,pause;regin;wirebee,status,ook;wire[3:0]value1,value2;wire[3:0]store;wiretemp_set;coded_locktemp3(.clk(clk),.in(in),.set(set),.pause(pause),.bee(bee),.ook(ook),.status(status),.value1(value1),.value2(value2),.store(store),.temp_set(temp_set));always#10clk=~clk;initialforkclk=0;in=1'bx;set=0;pause=0;joininitialbegin#123in=1'b1;#23in=1'bx;#45in=1'b1;#23in=1'bx;#45in=1'b0;#23in=1'bx;#45in=1'b0;#23in=1'bx;#123pause=1;#23pause=0;endendmodule如下图,当输入密码0011时,与锁内密码不一致,bee由0变为1,表示蜂鸣器响起。当按下pause按钮时,bee由1变为0,表示蜂鸣器停止鸣叫。3.重置密码过程测试平台代码:`timescale1ns/1nsmoduletext2;regclk,set,pause;regin;wirebee,status,ook;wire[3:0]value1,value2;wire[3:0]store;wiretemp_set;coded_locktemp2(.clk(clk),.in(in),.set(set),.pause(pause),.bee(bee),.ook(ook),.status(status),.value1(value1),.value2(value2),.store(store),.temp_set(temp_set));always#10clk=~clk;initialforkclk=0;in=1'bx;set=0;pause=0;joininitialbegin#123set=1;#21set=0;#123in=1'b1;#21in=1'bx;#45in=1'b0;#21in=1'bx;#45in=1'b1;#21in=1'bx;#45in=1'b0;#21in=1'bx;#125in=1'b0;#21in=1'bx;#45in=1'b1;#21in=1'bx;#45in=1'b0;#21in=1'bx;#45in=1'b1;#21in=1'bx;#125in=1'b0;#21in=1'bx;#45in=1'b1;#21in=1'bx;#45in=1'b0;#21in=1'bx;#45in=1'b1;#21in=1'bx;endendmodule如下图,当正确输入预设密码0101时,ook由0变为1,表示可以更改密码,更改密码为1010。接着,输入新密码1010,status由0变为1,表示密码锁被新密码打开,如下图。五、设计心得通过这次课程设计,我更深入熟悉了Verilog编程的各个过程和原理,并且,成功地做出了一个产品的简化模型极大地挺高了我的学习兴趣。当然,设计过程中也遇到了各种问题和困难,我极力克服,过后感觉受益匪浅。我会再接再厉的。Bingo!东华理工大学课程设计评分表学生姓名:尹景兴班级:1521301学号:201520070209课程设计题目:基于Verilog的数字密码锁设计项目内容满分实评选题能结合所学课程知识、有一定的能力训练。符合选题要求(5人一题)10工作量适中,难易度合理10能力水平能熟练应用所学知识,有一定查阅文献及运用文献资料能力10理论依据充分,数据准确,公式推导正确10能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等10能体现创造性思维,或有独特见解10成果质量总体设计正确、合理,各项技术指标符合要求。10说明书综述简练完整,概念清楚、立论正确、技术用语准确、结论严谨合理;分析处理科学、条理分明、语言流畅、结构严谨、版面清晰10设计说明书栏目齐全、合理,符号统一、编号齐全。格式、绘图、表格、插图等规范准确,符合国家标准10有一定篇幅,字符数不少于500010总分100指导教师评语:指导教师签名:年月日您好,欢
本文标题:基于-Verilog的数字密码锁设计
链接地址:https://www.777doc.com/doc-6395012 .html