基于FPGA的密码锁

1.设计原理及要求

基于FPGA实现的数字密码锁设计中,主要包括4大部分:
FPGA器件、密码存储、译码电路、报警电路。

其中FPGA为主控部分,将消除同步模块、计数器模块、控制器模块都用Verilog HDL语言写入FPGA中代替了传统复杂的电路设计,也省去了很多繁琐的调试步骤。只有这些模块在Modelsim平台通过了仿真,就可以实现传统电路模块的功能。本次设计的数字密码锁主要是利用软件的编程来对主控模块的实现。当通过按键输入密码后,就把输入的信号送给FPGA,FPGA经过里面个模块的处理后传给了各输出电路模块。密码存储器主要是用来存储密码和防止电源掉电而导致密码锁的数据丢失和提高密码锁的安全性。 对于本次密码锁的初步设计,首先要有一个大体的思路。程序通过采集输入信息,与FPGA的存储值进行比较,如果密码正确,则开锁电路打开;如果密码错误,锁不打开,并且计数器进行+1操作;累计3次输入密码错误,给警报一个高电平,让其报警。

程序框图:
基于FPGA的密码锁_第1张图片

2. 功能模块介绍

一共五个模块,按键消抖模块,数码管动态显示模块,数码管显示模块,密码锁主模块和蜂鸣器模块。

密码锁主模块中clk表示时钟,rst表示复位,gm表示确认按键,yi表示按键1,ling表示按键0。ENA 蜂鸣器使能,当ENA等于1时蜂鸣器开始响,led灯亮表示密码输入正确,data6表示6位数码管,一共有6个数码管,23-20 表示从左到右第一个,19-16 表示从左到右第二个,依此类推。判断如果按零的话,data=data的后20位加上四进制的0,类似的是按下1的话,就加四进制的1。
数码管动态显示模块和数码管显示模块代表了最终在开发板上显示输入密码的结果,可以对输入的密码是否正确一目了然。通过六个状态机来执行位选功能,seg则代表段选,来表示现实的数字为1或者0。
蜂鸣器是在系统输入三次错误密码以后开始发声,按下复位键后声音停止消失。结果展示中设置初始密码为1001,第一次输入1111,第二次输入1101,第三次输入0001,三次密码输入错误,蜂鸣器响,按下复位键声音消失,即消除警报。输入正确密码时,指示灯亮。复位后,需要重新设置密码并确认。
按键消抖模块是通过两个状态机来分别判断按下和松开按键是否为有效操作。系统时钟周期位20ns,而10ms位一般标准的按键消抖时间。
基于FPGA的密码锁_第2张图片
基于FPGA的密码锁_第3张图片
(代码太多就不放上来了)需要加我企鹅1391074994

3.结果演示

基于FPGA的密码锁_第4张图片
基于FPGA的密码锁_第5张图片

基于FPGA的密码锁_第6张图片

4 结论

  • 本设计主要是用硬件描述语言VerilogHDL为主要的编译语言,以ModelSim开发系统为设计工具,设计了一种具有密码输入密码输入正确开锁和输入错误达到三次后报警等功能的数字电子密码锁。同时介绍了阐述数字密码锁的工作原理、个工作模块的组成及功能介绍和数字密码锁的软件实现方法。
    设计的数字密码锁控制器设置的是4位密码,在系统复位后,用户需按键4次,输入完整的一个密码串,在输入完后,系统将会进行比较,如果发现密码正确,则开锁,如果连续输入密码错误达到三次系统就会报警。这样的设计可以很好的满足人们的日常需求,可以对保管的器物可以安心。同时,本设计中的数字密码锁还具备密码修改功能,操作简单,使得密码锁的使用更加安全、便捷。渐渐熟悉数字系统的设计流程,从设计方案到拟定详细模块再到编写Verilog代码,其中也遇到的很多问题,有些拟定要实现的功能并没有在实际设计中实现出来,这是一个缺陷,但是大部分的功能还是被设计出来了,并进行了验证,完全符合设定的要求,其中也遇到了非常多的问题,并且在后面的后仿真与综合中也是出现了许多无法想象的问题,又是进行一系列的错误排除和解决,最终也勉强设计出来了主要的功能。
    本次的课程设计也让我对FPGA课程有一个熟悉的了解与实践,对数字系统的设计流程掌握了许多方面的知识,从理论到实践的结合,算是对专业知识的一次习吧,也肯定会让自己受益终身。自己接下来也要继续努力将不完善的部分进行改正。

你可能感兴趣的:(FPGA项目设计,fpga)