2. Zynq器件架构与测试接口

Zynq-7000 系列的本质是“PS + PL”异构结构:PS(Processing System)是以 ARM Cortex-A9 双核为核心的硬核处理系统,PL(Programmable Logic)是可编程逻辑阵列。产品化测试中,几乎所有测试通道都围绕这两部分展开——PS 侧提供 JTAG/SWD、UART、以太网、USB、SD 等标准接口,PL 侧则通过可编程逻辑实现自定义测试逻辑、信号采集与协议桥接。理解这些资源的边界与连接关系,是设计测试方案的前提。

PS 与 PL 的资源划分

PS 内部集成了双核 Cortex-A9、L1/L2 缓存、片上存储器(OCM)、DDR 控制器、DMA、中断控制器(GIC)、时钟与复位管理,以及一组固定的外设控制器:UART、SPI、I2C、CAN、USB、SD/SDIO、Gigabit Ethernet 等。这些外设的引脚通过 MIO(Multiplexed I/O)多路复用,MIO 共有 54 个引脚,分布在 Bank0(MIO[0:15])和 Bank1(MIO[16:53])中。当 MIO 引脚数量不足或需要连接 PL 侧逻辑时,外设信号可以路由到 EMIO(Extended MIO),再通过 PL 引脚输出。

PL 侧包含可配置逻辑块(CLB)、DSP48E1 切片、Block RAM、时钟管理单元(MMCM/PLL)以及 I/O Bank。PL 的 I/O 分为 Bank34/35(HR,High Range)和 Bank13/14(HP,High Performance)等,不同 Bank 支持的电平标准不同。测试时若需要驱动 LVDS、DDR 或高速差分信号,必须确认目标 Bank 的 VCCO 电压与标准是否匹配。

PS 与 PL 之间的数据通路主要有三类:AXI 总线(GP、HP、ACP 接口)、中断信号和 DMA 通道。产品化测试中,常用 HP 接口把 PL 采集的高速数据写入 DDR,用 GP 接口让 PS 配置 PL 寄存器,用中断把 PL 的事件通知 PS。这些通路本身也是测试对象——例如验证 AXI 读写带宽、中断响应延迟、DMA 传输完整性。

PS 处理系统 Cortex-A9 双核 L1/L2 Cache · NEON OCM / DDR 控制器 DDR3/DDR3L/LPDDR2 GIC 中断控制器 IRQ / FIQ / SGI DMA 控制器 8 通道 · 内存到内存 PS 外设控制器 • UART ×2 • Gigabit Ethernet ×2 • USB 2.0 OTG ×2 • SD/SDIO ×2 • SPI ×2 • I2C ×2 • CAN ×2 • GPIO MIO / EMIO 路由 MIO[0:53] · EMIO 扩展至 PL 启动模式:JTAG / QSPI / SD / NAND BootROM → FSBL → PL 配置 → SSBL PL 可编程逻辑 CLB 可配置逻辑块 LUT · FF · 进位链 DSP48E1 切片 乘法器 · 累加器 Block RAM 36Kb 双端口 MMCM / PLL 时钟生成与去偏斜 AXI 互联:GP / HP / ACP PS ↔ PL 数据通路 · 中断 · DMA PL I/O Bank HR Bank34/35 · HP Bank13/14 LVCMOS · LVDS · DDR · 差分对 自定义测试逻辑(示例) ILA 集成逻辑分析仪 · VIO 虚拟 I/O PRBS 码型发生器 · 误码检测器 协议桥接 · 信号采集 FIFO AXI EMIO 中断 / 事件

启动模式与测试通道的关系

Zynq 上电后由 BootROM 接管,根据模式引脚(MIO[8:2] 等)选择启动源:JTAG、QSPI、SD 卡或 NAND。产品化测试中,启动模式直接影响测试通道的可用性。例如,JTAG 启动模式下,PS 不加载任何外部镜像,处理器停在 BootROM 等待调试器连接,此时可以通过 JTAG 直接读写内存、加载 FSBL 或裸机测试程序,适合板级 bring-up 和硬件故障定位。而 SD 启动模式下,系统自动加载 BOOT.BIN(含 FSBL、PL 比特流和 SSBL),测试程序通常作为 Linux 应用或裸机镜像运行,此时 JTAG 仍可连接,但主要用于在线调试而非启动控制。

一个常见的测试策略是:首板调试用 JTAG 模式,确认 DDR、时钟、电源正常后,再切换到 QSPI 或 SD 启动验证量产镜像。启动模式引脚通常通过拨码开关或电阻配置,测试工装可以通过 GPIO 控制这些引脚,实现自动切换。

JTAG/SWD 调试通道

Zynq 的 JTAG 接口遵循 IEEE 1149.1 标准,包含 TCK、TMS、TDI、TDO 和可选的 TRST。PS 侧还支持 SWD(Serial Wire Debug),仅需 SWCLK 和 SWDIO 两根线,适合引脚受限的场景。JTAG 链上通常有多个 TAP:ARM DAP、PL TAP 和边界扫描 TAP。使用 Xilinx Vivado 或 Vitis 时,硬件服务器通过 JTAG 访问 PS 的 DAP,实现程序下载、断点、内存查看和 PL 配置。

测试中需要关注 JTAG 链的完整性:TCK 频率不宜过高(建议 1–10 MHz 起步),长走线或连接器接触不良会导致 IR/DR 扫描失败。若 JTAG 无法识别器件,应依次检查 VREF(通常 1.8V 或 3.3V)、TCK 有无时钟、TDO 是否被拉低、以及链上是否有其他器件干扰。SWD 模式下,需确认 SWDIO 的上拉电阻和 SWCLK 的串联电阻是否匹配。

UART 与以太网测试通道

UART 是最基础的调试通道。PS 的 UART0/1 通过 MIO 或 EMIO 引出,典型配置为 115200-8-N-1。产品化测试中,UART 常用于输出启动日志、FSBL 调试信息、Linux 控制台和测试结果。测试工装可以通过 UART 发送命令、读取返回值,实现自动化测试。需要注意的是,UART 的 TX/RX 交叉连接、电平匹配(1.8V/3.3V)和流控(RTS/CTS)配置必须与目标一致。

以太网通道(Gigabit Ethernet)用于高速数据传输和网络协议测试。PS 的 GEM 控制器支持 RGMII 和 SGMII 接口,通过 MIO 或 EMIO 连接 PHY。测试时通常关注:链路建立(PHY 寄存器读取、自协商结果)、吞吐量(iperf 或自定义 UDP 流)、误码率(PRBS 或长时间 ping)、以及 MAC 地址和 PHY 地址配置。若使用 PL 侧实现自定义以太网 MAC,则需额外验证 AXI 流接口的时序和 FIFO 深度。

测试通道的选择与组合

实际产品化测试中,这些通道并非孤立使用。一个典型的测试流程可能是:JTAG 加载裸机测试程序 → UART 输出测试进度 → PL 内 PRBS 发生器通过高速接口发送码型 → PS 通过以太网回传误码统计 → JTAG 读取最终结果。理解每个通道的能力边界和相互配合方式,才能设计出覆盖充分、效率合理的测试方案。

实践提示:在板级 bring-up 阶段,建议先只使用 JTAG + UART 两个通道,确认 PS 核心、DDR 和时钟正常后,再逐步启用以太网、PL 高速接口等复杂通道。每次只增加一个变量,便于定位问题。
注意:JTAG 和 SWD 不能同时使用同一组调试引脚;切换调试模式时需确认 MIO 配置和 PCB 连接是否支持。另外,PL 的 JTAG 边界扫描链在 PL 未配置时也可能影响 PS JTAG 的识别,必要时可通过 Vivado 的“仅 PS”模式绕过。