JTAG 基础

TAP 状态机:JTAG 访问流程的骨架

理解 Test Access Port 状态机,以及指令寄存器和数据寄存器如何被选择。

JTAG 的访问不是任意时刻都能读写寄存器。Test Access Port(TAP)由一套状态机控制,TMS 在 TCK 的采样作用下决定下一状态。工具只有先走到正确的状态,才能把后续比特解释为指令或数据。

两条主要路径

TAP 状态机可以看作两条相互关联的路径。第一条是指令路径:从 Select-IR-Scan 进入 Capture-IR、Shift-IR 和 Update-IR,用来装载当前要执行的指令。第二条是数据路径:从 Select-DR-Scan 进入 Capture-DR、Shift-DR 和 Update-DR,用来访问由当前指令选中的数据寄存器。

两条路径都包含 Capture、Shift 和 Update 三类动作。Capture 把寄存器的某些当前状态装入移位路径;Shift 在 TCK 驱动下逐位移动数据;Update 把移位阶段准备好的内容提交给目标逻辑。正是这些边界清晰的阶段,让同一组 TDI/TDO 信号可以复用不同寄存器。

TMS 如何改变状态

状态机的关键规则是:每个 TCK 周期只根据当前状态和 TMS 电平选择下一状态。TMS 保持为 0 或 1 的连续周期,会把 TAP 带入不同路径。例如,从 Run-Test/Idle 出发,TMS 为 1 会进入 Select-DR-Scan;如果随后继续为 1,则会到达 Select-IR-Scan。实际操作中,工具会输出一串经过计算的 TMS 比特,而不是直接“发送某条命令”。

TAP 也提供测试逻辑复位路径。连续保持 TMS 为 1 足够的 TCK 周期,可以让 TAP 回到 Test-Logic-Reset。很多工具会在会话开始时执行这种复位,以消除上一次访问遗留的状态;但目标器件的复位要求和工具行为仍应结合文档确认。

指令与数据寄存器的关系

装载指令时,数据寄存器路径并不会同时被当作目标。指令在 Update-IR 后生效,之后工具才根据该指令选择某个数据寄存器,例如边界扫描寄存器、器件识别寄存器或旁路寄存器。不同器件支持的指令集合不同,因此不能只凭 TAP 状态名判断可用功能。

理解这一点有助于定位问题:如果链路能复位但读取的识别值异常,问题可能出在指令长度、器件顺序、TDO 采样或链路电气条件;如果状态机根本走不到预期位置,则应先检查 TMS/TCK 波形、复位策略和连接。

与其他专题的连接

TAP 状态机是 JTAG 是什么:从测试接口到工程工具链 中接口概念的操作基础。边界扫描进一步利用数据寄存器检查板级网络,见 Boundary Scan 基础:从扫描链到板级互连检查。当状态转换或链路访问失败时,JTAG 调试与故障定位 提供排查思路。

状态机由 TAP 信号驱动,信号职责见 JTAG TAP 接口信号:TCK、TMS、TDI、TDO、TRST;要实际连接控制器和目标板,可参考 JTAG 连接器与测试访问端口基础。