JTAG 标准IEEE STD 1149.1-2013学习笔记(四)Test logic controllers

2023-10-27 18:21

本文主要是介绍JTAG 标准IEEE STD 1149.1-2013学习笔记(四)Test logic controllers,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、TAP控制器的状态转移图
  • 二、各状态介绍

注:转载请注明出处
参考JTAG标准第六章测试逻辑控制器(Test logic controllers)。
记录下学习过程,个人水平有限,可能理解有误,后续若发现错误之处,会及时更新。

VersionDate
1.02021.12.15

这篇笔记用来介绍TAP 控制器,TAP控制器是同步有限状态机,状态根据 TMS 和 TCK 信号的变化而变化,控制测试逻辑的行为,并保持测试扫描链上所有组件的同步,以允许移位、捕获和数据更新。

一、TAP控制器的状态转移图

TAP控制器的状态转移图如图1所示:
在这里插入图片描述

图1 TAP控制器状态转移图

TAP控制器根据TMS和TCK信号来控制状态转移,其中TMS在TCK上升沿采样,根据采样的TMS值来进行操作控制。根据图1可知,无论处于哪一状态,TMS只要维持5个周期的高电平就一定会回到Test-Logic-Reset状态。
在这里插入图片描述

图2 控制器的动作时序

即动作发生在状态切换后的一个周期中TCK的下降沿处或者上升沿处。

二、各状态介绍

一共16个状态,下面简单介绍一下:

  1. Test-Logic-Reset
    在上电的时候,TAP控制器将置于此状态,这种状态下,测试逻辑被禁止,片上系统逻辑正常运行,读IDCODE寄存器将禁止测试逻辑。
    此外,无论TAP控制器处于何种状态,只要将TMS信号在5个连续的TCK信号的上升沿保持高电平,TAP控制器就将进入Test-Logic-Reset状 态,目的是为了防止TMS信号毛刺导致转移到其他状态影响芯片的正常运行,错误启动测试逻辑。如果TMS信号一直为高电平,那么TAP将保持在Test-Logic-Reset状态,另外TRST信号也可以强迫TAP进入Test- Logic-Reset状态。
    处于Test-Logic-Reset状态的TAP,如果下一个TCK的上升沿时TMS信号处于低电平,那么状态将被切换到Run-Test/Idle状态。

  2. Run-Test/Idle
    只要 TMS 保持低电平,控制器保持在运行测试/空闲状态。 当 TMS 为高电平且在 TCK 的上升沿时,控制器将进入 SelectDR-Scan 状态。 在Run-Test/Idle控制器状态下,仅当存在特定指令时,所选测试逻辑中的活动才会发生。
    例如,RUNBIST 指令使片上系统逻辑的自检在此状态下执行。 由 RUNBIST 以外的指令选择的自检也可以设计为在控制器处于此状态时执行。
    对于在 Run-Test/Idle 控制器状态下不执行功能的指令,在该状态中花费的时间成为延迟(即空闲)并且当前指令选择的所有测试数据寄存器应保持其先前状态。

  3. Select-DR-Scan
    一个临时的控制器状态(即控制器在 TCK 的下一个上升沿退出该状态,即无论TMS为什么电平,下一状态都不会是其本身),当前指令选择的所有测试数据寄存器都保留其先前的状态。 如果在控制器处于此状态时 TMS 保持低电平并且处于TCK的上升沿,则控制器将进入 Capture-DR 状态并启动所选测试数据寄存器的扫描序列; 如果 TMS 保持为高电平且处于TCK的上升沿,控制器就会进入 Select-IR-Scan 状态。

  4. Select-IR-Scan
    一个临时的控制器状态(同3解释)在此状态,DR和IR都不会发生改变,在下一个TCK上升沿处,TMS为高电平则控制器回到 Test-Logic-Reset状态;若TMS为高电平则控制器进入 Capture-IR 状态并启动所选IR的扫描序列。

  5. Capture-DR
    一个临时控制器状态,在TCK 上升沿处,数据可以并行加载到当前指令选择的测试数据寄存器的移位捕获路径中,加载后TAP 控制器退出该状态。 如果当前指令选择的测试数据寄存器没有并行输入,或者如果所选测试寄存器不需要捕获,则该寄存器保持其先前状态不变。
    当 TAP 控制器处于此状态时,指令不会更改。
    当 TAP 控制器处于此状态,在下一个 TCK 上升沿处,TMS 为 1 则控制器进入 Exit1-DR 状态;若 TMS 为 0,则控制器进入 Shift-DR 状态。

  6. Shift-DR
    该状态下,作为当前指令的结果,连接在 TDI 和 TDO 之间的测试数据寄存器将数据从 TDI 向TDO移动一级,并在 下一个TCK 的上升沿移至 TDO。 当前指令选择但未放置在串行路径中的测试数据寄存器保持其先前状态不变。
    当 TAP 控制器处于此状态时,指令不会更改。
    当 TAP 控制器处于此状态,在下一个 TCK 上升沿处,TMS 为 1 则控制器进入 Exit1-DR 状态;若 TMS 为 0,则控制器保持在 Shift-DR 状态。
    当 TAP 控制器处于此状态并且对 TCK 施加上升沿时,如果 TMS 保持为 1,则控制器进入 状态,或者如果 TMS 保持为 0,则控制器保持在 Shift-DR 状态。

  7. Exit1-DR
    一个临时的控制器状态。 在下一个TCK 的上升沿处,TMS为高电平,则控制器进入Update-DR 状态,终止扫描过程;若TMS 为低电平则控制器进入 Pause-DR 状态。
    当前指令选择的所有测试数据寄存器保持其先前状态不变。当 TAP 控制器处于此状态时,指令不会更改。

  8. Pause-DR
    该状态允许临时停止 TDI 和 TDO 之间串行路径中测试数据寄存器的移位。
    当前指令选择的所有测试数据寄存器保持其先前状态不变。当 TAP 控制器处于此状态时,指令不会更改。

  9. Exit2-DR
    一个临时的控制器状态。 在下一个TCK 的上升沿处,TMS为高电平,则控制器进入Update-DR 状态,终止扫描过程;若TMS 为低电平则控制器进入 Shift-DR 状态。
    当前指令选择的所有测试数据寄存器保持其先前状态不变。当 TAP 控制器处于此状态时,指令不会更改。

  10. Update-DR
    一个临时的控制器状态。边界扫描寄存器的值一般是锁存在并行输出管脚中,以免在EXTEST或SAMPLE/PRELOAD命令下执行移位操作时改变 BSR的值。当处于Update-DR状态时选择的是BSR,那么移位寄存器中的值将在TCK的下降沿处锁存到BSR的并行输出管脚中去。
    处于Update-DR状态时,指令不会被改变。
    在下一个TCK 的上升沿处,TMS为高电平,则控制器进入Select-DR-Scan 状态,终止扫描过程;若TMS 为低电平则控制器进入 Run-Test-Idle 状态。

  11. Capture-IR
    一个临时状态。处于Capture-IR状态时,所选中的IR中的值被固定设置成01,
    处于Capture-IR状态时,指令不会被改变。
    在下一个TCK 的上升沿处,TMS为高电平,则控制器进入EXIT1-IR 状态,终止扫描过程;若TMS 为低电平则控制器进入 Shift-IR 状态。

  12. Shift-IR
    此状态下,连接在 TDI 和 TDO 之间的指令寄存器中的移位寄存器,在 TCK 的每个上升沿将数据从 TDI移位一级至 TDO。
    当前指令选择的测试数据寄存器保持其先前的状态。 当 TAP 控制器处于此状态时,指令不会更改。
    在下一个TCK 的上升沿处,TMS为高电平,则控制器进入Exit1-IR 状态,终止扫描过程;若TMS 为低电平则控制器保持 Shift-IR 状态。

  13. Exit1-IR
    一个临时的控制器状态。 在下一个TCK 的上升沿处,TMS为高电平,则控制器进入Update-IR 状态,终止扫描过程;若TMS 为低电平则控制器进入 Pause-IR 状态。
    当前指令选择的所有测试数据寄存器保持其先前状态不变。当 TAP 控制器处于此状态时,指令不会更改。

  14. Pause-IR
    该状态允许临时停止 TDI 和 TDO 之间串行路径中指令寄存器的移位。
    当前指令选择的所有测试数据寄存器保持其先前状态不变。当 TAP 控制器处于此状态时,指令不会更改。
    在下一个TCK 的上升沿处,TMS为高电平,则控制器进入Exit2-IR 状态;若TMS 为低电平则控制器保持 Pause-IR 状态。

  15. Exit2-IR
    当前指令选择的所有测试数据寄存器保持其先前状态不变。当 TAP 控制器处于此状态时,指令不会更改。
    在下一个TCK 的上升沿处,TMS为高电平,则控制器进入Update-IR 状态;若TMS 为低电平则控制器保持 Shift-IR 状态。

  16. Update-IR
    处于该状态时,移位寄存器中的值将在TCK的下降沿被锁存到指令寄存器中,一旦锁存成功,新的指令将生效代替当前指令。
    在下一个TCK 的上升沿处,TMS为高电平,则控制器进入Select-DR-Scan 状态;若TMS 为低电平则控制器保持 Run-Test-Idle 状态。

参考文献
【1】IEEE Standard for Test Access Port and Boundary-Scan Architecture IEEE Std 1149.1™-2013

这篇关于JTAG 标准IEEE STD 1149.1-2013学习笔记(四)Test logic controllers的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/287520

相关文章

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

go rate 原生标准限速库的使用

《gorate原生标准限速库的使用》本文主要介绍了Go标准库golang.org/x/time/rate实现限流,采用令牌桶算法控制请求速率,提供Allow/Reserve/Wait方法,具有一定... 目录介绍安装API介绍rate.NewLimiter:创建限流器limiter.Allow():请求是否

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

解决tomcat启动时报Junit相关错误java.lang.ClassNotFoundException: org.junit.Test问题

《解决tomcat启动时报Junit相关错误java.lang.ClassNotFoundException:org.junit.Test问题》:本文主要介绍解决tomcat启动时报Junit相... 目录tomcat启动时报Junit相关错误Java.lang.ClassNotFoundException