哈工大数字逻辑大作业电子密码锁

本文档详细介绍了使用FPGA和Verilog语言设计的电子密码锁,设计要求包括4位数字密码,20秒内未正确输入则触发报警。通过状态机实现,具有安全性和计时功能。设计者还分享了设计思路,调试过程及设计心得,提出未来可能的改进方向,如添加时间倒计时显示。
摘要由CSDN通过智能技术生成

数字逻辑与数字系统设计
实验大作业报告
(2020年)

代码https://github.com/1190202002/logichomework.git

课程名称:数字逻辑与数字系统设计
任课教师:张彦航
作业题目:电子密码锁设计
完成人: 李艺峰
学号: 1190202002
班级: 1903010
报告日期:2020年 12 月 14 日
报告成绩
教师评语

1.设计要求

1.1设计一个开锁密码至少为4位数字(或更多)的密码锁。

1.2当开锁按扭开关(可设置8位或更多,其中只有4位有效,其余位为虚设)的输入代码等于所设密码时启动开锁控制电路,并且用绿灯亮、红灯灭表示开锁状态。

1.3从第一个按扭触动后的20秒内若未能将锁打开,则电路自动复位并发出报警信号,同时用绿灯灭、红灯亮表示关锁状态。

2.工作原理及系统方框图

2.1工作原理

预设4位十进制数字1369作为密码,将其转化为二进制password=16’b0001_0011_0110_1001进行储存。拨动R2,M4,N4,R1表示第一位密码的二进制{k1,k2,k3,k4},拨动U3(p1),若相等进行下一项比较,否则回到初始状态。重复上述过程,U2(p2),V2(p3),V5(p4)分别表示2,3,4位判断。初始时,0(red)灯亮,7(green)灯灭,3(warn)灯灭,表示未开锁。打开复位键P5(reset),进入20s倒计时。若20s内未打开,则0(red)灯亮,3(warn)灯亮,7(green)灯灭,表示进入报警状态;若20s内打开,则7(green)灯亮,0(red)灯灭,3(warn)灯灭,否则20s内为未开锁状态。关闭复位键P5(reset)恢复初始状态并保持。

2.2系统方框图

在这里插入图片描述
在这里插入图片描述

3.各部分模块具体功能及设计思路

3.1时钟模块

功能:进行计时,达到20s则重新计时。
设计思路:开发板时钟频率为100MHz,当次数达到2000000000次时达到20s。

3.2状态机

功能:输入密码后,进行状态转换。正确则变为下一状态,判断下一位;错误则返回原状态。20s后,若未开锁则进入报警状态。
设计思路:按三段式方式编写,第一段原态到新态转换,第二段指定新态的变化,第三段指定不同状态输出。

4.调试过程

在调试的过程中,首先设计的密码锁为输错一位直接进入报警状态。后来考虑到此方法通过一次次试验,最多只需40次即可验证出密码,安全性不够高。通过思考,将密码锁输错1位后直接回到初始状态,最多需要10000次才可得出密码,安全性够高。

5.设计结论

本项目采用FPGA,Verilog语言,状态机设计实现了一个密码锁,该密码锁实现了全部指定功能,包括完成了密码锁的基本功能。实现了开锁密码为4位十进制数字,当开锁按扭开关的输入等于所设密码时启动开锁控制电路,进入开锁状态。从复位按扭触动后的20秒内若未能将锁打开,则电路自动复位并发出报警信号,进入关锁状态。该密码锁还需要进一步完善的地方包括添加时间倒计时显示,这部分功能可能需要用到数码管显示操作。

6.设计心得与总结

6.1心得

设计时要先进行整体的设计,明确各个状态以及各状态之间的转换。在具体代码编写时可采用三段式进行状态机设计。在进行综合时,注意系统的提示与报错信息,针对具体的报错信息和代码进行改正。

6.2总结

通过对密码锁的设计,对于时序电路有了更深刻的认识,对于状态机的具体工作流程和代码编写都有了更大的进步。对于硬件设计和代码编写之间的联系更加了解,提升了自己硬件操作和系统编写能力。

参考文献:
[1] 于斌,黄海.Verilog HDL 数字系统设计及仿真.中国工信出版社,电子工业出版社.
附录
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值