基于Verilog的数字密码锁设计

2020-04-17 04:16

课程设计报告

课程设计题目:基于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. 锁内的密码可调。

3. 串行数字密码锁的报警,直到按下复位开关,才停下。此时,数字密码锁又自动等待下一个开锁状态。

二、 实现思路

1. 解锁过程

密码锁出厂之前预设一个初始密码,在本课程设计中将其预设为0101。在密码锁上锁状态下,输入正确密码,密码锁打开。 2. 报警过程

当输入的密码与锁内密码不一致时,蜂鸣器响起,直到按下取消按键,蜂鸣器才停止鸣叫。 3. 重置密码过程

重置密码时,需先验证原密码是否正确。当输入

- 1 -

原密码正确,才可以输入新密码,设置新密码为锁内密码。

三、 实现程序

module

coded_lock(clk,in,set,pause,value1,value2,store,bee,status,temp_set,ook);

input clk,in,set,pause; output reg bee = 0; output reg status = 0; output regtemp_set = 0; output regook = 0; output reg[3:0] value1; output reg[3:0] value2; output reg[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) 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;

- 2 -

count3 <= 0; join end

always @(posedgeclk) begin

if(temp_set == 0) begin

case({en,in})

2'b11: begin value1[i] <= 1'b1; i<= i + 1; count1 <= count1 + 1;end

2'b10: begin value1[i] <= 1'b0; i<= i + 1; count1 <= count1 + 1;end endcase

end end

always @(posedgeclk) begin

if(count1 == 4) begin

if(value1 == keynum) status <= 1; else

bee <= 1; i<= 0;

count1 <= 0;

value1 <= 4'bxxxx; end end

always @(posedgeclk) begin if(pause == 1)

bee <= 0; end

always @(posedgeclk) begin

if(temp_set == 1 &&ook == 0) begin

case({en,in})

2'b11: begin value2[j] <= 1'b1; j <= j + 1; count2 <= count2 + 1;end

- 3 -


基于Verilog的数字密码锁设计.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2019年山西省中考数学信息冲刺二模试卷含答案解析+精选五套中考

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: