JTAG 标准IEEE STD 1149.1-2013学习笔记(二)Instruction register
文章目录
- 一、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相关推荐
- JTAG 标准IEEE STD 1149.1-2013学习笔记(三)Test data registers
文章目录 一.TDR的实现 二.Bypass Register 三.Boundary-scan register 注:转载请注明出处 参考JTAG标准第九章测试数据寄存器(Test data regi ...
- Dynamic CRM 2013学习笔记(十八)根据主表状态用JS控制子表自定义按钮
有时要根据主表的审批状态来控制子表上的按钮要不要显示,比如我们有一个需求审批通过后就不能再上传文件了. 首先打开Visual Ribbon Editor, 如下图,我们可以利用Enable Rules ...
- Dynamic CRM 2013学习笔记(一)插件输入实体参数解析
1. 问题描述 最近新建了一个post事件的插件,传入的参数处理如下: 1: if (context.InputParameters.Contains("Target") & ...
- Dynamic CRM 2013学习笔记(四十三)流程6 - 自定义流程活动
当我们在流程里添加步骤时,有一些默认的步骤,像创建.更新.发邮件等,但如果你想加一个里面没有的步骤,比如发SMS消息,或者调用一个外部的web service,怎么办?这时就只能自定义一个流程活动了. ...
- Dynamic CRM 2013学习笔记(四十二)流程5 - 实时/同步工作流(Workflow)用法图解...
实时工作流跟插件一样,也是用事件执行管道来执行,能在pre,post或核心操作中执行.跟插件一样,不能在创建之前和删除之后执行.如果执行过程中有异常发生,会取消并回滚整个操作.实时工作流里所有的活动和 ...
- Dynamic CRM 2013学习笔记(三十三)自定义审批流4 - 规则节点 -有分支的流程处理...
上次介绍过节点的基本配置<Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置>,这次介绍下规则节点,因为有时流程里会有一些分支.合并,这时就要用到规则节点 ...
- fetchxml 汇总_Dynamic CRM 2013学习笔记(十七)JS读写各种类型字段方法及技巧
我们经常要对表单里各种类型的字段进行读取或赋值,下面列出各种类型的读写方法及注意事项: 1. lookup 类型 清空值 var state = Xrm.Page.getAttribute(" ...
- Dynamic CRM 2013学习笔记(二十二)插件里调用WCF服务
1. 添加service: 2.调用WCF BasicHttpBinding myBinding = new BasicHttpBinding(); myBinding.Name = "Ba ...
- PyTorch学习笔记(二)——回归
PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...
最新文章
- [译]Godot系列教程一 - 场景与节点
- HTML5 geolocation和BaiduMap、BingMap、GoogleMap
- newInstance() 方法
- python设计一个动物类_python面向对象 动物园 例题
- 彻底搞清楚MySQL分库、分表、分区的区别
- Android进程优先级architecture : low memory killer (/system/core/lmkd/lmkd.c)
- HDU - 5889 Barricade(最短路+最小割-最大流)
- Go 面向对象编程(译)
- 安徽工程大学大学计算机基础,安徽工程大学.pdf
- 无法下载linux系统的驱动精灵,【驱动精灵和搜狗输入法 For Linux哪个好用】驱动精灵和搜狗输入法 For Linux对比-ZOL下载...
- VC++实现全局钩子勾住消息对话框
- 线程池与Threadlocal
- Racket语言简单使用
- dm385和8127的区别
- 拳皇觉醒服务器维护,拳魂觉醒活动什么时候开 服务器开区活动时间顺序
- GAMES101 Lec6 反走样与深度缓冲
- 2月编程语言排行榜谁还没有看?
- 云服务赛道竞速,谁是云背后的力量?
- 【饭谈】为什么有的同事那么菜但工资比自己高?
- 【闲聊杂谈】Redis中的CAP理论
热门文章
- 用效劳来获取网络图片和播放音乐的比如。主要是效劳传递数据的操练
- 无法定位程序输入点H5Rdereference于动态链接库 libmat.dll上
- 广州联通用户开通GPRS上网流量包月如意通上网王本地王
- iOS开发 编译工程师 遇到once.h beng'kuispatch_once(predicate,block)重新拉取代码后解决
- MIPS 是什么意思? MIPS/MHZ 又是什么意思?
- 安卓通过SurfaceView类实现手写功能(上)
- 水经注下载的DAT文件用什么软件打开
- 在Windows11上安装虚拟机Hyper-V
- echart legend 不显示_echart不显示legend
- js 获取图片原始宽高并等比例缩放