密码锁verilog优秀课程设计.doc
《密码锁verilog优秀课程设计.doc》由会员分享,可在线阅读,更多相关《密码锁verilog优秀课程设计.doc(22页珍藏版)》请在咨信网上搜索。
课程设计汇报 课程设计题目:4位串行数字密码锁 学 号:0326 学生姓名:谢渊良 专 业:通信工程 班 级:1421302 指导老师:钟凯 1月 5日 1.摘要 伴随科技发展数字电路多种产品广泛应用,传统机械锁因为其结构简单,安全性不高,电子密码锁其保密性高,使用灵活性好,安全系数高,使用方便,将会是未来使用趋势。本设计使用EDA设计使设计过程廷到高度自动化,其含有强大设计功效、测试、仿真分析、管理等功效。使用EDA环境完成电路系统综合设计和仿真。用VHDL能够愈加紧速、灵活地设计出符合多种要求密码锁。 本设计基于Verilog HDL语言来设计密码锁,先介绍设计要求和整体设计思想,随即对所使用各模块分别为键盘模块、连接模块、控制模块进行了介绍,给出各个模块关键代码,在对各个模块功效进行仿真。 关键字:密码锁 Verilog HDL 2.设计内容 设计一个4位数字密码锁子系统 1) 1.2设计要求 开锁密码为4位二进制,当输入密码和锁内给定密码一致时,方可开锁。不然进入“错误”状态,发出报警信号。 2) 锁内密码可调。 3) 串行数字密码锁报警,直到按下复位开关,才停下。此时,数字密码锁又自动等候下一个开锁状态。 3.系统设计 本设计中,FPGA系统采取硬件描述语言Verilog按模块化方法进行设计,并用modersim软件对各个模块进行编写仿真。 3.1键盘模块 键盘电路理想接口图: 键盘模块 0 1 flag Set Reset key_value 设计原理: 本模块采取2×2扫描键盘电路,对输入信号进行采集,此模块关键功效是每按下一个按键,flag产生一个矩形波,作为连接模块触发信号。同时key_value值为所按下键编码值,和flag一同传入连接模块。 实际设计接口图: 键盘模块 b a flag key_value 键盘模块仿真图: 跟据图中所表示当输出kevalue:10值时候,flag出现一个矩形波。 当输出kevalue:11值时候,flag再次出现上跳沿。实际上,上面图写测试文件是有一点错误,当a扫描到第三个值(01)时,b在实际电路中应该是01而不是11,此时依据程序flag应置为1,当然此时flag原来就是1,不会发生错误。在实际中,时钟频率跳如此之快,人按一下按键连续时间还是有,所以flag应在按键按完后再下降下来。不然多出很多无用矩形波,这个装置就没用了。 3.2连接模块 连接模块接口图: 连接模块 a_led b_led flag flag2 a keyvalue b c d set reset 设计原理:本连接模块经过flag信号下降沿触发,将keyvalue送入连接模块进行运算,当连续四个0和1键按下时,flag2产生一个矩形波,并将四个值分别送入a,b,c,d中,假如按下是set键,则set置1,假如按下是reset键,则reset键置1;a_led,b_led是灯泡,假如按是0键,则a_led置1,若是1键,则b_led置1。 连接模块仿真图以下: 这里有一个需要注意点是,当第一次按了0键后立即按reset键,再按一下1键时,a值是1,而不是0。每次按了reset或set,a,b,c,d全部是要重新赋值,这才符合实际情况。 3.3控制模块: 因为这个密码锁是循环使用,就一定有不一样状态。这里采取有限状态机方法进行设计。所以把开锁过程分为三个部分: 1.等候输入状态; 2.重设密码状态; 3.输出结果状态; 重设完密码标志 Reset=1 输完密码标志 Set=1 重设密码状态 输出结果状态 等候输入状态 状态转换图以下所表示: 控制模块接口图: 控制模块 flag2 ena a b c_led c d d_led set rese clkt 设计原理:经过多种状态转变,实现密码锁开锁,报错,重设密码功效。当密码错误是ena=1;当重设密码成功时c_led置为1;当输入密码成功开锁时d_led为1。 控制模块仿真以下: 因为初设密码是0000,所以在第一个flag2矩形波到来后,d_led出现一个矩形波,实际上不应该出现矩形,一直亮直到reset重置才行。或设计一个计数器全部行,即使只是部分小错误,但假如在实际验证中可能现象就不易观察了。然后就是按下set键模拟了,波形全部达成了课设要求。这是令人欣喜,即使经过了很数次修改,实在是很不轻易。 4.试验心得 我从第二个星期星期一开始做,原来只是随便做一下,不过看到周围同学全部热情高昂,我也深受感染,然后开始查资料,后面看到这个状态机方法很不错,很方便处理了状态转换问题,然后我就尝试这个方法。同时在写程序时候我也碰到了很多了困难,其中最难找错误就是逻辑错误,不过最终还是一一被我处理了。心中成就感还是有部分。经过此次课设,使我对数字电路设计有更深层次了解(多种时序),对verilog语言利用也愈加熟练。因为时间和心力有限原因,使我只能止步各个模块设计了。原来还想联合仿真,不过电脑里只装了modersim,其中又有一个键盘开关硬件,还是比较难实现。我想,假如我程序下载到fpga芯片里,那是一定会出现不少错误,实际情况往往愈加复杂,这也是我一大遗憾!最终我要感谢我室友,感谢她们对我关爱,在我将要放弃时候激励我,使我主动向前。在此,我还要尤其感谢英明兄无私帮助,降低了我找编译错误时间。还依稀记得上次数电感觉也是如此,很不错啊。 附: Verilog程序代码 1.1 Key_board_input: module key_board_input(clk,a,b,keyvalue,flag ,q,j); input clk; input[1:0] b; output reg[1:0] a; output reg[1:0] keyvalue; output reg flag; output reg q=1; output reg[1:0] j=0; always @(posedge clk) begin q=q+1; case(q) 0:a=2'b01; 1:a=2'b10; endcase case({a,b}) 4'b10_01:begin keyvalue=2'b00;flag=1;j=3;end 4'b10_10:begin keyvalue=2'b01;flag=1;j=3;end 4'b01_01:begin keyvalue=2'b10;flag=1;j=3;end 4'b01_10:begin keyvalue=2'b11;flag=1;j=3;end default:keyvalue=keyvalue; endcase begin j=j+1; if(j==3) flag=0; end end endmodule 1.2 key_board_test: `timescale 1s/1s module key_board_test(); reg clk; reg[1:0] b; wire[1:0] a; wire[1:0] keyvalue; wire flag; wire q; wire [1:0] j; key_board_input u2(clk,a,b,keyvalue,flag,q,j); initial begin #0 clk=0; #2 clk=1;b=1; #2 clk=0; #2 clk=1;b=3; #2 clk=0; #2 clk=1;b=3; #2 clk=0; #2 clk=1;b=3; #2 clk=0; #2 clk=1;b=2; #2 clk=0; #2 clk=1;b=3; #2 clk=0; #2 clk=1;b=3; #2 clk=0; #2 clk=1;b=3; end endmodule 2.1 connect: module connect(flag,keyvalue,a_led,b_led,flag2,a,b,c,d,set1,reset,jishu,jishu1,jishu2,hh); input flag; input [1:0]keyvalue; output reg a_led,b_led,flag2,a,b,c,d,set1,reset; output reg [1:0] jishu=2'b00; output reg [1:0]jishu1=0,jishu2=0,hh=0; always@(negedge flag) begin jishu2<=jishu2+1; jishu1<=jishu1+1; if(keyvalue<2) begin if(jishu==3) begin jishu<=0; end else jishu<=jishu+1; end if(jishu==0) flag2=0; if(keyvalue==2) begin hh<=jishu1; jishu<=0; end if(jishu1==(hh+1)) begin set1<=0; end if(keyvalue==2'd3) begin hh<=jishu2; jishu<=0; end if(jishu2==(hh+1)) begin reset<=0; end /*if(jishu==0) flag2=0;/*??????set????*/ case(jishu) 0: begin case(keyvalue) 0:begin a<=0; a_led=1; b_led=0; end 1:begin a=1; a_led=0; b_led=1; end 2:begin set1=1; end 3:begin reset=1; end endcase end 1: begin case(keyvalue) 0:begin b=0; a_led=1; b_led=0; end 1:begin b=1; a_led=0; b_led=1; end 2:begin set1=1; end 3:begin reset=1; end endcase end 2: begin case(keyvalue) 0:begin c=0; a_led=1; b_led=0; end 1:begin c=1; a_led=0; b_led=1; end 2:begin set1=1; end 3:begin reset=1; end endcase end 3: begin case(keyvalue) 0:begin d=0; a_led=1; b_led=0; flag2=1; end 1:begin d=1; a_led=0; b_led=1; flag2=1; end 2:begin set1=1; end 3:begin reset=1; end endcase end endcase end endmodule 2.2 connect_test: `timescale 1s/1s module connect_test(); reg flag; reg[1:0] keyvalue; wire a_led,b_led,flag2,a,b,c,d,set1,reset; wire [1:0]jishu; wire[1:0] jishu1,jishu2,hh; connect u2(flag,keyvalue,a_led,b_led,flag2,a,b,c,d,set1,reset,jishu,jishu1,jishu2,hh); initial begin #0 flag=0; #2 flag=1;keyvalue=1; #2 flag=0; #2 flag=1;keyvalue=3; #2 flag=0; #2 flag=1;keyvalue=0; #2 flag=0; #2 flag=1;keyvalue=0; #2 flag=0; #2 flag=1;keyvalue=1; #2 flag=0; #2 flag=1;keyvalue=0; #2 flag=0; end endmodule 3.1 control: module control(clk,flag2,a,b,c,d,set1,reset,control_set,ena,c_led,d_led,state,a1,b1,c1,d1,hhh); input clk,flag2,a,b,c,d,set1,reset; output reg ena,c_led,d_led,control_set; output reg[1:0] state=0; output reg a1=0,b1=0,c1=0,d1=0; output reg hhh=0; parameter in=2'b00,set=2'b01,out1=2'b10; always@(posedge clk or posedge set1 or posedge reset or flag2) begin case(state) in:begin if(reset==1) state=in; else if(set1==1) begin state=set; control_set=1; end else if (control_set==1&&hhh==1) begin state=in; control_set=0; hhh=0; end else if(flag2==1) state=out1; else begin ena=0; c_led=0; control_set=0; d_led=0; end end set:begin if(reset==1) state=in; else if(set1==1) begin state=set; control_set=1; end else if(flag2==1&&control_set==1) begin a1=a; b1=b; c1=c; d1=d; hhh=1; c_led=1; state=in; end end out1:begin if(reset==1) state=in; else begin if(a==a1&b==b1&c==c1&d==d1) begin ena=0; d_led=1; state=in; end else begin ena=1; state=out1; end end end default:state=in; endcase end endmodule 3.2 control_test: `timescale 1s/1s module control_test(); reg clk,flag2,a,b,c,d,set1,reset; wire ena,c_led,d_led,control_set; wire [1:0] state; wire a1,b1,c1,d1; wire hhh; control u2(clk,flag2,a,b,c,d,set1,reset,control_set,ena,c_led,d_led,state,a1,b1,c1,d1,hhh); always #10 clk=~clk; initial begin clk=0;reset=0;flag2=0;a=0;b=0;c=0;d=0;set1=0;reset=0; #10 a=0; #20 b=0; #20 c=0; #20 d=0;flag2=1; #20 flag2=0; #50 reset=1; #20 reset=0; #50 set1=1; #20 a=1; set1=0; #20 b=1; #20 c=0; #20 d=0;flag2=1; #20 flag2=0; #20 reset=1; #20 reset=0; #80 a=0; #20 b=0; #20 c=0; #20 d=0;flag2=1; #20 flag2=0; #20 reset=1; #20 reset=0; end endmodule 东华理工大学 课程设计评分表 学生姓名:谢渊良 班级:1421302 学号:0326 课程设计题目:4位串行数字密码锁 项目内容 满分 实 评 选 题 能结合所学课程知识、有一定能力训练。符合选题要求 (5人一题) 10 工作量适中,难易度合理 10 能 力 水 平 能熟练应用所学知识,有一定查阅文件及利用文件资料能力 10 理论依据充足,数据正确,公式推导正确 10 能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等 10 能表现发明性思维,或有独特见解 10 成 果 质 量 总体设计正确、合理,各项技术指标符合要求。 10 说明书综述简练完整,概念清楚、立论正确、技术用语正确、结论严谨合理;分析处理科学、条理分明、语言流畅、结构严谨、版面清楚 10 设计说明书栏目齐全、合理,符号统一、编号齐全。 格式、绘图、表格、插图等规范正确,符合国家标准 10 有一定篇幅,字符数不少于5000 10 总 分 100 指导老师评语: 指导老师署名: 年 月 日- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 密码锁 verilog 优秀 课程设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文