当前位置: 首页 > news >正文

基于Verilog开发的FPGA密码锁工程:矩阵键盘输入按键值、修改密码和开锁功能,带Quar...

基于Verilog 语言开发的FPGA密码锁工程 通过矩阵键盘输入按键值 输入12修改密码,13清除密码,可以修改原来默认的密码,修改时首先要输入当前密码进行验证,正确后才能更新当前密码,否则修改不成功 修改结束后按键15,确认修改成功 也直接使用默认密码作为最终密码使用 按键14,进入开锁阶段之后,输入密码进行开锁 有两个版本,分别为Quartus 和vivado 两个版本 工程均带有完整的仿真模块 前两张图为一个简单文档说明 最后两张图为quartus的仿真图

一、工程概述

本工程是基于Verilog语言开发的FPGA密码锁系统,支持通过矩阵键盘进行密码输入、修改及清除操作,具备密码验证、状态指示、蜂鸣器报警等核心功能。工程提供了Vivado和Quartus两种开发环境的实现版本,适配不同FPGA开发流程,可灵活部署于对应兼容的FPGA芯片(Vivado版本适配xc7a100tfgg676-2,Quartus版本适配EP4CE6E22C8)。

基于Verilog 语言开发的FPGA密码锁工程 通过矩阵键盘输入按键值 输入12修改密码,13清除密码,可以修改原来默认的密码,修改时首先要输入当前密码进行验证,正确后才能更新当前密码,否则修改不成功 修改结束后按键15,确认修改成功 也直接使用默认密码作为最终密码使用 按键14,进入开锁阶段之后,输入密码进行开锁 有两个版本,分别为Quartus 和vivado 两个版本 工程均带有完整的仿真模块 前两张图为一个简单文档说明 最后两张图为quartus的仿真图

核心特性包括:

  1. 支持4位密码的验证与修改,默认初始密码为1234;
  2. 矩阵键盘输入交互,支持数字输入、密码修改(按键12)、密码清除(按键13)功能;
  3. 数码管显示状态反馈,包括输入密码预览、验证结果提示;
  4. 硬件状态指示,通过继电器(relaybox)、系统LED(sysled)和蜂鸣器(beep)提供操作反馈;
  5. 完善的时序控制与消抖处理,确保输入稳定性和系统可靠性。

二、工程文件结构

2.1 Vivado版本(mimasuo_vivado)

mimasuo_vivado/ ├── mimasuo.sim/ # 仿真相关文件 │ └── sim_1/behav/xsim/ # 仿真配置、波形文件及中间代码 ├── mimasuo.srcs/ # 源代码目录 │ ├── sources_1/new/ # 核心功能模块 │ │ ├── key_board.v # 矩阵键盘驱动模块 │ │ └── mimasuo.v # 密码锁主控制模块 │ └── sim_1/new/ # 仿真测试模块 │ ├── mimasuo_tb.v # 系统顶层测试文件 │ └── yingjian.v # 硬件接口模拟模块 └── mimasuo.xpr # Vivado项目配置文件

2.2 Quartus版本(mimasuo_quartus)

mimasuo_quartus/ ├── msim/ # 仿真文件目录 │ ├── key_borad_tb.v # 键盘测试文件 │ ├── mimasuo_tb.v # 系统测试文件 │ └── yingjian.v # 硬件接口模拟模块 └── paj/ # 项目核心文件 └── simulation/modelsim/ # ModelSim仿真配置 ├── smart_box.do # 仿真波形配置脚本 ├── smart_box.vo # 综合后网表文件 └── modelsim.ini # 仿真环境配置

三、核心模块功能解析

3.1 矩阵键盘驱动模块(key_board.v)

3.1.1 模块功能

实现矩阵键盘的扫描、按键消抖、按键值解码功能,输出按键有效标志(keyflag)和解码后的按键值(keyboardvalue)。支持4x4矩阵键盘,可识别0-15共16个按键值,其中12对应"修改密码"、13对应"清除密码"。

3.1.2 核心逻辑
  1. 时序控制:通过参数T配置消抖延时(默认10000个时钟周期),避免按键抖动导致的误触发;
  2. 状态机扫描:采用10状态有限状态机实现键盘扫描:
    - 状态0-2:检测按键按下并进行消抖确认;
    - 状态3-7:逐列扫描键盘,获取按键所在行列信息;
    - 状态8-10:按键释放检测与状态复位;
  3. 按键解码:根据行列扫描结果,将8位行列组合值(keyvaluetmp)解码为4位按键值(keyboardvalue),例如8'b11101110解码为4'h0(数字0),8'b0111_1101解码为4'hd(数字13);
  4. 输出信号
    -keyflag:按键有效标志(高电平表示按键稳定输入);
    -keyboard
    value:解码后的4位按键值(0-15)。

3.2 密码锁主控制模块(mimasuo.v / smart_box.vo)

3.2.1 模块功能

系统核心控制模块,集成密码验证、密码修改、数码管显示、硬件控制等功能,是整个密码锁系统的逻辑中枢。

3.2.2 核心子模块
  1. 时钟生成单元
    - 100k采集时钟:用于键盘扫描时序控制;
    - 1kHz使能信号(count1ms_en):用于数码管扫描和状态机时序同步;
  2. 数据转换函数
    -tendata:8位二进制转十进制函数,用于密码数值处理;
    -leddata:4位二进制转数码管段码函数,支持0-9、A-F显示(例如4'd10对应"A",4'd12对应"C");
  3. 数码管扫描单元
    - 采用动态扫描方式驱动4位数码管,根据当前系统状态显示不同内容:
    - 密码输入状态:显示当前输入的4位密码;
    - 密码验证通过:显示全"A";
    - 待机状态:显示全"B";
  4. 密码验证状态机(currentqstate):
    - 状态定义:NO
    QKEYPRESSED(待机)、IPUTCODE(密码输入)、WAITEND(输入等待)、CONFIGGOUT(验证结果);
    - 核心逻辑:
    - 待机状态下检测按键14(确认键),进入密码输入状态;
    - 输入过程中支持按13(清除键)复位输入;
    - 输入4位密码后自动进入验证状态,对比输入密码(iputxcode)与存储密码(storecode);
    - 验证通过:继电器吸合(relay_box=1),蜂鸣器短鸣;验证失败:继电器断开,蜂鸣器长鸣;
  5. 密码修改状态机(currentstate):
    - 状态定义:NO
    QKEYPRESSED(待机)、IPUTCODE(原密码输入)、CONFIGGOUT(原密码验证)、BOXSELOUT(新密码输入);
    - 核心逻辑:
    - 待机状态下检测按键12(修改键),进入原密码输入状态;
    - 原密码验证通过后,进入新密码输入状态,输入4位新密码后更新存储密码(store_code);
    - 新密码输入过程中支持按13(清除键)取消修改,按15(退出键)确认保存。
3.2.3 硬件控制输出
  • relay_box:继电器控制信号(高电平吸合,可用于控制门锁等外设);
  • sys_led:系统状态LED(修改密码时熄灭,待机时点亮);
  • beep:蜂鸣器控制信号(密码正确短鸣,错误长鸣,无操作时静音)。

3.3 硬件接口模拟模块(yingjian.v)

3.3.1 模块功能

为仿真测试提供矩阵键盘硬件接口模拟,通过pressnum信号模拟不同按键的按下操作,用于验证键盘驱动和主控制模块的交互逻辑。

3.3.2 核心逻辑

根据输入的pressnum值(0-16),生成对应的矩阵键盘行列信号(row):

  • pressnum=0-15:模拟对应按键按下,输出对应行列组合;
  • pressnum=16:模拟无按键按下,输出全1(row=4'b1111)。

3.4 仿真测试模块(mimasuo_tb.v)

3.4.1 模块功能

系统顶层仿真测试文件,实例化主控制模块、键盘驱动模块和硬件接口模拟模块,通过时序激励验证系统功能正确性。

3.4.2 仿真激励逻辑
  1. 系统复位:初始复位200ns后释放复位信号(rst_n=1);
  2. 按键模拟:通过修改pressnum值模拟按键操作,例如:
    -pressnum=14:模拟按下确认键,进入密码输入状态;
    -pressnum=1-4:模拟输入密码1234;
    -pressnum=12:模拟按下修改密码键,进入密码修改流程;
  3. 仿真时长:默认运行至指定时序后停止($stop),可通过波形窗口观察各信号状态。

四、关键功能流程

4.1 密码验证流程

  1. 系统上电后进入待机状态,数码管显示全"B",sys_led点亮;
  2. 按下确认键(14),进入密码输入状态;
  3. 依次按下4位密码数字,数码管实时显示输入的数字;
  4. 输入完成后,系统自动验证:
    - 密码正确:继电器吸合(relay_box=1),蜂鸣器短鸣,数码管显示全"A";
    - 密码错误:继电器断开,蜂鸣器长鸣,数码管保持显示输入密码;
  5. 按下退出键(15),返回待机状态。

4.2 密码修改流程

  1. 待机状态下按下修改密码键(12),进入原密码输入状态;
  2. 输入原密码(默认1234),系统验证通过后进入新密码输入状态;
  3. 依次按下4位新密码数字,数码管实时显示输入的新数字;
  4. 输入完成后按下确认键(14),新密码保存至storecode,sysled熄灭后重新点亮;
  5. 若输入原密码错误,系统返回待机状态,蜂鸣器长鸣提示。

4.3 密码清除流程

  1. 密码输入过程中按下清除键(13),输入计数器(iputcnt/iputcnt1)清零;
  2. 数码管显示清空,系统返回当前状态的初始输入界面;
  3. 密码修改过程中按下清除键,取消当前修改操作,返回待机状态。

五、关键参数配置

参数名称作用描述默认值配置位置
T键盘消抖延时(时钟周期数)32'd10000key_board.v、mimasuo.v
T11kHz使能信号周期(时钟周期数)20'd50000mimasuo.v
store_code存储密码(初始值)32'd1234mimasuo.v
ROC_WIDTH全局复位信号宽度(仿真用)100000psglbl.v

六、工程编译与仿真说明

6.1 Vivado环境

  1. 打开Vivado,导入mimasuo.xpr项目文件;
  2. 配置目标芯片为xc7a100tfgg676-2(可在项目设置中修改);
  3. 执行综合(Synthesis)和实现(Implementation),生成比特流文件;
  4. 仿真测试:运行sim1仿真集,观察波形窗口中的relayboxbeepsegdata等信号,验证功能正确性。

6.2 Quartus环境

  1. 打开Quartus Prime,导入项目文件;
  2. 配置目标芯片为EP4CE6E22C8;
  3. 执行综合(Full Compilation),生成网表文件(smart_box.vo);
  4. 仿真测试:打开ModelSim,执行smart_box.do脚本,自动加载仿真波形,验证系统功能。

七、总结

本FPGA密码锁工程通过模块化设计实现了密码验证、修改、清除等核心功能,具备以下特点:

  1. 逻辑清晰:采用状态机设计,流程可控,便于维护和扩展;
  2. 稳定性高:集成按键消抖、时序同步等机制,降低误触发概率;
  3. 兼容性强:支持Vivado和Quartus两种主流FPGA开发环境,适配不同芯片;
  4. 可扩展性好:可通过修改参数TT1调整响应速度,通过扩展状态机增加指纹识别、远程控制等功能。

工程适用于FPGA入门学习、嵌入式门锁控制、智能柜等场景,可根据实际需求修改密码长度、按键功能定义或硬件控制逻辑。

http://www.jsqmd.com/news/673116/

相关文章:

  • #官方认证|2026年长三角三大正规人脸门禁公司排名 上海苏州嘉兴等地 骏通智能综合实力遥遥领先 - 十大品牌榜
  • 新手必看:FastAPI 参数接收的正确姿势(路径 / 查询 / 请求体全解析)
  • ODF配线架安装全流程实录:72芯高密度布线+光纤熔接避雷手册
  • 别再死记定义了!用Python可视化带你直观理解‘一致连续’与‘连续’的天壤之别
  • D3KeyHelper:暗黑破坏神3自动化战斗宏工具完全指南
  • 终极DayZ离线模组指南:如何免费畅享完整单机体验
  • 安装 Docker on AlmaLinux 8
  • 终极指南:如何用VTube Studio API打造智能虚拟主播互动系统 [特殊字符]
  • 算法题(滑动窗口、动态规划)
  • HardSwish激活函数改进YOLOv26高效非线性映射与计算优化双重突破
  • 终极指南:如何免费解锁惠普游戏本全部性能潜力
  • 别再手算齿轮参数了!用MATLAB脚本搞定二级减速器设计(附完整代码)
  • 别再用Keil下载了!用ST-LINK Utility给STM32烧录程序的3个隐藏技巧(附v4.6.0安装包)
  • 为什么你的Dify医疗问答系统正在悄悄泄露患者ID?——3行正则+2个中间件钩子即刻封堵
  • 数学证明不再是AI的“奢侈品”:2026奇点大会公布轻量化AGI验证套件(<2GB内存占用,支持边缘端实时验证)
  • 第三篇:Vibe Coding 深度解析(三):从 0 到 1 的落地实战指南
  • STC单片机蓝牙无线下载避坑指南:为什么你的STC15/STC8总是烧录失败?
  • KICS认知公尺完整体系:从概念到可运行的量化模型与Dashboard
  • 从STC89C51到蓝牙芯片CC2541:手把手拆解两款经典芯片,看透SOC的‘定制’内核
  • KMP与Flutter选型实战指南
  • 保姆级教程:在Ubuntu 20.04上从零部署YOLOv5+DeepSORT+C++ TensorRT目标跟踪项目(含常见编译错误解决)
  • 防串色洗衣片有用吗?解析效果、使用技巧及替代方案 - 行业分析师666
  • Windows本地开发环境救星:5分钟搞定Elasticsearch-Head与ES 8.x的联调配置(附常见跨域错误排查)
  • python helmfile
  • 从‘撸树’到报错:一个老MC玩家重拾Minecraft时遇到的OpenGL驱动坑全记录
  • 零代码创作:如何使用EPubBuilder在线编辑器快速制作专业电子书
  • 如何选择企业云盘?一张图讲清楚五大选型维度
  • Botty:暗黑破坏神II重制版像素级自动化系统的技术架构深度解析
  • 别再复制粘贴了!手把手教你用Kali Linux和Metasploit搭建Windows 10渗透测试环境(保姆级避坑)
  • 4/20