FPGA实战:用D触发器设计流水灯(Xilinx Vivado全流程指南)
第一次在Vivado中成功点亮流水灯的那个深夜,我盯着开发板上规律跳动的LED,突然理解了数字电路的美感——原来那些抽象的时序逻辑概念,真的能化作肉眼可见的光影流动。本文将带你用最基础的D触发器搭建8位流水灯,过程中你会看到理论公式如何变成实际电路,以及如何通过Vivado工具链完成从代码到比特流的完整实现。
1. 项目规划与硬件原理
开发板上的LED阵列就像FPGA工程师的"Hello World",但用纯D触发器实现流水灯远比直接调用PLL模块更有教学意义。我们选用Xilinx Artix-7系列FPGA作为目标器件,其内置的SLICE中的FF(Flip-Flop)资源将直接对应我们的D触发器设计。
1.1 流水灯核心逻辑
传统教科书中的D触发器特性表:
| CLK | D | Q(t+1) | 说明 |
|---|---|---|---|
| ↑ | 0 | 0 | 上升沿锁存低电平 |
| ↑ | 1 | 1 | 上升沿锁存高电平 |
| 其他 | X | Q(t) | 保持当前状态 |
将8个D触发器串联,每个触发器的Q输出连接下一个的D输入,就构成了移位寄存器。在100MHz时钟驱动下,我们需要额外的分频电路来降低LED变化速度:
// 时钟分频模块示例
reg [23:0] counter;
always @(posedge clk) begin
counter <= counte

&spm=1001.2101.3001.5002&articleId=154589264&d=1&t=3&u=5e63d3705d464eb08102ccb414fd849e)
440

被折叠的 条评论
为什么被折叠?



