名称:四路彩灯速度控制 FPGA 设计 Verilog Quartus
软件:Quartus
语言:Verilog
功能介绍
该工程实现一个四路彩灯控制器,使用 FPGA 的 50MHz 输入时钟驱动,通过分频产生不同速度的低频节拍,并由 DIN 输入选择彩灯变化节奏。LED[3:0] 直接输出四路彩灯控制信号,可用于实现基础的流水灯或循环变化灯效。
设计提供快、慢两档变化节奏:分频模块生成 1Hz 与 2Hz 时钟,速度控制模块根据 DIN 选择其中一路送入彩灯花型控制模块。因此,用户可在硬件运行过程中切换档位,观察四路 LED 的变化速度发生改变,便于演示 FPGA 对时钟节拍和外设输出的实时控制能力。
工程采用模块化 Verilog 结构,顶层仅负责连接时钟、档位输入和 LED 输出,分频、速度选择、灯效控制分别由独立模块完成。对于学习 Quartus 工程组织、Verilog 层次化设计及 LED 外设实验,具有直接的参考价值。
运行环境
开发语言:Verilog
开发软件:Quartus
工程顶层:caideng
输入时钟:50MHz
输入控制:DIN 速度档位
输出接口:LED[3:0] 四路彩灯
设计思路
本设计将彩灯控制拆分为时钟分频、速度选择和 LED 花型输出三个层次。系统从 50MHz 基准时钟出发,先得到 1Hz 与 2Hz 两路低频节拍,再由档位输入 DIN 在两种节拍之间进行选择。这样可以通过一个外部开关直观切换彩灯变化快慢,而不需要修改花型控制逻辑。
彩灯花型部分以选出的节拍作为状态推进条件,向 LED[3:0] 输出四路控制信号。时钟产生、速度选择与花型驱动彼此独立,便于理解同步时序设计中“基准时钟-使能节拍-状态输出”的实现方式,也方便后续扩展更多速度档位或替换彩灯变化规律。
工程适合作为 Verilog 入门实践项目,用于学习模块例化、端口连接、分频时钟使用、开关输入控制以及多路 LED 输出控制。顶层连接关系清晰,能够直接作为课堂课程设计、FPGA 基础实验或简单灯光效果控制的参考。
模块结构
顶层模块为 `caideng`,输入端包括 50MHz 时钟 `clk_in` 和速度档位信号 `DIN`,输出端为四路彩灯信号 `LED[3:0]`。
`div_clk`:对 50MHz 基准时钟进行分频,产生 1Hz 的 `clk_1` 和 2Hz 的 `clk_2`。
`speed`:读取 `DIN` 档位输入,在 `clk_1` 与 `clk_2` 之间选择当前彩灯控制节拍。
`LED_ctrl`:以选定节拍驱动四路 LED 输出,完成彩灯花型的循环变化。
开发板验证
工程包含完整的 Quartus 管脚约束与分配配置,可直接结合目标开发板的实际引脚连接进行编译下载验证。顶层模块使用 50MHz 输入时钟,DIN 作为速度档位输入,LED[3:0] 输出四路彩灯控制信号;部署时只需核对时钟、档位开关和 LED 的引脚对应关系即可。
仿真图/仿真说明/设计文档图片
工程提供 Quartus 工程配置、编译结果以及 VWF 波形文件,可用于查看时钟分频、速度选择和四路 LED 输出的时序关系。工程同时保留 ModelSim 相关仿真输出文件,便于结合仿真流程进行时序验证与学习。
部分代码
以下展示顶层模块 caideng 的部分代码,完整源码请下载压缩包查看。
module caideng( input clk_in,//输入时钟50MHz--CLOCK0 input DIN,//速度档位,控制彩灯节奏 output [3:0] LED//输出4路彩灯 ); wire clk_1;//clk_1 wire clk_2;//clk_2 wire clk; //时钟频率产生模块 div_clk i_div_clk( . clk_in(clk_in),//输入时钟50M . clk_1(clk_1),//产生时钟clk_1=1Hz . clk_2(clk_2)//产生时钟clk_2=2Hz ); //速度控制模块 speed i_speed( . DIN(DIN),//速度档位,控制彩灯节奏 . clk_1(clk_1),//clk_1=1Hz . clk_2(clk_2),//clk_2=2Hz . clk(clk)//clk控制彩灯变化速率 ); //彩灯花型控制模块 LED_ctrl i_LED_ctrl( . clk(clk),//clk控制彩灯变化速率 . LED(LED)//输出4路彩灯 ); endmodule
177