JTAG 和边界扫描是什么?TAP 怎么工作?
更新时间:2026-09-21。问题驱动短答页。电路实现见 JTAG 与边界扫描,可测性见 DFT/扫描链,与片上跟踪见 CoreSight 调试口。
一句话回答
JTAG(IEEE 1149.1)是一套标准化的串行测试/调试接口,只用 TCK(时钟)、TMS(模式选择)、TDI(数据入)、TDO(数据出),可选 TRST 复位,由片内 TAP 控制器驱动。核心是在每个芯片引脚旁放“边界扫描单元”并串成一条扫描链,从而不探表笔就能在板级检查器件间连线的开路/短路(boundary scan / EXTEST)。TAP 是一个 16 状态的状态机,通过 TMS 在 Shift-IR 移入指令、在 Shift-DR 移入/移出对应数据寄存器;常用指令有 EXTEST、SAMPLE/PRELOAD、BYPASS、IDCODE。同一个 JTAG 口后来被广泛复用做 FPGA 下载和 CPU 在线调试。
引脚与结构
- TCK:独立测试时钟(可与系统时钟异步)。
- TMS:在 TCK 上升沿决定状态转移(内部有上拉,默认走回复位)。
- TDI/TDO:串行移入/移出,链路最后一片的 TDO 回到调试器。
- 片内:TAP 控制器(状态机)+ 指令寄存器 IR + 若干数据寄存器 DR(边界扫描链、BYPASS、IDCODE 等)。
TAP 状态机要点
- 两个并行分支:IR 路径(Capture-IR → Shift-IR → Update-IR)和 DR 路径(Capture-DR → Shift-DR → Update-DR)。
- 复位状态(Test-Logic-Reset)下默认选 IDCODE。
- 通过 TMS 序列先进 Shift-IR 载入指令,再进 Shift-DR 与该指令选中的数据寄存器移位交互。
常用指令
| 指令 | 作用 |
|---|---|
EXTEST | 驱动/采样边界单元,测板级互连开短路 |
SAMPLE/PRELOAD | 采样正常引脚信号 / 预装边界值 |
BYPASS | 选中 1 位旁路寄存器,让不参与的芯片透明直通 |
IDCODE | 读出厂牌/部件号/版本 |
板上多颗芯片可串成一条 JTAG 链,未参与测试的用 BYPASS 缩短移位长度。
JTAG vs DFT 扫描链
JTAG 边界扫描主要面向板级互连测试和调试接入;DFT 的内部 scan chain 是把芯片内部触发器串起来做制造故障测试(见 ATPG 与扫描)。二者都“移位寄存器化”,但对象和目的不同;实际芯片常通过 JTAG TAP 来控制内部扫描/MBIST 等测试模式。
常见坑
- TMS/TCK 上拉与时钟质量差导致 TAP 进不了确定状态。
- 多片链的 IR 长度配置错,移位位数对不上。
- 把 JTAG 当普通 GPIO 在低功耗/复位时误关,调试口失联。
- 混淆边界扫描(板级互连)和内部 scan(芯片制造测试)。
总结
JTAG/IEEE 1149.1 用 TCK/TMS/TDI/TDO 四线和 16 状态 TAP 控制器,把芯片引脚旁的边界扫描单元串成链,通过 Shift-IR 载入 EXTEST、SAMPLE、BYPASS、IDCODE 等指令、再经 Shift-DR 移位交互,从而免探针对板级互连做开短路测试;它与面向芯片内部触发器制造测试的 DFT 扫描链目的不同,但同一物理接口常被复用为 FPGA 下载和 CPU 调试口。