基于FPGA的数字密码锁设计Verilog代码Quartus EPM240-CPLD开发板

本文详细介绍了如何使用Verilog语言在Quartus工具下,为EPM240-CPLD开发板设计一个数字密码锁系统,包括输入处理、密码验证、报警机制和数码管显示。用户连续输入三次错误密码会触发报警,密码通过预设的4位数字键进行输入。
摘要由CSDN通过智能技术生成

名称:基于FPGA的数字密码锁设计Verilog代码Quartus  EPM240-CPLD开发板(文末获取)

软件:Quartus

语言:Verilog

代码功能:

设计一个数字密码锁,用户可输入4位数密码(用4个按键分别代表4个不同的数字),连续输入3次不正确则报警。开锁密码预先设定。

本代码已在EPM240-CPLD开发板验证,EPM240-CPLD开发板如下,其他开发板可以修改管脚适配:

EPM240-CPLD开发板照片.png

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 管脚分配

6. 仿真图

部分代码展示:

module mimasuo(
input clk,//时钟
input reset,//复位,按下低电平
input key_0_in,//数字按键0~3
input key_1_in,//数字按键0~3
input key_2_in,//数字按键0~3
input key_3_in,//数字按键0~3
input confirm_key,//确认按键,代表密码输入完成
output led,//显示密码正确与否
output bell,//低电平响
//输入的密码在8 array 7segment中显示,段选位选低电平亮
output [7:0] seg_select,//数码管位选
output [3:0] bit_select//数码管段选
);
wire key_0;
wire key_1;
wire key_2;
wire key_3;
wire confirm;
wire pass_or_not;//1表示正确,0表示错误
wire [15:0] password;
assign led=~pass_or_not;//led低电平亮
//输入按键消抖
key_jitter i0_key_jitter(
. clkin(clk),     
. key_in(key_0_in),//输入
. key_negedge(key_0)//消抖后按键
);
key_jitter i1_key_jitter(
. clkin(clk),     
. key_in(key_1_in),//输入
. key_negedge(key_1)//消抖后按键
);
key_jitter i2_key_jitter(
. clkin(clk),     
. key_in(key_2_in),//输入
. key_negedge(key_2)//消抖后按键
);
key_jitter i3_key_jitter(
. clkin(clk),     
. key_in(key_3_in),//输入
. key_negedge(key_3)//消抖后按键
);
key_jitter i4_key_jitter(
. clkin(clk),     
. key_in(confirm_key),//输入
. key_negedge(confirm)//消抖后按键
);
//密码输入及判断模块
mima_input i_mima_input(
. clk(clk),
. key_0(key_0),
. key_1(key_1),
. key_2(key_2),
. key_3(key_3),
. bell(bell),
. confirm(confirm),//代表密码输入完成
. reset(reset),//复位
. pass_or_not(pass_or_not),//1表示正确,0表示错误
. password(password)
);
display i_display (
. clk(clk),
. password(password),
. bit_select(bit_select),//数码管位选
. seg_select(seg_select)//数码管段选
);
endmodule
源代码

 扫描文章末尾的公众号二维码

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值