• 正文
  • 相关推荐
申请入驻 产业图谱

流水灯FPGA设计Verilog Vivado

9小时前
86
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

名称:流水灯 FPGA 设计 Verilog Vivado

软件:Vivado

语言:Verilog

功能介绍

本设计实现一个 8 位 LED 流水灯控制系统,顶层模块为 led_top,输入包括系统时钟 clk 和低有效复位 rst_n,输出为 8 位 led 信号。系统通过分频模块产生固定节拍 tick,再由 LED 控制模块根据 tick 推动灯效状态变化,实现按节奏步进的流水灯显示效果。

工程采用模块化 Verilog 结构,适合用于 FPGA 入门实验、时钟分频练习、LED 外设控制以及 Vivado 工程流程学习。设计重点覆盖顶层例化、参数化分频、复位控制、时序逻辑状态更新和 Testbench 仿真验证,便于学习者理解从 RTL 编写到仿真观察的完整过程。

顶层参数 DIVIDE 默认设置为 50_000_000,用于将输入时钟转换为约 1Hz 的单周期 tick 脉冲。实际使用时可根据板载时钟频率或仿真速度调整该参数,从而改变 LED 流水切换速度。

运行环境

开发软件:Vivado

设计语言:Verilog

工程类型:Vivado FPGA 工程

主要文件包括 led_top.v、clk_divider.v、led_controller.v 和 led_top_tb.v,工程中包含行为仿真相关文件,可用于查看整体仿真、分频模块和 LED 控制模块的运行效果。

设计思路

系统采用“时钟分频 + LED 花型控制”的设计思路。顶层 led_top 只负责端口组织和子模块连接,将时钟节拍生成与 LED 输出控制拆分为两个独立模块,降低模块耦合度,也方便单独理解和调试。

clk_divider 模块根据参数 DIVIDE 对输入时钟进行计数,当计数达到设定周期后输出一个单周期 tick 脉冲。该 tick 不直接替代系统时钟,而是作为 LED 控制模块的节拍使能信号,这种写法能让核心逻辑仍然工作在同一个 clk 时钟域下,结构更清晰,也更符合常见 FPGA 同步设计习惯。

led_controller 模块在复位后初始化 LED 状态,并在每次 tick 到来时更新 led[7:0] 输出。通过将 LED 状态变化集中在控制模块中,后续若需要调整流水方向、增加花型或扩展显示模式,只需要修改控制逻辑,不影响分频器和顶层连接。

模块结构

顶层模块:led_top

分频模块:clk_divider,负责将输入时钟转换为周期性 tick 脉冲。

LED 控制模块:led_controller,负责根据 tick 节拍更新 8 位 LED 输出花型。

测试模块:led_top_tb,用于对顶层设计进行行为仿真。

演示视频

包含流水灯效果演示视频,可用于直观看到 LED 按节拍变化的运行表现。

演示视频请点击左下角阅读原文查看。

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

设计文档包含工程文件、程序文件、程序编译、RTL 图、Testbench、整体仿真图、分频模块仿真说明以及 LED 控制模块相关内容。仿真部分可用于观察 tick 节拍产生过程、复位后的 LED 输出变化,以及顶层模块中分频器与 LED 控制器之间的连接关系。

部分代码

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

module led_top #(parameter DIVIDE = 50_000_000) (
    input clk,
    input rst_n,
    output [7:0] led
);

// 分频器输出的 1Hz 单周期脉冲
wire tick;

// 实例化分频器:将 clk 转换为 1Hz tick
clk_divider #(.DIVIDE(DIVIDE)) u_div (
    .clk(clk),
    .rst_n(rst_n),
    .tick(tick)
);

// 实例化 LED 控制器:根据 tick 触发花型步进
led_controller u_led_ctrl (
    .clk(clk),
    .rst_n(rst_n),
    .tick(tick),
    .led(led)
);
endmodule

代码获取:点击【来源:www.hdlcode.com

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录

本站代码库拥有大量 Verilog/VHDL的FPGA代码资源:hdlcode.com。代码有详细注释、演示视频、仿真图等资料,适合入门学习

微信公众号