4. Versal配置与启动测试

Versal ACAP 的启动过程比传统 FPGA 更复杂,因为它不仅要加载 PL 的比特流,还要依次建立平台管理控制器(PMC)、处理系统(PS)和可编程逻辑(PL)的运行环境。量产测试中,配置与启动测试的目标是确认每一块板卡在指定启动模式下都能稳定、可重复地进入工作状态,并能在异常时快速定位故障环节。

启动模式与启动阶段

Versal 支持多种启动模式,量产中最常见的是 QSPI-OSPI、SD/eMMC 和 JTAG。启动模式由模式引脚在 POR(上电复位)释放时的电平决定,因此测试前必须确认模式引脚的上拉/下拉电阻与目标模式一致。Versal 的启动大致分为三个阶段:

  • PMC 启动阶段:PMC 从 BootROM 开始执行,读取启动头(Boot Header),加载 PLM(Platform Loader and Manager)。PLM 负责后续的镜像加载与设备管理。
  • PS 启动阶段:PLM 根据 PDI(Programmable Device Image)中的分区信息,依次加载 LPD(低功耗域)和 FPD(全功耗域)的固件,包括 PMU、Cortex-R5、Cortex-A72 等。
  • PL 配置阶段:PLM 加载 PL 的比特流分区,完成可编程逻辑的配置,随后释放 PL 复位。

每个阶段都有对应的状态寄存器和错误码,测试时可通过读取 PMC 的启动状态寄存器或串口日志判断启动是否成功。

配置接口与测试连接

量产测试中,配置接口的选择直接影响测试节拍。JTAG 适合单板调试和首件验证,但速度慢、需要主机参与;QSPI-OSPI 和 SD 启动适合批量测试,板卡上电即可自主启动。测试工装通常需要同时提供 JTAG 和启动模式控制信号,以便在自主启动失败时切换到 JTAG 进行诊断。

以下 SVG 展示了 Versal 从 POR 到 PL 配置完成的启动信号链与关键检查点,图中标注了各阶段的输入、输出和可观测状态。

Versal 启动信号链与关键检查点 POR 释放 模式引脚采样 QSPI/SD/JTAG PMC BootROM 读取 Boot Header 校验 PDI 头 PLM 加载 分区解析 设备管理初始化 PS 固件加载 PMU / R5 / A72 LPD → FPD PL 配置 比特流加载 释放 PL 复位 关键检查点 ① 模式引脚电平:确认与目标启动模式一致,避免悬空 ② Boot Header 校验:PDI 头 CRC 与镜像地址是否正确 ③ PLM 状态寄存器:PMC 启动状态码是否进入 PLM 运行态 ④ PS 固件握手:PMU 与 R5 是否完成初始化并释放 A72 常见故障与排查方向 • 模式引脚错误 → 检查电阻焊接与上电时序 • PDI 头校验失败 → 重新生成镜像,确认 Boot Header 参数 • PLM 卡死 → 检查 QSPI 时钟频率与 Flash 时序 • PL 配置超时 → 检查比特流分区大小与 PL 电源 JTAG 诊断回退 自主启动失败时切换 JTAG 读取 PMC 状态寄存器 回读 PL 配置状态 定位失败阶段

配置时间优化

量产测试中,配置时间直接影响单板测试节拍。Versal 的配置时间主要由镜像大小、接口带宽和 PLM 处理开销决定。以 QSPI-OSPI 为例,若 Flash 工作在 50 MHz 四线模式,理论带宽约 25 MB/s,一个 30 MB 的 PDI 镜像理想加载时间约 1.2 s,但实际受 PLM 分区解析和校验影响,通常需要 2~3 s。

优化方向包括:

  • 压缩镜像:PDI 支持压缩,可显著减小传输数据量,但会增加 PMC 解压开销,需实测权衡。
  • 提高接口时钟:在 Flash 和 PCB 信号完整性允许的前提下,将 QSPI 时钟从 50 MHz 提升到 80~100 MHz,可缩短传输时间。
  • 精简分区:移除测试不需要的调试分区和未使用的外设固件,减小镜像体积。
  • 并行加载:部分场景下可让 PL 配置与 PS 固件加载部分重叠,但需确认 PDI 分区依赖关系。

测试时应记录从 POR 释放到 PL 复位释放的时间戳,作为配置时间的量化指标。建议在量产测试规范中设定上限,例如不超过 3.5 s,超出则判定为配置异常。

故障排查流程

当板卡无法正常启动时,按以下顺序排查可快速缩小范围:

  1. 确认模式引脚:用万用表测量模式引脚在 POR 释放时的电平,与目标模式对照。若电平错误,检查上拉/下拉电阻是否焊接或阻值是否正确。
  2. 读取 PMC 状态:通过 JTAG 连接,读取 PMC 的启动状态寄存器和错误码。若 BootROM 阶段失败,通常指向 PDI 头或 Flash 访问问题。
  3. 检查 Flash 通信:用示波器观察 QSPI 时钟和数据线,确认 Flash 有响应。若时钟无输出,检查 PMC 的 QSPI 控制器初始化是否完成。
  4. 验证 PDI 镜像:在已知良好的参考板上加载同一镜像,排除镜像本身问题。若参考板正常,则问题在目标板硬件或 Flash 内容。
  5. 切换 JTAG 启动:将模式引脚切到 JTAG,通过 Vivado 或 xsdb 直接下载 PDI,观察是否能完成配置。若 JTAG 可启动而 QSPI 不可,则问题集中在 Flash 或 QSPI 通路。
在量产测试工装中,建议预留 JTAG 接口和模式引脚控制点。即使量产采用 QSPI 自主启动,JTAG 回退能力也能在批量不良分析时大幅缩短定位时间。

测试用例示例

以下是一个可参考的配置与启动测试用例结构,适用于量产首件验证或批量抽检:

测试项操作预期结果判定依据
模式引脚检查上电前测量模式引脚对地/对电源电阻与目标模式一致电阻值在标称范围内
QSPI 启动上电,等待启动完成PL 复位释放,串口输出启动日志启动时间 ≤ 3.5 s
PMC 状态读取JTAG 连接,读取启动状态寄存器状态码为 PLM 运行态无错误标志置位
PL 配置确认读取 PL 配置状态寄存器DONE 信号有效配置无 CRC 错误
JTAG 回退切换模式引脚至 JTAG,重新加载 PDI配置成功与 QSPI 启动结果一致

实际执行时,建议将上述测试项与电源测试、时钟测试合并为一条上电测试序列,避免反复上下电影响节拍。对于配置时间,可在工装中通过 GPIO 捕获 POR 释放和 PL DONE 的边沿,用示波器或逻辑分析仪记录时间差,作为客观量化数据。

注意:不同 Versal 器件型号和 Vivado 版本的 PDI 格式可能不同,Boot Header 中的参数(如 QSPI 时钟分频、镜像地址)必须与硬件设计匹配。量产前务必用目标版本工具链重新生成并验证镜像。

配置与启动测试是 Versal 量产测试的第一道关口。只有确认每块板卡都能在指定模式下稳定启动,后续的功能测试和可靠性验证才有意义。掌握启动阶段划分、关键检查点和故障排查顺序,可以在批量测试中快速区分硬件不良、镜像问题和配置参数错误,减少误判和返工。