密码锁设计Verilog代码Quartus 睿智FPGA开发板

本文详细描述了一种使用Verilog语言设计的密码锁控制电路,包括输入验证、自锁机制和报警功能。代码在Quartus环境下针对睿智FPGA开发板进行了验证,适用于其他开发板的管脚适配。
摘要由CSDN通过智能技术生成

名称:密码锁设计Verilog代码Quartus  睿智FPGA开发板(文末获取)

软件:Quartus

语言:Verilog

代码功能:

1、设计一个密码锁的控制电路,当输入正确代码时,输岀开锁信号用红灯亮、绿灯

熄灭表示关锁,用绿灯亮、红灯熄灭表示开锁

2、在锁的控制电路中储存一个可以修改的4位代码,当开锁按钮开关的输入代码

等于储存代码时,开锁

3、从第一个按钮触动后的5秒内若未将锁打开,则电路自动复位并进入自锁状态,使之

无法再打开,并由扬声器发出持续20秒的报警信号。

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

睿智FPGA开发板.jpg

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 管脚分配

部分代码展示:

//,密码锁
module mimasuo(
input clk,//时钟
input reset,//-复位
//数字输入按键
input key_0,//--S0
input key_1,//--S1
input key_2,//--S2
input key_3,//--S3
input confirm_key,//-确认键--S4
input modify_key,//--修改--S5
input lock_up_key,//--上锁--S6
output alarm,//报警,灯--
output led_open,//开锁,灯--
output led_close,//关锁,灯--
output  [7:0] DIG,//数码管位选
output  [7:0] SEG//数码管段选
);
wire key_0_p;
wire key_1_p;
wire key_2_p;
wire key_3_p;
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;
//上升沿检测
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_0_p(key_0_p),
. key_1_p(key_1_p),
. key_2_p(key_2_p),
. key_3_p(key_3_p),
. current_state(current_state),
. password(password)
);
//密码锁控制模块
mimasuo_ctrl i_mimasuo_ctrl(
. clk(clk),
. password(password),
. correct_password(correct_password),
. confirm(confirm),
. reset(reset),
. modify(modify),
. lock_up(lock_up),
. key_0(key_0_p),
. key_1(key_1_p),
. key_2(key_2_p),
. key_3(key_3_p),
. led_open(open),
. current_state(current_state)
);
//报警模块
alarm_on i_alarm_on(
. clk(clk),
. current_state(current_state),
. alarm(alarm)
);
//重置密码模块
reset_password i_reset_password(
. clk(clk),
. password(password),
. correct_password(correct_password),
. confirm(confirm),
. current_state(current_state)
);
//显示模块
display i_display(
.clk(clk),
. password(password),//输入密码
. DIG(DIG),//数码管位选
. SEG(SEG)//数码管段选
);
endmodule
源代码

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

  • 11
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于VHDL设计用PGA实现一款简易电子密码锁QUARTUS工程源码+文档说明 library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; use IEEE.std_logic_arith.all; entity time_counter is port( clk:in std_logic; --50M时钟输入 reset_n:in std_logic; --复位信号输入 password1_in:in std_logic_vector(3 downto 0); -- password2_in:in std_logic_vector(3 downto 0); -- password3_in:in std_logic_vector(3 downto 0); -- password4_in:in std_logic_vector(3 downto 0); -- ok_signal_counter_in:in std_logic_vector(2 downto 0); seg_duan:out std_logic_vector(7 downto 0); --数码管段信号输出 seg_wei:out std_logic_vector(7 downto 0) --数码管位信号输出 ); end time_counter; architecture time_counter_behave of time_counter is signal clk_1hz: std_logic; signal count: std_logic_vector(24 downto 0); signal clk_scan: std_logic; signal seg_select: std_logic_vector(2 downto 0); signal scan_count: std_logic_vector(13 downto 0); begin -- //**************************************************************************************************** -- // 模块名称:50M时钟分频至1HZ模块 -- // 功能描述: -- //**************************************************************************************************** process(clk,reset_n) begin if(reset_n = '0')then clk_1hz <= '0'; count <= "0000000000000000000000000"; elsif(clk'event and clk = '1')then--上升沿触发 if(count = "1011111010111100001000000")then-- count <= "0000000000000000000000000"; clk_1hz <= not clk_1hz; else count <= count + '1'; end if; end if; end process; -- //**************************************************************************************************** -- // 模块名称:数码管扫描时钟产生模块 -- // 功能描述: -- //************************************************************************************

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值