| name | board-bringup |
| description | FPGA原型和板级bringup技能 - 从静态检查到系统测试,完整板级验证指导 |
| description.zh | FPGA原型和板级bringup技能 - 从静态检查到系统测试,完整板级验证指导 |
| origin | ICER |
| categories | verification |
FPGA 原型和板级 Bringup 技能
当用户需要进行 FPGA 原型验证或硅后板级验证时,启用此技能。提供从静态检查到系统测试的完整 bringup 流程和问题调试方法。
When to Activate
- 新 FPGA 原型项目启动
- 新 PCB 第一次上电 bringup
- 硅后芯片第一次测试
- 板级功能问题调试
- 量产前验证测试
步骤 1:静态检查(不开电)
一定要做,不开电检查出问题比上电烧器件好。
1.1 目视检查
做什么: 检查 PCB 外观和器件焊接。
检查项:
1.2 电源短路检查
做什么: 确认电源和地之间没有短路。
怎么做:
1. 万用表设置电阻档
2. 测量每个电源轨到地的电阻
3. 记录电阻值
4. 电阻 < 10Ω 可能短路,需要排查
输出: 电源电阻表
| 电源轨 | 电阻值 | 状态 |
|---|
| VCC_3V3 | 1.2kΩ | 正常 |
| VCC_1V8 | 800Ω | 正常 |
| VCC_1V0 | 50Ω | ⚠️ 检查 |
1.3 导通性检查
做什么: 确认所有关键网络连通。
检查项:
1.4 无源器件检查
做什么: 检查关键无源器件值正确。
检查项:
检查清单:
步骤 2:第一次上电
安全第一,电流限制,慢慢升压。
2.1 设置电源保护
做什么: 设置电源电流限制,防止烧坏。
怎么做:
1. 可编程电源设置电流限制
- 起始限制:100mA - 500mA(根据预期电流)
- 电压:从 0V 开始
2. 连接电源到板子
3. 准备万用表和示波器
2.2 缓慢上电
做什么: 缓慢升压,观察电流。
怎么做:
1. 从 0V 开始,缓慢升压
2. 观察电流变化
3. 每升 0.1V 停顿,观察
4. 到达目标电压后稳定
正常现象:
- 电流平滑上升
- 达到预期静态电流后稳定
- 没有突然跳变
异常现象:
- 电流突然跳变 → 立即断电
- 电流超过限制 → 立即断电
- 有冒烟/异味 → 立即断电
2.3 测量电源轨电压
做什么: 测量每个电源轨电压正确。
输出: 电源电压表
| 电源轨 | 预期值 | 实测值 | 压降 | 状态 |
|---|
| VCC_3V3 | 3.3V | 3.28V | 0.02V | 正常 |
| VCC_1V8 | 1.8V | 1.75V | 0.05V | ⚠️ 压降大 |
| VCC_1V0 | 1.0V | 1.01V | 0.01V | 正常 |
2.4 检查器件温度
做什么: 手摸或热像仪检查器件温度。
检查项:
检查清单:
步骤 3:时钟和复位测试
3.1 测量参考时钟
做什么: 示波器测量参考时钟。
测量项:
- 频率是否正确
- 幅度是否正确
- 占空比是否正确
- 边沿是否干净
输出: 时钟测量表
| 时钟 | 预期频率 | 实测频率 | 幅度 | 状态 |
|---|
| REF_CLK | 25MHz | 25.01MHz | 3.2V | 正常 |
| SYS_CLK | 50MHz | 49.98MHz | 3.3V | 正常 |
3.2 配置并测试 PLL
做什么: 配置 PLL,检查锁定。
步骤:
- 配置 PLL 分频系数
- 使能 PLL
- 等待锁定
- 测量输出频率
检查项:
3.3 测试复位
做什么: 测试复位信号时序正确。
测量项:
- 复位有效电平正确
- 复位释放电平正确
- 复位持续时间符合规格
- 复位释放顺序正确
检查清单:
步骤 4:配置接口测试
4.1 连接调试接口
做什么: 连接 JTAG/SWD 调试接口。
步骤:
- 连接调试器到板子
- 打开调试软件
- 尝试连接
检查项:
4.2 基本寄存器测试
做什么: 测试寄存器读写正确。
测试项:
1. 读取 ID 寄存器 → 值正确
2. 写入测试寄存器 → 写入成功
3. 回读测试寄存器 → 读出正确
4. 写入另一个值 → 读出正确
4.3 加载配置(FPGA)
做什么: 加载配置比特流。
步骤:
- 加载比特流到 FPGA
- 检查加载成功状态
- 检查 DONE 引脚状态
检查项:
⚠️ 如果这一步过不去,不要往下走,一定先解决。
检查清单:
步骤 5:模块逐个测试
从最简单到最复杂,一个模块测试通过再下一个。
5.1 GPIO 测试
测试项:
5.2 UART 测试
测试项:
5.3 I2C/SPI 测试
测试项:
5.4 存储器测试
测试项:
5.5 DDR 测试
测试项:
5.6 核心功能测试
测试项:
检查清单:
步骤 6:系统集成测试
6.1 模块间接口测试
测试项:
6.2 完整应用测试
测试项:
6.3 压力测试
测试项:
6.4 极限测试
测试项:
检查清单:
常见问题定位
问题 1:电源电流过大
可能原因:
排查步骤:
- 断电,测量电源地电阻
- 逐个断开电源域
- 找到短路区域
- 定位短路器件
问题 2:JTAG 连接不上
可能原因:
排查步骤:
- 测量每个信号线
- 测量电源电压
- 测量复位电平
- 降低 JTAG 速度
问题 3:PLL 不锁定
可能原因:
排查步骤:
- 示波器测量参考时钟
- 检查配置寄存器
- 测量 PLL 电源
问题 4:功能偶发错误
可能原因:
排查步骤:
- 降低工作频率
- 增加同步级数
- 测量电源纹波
调试方法论
二分法
- 问题在前半还是后半
- 砍掉一半
- 重复,缩小范围
隔离法
- 禁用所有无关模块
- 只保留问题相关模块
- 排除其他影响
对比法
- 和仿真波形对比
- 和已知好的板子对比
- 找出差异
文档要求
记录每次 bringup:
| 测试项 | 环境 | 结果 | 问题 | 根因 | 修复 |
|---|
| 电源检查 | 25°C | PASS | - | - | - |
| 时钟测试 | 25°C | FAIL | 频率偏 | 晶振错 | 更换 |
| ... | ... | ... | ... | ... | ... |
反模式(要避免)
❌ 上来就跑完整系统 → 不知道哪里错了
❌ 不记录结果 → 忘了做到哪了
❌ 电流过大继续加电 → 烧坏器件
❌ 跳过分步测试 → 找不到问题
代理协作
- 使用
validation-engineer 代理进行板级验证
- 自动化测试脚本使用
eda-scripting 技能开发