FPGA密码锁

功能

1.输入密码:十个拨码开关输入0-9密码(改进可以用矩阵键盘),4位密码,每输入一位,密码滚动进入显示。
2.开锁:按下开锁键开始成功灯亮。
3.关锁:按下关锁键,关锁灯灭。
4.修改密码:开锁状态下才可以修改密码,长按开锁键,灯闪一次后密码修改成功。
展示:B站

模块

基本需要下面几个模块来进行

compare_num 密码对比
num_in 输入的密码
num_reg 已经设置的密码
-close 关锁
ant_ok 确认键
open 0:锁上了、1:锁开了
dig8_6 数码管显示模块
[15:0] set_data 显示数据
[3:0] dig 位显示
[7:0] dict 段显示
contorl_sw 4位密码移位寄存器
close 关锁
value 用户输入的一位密码
num 数码管要显示的数据

|

btn_deb 消抖
N 需要消抖按键个数
inputs 输入的按键信号
btn_deb 输入的按键信号消抖后
distinguish 解码按键输入信号为密码
inputs 按键输入信号
temp 按键输入对应一位密码
num_change 进入修改 --密码修改
please_change_numb 请求修改信号
num 输入要修改的密码
open 锁状态
ok_change_numb 修改成功
num_reg 输出修改后密码

代码

下面给主要模块部分的代码
1.顶层文件

module cal_top(
	input  clk,			//50MHz
    input  rst,			//异步复位 低电平有效
    input   [9:0]  inputs, 
    input   [1:0]  keys,
    output        ant_change_numb,
    output       ok_change_numb,
    output        open,
    output  [3:0] dig,   
    output  [7:0] dict	
);

/******************************************************/
/*             消抖                                  */
/******************************************************/

wire [1:0]  keys_deb;
wire [9:0] btn_deb;//消抖后输出
btn_deb#( .N (10) )
 btn_deb1
(
   .  clk(clk),  //100MHz
   .  btn_in(inputs),
   .  btn_deb(btn_deb)
);

btn_deb#( .N (2) )
 btn_deb2
(
   .  clk(clk),  //100MHz
   .
  • 5
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海大干饭人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值