【黑金云课堂】FPGA技术教程FPGA基础:流水灯实验
本篇流水灯实验选自ALINX 黑金云课堂 FPGA 免费直播课。该课程由 ALINX 资深工程师团队倾力打造从 0 到 1 系统化教学帮助每位工程师跨过 FPGA 开发门槛。流水灯实验实验目的熟悉FPGA完整开发流程理解时序逻辑工作方式掌握寄存器、时钟、复位作用为后续实验按键消抖、PWM、PLL、串口、VGA等打基础培养工程习惯先仿真、后上板、再在线调试实验原理本质循环移位寄存器工作机制状态保存LED状态由寄存器保存每bit对应一个LED时钟驱动时钟信号驱动寄存器内容变化状态转移按照代码逻辑进行按位赋值循环移位示例0001 → 0010 → 0100 → 1000 → 0001时钟与分频原理系统时钟典型频率50MHz 或 100MHz人眼可识别频率约 1~5Hz问题直接用系统时钟驱动LED变化太快人眼看到“常亮”解决方案使用计数器对时钟分频得到低频节拍信号分频计算示例200MHz 系统时钟 → 目标 4Hz → 分频系数 200M / 4 25,000,000程序设计思路模块化设计封装独立Verilog模块清晰接口内部结构分频计数器如24位计数器LED状态寄存器4位同步时序逻辑所有状态变化在时钟上升沿触发避免异步问题Verilog核心代码要点计数器逻辑计数到预设值如10M产生节拍脉冲状态更新按照代码逻辑进行按位赋值复位逻辑异步或同步复位初始化计数器与LED状态仿真验证目的提前发现逻辑错误、时序问题降低调试成本Testbench设计要点生成周期性时钟如20ns周期 50MHz施加复位信号如100ns观察LED输出变化验证要点复位时LED初始化为0001或0000视设计LED按固定周期依次变化状态变化发生在时钟上升沿计数器达到阈值时更新LEDILA在线调试为什么需要仿真环境理想硬件存在时序延迟、噪声等FPGA内部信号无法直接测量ILAIntegrated Logic Analyzer嵌入FPGA内部的逻辑分析仪通过JTAG采集信号调试步骤在Vivado/Quartus中添加ILA核选择待观察信号led_reg、cnt等生成包含ILA的bit文件下载到FPGA连接Hardware Manager设置触发条件抓取波形验证硬件行为固化到Flash生成mcs/bin文件