电子密码锁设计Verilog代码Quartus仿真

名称:电子密码锁设计Verilog代码Quartus仿真(文末获取)

软件:Quartus

语言:Verilog

代码功能:

电子密码锁设计

II、课题任务

  用VerilogHDL语言编写程序,设计一个电子密码锁控制电路,当输入正确代码时,输出开锁信号以推动执行机构工作。密码锁控制电路中存储一个可修改的6位代码,当输入的代码等于存储的代码时,开锁。从第一位代码输入后5秒内未将锁打开,则电路自动复位并进入自锁状态,使之无法再打开,并发出持续20秒的报警信号。允许有三次输错的机会,三次输入错误,电路自动复位并进入自锁状态,无法再打开。

III、具体设计内容:

  1、设计任务

密码锁整体结构如图1所示,其中FPGA编程是本课程设计任务,通过按键产生控制信号输入给FPGA芯片,FPGA对按键信号进行处理,并输出信号给执行机构对密码锁进行操作。FPGA的输入时钟频率为1MHz。

                      图1 密码锁整体系统

   开始开锁信号为外部输入信号,当该信号为高电平时,开始输入密码,密码为按键形式,每次按键会先发送一个高脉冲信号,即按键中断信号,然后将该按键对应的数字送出,具体时序如图2所示,FPGA接收到开始开锁信号后开始检测按键中断信号,如果按键中断有上跳沿跳变,便读取4位键值数据,然后与

存储的代码匹配,如果匹配成功则输出4位二进制数0001,如果匹配不成功,需要重新输入,则输出二进制数0010,如果要复位自锁输出0011,同时将警报输出信号置高电平,高电平持续20秒时间再置成低电平,不进行任何操作时输出0000,电子密码锁按键时序如下图2所示:

                   图2 电子密码锁按键信号时序图

1、工程文件

2、程序文件

3、程序编译

4、RTL图

5、Testbench

6、仿真图

Testbench

整体仿真图

上图前段仿真了输入密码5秒内未打开,输出alarm_led报警信号和0011执行机构信号(actuator),中段是输入密码正确,开锁,输出0001执行机构信号(actuator),最后一段是连续输入3次错误密码,输出alarm_led报警信号和0011执行机构信号(actuator)

上图为输入一次错误密码时,执行机构输出0010

按键检测模块

状态机控制模块

输出控制模块

部分代码展示:

//密码锁
module locker(
input clk,//时钟
input rst_p,//高电平复位
input start_key,//开始解锁
input [3:0] value,//键值
input confirm_key,//输入按键
output alarm_led,//报警
output [3:0] actuator//执行机构信号
);
wire key_int;//按键中断
wire [3:0] state;
//按键中断检测模块
key_detect i_key_detect(
. clk(clk),//时钟
. confirm_key(confirm_key),//输入按键
. key_int(key_int) //按键上升沿
);
//状态机控制
fsm i_fsm(
. clk(clk),
. rst_p(rst_p),//高电平复位
. start_key(start_key),//开始解锁
. value(value),//键值
. key_int(key_int),//按键中断
. state(state) //输出状态
);
源代码

点击下方的公众号卡片获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值