JTAG的一些高级操作

JTAG接口介绍

JTAG 接口通常包括以下 5 个引脚:

  1. TCK
  • 时钟信号,用于同步整个 JTAG 操作。
  • 所有状态转换和数据传输都发生在 TCK 的上升沿或下降沿。
  1. TMS
  • 模式选择信号,用于控制 JTAG 状态机的状态转换。
  • TMS 的值在 TCK 的上升沿被采样,决定状态机的下一步状态。
  1. TDI
  • 数据输入信号,用于将数据串行输入到目标设备的指令寄存器(IR)或数据寄存器(DR)中。
  • 数据在 TCK 的上升沿被采样。
  1. TDO
  • 数据输出信号,用于从目标设备的指令寄存器(IR)或数据寄存器(DR)中串行输出数据。
  • 数据在 TCK 的下降沿输出。
  1. TRST
  • 复位信号,用于将 JTAG 状态机强制复位到初始状态(Test-Logic-Reset)。
  • 如果未使用 TRST,可以通过控制 TMS 信号复位状态机。

JTAG状态机

JTAG 状态机是一个有限状态机(FSM),定义了 JTAG 的操作流程。状态机的状态转换由 TMS 信号控制,每个 TCK 上升沿采样 TMS 的值来决定下一步状态。

  1. 复位状态机

设置 TMS 为高电平(1),至少持续 5 个 TCK 周期。
状态机进入 Test-Logic-Reset 状态。

  1. 进入 Shift-IR 状态

设置 TMS 为 1,进入 Select-DR-Scan。
设置 TMS 为 1,进入 Select-IR-Scan。
设置 TMS 为 0,进入 Capture-IR。
设置 TMS 为 0,进入 Shift-IR。

  1. 写入指令

在 Shift-IR 状态下,通过 TDI 引脚逐位移入指令。
每次 TCK 上升沿时,TDI 的值被采样并移入指令寄存器。

  1. 退出 Shift-IR 状态

设置 TMS 为 1,进入 Exit1-IR。
设置 TMS 为 1,进入 Update-IR。

  1. 更新指令寄存器

在 Update-IR 状态下,指令寄存器的值被更新。

  1. 返回空闲状态

设置 TMS 为 0,进入 Run-Test/Idle。