FPGA新起点V1开发板(十)——按键控制LED

一、实验任务

在这里插入图片描述

二、代码展示

module key_led(
    input            sys_clk,
    input            rst_n,
    input      [3:0] key,
    
    output reg [3:0] led
    
);

// reg define
reg [23:0] cnt;
reg [1:0]  led_ctrl;

//0.2s计数器
always @ (posedge sys_clk or negedge rst_n) begin
    if(!rst_n)
        cnt <= 24'd0;
    else
        if(cnt < 24'd1000_0000)
            cnt <= cnt + 1'b1;
        else
            cnt <= 24'd0;

end

//每隔0.2s改变的四个状态
always @ (posedge sys_clk or negedge rst_n) begin
    if(!rst_n)
        led_ctrl <= 2'b0;
    else
        if(cnt == 24'd1000_0000)
            led_ctrl <= led_ctrl + 1'b1;
        else
            led_ctrl <= led_ctrl;

end

//按键控制
always @ (posedge sys_clk or negedge rst_n) begin
    if(!rst_n)
        led <= 4'b0000;
    else
        if(key[0] == 1'b0)
            case(led_ctrl)
                2'd0 : led <= 4'b1000;
                2'd1 : led <= 4'b0100;
                2'd2 : led <= 4'b0010;
                2'd3 : led <= 4'b0001;
            endcase
        else if(key[1] == 1'b0)
            case(led_ctrl)
                2'd0 : led <= 4'b0001;
                2'd1 : led <= 4'b0010;
                2'd2 : led <= 4'b0100;
                2'd3 : led <= 4'b1000;
            endcase
        else if(key[2] == 1'b0)
            case(led_ctrl)
                2'd0 : led <= 4'b1111;
                2'd1 : led <= 4'b0000;
                2'd2 : led <= 4'b1111;
                2'd3 : led <= 4'b0000;
            endcase
        else if(key[3] == 1'b0)
            led <= 4'b1111;
        else
            led <= 4'b0000;

end

endmodule

三、管脚分配

在这里插入图片描述

感悟

  1. 可以有下划线24'd000_0000
  2. LED是高电平点亮(共阴)
  3. key是为0时,为按下

在这里插入图片描述
key是线网,是根据之后的管脚分配,判断高低电平的,所以不能赋值
led被定义为寄存器,再之后管脚分配,输出高低电平,所以需要赋值,所以是寄存器类型

相关推荐

  1. 按键控制LED

    2024-06-08 20:54:07       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-08 20:54:07       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-08 20:54:07       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-08 20:54:07       87 阅读
  4. Python语言-面向对象

    2024-06-08 20:54:07       96 阅读

热门阅读

  1. 生物神经网络 原理分析研读02

    2024-06-08 20:54:07       37 阅读
  2. Python怎么水?深入剖析编程的奥秘与挑战

    2024-06-08 20:54:07       43 阅读
  3. arm和x86的差别和应用场景学习笔记

    2024-06-08 20:54:07       35 阅读
  4. VUE3 表单输入绑定

    2024-06-08 20:54:07       41 阅读
  5. qt网络事件之QSocketNotifier

    2024-06-08 20:54:07       32 阅读
  6. vscode Run Code输出出现中文乱码情况问题解决方案

    2024-06-08 20:54:07       27 阅读
  7. Facebook海外户&Facebook广告被暂停的原因

    2024-06-08 20:54:07       33 阅读
  8. [知识点]c++运算符重载

    2024-06-08 20:54:07       23 阅读
  9. 模型训练——使用预训练权重、冻结训练

    2024-06-08 20:54:07       34 阅读