FPGA 进阶 45:上板 bring-up 清单——分阶段点亮流程
本文是
fpga/进阶第45 篇(进阶收尾),整合调试方法论、ILA/VIO和接口协议调试案例,给出新板第一次上电的标准点亮顺序。
总原则
- 按依赖顺序点亮,不跳步;
- 一次引入一个新变量,每步有明确通过判据;
- 先回环后对外、先低速后高速;
- 失败回退到上一个已知好状态;
- 观测能力(状态寄存器、ILA、LED 测试点)在 RTL 设计时就做好。
分阶段清单
| 阶段 | 动作 | 通过判据 |
|---|---|---|
| 0 上电前 | XDC↔原理图核对(时钟脚/差分对/电源)、电源限流设定 | 管脚表一致、各轨电压正确 |
| 1 最小系统 | JTAG 识别器件(读 IDCODE)→ 下心跳比特流(LED 闪) | Hardware Manager 见器件、DONE 亮、灯闪 |
| 2 时钟复位 | MMCM locked 引出、各钟分频到 LED/ILA 验证、复位释放 | locked=1、频率对、复位行为正确 |
| 3 基础外设 | 按键/LED、UART 回环+打印、SPI/I2C 读对端 ID 寄存器 | 回环正确、ID 值匹配 |
| 4 存储 | MIG init_calib_complete → DDR pattern 读写测试;Flash 固化 | 校准完成、伪随机读写比对全对、掉电可启动 |
| 5 高速接口 | LVDS/SerDes 先回环;以太网看链路 up 再 ping;PCIe LTSSM→L0 可枚举 | 回环通、链路 up、主机枚举 |
| 6 全链路 | 传感器→FIFO→DDR→回放端到端,关键节点 ILA 抓数比对参考 | 数据与仿真/参考模型一致 |

关键状态信号(设计时固化)
mmcm_locked、init_calib_complete、rx_block_sync/字节对齐;- FIFO 溢出/空读计数、AXI 错误响应、CRC/丢包计数;
- 以太网链路 up、PCIe LTSSM 状态、SerDes ready;
- 全部挂到 AXI-Lite 状态寄存器(软件一键读全局)+ 关键的引到 LED/测试点。
工具箱
| 工具 | 用途 |
|---|---|
| Hardware Manager/IDCODE | 证明 JTAG+供电 |
| 心跳比特流 | 证明配置/时钟/IO 地基 |
| VIO | 手动控复位/模式/启动 |
| ILA | 抓接口握手与数据流(见ILA 篇) |
| 内部/近端回环 | 隔离 FPGA 侧与对端 |
| 状态寄存器+软件 | 永久观测点、量产自检 |
常见坑对照
| 坑 | 正确做法 |
|---|---|
| 直接下端到端大工程 | 从心跳开始逐级点亮 |
| 同时改好几处 | 一次一个变量 |
| 对外不通就查 FPGA | 先回环锁定问题侧 |
| 没状态寄存器只能反复加 ILA | 设计时固化状态/错误寄存器 |
| DDR 校准不过就怀疑代码 | 按协议调试案例查时钟/IP/XDC |
| 高速没先验低速通路 | 基础外设先全部点亮 |
相关与延伸
方法:调试方法论、ILA/VIO、接口协议调试案例。 物理前提:IO 规划、板级 SI、时钟网络。 进阶级到此覆盖日常工程主要场景;原型平台级 bring-up 见专家层。
一句话总结
bring-up 按依赖分七阶段,不跳步:上电前核管脚表和电源 → JTAG 读到 IDCODE → 下心跳比特流证明地基 → 验时钟(MMCM locked)复位 → 点基础外设(UART 回环/SPI 读 ID)→ DDR 等 init_calib_complete 后做 pattern 读写 → 高速接口先回环后对外(以太网链路 up 再 ping、PCIe LTSSM 到 L0 再枚举)→ 全链路端到端 ILA 抓数与参考比对。三条铁律:一次只引入一个新变量且每步有明确通过判据、先回环后对外先低速后高速、失败回退已知好状态;高效的前提是把调试能力设计进 RTL——MMCM locked/校准状态/FIFO 溢出/错误计数/链路状态全部做成软件可读的状态寄存器并引 LED 测试点,比事后反复插 ILA 快一个量级。