JTAG 接口实测波形与基础时序分析
1. JTAG 基础
1.1 引脚定义
| 信号线 | 方向 (相对于 FPGA) | 全称 | 主要作用 |
|---|---|---|---|
| TCK | 输入 | Test Clock | 提供同步时钟,所有操作都在其边沿进行 |
| TMS | 输入 | Test Mode Select | 控制 JTAG 状态机的状态转换 |
| TDI | 输入 | Test Data Input | 串行数据输入,比特流文件、调试命令等,最终都是通过这根线传输到 FPGA |
| TDO | 输出 | Test Data Output | 串行数据输出,可以从 FPGA 读回配置数据、芯片 ID、内部寄存器状态或者调试数据。 |
| TRST | 输入 (可选) | Test Reset | 异步复位 JTAG 接口,低电平有效。用于将 JTAG 的 TAP 控制器强制复位到一个已知的初始状态。 |
这几个信号一般内部有上拉电阻。 TRST 可选。因为通过给 TMS 连续发送 5 个以上的高电平脉冲,也可以实现 JTAG 的逻辑复位。
TMS 的值在TCK 的上升沿被采样,JTAG 内部一个固定的 16 状态状态机(TAP Controller)根据 TMS 的信号序列进行状态转换。 16 个状态如下所示,主要有复位状态,空闲状态、数据寄存器状态,指令寄存器状态。 复位状态:进入此状态后,JTAG 逻辑被禁用,芯片正常工作逻辑被激活。上电,或保持 TMS=1 并连续 5 个 TCK 时钟,可以进入此状态。 空闲状态:在多个状态下,只要 TMS=0,通常最终都会回到这里。 数据寄存器和指令寄存器都包括 7 种状态。

Select-DR-Scan:一个临时路口。在此状态,通过 TMS 的值决定是进入 DR 路径,还是切换到 IR 路径。 Capture-DR:捕获数据。在此状态,芯片会根据当前生效的 JTAG 指令,将并行数据预加载到数据移位寄存器中。 Shift-DR:核心移位状态。在此状态下,每个 TCK 周期,数据移位寄存器都会通过 TDO 移出一位数据,同时通过 TDI 移入一位新数据。 Exit1-DR:退出移位的第一阶段。用于离开 Shift-DR 状态。 Pause-DR:暂停移位。允许暂时停止数据移位,而不中断整个操作。这在处理长数据链时很有用。 Exit2-DR:从 Pause-DR 状态退出的另一个出口。 Update-DR:更新输出。这是一个关键状态。将在 Shift-DR 阶段移入的数据,锁存到目标寄存器中,并生效。
1.2 时序

TDO 由 TCK 下降沿驱动。
1.3 JTAG 级联









