文章目录

  • 一、D型扫描触发器
  • 二、IR 电路结构
  • 三、指令寄存器的操作

注:转载请注明出处
参考JTAG标准第七章指令寄存器(Instruction register)
记录下学习过程,个人水平有限,可能理解有误,后续若发现错误之处,会及时更新。

Version Date
1.0 2021.12.14

顾名思义,指令寄存器用来存储指令的,指令通过TDI输入到指令寄存器,再通过指令译码,产生对应控制信号, 用于选择要执行的测试操作或要访问的测试数据寄存器(DR)。

一、D型扫描触发器

在正式介绍IR结构之前,先介绍下带多路选择器的D型扫描触发器,此扫描触发器是扫描测试结构的基本单元。

图1 D型触发器和带多路选择器的D型扫描触发器

扫描触发器有两种工作模式,分别为:

  • 正常工作模式:scan_enable 为 0,此时数据从D端输入,从Q端输出。
  • 扫描移位模式:scan_enable 为 1,此时数据从scan_in 输入,从scan_out输出(Q与scan_out复用)

将这种扫描单元按照扫描移位模式连接起来,就构成了扫描测试中的基本结构,这里仅简单介绍全扫描。全扫描就是多个扫描单元相连接,上一单元的扫描输出,连接到目前单元的扫描输入,目前单元的扫描输出连接到下一单元的扫描输入,以此类推,构成一条移位寄存器链,如图2所示:

图2 全扫描

这样的扫描结构,可通过一个串行输入端,将期望的数据存入移位寄存器链并观察运行结果。

二、IR 电路结构

指令寄存器的电路结构与全扫描类似,同样是采用了移位寄存器链。其扫描单元如图3所示:

图3 IR扫描单元 表1 IR扫描单元信号概述

信号名 作用
ShiftIR 移位使能
PI Data 并行输入数据
From last cell 扫描输入(数据来自上一扫描单元的扫描输出端口)
ClockIR 扫描单元时钟信号,仅在Capture-IR和Shift-IR状态时有效
Update IR 指令位触发器时钟信号,仅在Update-IR状态时有效
Reset 复位信号,用于强制性指令解码(BYPASS或IDCODE)
To next cell 扫描输出(连接到下一扫描单元的扫描输入端口)
Instruction bit 指令位,指示是否为该指令位对应的指令

构成的移位寄存器链如图4所示:

图4 带译码器的IR完整电路

扫描路径已经用红色笔标注了,所以IR就是根据TAP输出的控制信号,来进行对应的移位,更新,捕获等操作,译码器对指令进行译码,并将对应的指令位置1并输出来控制测试逻辑架构其他组件。其中在 Test-Logic-Reset 状态时,Instruction1将被复位,表示强制性指令BYPASS或者IDCODE。

三、指令寄存器的操作

在不同的 TAP 控制器状态下,IR进行的操作不同,详情见图5:

图5 每个 TAP 状态下IR的操作

可以看到 IR 扫描单元存储值只在Shift-IR状态和Capture-IR状态发生改变,且指令只在 Test-Logic-Reset 和 Update-IR 状态更新并生效,其中前者是复位到强制性指令BYPASS或者IDCODE,后者则是更新为译码器结果。

参考文献
【1】IEEE Standard for Test Access Port and Boundary-Scan Architecture IEEE Std 1149.1™-2013
【2】SoC设计方法与实现 第三版 郭炜

JTAG 标准IEEE STD 1149.1-2013学习笔记(二)Instruction register相关推荐

  1. JTAG 标准IEEE STD 1149.1-2013学习笔记(三)Test data registers

    文章目录 一.TDR的实现 二.Bypass Register 三.Boundary-scan register 注:转载请注明出处 参考JTAG标准第九章测试数据寄存器(Test data regi ...

  2. Dynamic CRM 2013学习笔记(十八)根据主表状态用JS控制子表自定义按钮

    有时要根据主表的审批状态来控制子表上的按钮要不要显示,比如我们有一个需求审批通过后就不能再上传文件了. 首先打开Visual Ribbon Editor, 如下图,我们可以利用Enable Rules ...

  3. Dynamic CRM 2013学习笔记(一)插件输入实体参数解析

    1. 问题描述 最近新建了一个post事件的插件,传入的参数处理如下: 1: if (context.InputParameters.Contains("Target") & ...

  4. Dynamic CRM 2013学习笔记(四十三)流程6 - 自定义流程活动

    当我们在流程里添加步骤时,有一些默认的步骤,像创建.更新.发邮件等,但如果你想加一个里面没有的步骤,比如发SMS消息,或者调用一个外部的web service,怎么办?这时就只能自定义一个流程活动了. ...

  5. Dynamic CRM 2013学习笔记(四十二)流程5 - 实时/同步工作流(Workflow)用法图解...

    实时工作流跟插件一样,也是用事件执行管道来执行,能在pre,post或核心操作中执行.跟插件一样,不能在创建之前和删除之后执行.如果执行过程中有异常发生,会取消并回滚整个操作.实时工作流里所有的活动和 ...

  6. Dynamic CRM 2013学习笔记(三十三)自定义审批流4 - 规则节点 -有分支的流程处理...

    上次介绍过节点的基本配置<Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置>,这次介绍下规则节点,因为有时流程里会有一些分支.合并,这时就要用到规则节点 ...

  7. fetchxml 汇总_Dynamic CRM 2013学习笔记(十七)JS读写各种类型字段方法及技巧

    我们经常要对表单里各种类型的字段进行读取或赋值,下面列出各种类型的读写方法及注意事项: 1. lookup 类型 清空值 var state = Xrm.Page.getAttribute(" ...

  8. Dynamic CRM 2013学习笔记(二十二)插件里调用WCF服务

    1. 添加service: 2.调用WCF BasicHttpBinding myBinding = new BasicHttpBinding(); myBinding.Name = "Ba ...

  9. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

最新文章

  1. [译]Godot系列教程一 - 场景与节点
  2. HTML5 geolocation和BaiduMap、BingMap、GoogleMap
  3. newInstance() 方法
  4. python设计一个动物类_python面向对象 动物园 例题
  5. 彻底搞清楚MySQL分库、分表、分区的区别
  6. Android进程优先级architecture : low memory killer (/system/core/lmkd/lmkd.c)
  7. HDU - 5889 Barricade(最短路+最小割-最大流)
  8. Go 面向对象编程(译)
  9. 安徽工程大学大学计算机基础,安徽工程大学.pdf
  10. 无法下载linux系统的驱动精灵,【驱动精灵和搜狗输入法 For Linux哪个好用】驱动精灵和搜狗输入法 For Linux对比-ZOL下载...
  11. VC++实现全局钩子勾住消息对话框
  12. 线程池与Threadlocal
  13. Racket语言简单使用
  14. dm385和8127的区别
  15. 拳皇觉醒服务器维护,拳魂觉醒活动什么时候开 服务器开区活动时间顺序
  16. GAMES101 Lec6 反走样与深度缓冲
  17. 2月编程语言排行榜谁还没有看?
  18. 云服务赛道竞速,谁是云背后的力量?
  19. 【饭谈】为什么有的同事那么菜但工资比自己高?
  20. 【闲聊杂谈】Redis中的CAP理论

热门文章

  1. 用效劳来获取网络图片和播放音乐的比如。主要是效劳传递数据的操练
  2. 无法定位程序输入点H5Rdereference于动态链接库 libmat.dll上
  3. 广州联通用户开通GPRS上网流量包月如意通上网王本地王
  4. iOS开发 编译工程师 遇到once.h beng'kuispatch_once(predicate,block)重新拉取代码后解决
  5. MIPS 是什么意思? MIPS/MHZ 又是什么意思?
  6. 安卓通过SurfaceView类实现手写功能(上)
  7. 水经注下载的DAT文件用什么软件打开
  8. 在Windows11上安装虚拟机Hyper-V
  9. echart legend 不显示_echart不显示legend
  10. js 获取图片原始宽高并等比例缩放