注:转载请注明出处
参考JTAG标准第九章测试数据寄存器(Test data registers)、第10章旁路寄存器(Bypass register)、第11章边界扫描寄存器(boundary-scan register)。
记录下学习过程,个人水平有限,可能理解有误,后续若发现错误之处,会及时更新。
Version | Date |
---|---|
1.0 | 2021.12.15 |
此标准所定义的测试逻辑架构中,测试数据寄存器至少要包括两种寄存器,分别为旁路寄存器(Bypass Register)和边界扫描寄存器(boundary-scan register),当然也有其他可选寄存器,如设备ID寄存器、芯片ID寄存器、初始化数据寄存器等。
一、TDR的实现
TDR是由多个测试数据寄存器组成,每个数据寄存器又基于移位寄存器实现,从而可以通过串行输入将数据写入选中的数据寄存器中,一种实现方案如图1所示:
实线绘制的寄存器为必须实现的数据寄存器,虚线绘制的寄存器为可选实现的。可以看到数据通过TDI端口串行输入到DR中,再通过MUX选择要输出的数据,经TDO端口输出。
下面简单介绍下所实现的一些DR。
二、Bypass Register
该寄存器只有一个移位寄存器,即只能存储1bit数据,存在的意义是当进行某项测试操作时,不需要访问其他的DR,那么TDI就选择从旁路寄存器通过,从而减少对感兴趣段的测试访问时间,也就是让数据能尽快从TDI达到感兴趣段。
实现的电路结构图如图2所示:
信号名 | 作用 |
---|---|
ShiftDR | 移位使能 |
From TDI | 串行扫描输入 |
ClockDR | 移位时钟信号,仅在Capture-DR和Shift-DR状态时有效 |
标准中提供了一个例子:
现有一个包含 100 个芯片的电路板,每个芯片的边界扫描寄存器中有 100 位。 如果所有芯片同时串联连接,则电路板上的边界扫描路径将包括 10000 个移位寄存器。 现在需要仅访问测试路径上的一个芯片,这会导致测试时间过长。但若存在旁路寄存器的话,便可大大减少路径上经过的移位寄存器级数,具体方法是将 99 个芯片设置为仅通过其旁路寄存器进行移位,而被测芯片在路径中仍是通过边界扫描寄存器去测试。 这将使总串行路径级数减少为 199 级,与 10000 级相比大幅减少。
三、Boundary-scan register
在DR中,边界扫描寄存器(BSR)是最复杂了,标准中用来解释该寄存器的篇幅也比较长,这里简单介绍一下,后续等自己理解加深后再更新。
该组件有输入输出管脚,输入输出缓冲器,输入信号分为时钟信号和非时钟信号,输出信号部分可通过一些控制信号控制其输出。
BSR的作用就是用来观察这样一个片上系统逻辑的输入输出引脚传输的数据,接下来介绍一下BSR单元
- “observe-only”单元
为三端单元,两个输入端,一个输出端,其中一个输入端接Pin,用于将输入或者输出管脚的信号加载到移位寄存器中,另外两个端口用于与其他单元相连接,组成完整的扫描链。
- “control-and-observe” 单元
为四端单元,两个输入端口,两个输出端口,其中一个输入端接Pin,用于将输入或者输出管脚的信号加载到移位寄存器中,一个输出端口用于将存储的数据加载到Pin上,另外两个端口用于与其他单元相连接,组成完整的扫描链。此单元构成的BSR就可以将期望的测试输入向量加载到芯片中。
其内部结构如图6所示:
这里多了一些输入端口,传输时钟信号和控制信号,方便通过指令对BSR进行一些操作。
参考文献
【1】IEEE Standard for Test Access Port and Boundary-Scan Architecture IEEE Std 1149.1™-2013