图一
图1 中“TAP Controller”其实质上是一个状态机,它根据不同的操作指令能产生16 个不同的状态,具体状态逻辑参考图2。从一个状态切换成另一个状态总是发生在TCK 的上升沿,由TMS从两个状态选择其中一个状态。在测试向量寄存器中,既有指令寄存器(IR),又有数据寄存器(DR),为了区分是指令还是数据,扫描链路中的状态图有两个独立的完全类似的结构(Scan DR / Scan IR)。
测试操作的最重要步骤是移入和同步移出测试数据(DR SHIFT),新的数据进入移位链,测试数据传送到测试单元(DR-update)的输出锁存器中,对于指令寄存器(IR-shift,IR-capture,IR-update)同样如此。除了边界扫描寄存器(Boundary Scan Register),IEEE 1149.1标准还定义了在数据寄存器附近至少存在一个旁路寄存器,用来将TDI 到TDO 的可以直连接。数据寄存器根据指令寄存器的指令寻址,然后在TDI 和TDO 的引脚之间,各个数据寄存器结合成移位路径。正如图2 所示,从一个状态转换成另一个状态由信号TMS 的逻辑电平决定。“TAP ”是一个时钟系统,它的时钟是由信号TCK 提供。信号TMS 和信号TCK共同作用,使得数据一位一位从TDI 移入,最后由TDO 移出。
各种边界扫描单元是否有效取决于是否实行测试或者得到激励。
图3 就是一个最普通的边界扫描单元的结构图。第一个锁存器锁存数据由移位寄存器(SHIFT DR)决定从前一个扫描单元移出的数据(SCAN IN)或者是扫描输入的数据(DATA IN),并且由CLOCK DR控制锁存输出。在第一个锁存器移出数据稳定后,第二个锁存器由UPDATE DR 控制锁存输出第一个锁存器移出的数据。MODE 信号的电平决定是测试模式还是工作模式。边界扫描单元既有输入又有输出。一般来说,在每一个物理引脚不论输入还是输出,都有一个独立的边界扫描单元,但区别是输入在每一个物理引脚的后面,而对于所有的输出是在每一个物理引脚的前面。
MODE, SHIFT DR, UPDATE DR 以及CLOCK DR 这些全局信号线与所有扫描单元都相连接,而且同一个时间状态都一样。这样,TAP 状态在CAPTURE DR 时,所有的扫描单元都能在CLOCK DR 的上升沿取样输入数据。测试数据的输出也相类似,它是在TAP 状态在UPDATE DR 的下降沿时将扫描输入端锁存并输出。所有的扫描单元都能完成以上功能。所有的扫描单元运行在工作模式还是在测试模式,由MODE 信号控制选择其一,同时运行在两个模式是不可能的。而MODE 信号是由扫描指令控制的。
九大指令
指令(必须/可选) | 操作码 | 模式 | 选择数据寄存器 |
EXTEST | 0...0* | 测试 | Boundary |
SAMPLE/PRELOAD | 用户定义 | 一般 | Boundary |
BYPASS | 1...1 | 一般 | Bypass |
INTEST | 用户定义 | 测试 | Boundary |
RUNBIST | 用户定义 | 测试 | 用户定义 |
INCODE | 用户定义 | 一般 | 器件ID |
USERCODE | 用户定义 | 一般 | 器件ID |
CLAMP | 用户定义 | 测试 | Bypass |
HIGHZ | 用户定义 | 测试 | Bypss |
用户定义 | 用户定义 | 用户定义 | 用户定义 |
Extest指令--强制指令
原先EXTEST指令时强制为全“0”的,在IEEE 1149.1--2001中,这条强制取消了。选择EXTEST指令时,IC工作在边界扫描外部测试模式(external boundary-test mode),也就是说对IC的操作影响芯片的正常工作。选择边界扫描寄存器连通TDI和TDO。在这种指令下,可以通过边界扫描输出单元来驱动测试信号至其他边界扫描芯片,以及通过边界扫描输入单元来从其他边界扫描芯片接收测试信号。EXTEST指令是IEEE 1149.1标准的核心所在,在边界扫描测试中的互连测试(interconnect test)就是基于这个指令的。
Sample/Preload指令--强制指令
Bypass指令--强制指令
INTEST指令 ---可选指令
选择INTEST指令时,IC工作在边界扫描内部测试模式(internal boundary-test mode),选择边界扫描寄存器连通TDI和TDO。在这种指令下,可以通过边界扫描输出单元来驱动测试信号至其内部逻辑,以及通过边界扫描输入单元来从 其内部逻辑接受测试信号。
RUNBIST指令 ---可选指令
选择RUNBIST指令时,IC工作在自测试模式(self-test mode),对IC的内部逻辑进行全面的自测试,通过选择用户自定义的数据寄存器连通TDI和TDO。在这种指令下,边界扫描单元的输出被内部逻辑控制了,所以外部信号不能干扰其相邻IC。
IDCODE指令 ---可选指令
选择IDCODE指令时,IC工作在正常工作模式,选择数据识别寄存器(data identification register)连通TDI和TDO。数据识别寄存器是一个32位的寄存器,内容包括IC的生产厂商,芯片类型,版本等。访问数据识别寄存器不会影响 IC的正常工作。由于IDCODE指令是可选的,不是每个芯片都有的,所以当对一个边界扫描链(scan chain)执行IDCODE指令来输出所有IDCODE时,有IDCODE指令的芯片就选择IDCODE寄存器,输出输出IDCODE,没有 IDCODE指令的芯片会自动选择BYPASS寄存器,输出一个“0”。 (读取CPU ID号指令。在设计中存在device identification register时,TAP强制定义。该指令将处理器的ID号寄存器连接到TDI和TDO之间。)
USERCODE指令 ---可选指令
选择USERCODE指令时,IC工作在正常工作模式,选择用户自定义数据寄存器(user defined test data register)连通TDI和TDO。USERCODE指令一般是在进行芯片内部测试时用的。
CLAMP指令 ---可选指令
CLAMP指令使IC的输出置于由边界扫描寄存器的当前内容决定的逻辑电平上,选择BYPASS寄存器连通 TDI和TDO。在加载这个指令之前,边界扫描寄存器的内容可以由SAMPLE/PRELOAD指令来预置。在CLAMP指令下,数据通过BYPASS寄 存器从TDI传递至TDO,不会影响此IC的输出。
HIGHZ指令 ---可选指令
HIGHZ指令使IC的所有输出置于高阻状态,选择BYPASS寄存器连通TDI和TDO。在HIGHZ指令下,数据通过BYPASS寄存器从TDI传递至TDO,不会影响此IC的输出。