FPGA 连续实战 · 05 下载上板与硬件验收

精确选择 JTAG 目标与器件,用完成灯、失败灯和版本证据建立首次板上结果。

先修知识掌握同步 RTL、非阻塞赋值与 FIFO;按六章顺序完成前置交付。

适用环境Basys 3 / xc7a35tcpg236-1 / 100 MHz;Vivado Tcl 参考 2024.1;Python 3、Icarus Verilog。

验证状态RTL 正常与故障仿真已验证;Vivado 综合、实现、下载和 ILA 采集须在目标环境验证。

本文目录下载成功与功能正确分开验收先枚举,再选择设备执行精确目标下载典型故障:配置成功但 LED 不亮

下载成功与功能正确分开验收

下载阶段首先验证配置文件配对和目标器件,再验证实际设计行为。程序配置完成只说明传输和配置流程成功,不能证明时钟、复位或数据通路工作。正常版本预期完成灯点亮且失败灯保持熄灭,按钮按住后进入复位,释放并等待稳定计数后重新运行;这三项应作为独立的硬件观察记录。

断电后需重新下载;是否持久启动不属于本次实验。发布清单bit / ltx 哈希JTAG 目标精确 URI 与器件配置完成读取设备状态功能验收LED + 重启 + ILA本流程只配置 FPGA 易失性逻辑,不写启动 Flash
断电后需重新下载;是否持久启动不属于本次实验。(原创示意,非器件引脚图;窄屏可横向滑动)

先枚举,再选择设备

通过 Hardware Manager 建立连接后查看目标列表,逐一确认板卡与器件。多板连接时禁止按列表第一个目标猜测,工程入口要求明确传入完整目标 URI 和设备名称,Tcl 再检查器件型号。USB 线必须支持数据传输,若不能枚举目标,先检查供电、线缆、驱动和服务器连接,再考虑工程文件。

工程检查与预期结果
现象预期 / 含义
LED[1:0]=01正常自检完成;需结合 ILA 进一步验证数据
按住 btnC同步后复位,两个灯清零
释放按钮约 10.49 ms 后稳定释放计数结束,约 95 个测试周期后重新完成
LED[1:0]=11故障版本预期;正常版本则需排查
一直 00可能未运行、仍复位、时钟缺失或程序错误

Vivado Tcl Console;读取真实返回值,不要照抄其他板卡的目标名称。

tcl
open_hw_manager
connect_hw_server
get_hw_targets
# 在 GUI 中确认并打开目标后:
get_hw_devices
# 记录实际目标 URI 和器件名供下一步使用

执行精确目标下载

脚本在运行工具前核验冻结输入、审查记录和发布物哈希,避免手动拷贝文件造成混用。命令中的两个变量应替换为刚才枚举确认的真实值。硬件预期来自 RTL 契约,并非本站已完成的板上测量;请把实际板卡版本、工具版本、BUILD_ID、观察结果和异常日志一起记录。

  1. 检查发布物

    预期与判定:release.json 中 bit/ltx 与本次构建匹配。

  2. 确认目标

    预期与判定:目标 URI、器件名、实物板卡一一对应。

  3. 下载配置

    预期与判定:工具成功结束,记录日志,不等同于功能通过。

  4. 验证复位

    预期与判定:正常完成灯亮;按住复位清零,释放后再次完成。

在解压后的 fpga-course 目录执行;Vivado 步骤需本机安装并配置 PATH。

bash
python3 flow.py program baseline \
  --target "<Hardware Manager 返回的完整目标 URI>" \
  --device "<已核对的器件名>"
# 预期 Tcl 输出 FPGA_PROGRAMMED;随后仍须检查 LED
# 不要将占位文字原样执行

典型故障:配置成功但 LED 不亮

先确认观察的是 LED 零和一,再核对顶层引脚及实际加载的构建。时钟缺失与复位不释放都可能让完成状态一直为零,但处理路径不同。使用下一章 ILA 观察复位和计数器可以缩小范围;若 ILA 本身不能采样,则先查采样时钟、调试核与器件配置,而不是直接修改 FIFO 算法。

完成检查

  • 精确指定并核对目标器件。
  • 记录下载成功与功能观察两类证据。
  • 完成按钮复位后的第二次板上运行。

延伸阅读与来源

本文为黄河电子原创教学说明。产品命令与支持范围请以实际安装版本的官方文档为准。

继续阅读

FPGA

从 RTL 到板上运行的完整流程

建立约束、实现、下载与观测的最小工程闭环。

10 分钟
FPGA

第一个工程的引脚与时钟约束

区分电气连接与时间要求,避免“能生成位流就算正确”。

11 分钟
FPGA

如何读懂时序报告

从起点、终点、时钟和裕量找出失败路径的原因。

10 分钟