4x4矩阵键盘电子密码锁 FPGA 设计 Verilog Quartus
名称:4x4矩阵键盘电子密码锁 FPGA 设计 Verilog Quartus
软件:Quartus
语言:Verilog
开发板/平台:Cyclone IV FPGA开发板
功能介绍
本设计实现一个基于 FPGA 的 4x4 矩阵键盘电子密码锁系统,采用 Verilog 编写,工程软件为 Quartus。系统通过 4x4 矩阵键盘输入数字密码,并配合确认、复位、修改、上锁等独立按键完成密码锁常见操作流程,可输出开锁指示和报警信号,同时支持 LCD1602 与数码管显示。 密码锁的主要功能包括数字按键输入、密码确认、密码修改、复位控制、上锁控制、错误报警和状态显示。用户通过矩阵键盘输入密码后,按确认键进行校验;当密码正确时,led_open 输出可用于指示开锁状态;当进入异常或错误处理流程时,alarm 输出可用于报警提示。修改键和上锁键用于完成密码锁的管理操作,使系统具备较完整的交互逻辑。 显示方面,LCD1602 用于展示密码锁运行状态或提示信息,数码管接口提供位选和段选输出,便于观察输入或状态结果。工程结构包含顶层控制、键盘扫描、按键消抖、密码输入、报警控制、LCD 驱动、数码管显示和时钟分频等模块,适合作为 FPGA 综合课程设计、Verilog 模块化设计练习、矩阵键盘与 LCD1602 联合应用实验参考。运行环境
开发语言:Verilog 开发软件:Quartus 目标平台:Cyclone IV FPGA 开发板 主要外设:4x4 矩阵键盘、独立按键、LCD1602、数码管、报警输出、开锁指示 LED 顶层模块:mimasuo设计思路
系统以 mimasuo 作为顶层模块,将时钟分频、键盘输入、按键消抖、密码输入/修改、LCD1602 显示、数码管显示、开锁指示和报警控制拆分为多个功能模块。顶层统一连接 50MHz 时钟、4x4 矩阵键盘行列信号、确认/复位/修改/上锁按键,以及 LCD 与数码管输出端口,便于在 Quartus 中综合和进行 FPGA 板级调试。 输入部分先通过 div_clk 将系统时钟分频到 500KHz,作为按键扫描和消抖相关逻辑的工作时钟。4x4 矩阵键盘由 data_input、key_4x4 等逻辑完成数字键识别,独立功能按键则通过 key_jitter2 消抖并提取有效边沿,减少机械按键抖动对密码确认、修改和上锁动作的影响。 密码锁控制逻辑围绕当前状态、输入密码、正确密码、确认信号、修改信号和上锁信号展开。用户输入数字后,系统可进行密码比对;密码正确时输出开锁指示,操作异常或密码错误流程可驱动报警输出。reset_password、mima_input、alarm_on、display 等模块分别承担密码重置/修改、输入组织、报警控制和显示输出相关功能,使整体结构清晰,适合阅读、修改和二次扩展。 显示部分同时使用 LCD1602 与数码管。LCD_Driver、LCD_Top 负责 LCD 控制时序与显示内容组织,数码管显示模块负责位选和段选输出。这样的设计便于在实物演示中同时观察系统状态、输入过程和结果反馈,也方便学生理解 FPGA 中键盘扫描、状态控制和字符显示之间的协同关系。模块结构
顶层模块为 mimasuo,负责连接系统时钟、矩阵键盘、功能按键、报警输出、开锁指示、LCD1602 接口和数码管接口。 div_clk:将 50MHz 时钟分频为 500KHz,供键盘扫描和按键处理逻辑使用。 data_input、key_4x4:完成 4x4 矩阵键盘扫描与数字按键识别,输出 0-9 数字键的有效触发信号。 key_jitter、key_jitter2、negedge_check:用于机械按键消抖和边沿检测,提升确认、复位、修改、上锁等按键操作的稳定性。 mima_input、reset_password、mimasuo_ctrl:围绕密码输入、密码修改/重置和密码锁状态控制展开,实现密码校验及相关控制流程。 alarm_on:根据密码锁状态或错误条件产生报警控制输出。 display:负责数码管位选、段选显示输出。 LCD_Driver、LCD_Top:负责 LCD1602 控制时序、状态信息组织和显示接口驱动。开发板验证
工程已完成 Cyclone IV FPGA 开发板的管脚约束配置,按键、4x4 矩阵键盘、LCD1602 控制信号、数码管位选/段选、报警与开锁指示等端口均可结合 Quartus 工程中的 qsf 管脚分配进行综合、编译和下载验证。开发板验证重点覆盖密码输入、确认、修改、复位、上锁、开锁指示以及报警输出等交互流程,适合直接用于 FPGA 课程设计、综合实验和实物演示。演示视频
配套演示视频用于展示密码锁工程的实际运行效果,可结合开发板操作观察矩阵键盘输入、确认、修改、上锁、复位、LCD1602 显示、开锁指示和报警输出等功能流程。仿真图/仿真说明/设计文档图片
设计文档图片展示了工程文件、程序文件、程序编译、RTL 图和管脚分配等内容,可用于了解 Quartus 工程组织、源码模块关系、综合编译结果和 FPGA 引脚约束情况。工程目录中同时包含 ModelSim 仿真相关目录,可作为查看模块编译与仿真环境配置的参考。





部分代码
以下展示顶层模块 mimasuo 的部分代码,完整源码请下载压缩包查看。
module mimasuo(
input clk,//时钟
input [3:0] L_row,//行
output [3:0] H_col,//列
input confirm_key,//key4-确认键
input reset,//key3-复位
input modify_key,//key2--修改
input lock_up_key,//key1--上锁
output alarm,//报警
output led_open,//开锁
//LCD控制信号
output LCD_EN,
output RS,
output RW,
output [7:0] DB8,
//数码管
output [5:0] bit_select,//数码管位选
output [7:0] seg_select//数码管段选
);
wire LCD_ON;
wire reset_v;
wire reset_p;
assign reset_p=~reset_v;
wire [2:0] current_state;
wire [15:0] password;
wire [15:0] correct_password;
wire confirm;
wire modify;
wire lock_up;
assign LCD_ON=1;
wire clk_500KHz;
//数字输入按键
wire key_0;
wire key_1;
wire key_2;
wire key_3;
wire key_4;
wire key_5;
wire key_6;
wire key_7;
wire key_8;
wire key_9;
//分频
div_clk i_div_clk(
. clk(clk),//50M
. clk_500KHz(clk_500KHz)//分频到500K
);
//输入模块
data_input i_data_input(
. clk_500KHz(clk_500KHz),//500KHZ
. reset(reset_v),
. L_row(L_row),//行
. H_col(H_col),//列
. key_0_rise(key_0),//键0
. key_1_rise(key_1),//键1
. key_2_rise(key_2),//键2
. key_3_rise(key_3),//键3
. key_4_rise(key_4),//键4
. key_5_rise(key_5),//键5
. key_6_rise(key_6),//键6
. key_7_rise(key_7),//键7
. key_8_rise(key_8),//键8
. key_9_rise(key_9) //键9
);
//下降沿检测
key_jitter2 i0_key_jitter(
. clkin(clk_500KHz),
. key_in(reset),//输入
. key_posedge(),//消抖后按键上升沿
. key_negedge(),//消抖后按键下降沿
. key_value(reset_v)//消抖后按键
);
//下降沿检测
key_jitter2 i1_key_jitter(
. clkin(clk_500KHz),
. key_in(confirm_key),//输入
. key_posedge(),//消抖后按键上升沿
. key_negedge(confirm),//消抖后按键下降沿
. key_value()//消抖后按键
);
//下降沿检测
key_jitter2 i2_key_jitter(
. clkin(clk_500KHz),
. key_in(modify_key),//输入
. key_posedge(),//消抖后按键上升沿
. key_negedge(modify),//消抖后按键下降沿
. key_value()//消抖后按键
);
//下降沿检测
key_jitter2 i3_key_jitter(
. clkin(clk_500KHz),
. key_in(lock_up_key),//输入
. key_posedge(),//消抖后按键上升沿
. key_negedge(lock_up),//消抖后按键下降沿
. key_value()//消抖后按键
);
LCD_Top i_LCD_Top(
.clk_50M(clk),
.rst(confirm_key & modify_key),
.confirm(confirm),
.current_state(current_state),
.LCD_EN(LCD_EN),
.RS(RS),
.RW(RW),
// ... 以下代码略,完整源码请下载压缩包查看
代码文件(付费下载)
📥
付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 4x4矩阵键盘电子密码锁 FPGA 设计 Verilog Quartus
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 4x4矩阵键盘电子密码锁 FPGA 设计 Verilog Quartus