两线 JTAG(cJTAG / IEEE 1149.7)技术专题

面向嵌入式硬件与测试测量工程师。本文系统梳理两线 JTAG 的定义、原理、指令体系、TAP 状态机与收发切换机制,并澄清与 SBW、SWD 的边界。

文档性质:技术综述 + 协议机制讲解,非替代 IEEE 1149.7 标准原文。


1. 术语界定

工程语境里被称作"两线 JTAG"的通常有三者,协议层面差异很大,先给出判定表。

名称 标准 两线信号 协议归属 边界扫描(BSCAN) 星型寻址 通用性
cJTAG IEEE 1149.7 TCKC + TMSC 正统 JTAG 家族 ✅ 支持 ✅ 支持(Star-2) 通用,需 1149.7 仿真器
SBW TI 私有(Spy-Bi-Wire) SBWTCK + SBWTDIO 厂商私有,内部转 JTAG 受限于内部实现 ❌ 仅 TI MSP430
SWD ARM CoreSight SWCLK + SWDIO 不是 JTAG ❌ 无 BSCAN --- ARM 内核调试通用

关键结论:只有 cJTAG 是协议上"正统的两线 JTAG"。SWD 常被口语称作两线 JTAG,但它是独立调试协议、没有边界扫描能力。


2. 两线到底指哪两根线(以 cJTAG 为例)

信号 方向 作用
TCKC 输入(单向) Test Clock,全局同步时钟,所有位采样与方向切换均对齐其边沿
TMSC 双向 Test Serial Data,时分复用 TMS / TDI / TDO 三路角色

对应 TI SBW:SBWTCK(时钟) + SBWTDIO(双向数据,复用 RST);对应 ARM SWD:SWCLK + SWDIO。


3. 优缺点

3.1 cJTAG(IEEE 1149.7,对比 4 线 1149.1)

优点

  1. 引脚极少,只占 2 个 IO,适配 BGA/SiP/高密度封装,可只留测试点不留排针;
  2. 协议兼容 1149.1,保留完整边界扫描与 TAP 链功能,既能下载调试也能做板级互连测试(SWD 没有);
  3. 支持星型(Star)拓扑而非菊花链,单颗故障不拖垮整链,多 TAP/多 die 友好;
  4. 支持热插拔、独立电源域控制、后台仪器数据传输;高级模式吞吐可高于四线 JTAG。

缺点

  1. TMSC 双向复用,协议时序复杂,芯片内 TAP.7 硬核成本更高,非所有芯片支持;
  2. 普通廉价 JTAG 适配器大多不支持 cJTAG,需专用 1149.7 仿真器(如 XDS110);
  3. 双向信号对信号完整性敏感,方向切换、走线过长/电容偏大易采样错误,PCB 约束比四线严格;
  4. 含 escape 序列、包封装逻辑,软件驱动与测试工具门槛更高。

3.2 SBW 与 SWD(要点)

  • SBW:仅 2 引脚、不额外占 GPIO,内部转标准 JTAG;但吞吐明显慢于四线,双向线时序严苛、复位引脚电容不能做大,且仅限 TI MSP430。
  • SWD :两线、仿真器普及、性价比高、速度不错;但无边界扫描,仅 CoreSight 内核调试。

3.3 选型一句话

  • 需要边界扫描 / 多芯片星型测试 / 高密度封装 → cJTAG;
  • 只做 ARM 内核调试、不需要板级测试 → SWD;
  • MSP430 小容量省引脚 → SBW。

4. 工作原理

核心一句话:

cJTAG = 1149.1 原生 TAP 状态机 + TAP.7 协议层 + 单根双向线(TMSC)时分复用 TMS/TDI/TDO + 星型寻址总线,用 ZBS 零扫描命令做模式切换与 TAP 选择。

4.1 信号分工

  • TCKC:单向全局时钟;
  • TMSC :双向开漏/带 KEEPER 保持逻辑,分时扮演 TMS(状态跳转)、TDI(移入)、TDO(移出);芯片内部必须有 KEEPER 保持逻辑,TCKC 上升沿时目标释放 TMSC,由保持单元锁存上周期电平防止浮空------这是 cJTAG 时序成立的关键。

4.2 核心机制:ZBS(Zero Bit Scan,零位扫描)

标准 1149.1 在 Shift-DR/Shift-IR 必须移位 N bit;ZBS 移位 0 bit,只利用 Shift-DR 状态下 TCK 脉冲个数来传递 1149.7 命令,用于进入两线模式、选择星型拓扑中的某颗 TAP、配置参数。

工作流:

  1. 上电默认可为传统四线模式;发 ZBS 命令切入 Star-2(两线)模式;
  2. 进入两线后,所有 TAP 动作打包成 cJTAG 包在 TMSC 上串行传输;
  3. 内部 TAP.7 硬核解包,还原成原生 1149.1 的 TMS/TDI 送给原有 TAP 控制器;TDO 再打包回 TMSC 送回仿真器。

4.3 拓扑:星型(Star),非菊花链

  • 四线 1149.1:菊花链,一颗挂掉整条链卡死;
  • cJTAG Star-2:所有 TAP.7 并联挂同一组 TCKC/TMSC 总线,每 TAP 有独立地址,通信前先寻址,未选中 TAP 保持静默,单颗失效不影响其他芯片,还支持独立电源域访问。

5. 指令体系与 TAP 状态机

5.1 两个层级

  • 下层:1149.1 原生 TAP 状态机(16 态),由 TAP.7 从 TMSC 包中解析出的"虚拟 TMS"驱动,IR/DR 与标准 JTAG 完全一致;
  • 上层 :1149.7 ZBS 控制指令(Star-2 独有,不进 IR/DR 移位,靠 TCKC 脉冲数编码)。

5.2 ZBS 基础指令集(Star-2 常用)

ZBS 命令在 TAP 处于 Shift-DR 状态下发送,TMSC 保持固定电平,只数 TCKC 脉冲:

脉冲数 命令 作用
1 ZBS Idle 空操作,保持当前选中状态
2 Enter Star-2 Mode 从四线兼容模式切入两线 Star-2 总线模式
3 Exit Star Mode 退出星型模式,切回普通 1149.1 四线行为
4 Select TAP(短寻址) 选择总线上指定地址的 TAP,其余静默
5 Deselect TAP 取消选中,所有 TAP 回到监听
6 Broadcast 广播命令,所有 TAP 同时接收

重点区分:ZBS 命令不是移入 IR 的指令 ,它是 TAP.7 子层命令,不走 IR 寄存器;而 SAMPLE/PRELOAD、EXTEST、BYPASS、IDCODE 仍是 1149.1 的 IR 指令,需正常 Shift-IR 移入。

5.3 1149.1 原生 IR 基础指令(cJTAG Star-2 下同样可用)

IR 指令 功能
BYPASS 旁路寄存器,DR 为 1 bit,快速穿过 TAP 链
IDCODE 读出芯片 JTAG ID
SAMPLE/PRELOAD 采样 IO 引脚、预加载边界寄存器
EXTEST 外部测试,驱动 IO、互连测试(边界扫描核心)
INTEST 内部测试

5.4 状态机(两层)

层级 A:1149.1 标准 TAP 状态机(虚拟 TMS 驱动)

16 态跳转与四线 JTAG 完全一致,由虚拟 TMS bit 流驱动(详见 6 节图示)。

层级 B:TAP.7 总线模式状态机(叠加在 TAP 外)

复制代码
1149.1 Compatible Mode(四线兼容)
        │  ZBS 2 脉冲(Enter Star2)
        ▼
Star-2 Bus Mode(两线星型)
        │  ZBS 3 脉冲(Exit Star)
        ▼
回到兼容模式

进入 Star-2 后还需维护寻址选中态:

Unselected(监听) ↔ Selected(可正常 TAP 操作)

仅被 Select 选中的 TAP 响应后续虚拟 TMS/TDI 并把 TDO 放回 TMSC;其他 TAP 保持 TMSC 高阻 + KEEPER,不驱动总线。

5.5 完整流程示例:四线 → 进入 Star-2 → 读 IDCODE

  1. 上电默认 1149.1 兼容模式,TAP 复位到 Run-Test/Idle;
  2. 发 TMS 序列推进到 Shift-DR;
  3. 发 2 个 TCKC 脉冲(ZBS Enter Star2) → 进入两线;
  4. 发 ZBS Select TAP(4 脉冲)选中目标 TAP;
  5. 虚拟 TMS 驱动进入 Shift-IR,在 TMSC 分时移入 IDCODE;
  6. 虚拟 TMS 切到 Shift-DR,TMSC 分时:探针发 TDI,每 bit 后换向,芯片回 TDO(ID 码);
  7. 读完发 ZBS Deselect(5 脉冲)释放 TAP,或 ZBS Exit Star 切回四线。

6. TMSC 收发切换机制(方向切换)

核心一句话:

以 TCKC 边沿做仲裁,每个扫描 bit 周期内分两个相位:前半周期探针(DTS)驱动,后半周期目标(TS)驱动;切换点绑定时钟沿,配合片上 KEEPER 防浮空与总线冲突。只有被 Select 选中的 TAP.7 才允许驱动 TMSC,其余保持三态 + KEEPER。

6.1 基础时序划分(Mscan,每 bit 换向)

单个移位 bit 占一个完整 TCKC 周期,拆两段:

  1. TCKC 高电平阶段(DTS 驱动期) :探针驱动 TMSC,输出虚拟 TMS 或 TDI;目标 TAP 在上升沿采样,上升沿同时目标释放 TMSC(三态);
  2. TCKC 低电平阶段(换向窗口 + TS 驱动期) :总线由探针交给目标;目标在下降沿 把当前 TDO 放到 TMSC,探针在低电平区间采样;片上 KEEPER 持续锁存最后电平防浮空。

关键规则:上升沿 = 目标停止驱动;下降沿 = 目标输出 TDO。方向切换不是额外方向 bit,而是协议时序预定义的时隙分工。

6.2 Mscan 与 Oscan 的换向差异

包格式 换向行为 适用
Mscan 每移入 1 bit TDI 就换向读出 1 bit TDO(每 bit turnaround) 边界扫描,与 1149.1 一一对应
Oscan 连续发 TDI、批量发送后才一次换向回读 TDO 下载提速,减少换向开销

6.3 如何避免总线冲突

  1. 选中机制:ZBS Select 先选唯一 TAP,未选中 TAP 的 TMSC 永久 Hi-Z + KEEPER;星型总线上永远最多一颗芯片有权驱动;
  2. 边沿驱动释放约定:目标 TAP 在 TCKC 上升沿无条件释放驱动,探针不在上升沿后维持强驱动,时序错开驱动窗口;
  3. KEEPER 非上拉/下拉:是保持锁存器,只维持电平不驱动,不与任何驱动方对抗。

6.4 ZBS 期间不换向

ZBS 在 Shift-DR 状态、不做 TDI/TDO 移位只数脉冲:TMSC 全程由 KEEPER 保持固定电平,不发生收发切换。

6.5 与 SWD 的 turnaround 区分

  • SWD:包与包之间插入固定 1 bit turnaround 周期(独立换向时隙);
  • cJTAG Mscan:每个 bit 周期内部自带换向相位(换向嵌入每个 TCK 周期)。

6.6 典型时序(Mscan 单 bit)

复制代码
TCKC:   ┌───────────┐          ┌───────────┐
        │           │          │           │
      ──┘           └──────────┘           └──
TMSC:  [DTS驱动: TDI/TMS] ↑(rise)→HiZ+Keeper ↓(fall)→ [TS驱动: TDO]
方向:    仿真器输出          换向窗口           芯片回送 TDO
  1. TCKC 高电平:DTS 输出 TMS/TDI,TS 上升沿采样;
  2. 上升沿:TS tri-off,交还总线;
  3. 低电平:TS 输出 TDO,DTS 采样;
  4. 下降沿:TS 把 TDO 放上 TMSC;下一上升沿再次交还总线。

6.7 易踩坑

  1. KEEPER 缺失或时序 bug → TMSC 浮空,随机误触发 escape/ZBS,表现为随机断链、ID 读错;
  2. 频率上限受换向窗口限制:高低电平都需满足建立/保持,turnaround 需留总线稳定时间,同工艺下 cJTAG 最高频率通常低于四线。

7. 技术要点清单(速查)

  • cJTAG 是正统两线 JTAG(TCKC + TMSC),支持边界扫描与星型拓扑;
  • 两线分时复用:TMS/TDI/TDO 塞进一根 TMSC,靠时序时隙 + escape 序列区分;
  • ZBS = Shift-DR 状态下移位 0 bit、只数 TCKC 脉冲的 1149.7 控制命令(模式切换 + 寻址);
  • 收发切换:上升沿目标停止驱动、下降沿目标输出 TDO,配合 KEEPER 防浮空;
  • Mscan 每 bit 换向 / Oscan 包末一次换向;
  • SWD 不是 JTAG,无边界扫描。

相关推荐
comyccccc1 小时前
晶振区禁铺铜,三大保险丝护航电路安全学习笔记
单片机·嵌入式硬件
女神下凡2 小时前
芯参谋(71):全桥电机驱动电路设计指南
arm开发·stm32·单片机·嵌入式硬件·硬件工程·设计规范·1024程序员节
李永奉2 小时前
杰理可视化SDK开发-【BUG】AC7006F8芯片开启一拖二和双麦DNS通话算法后,大概率通话时蓝牙自动断连,RAM空间爆了问题处理
单片机·嵌入式硬件·mcu·物联网·电脑·bug
小向是个Der2 小时前
P02_你的变量住在哪里_教学文档
经验分享·笔记·stm32·单片机
深圳老胡2 小时前
液面探测功能的硬件方案对比:原理、优缺点与选型建议
笔记·单片机
成成爱质评2 小时前
Windows 任务计划程序 + 唤醒定时器:让电脑按时开机干活
windows·单片机·电脑
AMASENSYS艾马斯2 小时前
低压变频器输入输出电抗器选型指南
驱动开发·单片机·机器学习·硬件工程·精益工程
irislinAmelia10 小时前
缺陷检测AI关键点在哪
人工智能·嵌入式硬件·1024程序员节
糖糖单片机设计11 小时前
基于 STM32 的植物生长环境监控系统
stm32·单片机·嵌入式硬件