当前位置: 首页 > news >正文

jtag协议处理流程

JTAG(Joint Test Action Group)协议的数据流遵循严格的串行移位机制,通过测试访问端口(TAP,Test Access Port)状态机控制数据在指令寄存器(IR)和数据寄存器(DR)之间的传输。以下是JTAG协议数据流的核心原理和流程解析:

一、JTAG协议的核心组件与数据载体

  1. 测试访问端口(TAP)
    JTAG的核心控制单元,包含:

    • 状态机:16个状态组成,通过TMS(测试模式选择)信号的高低低电平切换状态(如移位、捕获、更新)。
    • 指令寄存器(IR):存储JTAG指令(如读取IDCODE、访问数据寄存器),长度由芯片设计决定(通常4~32位)。
    • 数据寄存器(DR):根据IR中的指令选择对应的功能寄存器(如IDCODE寄存器、边界扫描寄存器、调试寄存器),长度可变。
  2. 关键信号
    数据流通过以下信号传输(均为串行信号):

    • TCK(测试时钟):同步所有数据传输,上升沿采样输入(TDI),下降沿输出(TDO)。
    • TDI(测试数据输入):主机(如仿真器)向目标设备发送数据(IR指令或DR数据)。
    • TDO(测试数据输出):目标设备向主机返回数据(DR读取结果)。
    • TMS(测试模式选择):控制TAP状态机切换,决定当前是操作IR还是DR。

二、JTAG数据流的基本流程

JTAG的数据传输分为指令寄存器操作(IR扫描)数据寄存器操作(DR扫描) 两大阶段,所有数据均以串行移位方式传输(LSB或MSB先行,由芯片定义)。

1. 指令寄存器操作(IR扫描):选择DR功能

IR扫描的目的是向目标设备发送指令(如“读取IDCODE”“访问调试寄存器”),决定后续DR操作的对象。流程如下:

状态机路径:Test-Logic-Reset → Run-Test/Idle → Select-IR-Scan → Capture-IR → Shift-IR → Exit1-IR → Update-IR → Run-Test/Idle
  • Capture-IR:捕获IR的默认值(通常为厂商定义的固定值)到移位寄存器。
  • Shift-IR:串行移位阶段——主机通过TDI发送指令(如0x01表示IDCODE读取),同时TDO输出原IR值(移位输出,可忽略),持续n个TCK周期(n=IR长度)。
  • Update-IR:将Shift-IR阶段移入的指令锁存到IR寄存器,指令生效(此时DR被切换为该指令对应的功能寄存器)。

示例:发送8位指令0x01(IDCODE读取)

  • TDI在8个TCK周期依次发送:1→0→0→0→0→0→0→0(LSB先行)。
  • 指令锁存后,DR自动切换为IDCODE寄存器。
2. 数据寄存器操作(DR扫描):传输实际数据

DR扫描根据IR中已加载的指令,对对应的功能寄存器进行读写操作(如读取IDCODE、写入调试命令)。流程如下:

状态机路径:Run-Test/Idle → Select-DR-Scan → Capture-DR → Shift-DR → Exit1-DR → Update-DR → Run-Test/Idle
  • Capture-DR:捕获当前DR(如IDCODE寄存器、边界扫描寄存器)的内容到移位寄存器。
  • Shift-DR:串行移位阶段——
    • 写操作:主机通过TDI发送数据(如调试命令、地址),持续m个TCK周期(m=DR长度)。
    • 读操作:主机通过TDI发送无关数据(通常全0),同时通过TDO接收DR中的数据(移位输出)。
  • Update-DR:将Shift-DR阶段移入的数据锁存到DR寄存器,完成实际读写操作。

示例:读取32位IDCODE(IR已加载0x01指令)

  • 32个TCK周期内,TDI发送全0,TDO依次输出IDCODE的32位数据(LSB先行)。
  • 主机收集TDO数据,拼接为完整的32位IDCODE(如0x2BA01477表示ARM Cortex-M3)。

三、典型数据流交互示例(读取芯片IDCODE)

  1. 初始化:目标设备上电后进入Test-Logic-Reset状态(默认状态),TMS高电平+5个TCK脉冲确保复位完成。
  2. IR扫描(发送IDCODE指令)
    • TMS信号切换,使状态机进入Shift-IR
    • 发送8位指令0x01(IDCODE读取):TDI在8个TCK周期依次传输0b00000001(LSB先行)。
    • 状态机进入Update-IR,指令生效,DR切换为IDCODE寄存器。
  3. DR扫描(读取IDCODE数据)
    • TMS信号切换,使状态机进入Shift-DR
    • 32个TCK周期内,TDI发送全0,TDO输出32位IDCODE(如0x12345678)。
    • 状态机进入Update-DR,完成读取。
  4. 结束:返回Run-Test/Idle状态,等待下一次操作。

四、多设备JTAG链的数据流(菊花链)

当多个设备共享同一JTAG接口(菊花链连接)时,数据流通过串联移位传输:

  • 所有设备的TDI/TDO依次连接(设备1的TDO→设备2的TDI,以此类推)。
  • IR扫描时,指令需包含“设备选择”字段,只有匹配的设备会响应后续DR操作。
  • DR扫描时,数据会依次经过所有设备的移位寄存器,主机需按设备顺序解析数据。

示例:2个设备的菊花链

  • 发送指令时,需先发送“设备1选择码+指令”,再发送“设备2选择码+指令”。
  • 读取数据时,TDO输出设备1的数据→设备2的数据,主机按顺序拆分。

五、数据流的关键特性

  1. 串行同步:所有数据通过TDI/TDO串行传输,由TCK时钟同步,时序严格(需满足建立/保持时间)。
  2. 方向可控:通过指令区分读写方向(如IR_READ指令对应DR读,IR_WRITE对应DR写)。
  3. 长度可变:IR和DR的长度由设备定义(如IR=4位,DR=32位),主机需预先知晓(通过芯片手册或IDCODE解析)。
  4. 状态机驱动:数据流的每个阶段(捕获、移位、更新)均由TMS信号控制的TAP状态机驱动,确保操作有序。

总结

JTAG协议的数据流本质是“基于状态机的串行移位传输”:先通过IR扫描选择操作类型(指令),再通过DR扫描传输实际数据(地址、命令、结果)。这种机制使JTAG能通过少量信号线(4~5根)实现对芯片内部多个模块的控制,广泛用于调试、测试和配置场景。理解数据流的核心是掌握TAP状态机的切换逻辑和IR/DR的串行移位规则。


文章转载自:

http://WnoFtjUk.Lwmzp.cn
http://6mmOOh6w.Lwmzp.cn
http://ZQfLr4CA.Lwmzp.cn
http://Hme3kgwz.Lwmzp.cn
http://HgjVPhGB.Lwmzp.cn
http://slNN67y2.Lwmzp.cn
http://aEuzjLsj.Lwmzp.cn
http://bOwZwiKJ.Lwmzp.cn
http://lflSTmRh.Lwmzp.cn
http://N1XkvkE2.Lwmzp.cn
http://QQWoJKTz.Lwmzp.cn
http://8JVL4lQB.Lwmzp.cn
http://GdNYdEjD.Lwmzp.cn
http://GR3KxVTo.Lwmzp.cn
http://BwCWdGW4.Lwmzp.cn
http://pMlMfD7v.Lwmzp.cn
http://MEeQ3qs9.Lwmzp.cn
http://Wtvi9IC8.Lwmzp.cn
http://AsK3Prk9.Lwmzp.cn
http://2IwGWt6D.Lwmzp.cn
http://4Ie8wx9p.Lwmzp.cn
http://L6Djc8FR.Lwmzp.cn
http://VmmU7GcE.Lwmzp.cn
http://AEbhurO6.Lwmzp.cn
http://QYCO3KZF.Lwmzp.cn
http://2UtLf76n.Lwmzp.cn
http://ruUPg9m0.Lwmzp.cn
http://j8wlgNqT.Lwmzp.cn
http://zinRJYr3.Lwmzp.cn
http://wuK59hWe.Lwmzp.cn
http://www.dtcms.com/a/388598.html

相关文章:

  • 【LeetCode 每日一题】2749. 得到整数零需要执行的最少操作数
  • 《饿殍:明末千里行》Switch版试玩发布 3月13日发售
  • LeetCode:9.找到字符串中所有的字母异位词
  • Java获取淘宝商品详情数据的详细说明
  • PyTorch张量运算、索引与自动微分详解
  • Simulink变量优先级与管理策略
  • 大模型学习:什么是FastText工具
  • 从芯片到云:微软Azure全栈硬件安全体系构建可信基石
  • 当文件传输遇上网络波动:如何实现稳定高效的数据交换
  • C++访问限定符private、public、protected的使用场景
  • springboot 使用CompletableFuture多线程调用多个url接口,等待所有接口返回后统一处理接口返回结果
  • 科普:build与make
  • 对比OpenCV GPU与CPU图像缩放的性能与效果差异
  • 网络工程师行业新技术新概念
  • 【Linux】Linux中dos2unix 工具转换文件格式
  • 实验4:表单控件绑定(2学时)
  • QT OpenCV 准备工具
  • 无锁化编程(Lock-Free Programming)分析
  • Centons7 docker 安装 playwright
  • 远距离传输大型文件:企业数字化转型的挑战与突破
  • 氧气科技亮相GDMS全球数字营销峰会,分享AI搜索时代GEO新观
  • useMemo和useCallback
  • 【数据结构---图的原理与最小生成树算法,单源最短路径算法】
  • 有发声生物(猫狗鸟等)与无发声生物(蚂蚁蝙蝠蛇等)的 “感知-->行动“
  • CC 攻击为什么越来越难防?
  • 量化交易 - Multiple Regression 多变量线性回归(机器学习)
  • 【机器学习】基于双向LSTM的IMDb情感分析
  • CLR-GAN训练自己的数据集
  • LeetCode 242 有效的字母异位词
  • 中州养老:Websocket实现报警通知