基于-Verilog的数字密码锁设计

上传人:yh****1 文档编号:125793613 上传时间:2020-03-20 格式:DOC 页数:15 大小:497.50KB
返回 下载 相关 举报
基于-Verilog的数字密码锁设计_第1页
第1页 / 共15页
基于-Verilog的数字密码锁设计_第2页
第2页 / 共15页
基于-Verilog的数字密码锁设计_第3页
第3页 / 共15页
基于-Verilog的数字密码锁设计_第4页
第4页 / 共15页
基于-Verilog的数字密码锁设计_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《基于-Verilog的数字密码锁设计》由会员分享,可在线阅读,更多相关《基于-Verilog的数字密码锁设计(15页珍藏版)》请在金锄头文库上搜索。

1、 .课程设计报告课程设计题目:基于Verilog的数字密码锁设计 学 号:201520070209学生姓名:尹景兴专 业:通信工程班 级:1521301指导教师:钟凯 2018年 1月 12 日目 录一、课程设计内容- 1 -二、实现思路- 1 -1.解锁过程- 1 -2.报警过程- 1 -3.重置密码过程- 1 -三、实现程序- 2 -四、仿真验证- 2 -1.解锁过程- 2 -2.报警过程- 2 -3.重置密码过程- 2 -五、设计心得- 2 -优质范文一、 课程设计内容设计一个4位串行数字密码锁,要求如下:1. 开锁密码为4位二进制,当输入密码与锁内给定的密码一致时,方可开锁。否则进入“

2、错误”状态,发出报警信号。2. 锁内的密码可调。3. 串行数字密码锁的报警,直到按下复位开关,才停下。此时,数字密码锁又自动等待下一个开锁状态。二、 实现思路1. 解锁过程密码锁出厂之前预设一个初始密码,在本课程设计中将其预设为0101。在密码锁上锁状态下,输入正确密码,密码锁打开。2. 报警过程当输入的密码与锁内密码不一致时,蜂鸣器响起,直到按下取消按键,蜂鸣器才停止鸣叫。3. 重置密码过程重置密码时,需先验证原密码是否正确。当输入原密码正确,才可以输入新密码,设置新密码为锁内密码。三、 实现程序module coded_lock(clk,in,set,pause,value1,value2

3、,store,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

4、; reg2:0 count3 = 0; reg3:0 keynum = 4b0101; always (posedge clk) begin if(set = 1) fork temp_set = 1; value1 = 4bxxxx; value2 = 4bxxxx; store = 4bxxxx; i = 0; j = 0; k = 0; ook = 0; count1 = 0; count2 = 0; count3 = 0; join end always (posedge clk) begin if(temp_set = 0) begin case(en,in) 2b11: begi

5、n value1i = 1b1; i = i + 1; count1 = count1 + 1;end 2b10: begin value1i = 1b0; i = i + 1; count1 = count1 + 1;end endcase end end always (posedge clk) begin if(count1 = 4) begin if(value1 = keynum) status = 1; else bee = 1; i = 0; count1 = 0; value1 = 4bxxxx; end end always (posedge clk) begin if(pa

6、use = 1) bee = 0; end always (posedge clk) begin if(temp_set = 1 & ook = 0) begin case(en,in) 2b11: begin value2j = 1b1; j = j + 1; count2 = count2 + 1;end 2b10: begin value2j = 1b0; j = j + 1; count2 = count2 + 1;end endcase end end always (posedge clk) begin if(count2 = 4) begin if(value2 = keynum

7、) ook = 1; j = 0; count2 = 0; value2 = 4bxxxx; end end always (posedge clk) begin if(ook = 1) begin case(en,in) 2b11: begin storek = 1b1; k = k + 1; count3 = count3 + 1;end 2b10: begin storek = 1b0; k = k + 1; count3 = count3 + 1;end endcase end end always (posedge clk) begin if(count3 = 4) begin ke

8、ynum = store; temp_set = 0; ook = 0; k = 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(o

9、ok),.status(status),.value1(value1),.value2(value2),.store(store),.temp_set(temp_set); always #10 clk = clk; initial fork clk = 0; in = 1bx; set = 0; pause = 0; join initial begin #123 in = 1b1; #23 in = 1bx; #45 in = 1b0; #23 in = 1bx; #45 in = 1b1; #23 in = 1bx; #45 in = 1b0; #23 in = 1bx; end end

10、module 如图,当输入预设密码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),.value1(value1

11、),.value2(value2),.store(store),.temp_set(temp_set); always #10 clk = clk; initial fork clk = 0; in = 1bx; set = 0; pause = 0; join initial begin #123 in = 1b1; #23 in = 1bx; #45 in = 1b1; #23 in = 1bx; #45 in = 1b0; #23 in = 1bx; #45 in = 1b0; #23 in = 1bx; #123 pause = 1; #23 pause = 0; end endmodule如下图,当输入密码0011时,与锁内密码不一致,bee由0变为1,表示蜂鸣器响起。当按下pause按钮时,bee由1变为0,表示蜂鸣器停止鸣叫。3. 重置密码过程测试平台代码:timescale 1ns/1nsmodule tex

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 设计及方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号