具有状态显示的密码锁设计Verilog代码VIVADO ego1开发板

名称:具有状态显示的密码锁设计Verilog代码VIVADO  ego1开发板(文末获取)

软件:VIVADO

语言:Verilog

代码功能:

具有状态显示的密码锁设计

实验环境  

- 操作系统:Window 10;  

- 设计软件:Vivado 2017.4;  

- 硬件平台:Ego1; 

实现功能

实现密码锁应用的逻辑,包括输入密码时的 CALL 状态,

正确输入密码-HCC 状态,超时未正确输入密码 FAIL 状态,修改密码切换 MODE 等。

默认密码2020

- 准备解锁时,显示 CALL 字符等待输入

- 输入密码,成功解锁

- 调节按钮 SW7(左下角按钮上拉,相应 LED 点亮,流水灯切换为间隔亮灯), 

  此时调节每位密码数值设置锁的密码

- 设置完后返回正常解锁模式测试,输入正确密码成功解锁,显示-HCC

- 超过 20 秒未输入正确密码,密码锁将锁死,返回 FAIL

密码锁开锁倒计时采用流水灯式倒计时,倒计时完毕未成功解锁,密码锁将被锁死,显示 FAIL

密码锁状态分为待解锁,解锁超时失败和解锁成功三个状态,分别用字符

CALL,FAIL 和-HCC 三个字符在数码管上展示

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

ego1开发板.png

FPGA设计,借助Vivado和Ego1实验平台设计的密码锁

实验环境  

- 操作系统:Window 10;  

- 设计软件:Vivado 2017.4;  

- 硬件平台:Ego1;

1、工程文件

2、程序文件

3、管脚约束文件

上板验证

- 准备解锁时,显示 CALL 字符等待输入

成功解锁

调节按钮 SW7(左下角按钮上拉,相应 LED 点亮,流水灯切换为间隔亮灯), 此时调节每位密码数值设置锁的密码

- 设置完后返回正常解锁模式测试,输入 1234 成功解锁,返回-HCC

- 超过 20 秒未输入正确密码,密码锁将锁死,返回 FAIL

部分代码展示:

`timescale 1ns / 1ps
module clock_make(
input sys_clk,
input rst_n,
input [7:0] is_jmp,
input left_button,
input right_button,
input up_button,
input down_button,
input middle_button,
input lock_status,
input read_status,
input load_status,
output reg [63:0] led_timer,
output reg [63:0] pwd_cng_timer,
output reg [63:0] jmp1,
output reg [63:0] jmp2,
output reg [63:0] jmp3,
output reg [63:0] jmp4,
output reg [63:0] jmp5,
output reg [63:0] jmp6,
output reg [63:0] jmp7,
output reg [63:0] jmp8,
output reg [63:0] timer,
output reg [63:0] main_timer,
output reg [63:0] right_timer,
output reg [63:0] left_timer,
output reg [63:0] up_timer,
output reg [63:0] down_timer,
output reg [63:0] middle_timer
);
always@(posedge sys_clk or negedge rst_n)
begin
    if(~rst_n)
    begin
        pwd_cng_timer <= 64'd0;
    end
    else
    begin
        if(pwd_cng_timer == 64'd99_999_999)pwd_cng_timer <= 0;
        else 
        begin
            if(middle_button)
            begin
                pwd_cng_timer <= pwd_cng_timer + 1'b1;
            end
            else
            begin
                pwd_cng_timer <= 0;
            end
        end
    end
end
always@(posedge sys_clk or negedge rst_n)
begin
    if(~rst_n)
    begin
        left_timer <= 64'd0;
    end
    else
    begin
        if(left_timer == 64'd9_999_999)left_timer <= 0;
        else 
        begin
            if(left_button)
            begin
                left_timer <= left_timer + 1'b1;
            end
            else
            begin
                left_timer <= 0;
            end
        end
    end
end
always@(posedge sys_clk or negedge rst_n)
begin
    if(~rst_n)
    begin
        right_timer <= 64'd0;
    end
    else
    begin
        if(right_timer == 64'd9_999_999)right_timer <= 0;
        else 
        begin
            if(right_button)
            begin
                right_timer <= right_timer + 1'b1;
            end
            else
            begin
                right_timer <= 0;
            end
        end
    end
end
always@(posedge sys_clk or negedge rst_n)
begin
    if(~rst_n)
    begin
        up_timer <= 64'd0;
    end
    else
    begin
        if(up_timer == 64'd9_999_999)up_timer <= 0;
        else 
        begin
            if(up_button)
            begin
                up_timer <= up_timer + 1'b1;
            end

源代码

点击下方的公众号卡片获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值