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

张开发
2026/4/20 21:02:08 15 分钟阅读

分享文章

基于Verilog开发的FPGA密码锁工程:矩阵键盘输入按键值、修改密码和开锁功能,带Quar...
基于Verilog 语言开发的FPGA密码锁工程 通过矩阵键盘输入按键值 输入12修改密码13清除密码可以修改原来默认的密码修改时首先要输入当前密码进行验证正确后才能更新当前密码否则修改不成功 修改结束后按键15确认修改成功 也直接使用默认密码作为最终密码使用 按键14进入开锁阶段之后输入密码进行开锁 有两个版本分别为Quartus 和vivado 两个版本 工程均带有完整的仿真模块 前两张图为一个简单文档说明 最后两张图为quartus的仿真图一、工程概述本工程是基于Verilog语言开发的FPGA密码锁系统支持通过矩阵键盘进行密码输入、修改及清除操作具备密码验证、状态指示、蜂鸣器报警等核心功能。工程提供了Vivado和Quartus两种开发环境的实现版本适配不同FPGA开发流程可灵活部署于对应兼容的FPGA芯片Vivado版本适配xc7a100tfgg676-2Quartus版本适配EP4CE6E22C8。基于Verilog 语言开发的FPGA密码锁工程 通过矩阵键盘输入按键值 输入12修改密码13清除密码可以修改原来默认的密码修改时首先要输入当前密码进行验证正确后才能更新当前密码否则修改不成功 修改结束后按键15确认修改成功 也直接使用默认密码作为最终密码使用 按键14进入开锁阶段之后输入密码进行开锁 有两个版本分别为Quartus 和vivado 两个版本 工程均带有完整的仿真模块 前两张图为一个简单文档说明 最后两张图为quartus的仿真图核心特性包括支持4位密码的验证与修改默认初始密码为1234矩阵键盘输入交互支持数字输入、密码修改按键12、密码清除按键13功能数码管显示状态反馈包括输入密码预览、验证结果提示硬件状态指示通过继电器relaybox、系统LEDsysled和蜂鸣器beep提供操作反馈完善的时序控制与消抖处理确保输入稳定性和系统可靠性。二、工程文件结构2.1 Vivado版本mimasuo_vivadomimasuo_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_quartusmimasuo_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.v3.1.1 模块功能实现矩阵键盘的扫描、按键消抖、按键值解码功能输出按键有效标志keyflag和解码后的按键值keyboardvalue。支持4x4矩阵键盘可识别0-15共16个按键值其中12对应修改密码、13对应清除密码。3.1.2 核心逻辑时序控制通过参数T配置消抖延时默认10000个时钟周期避免按键抖动导致的误触发状态机扫描采用10状态有限状态机实现键盘扫描- 状态0-2检测按键按下并进行消抖确认- 状态3-7逐列扫描键盘获取按键所在行列信息- 状态8-10按键释放检测与状态复位按键解码根据行列扫描结果将8位行列组合值keyvaluetmp解码为4位按键值keyboardvalue例如8b11101110解码为4h0数字08b0111_1101解码为4hd数字13输出信号-keyflag按键有效标志高电平表示按键稳定输入-keyboardvalue解码后的4位按键值0-15。3.2 密码锁主控制模块mimasuo.v / smart_box.vo3.2.1 模块功能系统核心控制模块集成密码验证、密码修改、数码管显示、硬件控制等功能是整个密码锁系统的逻辑中枢。3.2.2 核心子模块时钟生成单元- 100k采集时钟用于键盘扫描时序控制- 1kHz使能信号count1ms_en用于数码管扫描和状态机时序同步数据转换函数-tendata8位二进制转十进制函数用于密码数值处理-leddata4位二进制转数码管段码函数支持0-9、A-F显示例如4d10对应A4d12对应C数码管扫描单元- 采用动态扫描方式驱动4位数码管根据当前系统状态显示不同内容- 密码输入状态显示当前输入的4位密码- 密码验证通过显示全A- 待机状态显示全B密码验证状态机currentqstate- 状态定义NOQKEYPRESSED待机、IPUTCODE密码输入、WAITEND输入等待、CONFIGGOUT验证结果- 核心逻辑- 待机状态下检测按键14确认键进入密码输入状态- 输入过程中支持按13清除键复位输入- 输入4位密码后自动进入验证状态对比输入密码iputxcode与存储密码storecode- 验证通过继电器吸合relay_box1蜂鸣器短鸣验证失败继电器断开蜂鸣器长鸣密码修改状态机currentstate- 状态定义NOQKEYPRESSED待机、IPUTCODE原密码输入、CONFIGGOUT原密码验证、BOXSELOUT新密码输入- 核心逻辑- 待机状态下检测按键12修改键进入原密码输入状态- 原密码验证通过后进入新密码输入状态输入4位新密码后更新存储密码store_code- 新密码输入过程中支持按13清除键取消修改按15退出键确认保存。3.2.3 硬件控制输出relay_box继电器控制信号高电平吸合可用于控制门锁等外设sys_led系统状态LED修改密码时熄灭待机时点亮beep蜂鸣器控制信号密码正确短鸣错误长鸣无操作时静音。3.3 硬件接口模拟模块yingjian.v3.3.1 模块功能为仿真测试提供矩阵键盘硬件接口模拟通过pressnum信号模拟不同按键的按下操作用于验证键盘驱动和主控制模块的交互逻辑。3.3.2 核心逻辑根据输入的pressnum值0-16生成对应的矩阵键盘行列信号rowpressnum0-15模拟对应按键按下输出对应行列组合pressnum16模拟无按键按下输出全1row4b1111。3.4 仿真测试模块mimasuo_tb.v3.4.1 模块功能系统顶层仿真测试文件实例化主控制模块、键盘驱动模块和硬件接口模拟模块通过时序激励验证系统功能正确性。3.4.2 仿真激励逻辑系统复位初始复位200ns后释放复位信号rst_n1按键模拟通过修改pressnum值模拟按键操作例如-pressnum14模拟按下确认键进入密码输入状态-pressnum1-4模拟输入密码1234-pressnum12模拟按下修改密码键进入密码修改流程仿真时长默认运行至指定时序后停止$stop可通过波形窗口观察各信号状态。四、关键功能流程4.1 密码验证流程系统上电后进入待机状态数码管显示全Bsys_led点亮按下确认键14进入密码输入状态依次按下4位密码数字数码管实时显示输入的数字输入完成后系统自动验证- 密码正确继电器吸合relay_box1蜂鸣器短鸣数码管显示全A- 密码错误继电器断开蜂鸣器长鸣数码管保持显示输入密码按下退出键15返回待机状态。4.2 密码修改流程待机状态下按下修改密码键12进入原密码输入状态输入原密码默认1234系统验证通过后进入新密码输入状态依次按下4位新密码数字数码管实时显示输入的新数字输入完成后按下确认键14新密码保存至storecodesysled熄灭后重新点亮若输入原密码错误系统返回待机状态蜂鸣器长鸣提示。4.3 密码清除流程密码输入过程中按下清除键13输入计数器iputcnt/iputcnt1清零数码管显示清空系统返回当前状态的初始输入界面密码修改过程中按下清除键取消当前修改操作返回待机状态。五、关键参数配置参数名称作用描述默认值配置位置T键盘消抖延时时钟周期数32d10000key_board.v、mimasuo.vT11kHz使能信号周期时钟周期数20d50000mimasuo.vstore_code存储密码初始值32d1234mimasuo.vROC_WIDTH全局复位信号宽度仿真用100000psglbl.v六、工程编译与仿真说明6.1 Vivado环境打开Vivado导入mimasuo.xpr项目文件配置目标芯片为xc7a100tfgg676-2可在项目设置中修改执行综合Synthesis和实现Implementation生成比特流文件仿真测试运行sim1仿真集观察波形窗口中的relaybox、beep、segdata等信号验证功能正确性。6.2 Quartus环境打开Quartus Prime导入项目文件配置目标芯片为EP4CE6E22C8执行综合Full Compilation生成网表文件smart_box.vo仿真测试打开ModelSim执行smart_box.do脚本自动加载仿真波形验证系统功能。七、总结本FPGA密码锁工程通过模块化设计实现了密码验证、修改、清除等核心功能具备以下特点逻辑清晰采用状态机设计流程可控便于维护和扩展稳定性高集成按键消抖、时序同步等机制降低误触发概率兼容性强支持Vivado和Quartus两种主流FPGA开发环境适配不同芯片可扩展性好可通过修改参数T、T1调整响应速度通过扩展状态机增加指纹识别、远程控制等功能。工程适用于FPGA入门学习、嵌入式门锁控制、智能柜等场景可根据实际需求修改密码长度、按键功能定义或硬件控制逻辑。

更多文章