电子密码锁 FPGA 设计 Verilog Quartus

名称:电子密码锁 FPGA 设计 Verilog Quartus

软件:Quartus

语言:Verilog

开发板/平台:Cyclone IV FPGA开发板

功能介绍

本设计为基于 FPGA 的电子密码锁系统,采用 Verilog 编写,工程环境为 Quartus。系统以顶层模块 mimasuo 为核心,支持 4x4 矩阵键盘数字输入、确认开锁、密码修改、上锁控制、报警提示、LED 状态指示以及 8 位数码管显示,适合用于 FPGA 课程设计、数字系统实验和密码锁控制逻辑学习。 系统通过矩阵键盘输入 0-9 数字密码,确认键用于提交密码并触发校验流程,修改键用于进入密码修改相关操作,上锁键用于将系统重新置为锁定状态。开锁与关锁状态分别通过 led_open 和 led_close 输出显示,报警状态通过蜂鸣器 alarm 和报警灯 led_alarm 输出,用户可以直观看到密码锁的运行状态。 工程包含完整 Quartus 编译输出和板级配置,能够帮助用户学习从 Verilog 模块设计、顶层例化、管脚分配到开发板验证的完整流程。设计结构清晰,功能模块划分明确,便于二次修改,例如扩展密码位数、调整报警逻辑、替换显示方式或适配其他 FPGA 开发板。

运行环境

开发语言:Verilog 开发软件:Quartus 顶层模块:mimasuo 适配硬件:Cyclone IV FPGA 开发板 主要外设:4x4 矩阵键盘、确认键、修改键、上锁键、蜂鸣器、LED 指示灯、8 位数码管 工程文件:包含 Quartus 工程配置、Verilog 源码、管脚约束、编译输出文件和可下载配置文件。

设计思路

该密码锁采用模块化 Verilog 设计,将键盘扫描、按键消抖、密码输入、密码重置、状态控制、报警输出和数码管显示分开实现。顶层模块 mimasuo 负责连接各功能模块,并统一管理时钟、复位、矩阵键盘行列信号、确认/修改/上锁按键、蜂鸣器报警、LED 指示以及 8 位数码管显示接口。 输入部分通过分频模块把系统时钟转换为适合键盘扫描的 500KHz 时钟,再由 data_input 模块对 4x4 矩阵键盘进行扫描,提取 0-9 数字按键事件。独立的确认键、修改键和上锁键经过 key_jitter 消抖处理后输出稳定触发信号,降低机械按键抖动对密码状态机的影响。 密码处理部分由 mima_input、reset_password 和 mimasuo_ctrl 等模块配合完成。mima_input 负责将数字按键组合成密码数据,reset_password 用于密码重置或修改流程,mimasuo_ctrl 负责根据当前输入密码、正确密码、确认信号、修改信号和上锁信号控制开锁、关锁、报警等状态。显示模块则将当前输入或状态信息转换为数码管位选与段选输出,方便在开发板上直接观察运行状态。

模块结构

顶层模块:mimasuo,负责连接时钟复位、矩阵键盘、功能按键、报警输出、LED 指示和数码管显示。 主要功能模块包括: reset_password:密码重置/修改相关逻辑。 key_4x4:4x4 矩阵键盘扫描相关模块。 alarm_on:报警控制模块,用于驱动报警输出。 data_input:键盘输入采集模块,输出数字按键触发信号。 display:数码管显示模块,输出 DIG 位选和 SEG 段选。 div_clk:时钟分频模块,将系统时钟分频到键盘扫描所需时钟。 mima_input:密码输入组合模块,将数字按键转换为密码数据。 key_jitter:按键消抖模块,用于确认、修改、上锁等独立按键处理。 mimasuo_ctrl:密码锁控制模块,管理开锁、关锁、报警及状态转换。

开发板验证

工程面向 Cyclone IV FPGA 开发板进行了板级使用配置,包含 Quartus 管脚约束与分配文件,可用于按键矩阵、独立功能按键、蜂鸣器报警、报警指示灯、开锁/关锁指示灯以及数码管显示等外设连接。 开发板验证重点对应密码锁的完整交互流程:通过 4x4 矩阵键盘输入数字密码,使用确认键完成密码校验,使用修改键进入密码修改相关流程,使用上锁键恢复锁定状态;当输入或状态不满足开锁条件时,报警模块可驱动蜂鸣器与报警灯输出。板级图片与管脚分配内容可帮助用户对照实际硬件连线和 Quartus 工程配置。

电子密码锁 FPGA 设计 Verilog Quartus 开发板验证图片 .jpg

演示视频

配套演示视频展示了密码锁工程在实际操作中的运行效果,便于观察按键输入、确认、修改、上锁、开锁指示、关锁指示以及报警输出等功能状态。用户可结合工程源码和开发板管脚配置,对照视频理解完整的人机交互流程。

仿真图/仿真说明/设计文档图片

设计文档内容包含工程文件、程序文件、程序编译、RTL 图、管脚分配和仿真图等说明,并配有按键消抖模块、分频模块、报警模块、显示模块、密码重置模块、控制模块、密码输入模块等相关设计图片。仿真与文档图片可用于理解各模块连接关系、逻辑功能划分以及密码锁控制流程。

电子密码锁 FPGA 设计 Verilog Quartus 设计文档图片 image1.png

电子密码锁 FPGA 设计 Verilog Quartus 设计文档图片 image10.png

电子密码锁 FPGA 设计 Verilog Quartus 设计文档图片 image11.png

电子密码锁 FPGA 设计 Verilog Quartus 设计文档图片 image12.png

电子密码锁 FPGA 设计 Verilog Quartus 设计文档图片 image13.png

电子密码锁 FPGA 设计 Verilog Quartus 设计文档图片 image2.png

电子密码锁 FPGA 设计 Verilog Quartus 设计文档图片 image3.png

电子密码锁 FPGA 设计 Verilog Quartus 设计文档图片 image4.png

电子密码锁 FPGA 设计 Verilog Quartus 设计文档图片 image5.png

电子密码锁 FPGA 设计 Verilog Quartus 设计文档图片 image6.png

电子密码锁 FPGA 设计 Verilog Quartus 设计文档图片 image7.png

电子密码锁 FPGA 设计 Verilog Quartus 设计文档图片 image8.png

电子密码锁 FPGA 设计 Verilog Quartus 设计文档图片 image9.png

部分代码

以下展示顶层模块 mimasuo 的部分代码,完整源码请下载压缩包查看。

module mimasuo(
input clk,//时钟
input reset,//-复位--S0

input [3:0] L_row,//行
output [3:0] H_col,//列

input confirm_key,//-确认键--S1
input modify_key,//--修改--S2
input lock_up_key,//--上锁--S3

output alarm,//报警,蜂鸣器
output led_alarm,//报警灯
output led_open,//开锁,灯--
output led_close,//关锁,灯--
output  [7:0] DIG,//数码管位选
output  [7:0] SEG//数码管段选	
);

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;

wire key_0_p;
wire key_1_p;
wire key_2_p;
wire key_3_p;
wire key_4_p;
wire key_5_p;
wire key_6_p;
wire key_7_p;
wire key_8_p;
wire key_9_p;

wire clk_500KHz;

wire [2:0] current_state;
wire [15:0] password;
wire [15:0] correct_password;
wire confirm;
wire modify;
wire lock_up;

wire open;
assign led_close=~open;
assign led_open=open;

//分频
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),
. 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_jitter i1_key_jitter(
. clkin(clk),    
. key_in(confirm_key),//输入
. key_posedge(),//消抖后按键上升沿
. key_negedge(confirm),//消抖后按键下降沿
. key_value()//消抖后按键
);

//上升沿检测
key_jitter i2_key_jitter(
. clkin(clk),    
. key_in(modify_key),//输入
. key_posedge(),//消抖后按键上升沿
. key_negedge(modify),//消抖后按键下降沿
. key_value()//消抖后按键
);

//上升沿检测
key_jitter i3_key_jitter(
. clkin(clk),    
. key_in(lock_up_key),//输入
. key_posedge(),//消抖后按键上升沿
. key_negedge(lock_up),//消抖后按键下降沿
. key_value()//消抖后按键
);

//密码输入模块
mima_input i_mima_input(
. clk(clk),
. key_0(key_0),
. key_1(key_1),
. key_2(key_2),
. key_3(key_3),
. key_4(key_4),
. key_5(key_5),
. key_6(key_6),
. key_7(key_7),
. key_8(key_8),
. key_9(key_9),

// ... 以下代码略,完整源码请下载压缩包查看

代码文件(付费下载)

📥 付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 电子密码锁 FPGA 设计 Verilog Quartus

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员