六路按键模式流水灯控制 Verilog Gowin

名称:六路按键模式流水灯控制 Verilog Gowin

软件:Gowin

语言:Verilog

功能介绍

这是一个基于 Verilog 的六路流水灯控制工程,支持通过 4 个模式选择按键切换 LED 灯效,并通过独立按键进行复位。顶层设计以 27 MHz 时钟为输入,提供 6 路低电平点亮的 LED 输出。 工程将节拍生成和灯效控制分开实现:分频逻辑产生灯光移动节拍,控制逻辑根据节拍及按键模式更新 LED 状态。分频参数 CNT_MAX 可配置,默认值对应约 0.5 秒计数间隔,也便于仿真时缩短运行时间。

运行环境

硬件描述语言:Verilog 开发软件:Gowin 系统时钟:27 MHz 顶层模块:water_led_top 输入:5 个低电平有效按键,其中 1 个用于复位、4 个用于模式选择 输出:6 路低电平点亮 LED

设计思路

设计采用分频与灯效控制相结合的结构。顶层模块接收 27 MHz 系统时钟、复位按键及 4 路模式选择按键,并将复位和模式信号拆分后连接到对应控制模块。 时钟分频模块根据 CNT_MAX 参数产生周期性移动脉冲,默认计数值对应约 0.5 秒的节拍;仿真时可调整参数以缩短等待时间。流水灯控制模块使用该节拍和模式输入更新 6 路 LED 输出,按键与 LED 均为低电平有效。

模块结构

顶层模块为 water_led_top,负责连接时钟分频模块 clk_div 与流水灯控制模块 led_ctrl,并将按键输入拆分为复位信号和模式选择信号。clk_div 根据 CNT_MAX 产生移动脉冲 tick;led_ctrl 接收 tick、复位和 4 位模式输入,驱动 6 路 LED 输出。工程还包含 tb_water_led 仿真测试模块。

开发板验证

工程包含管脚约束文件,可用于 Gowin 工程中的引脚分配与开发板验证。顶层接口使用 27 MHz 时钟、5 个低电平有效按键和 6 路低电平点亮 LED 输出。

演示视频

工程提供流水灯演示视频,可直观看到 LED 控制效果。

仿真图/仿真说明/设计文档图片

工程包含 tb_water_led 仿真测试模块,并提供设计文档图片,展示工程文件、程序文件、编译及管脚分配相关内容。

六路按键模式流水灯控制 Verilog Gowin 设计文档图片 image1.png

六路按键模式流水灯控制 Verilog Gowin 设计文档图片 image2.png

六路按键模式流水灯控制 Verilog Gowin 设计文档图片 image3.png

六路按键模式流水灯控制 Verilog Gowin 设计文档图片 image4.png

六路按键模式流水灯控制 Verilog Gowin 设计文档图片 image5.png

六路按键模式流水灯控制 Verilog Gowin 设计文档图片 image6.png

六路按键模式流水灯控制 Verilog Gowin 设计文档图片 image7.png

部分代码

以下展示顶层模块 water_led_top 的部分代码,完整源码请下载压缩包查看。

module water_led_top #
(
    // 通过参数可以方便地在仿真时加快速度
    // 实际硬件使用默认值即可
    parameter integer CNT_MAX = 27_000_000 / 2   // 0.5秒计数值
)
(
    input  wire       clk,   // 27MHz系统时钟
    input  wire [4:0] key,   // 5个按键:key[0]为复位,其余4个为模式选择,低电平有效
    output wire [5:0] led    // 6个LED输出,低电平点亮
);

    // 把按键拆分出来,便于理解
    wire       rst_n;        // 异步复位信号,低电平有效
    wire [3:0] key_mode;     // 4个模式选择按键信号,低电平有效

    assign rst_n    = key[0];      // 复位按键,按下为0,松开为1
    assign key_mode = key[4:1];    // 其余4个按键用来选择模式

    // 分频产生的移动脉冲
    wire tick;

    // 实例化分频模块
    clk_div #
    (
        .CNT_MAX (CNT_MAX)
    ) u_clk_div
    (
        .clk  (clk),
        .rst_n(rst_n),
        .tick (tick)
    );

    // 实例化流水灯控制模块
    led_ctrl u_led_ctrl
    (
        .clk     (clk),
        .rst_n   (rst_n),
        .tick    (tick),
        .key_mode(key_mode),
        .led     (led)
    );

endmodule

代码文件(付费下载)

📥 付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 六路按键模式流水灯控制 Verilog Gowin

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员