版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告课程设计题目:基于Verilog的数字密码锁设计 学 号:201520070209学生姓名:尹景兴专 业:通信工程班 级:1521301指导教师:钟凯 2018年 1月 12 日目 录一、课程设计内容- 1 -二、实现思路- 1 -1.解锁过程- 1 -2.报警过程- 1 -3.重置密码过程- 1 -三、实现程序- 2 -四、仿真验证- 5 -1.解锁过程- 5 -2.报警过程- 6 -3.重置密码过程- 8 -五、设计心得- 11 -一、 课程设计内容设计一个4位串行数字密码锁,要求如下:1. 开锁密码为4位二进制,当输入密码与锁内给定的密码一致时,方可开锁。否则进入“错误”状态
2、,发出报警信号。2. 锁内的密码可调。3. 串行数字密码锁的报警,直到按下复位开关,才停下。此时,数字密码锁又自动等待下一个开锁状态。二、 实现思路1. 解锁过程密码锁出厂之前预设一个初始密码,在本课程设计中将其预设为0101。在密码锁上锁状态下,输入正确密码,密码锁打开。2. 报警过程当输入的密码与锁内密码不一致时,蜂鸣器响起,直到按下取消按键,蜂鸣器才停止鸣叫。3. 重置密码过程重置密码时,需先验证原密码是否正确。当输入原密码正确,才可以输入新密码,设置新密码为锁内密码。三、 实现程序module coded_lock(clk,in,set,pause,value1,value2,stor
3、e,bee,status,temp_set,ook); input clk,in,set,pause; output reg bee = 0; output reg status = 0; output reg temp_set = 0; output reg ook = 0; output reg3:0 value1; output reg3:0 value2; output reg3:0 store; reg en = 1; reg2:0 i = 0; reg2:0 j = 0; reg2:0 k = 0; reg2:0 count1 = 0; reg2:0 count2 = 0; reg
4、2:0 count3 = 0; reg3:0 keynum = 4'b0101; always (posedge clk) begin if(set = 1) fork temp_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; join end always (posed
5、ge clk) begin if(temp_set = 0) begin case(en,in) 2'b11: begin value1i <= 1'b1; i <= i + 1; count1 <= count1 + 1;end 2'b10: begin value1i <= 1'b0; i <= i + 1; count1 <= count1 + 1;end endcase end end always (posedge clk) begin if(count1 = 4) begin if(value1 = keynum)
6、 status <= 1; else bee <= 1; i <= 0; count1 <= 0; value1 <= 4'bxxxx; end end always (posedge clk) begin if(pause = 1) bee <= 0; end always (posedge clk) begin if(temp_set = 1 && ook = 0) begin case(en,in) 2'b11: begin value2j <= 1'b1; j <= j + 1; count2 &l
7、t;= count2 + 1;end 2'b10: begin value2j <= 1'b0; j <= j + 1; count2 <= count2 + 1;end endcase end end always (posedge clk) begin if(count2 = 4) begin if(value2 = keynum) ook <= 1; j <= 0; count2 <= 0; value2 <= 4'bxxxx; end end always (posedge clk) begin if(ook = 1)
8、begin case(en,in) 2'b11: begin storek <= 1'b1; k <= k + 1; count3 <= count3 + 1;end 2'b10: begin storek <= 1'b0; k <= k + 1; count3 <= count3 + 1;end endcase end end always (posedge clk) begin if(count3 = 4) begin keynum <= store; temp_set <= 0; ook <= 0; k
9、 <= 0; count3 <= 0; end end endmodule 四、 仿真验证1. 解锁过程测试平台代码:timescale 1ns/1nsmodule text; reg clk,set,pause; reg in; wire bee,status,ook; wire3:0 value1,value2; wire3:0 store; wire temp_set; coded_lock temp(.clk(clk),.in(in),.set(set),.pause(pause),.bee(bee),.ook(ook),.status(status),.value1(va
10、lue1),.value2(value2),.store(store),.temp_set(temp_set); always #10 clk = clk; initial fork clk = 0; in = 1'bx; set = 0; pause = 0; join initial begin #123 in = 1'b1; #23 in = 1'bx; #45 in = 1'b0; #23 in = 1'bx; #45 in = 1'b1; #23 in = 1'bx; #45 in = 1'b0; #23 in = 1&
11、#39;bx; end endmodule 如图,当输入预设密码0101时,图中status由0变为1,表示密码锁打开。2. 报警过程测试平台代码:timescale 1ns/1nsmodule text3; reg clk,set,pause; reg in; wire bee,status,ook; wire3:0 value1,value2; wire3:0 store; wire temp_set; coded_lock temp3(.clk(clk),.in(in),.set(set),.pause(pause),.bee(bee),.ook(ook),.status(status)
12、,.value1(value1),.value2(value2),.store(store),.temp_set(temp_set); always #10 clk = clk; initial fork clk = 0; in = 1'bx; set = 0; pause = 0; join initial begin #123 in = 1'b1; #23 in = 1'bx; #45 in = 1'b1; #23 in = 1'bx; #45 in = 1'b0; #23 in = 1'bx; #45 in = 1'b0;
13、#23 in = 1'bx; #123 pause = 1; #23 pause = 0; end endmodule如下图,当输入密码0011时,与锁内密码不一致,bee由0变为1,表示蜂鸣器响起。当按下pause按钮时,bee由1变为0,表示蜂鸣器停止鸣叫。3. 重置密码过程测试平台代码:timescale 1ns/1nsmodule text2; reg clk,set,pause; reg in; wire bee,status,ook; wire3:0 value1,value2; wire3:0 store; wire temp_set; coded_lock temp2(
14、.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 #10 clk = clk; initial fork clk = 0; in = 1'bx; set = 0; pause = 0; join initial begin #123 set = 1; #21 set = 0; #123 in = 1'b1; #21 in = 1
15、'bx; #45 in = 1'b0; #21 in = 1'bx; #45 in = 1'b1; #21 in = 1'bx; #45 in = 1'b0; #21 in = 1'bx; #125 in = 1'b0; #21 in = 1'bx; #45 in = 1'b1; #21 in = 1'bx; #45 in = 1'b0; #21 in = 1'bx; #45 in = 1'b1; #21 in = 1'bx; #125 in = 1'b0; #21
16、in = 1'bx; #45 in = 1'b1; #21 in = 1'bx; #45 in = 1'b0; #21 in = 1'bx; #45 in = 1'b1; #21 in = 1'bx;end endmodule 如下图,当正确输入预设密码0101时,ook由0变为1,表示可以更改密码,更改密码为1010。接着,输入新密码1010,status由0变为1,表示密码锁被新密码打开,如下图。五、 设计心得通过这次课程设计,我更深入熟悉了Verilog编程的各个过程和原理,并且,成功地做出了一个产品的简化模型极大地挺高了我的学习兴趣。当然,设计过程中也遇到了各种问题和困难,我极力克服,过后感觉受益匪浅。我会再接再厉的。Bingo!- 11 -东华理工大学课程设计评分表学生姓名:尹景兴 班级:1521301 学号:201520070209课程设计题目:基于Verilog的数字密码锁设计 项目内容满分实 评选题能结合所学课程知识、有一定的能力训练。符合选题要求(5人一题)10工作量适中,难易度合理10能力水平能熟练应用所学知识,有一定查阅
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 草原动物炭疽疫情与人畜共患防控课件
- 草原蜱传疾病叠加感染风险科普课件
- 2026年高考新课标一卷理综生物题库完整参考答案
- 《职业病防治法》宣传周知识竞赛考试试题含解析及答案
- 洪雅CAD绘图阶段测试卷
- 2025年福建省专升本历史考试真题及答案
- 2025年海关工作总结及下一年工作计划
- 阅读滋养心理成长 书香浸润纯净心灵课件
- 大雪过后呼吸道疾病高发课件
- 《一根竹竿容易弯》教学设计2026-2027学年湘艺版六年级上册音乐
- 自考《学前教育政策与法规》自学考试大纲
- 土壤和地下水污染防治管理隐患排查方案
- 中国精神分裂症防治指南(2025版 完整版)
- 《装饰工程计量与计价》教案
- 2026年秋人教版小学四年级数学上册教学计划及进度表(新课标新教材)
- 新浙教版2026-2027学年七年级上科学第3章 广袤浩瀚的宇宙 单元测试卷
- 云南云投康养投资有限责任公司招聘笔试题库2026
- 环氧自流平施工专项方案
- 沥青混凝土路面施工质量方案
- 三年级上册快乐读书吧《格林童话》阅读测试题及答案2
- 企业海外经营合规承诺书3篇
评论
0/150
提交评论