JTAG IEEE 1194.1笔记
JTAG IEEE 1194.1笔记
边界扫描架构
架构框图
架构组成元素
测试逻辑架构的必要组成元素:
- 测试访问端口(TAP)
- TAP控制器(状态机)
- 一个指令寄存器
- 一组数据寄存器
上述所有元素都是测试专用的(不可以用于其他用途),用户自定义数据寄存器例外。
测试访问端口
如上图所示,TCK、TMS、TDI和TDO是TAP接口必须的要求的,同时上电复位或者专用TRST引脚也是必须(二选一)。所有的TAP接口相关引脚都是专用的,不可用于其他目的。
TDI、TMS、TRST引脚的信号要求上拉,所有的输入在TCK的上升沿采样,所有的输出在TCK的下降沿采样。
状态控制器
TAP控制器要求严格遵循上图所示状态图,控制器下一状态由TCK的上升沿时当前状态和TMS的输入值决定。指令扫描(IR-Scan)序列要求仅仅访问单个指令寄存器。数据扫描(DR-Scan)序列要求仅仅访问当前指令所选的数据寄存器。TDO只有在Shift-IR和Shift-DR状态是有效的。
TAP控制器输出
TAP控制器输出如下:
- IR扫描和更新时钟,shift和capture选择;
- DR扫描和更新时钟,shift和capture选择;
- TDO使能,TDO指令和数据选择。
寄存器概述
|寄存器(要求/可选) | 位宽 | Capture Value | 相关指令
寄存器(要求/可选) | 位宽 | Capture Value | 相关指令 |
---|---|---|---|
指令寄存器 | 位宽至少为2 | X…01 | n/a |
边界寄存器 | 用户定义 | 用户定义 | Extest;Sample/Preload;Intest;Clamp;HighZ |
Bypass | 1 | 0 | Bypass |
设备ID | 32 | X…1 | IDCODE User Code |
用户定义 | 用户定义 | 用户定义 | 用户定义 |
指令寄存器
指令寄存器的位宽至少为2,指令寄存器在Capture-IR状态的上升沿被装载到IR的值最低两位必须为"01",其他位的值可以用户自定义。指令寄存器要求有一个锁存并行输出,一旦指令移位结束后(在Update-IR的TCK下降沿),新的指令就生效了。在TAP复位后,指令寄存器的值一般为IDCODE,如果未实现ICODE指令,那么指令寄存器的值应该是Bypass。
数据寄存器
IEEE 1194.1要求实现至少两个数据寄存器:
- 边界扫描寄存器:所有的边界扫描单元串行拼接(每个Cell的位宽需要查看具体的资料手册),每个引脚至少一个Cell;
- Bypass寄存器。
边界扫描寄存器
边界扫描寄存器由所有边界扫描单元组成,每个数字输入和输出都至少拥有一个边界扫描单元。但是,在TAP引脚、一致性使能引脚和非数字信号引脚不允许有边界扫描单元。
Bypass寄存器
Bypass寄存器要求位宽为1,在Capture-DR阶段加载的值为0。对Bypass寄存器执行任何操作都不应该影响系统逻辑的工作。
设备ID寄存器
设备的ID寄存器要求位宽为32,在Capture-DR阶段,IDCODE的值被加载到TDI到TDO扫描链,IDCODE由四部分组成:
- 最低位:规定恒为1;
- Bit 1-11:厂商代码;
- Bit 12-27:物料代码;
- Bit 28-31:版本代码
对IDCODE寄存器的操作不应影响系统逻辑的工作。
指令概述
|指令(要求/可选) | Opcode| Mode | 相关数据寄存器
寄存器(要求/可选) | 位宽 | Capture Value | 相关指令 |
---|---|---|---|
EXTEST | 0…0* | 测试 | 边界扫描寄存器 |
SAMPLE/PRELOAD | 用户定义 | Normal | 边界扫描寄存器 |
Bypass | 1…1* | Normal | Bypass |
INTEST | 用户定义 | 测试 | 边界扫描寄存器 |
RUNBIST | 用户定义 | 测试 | 用户定义 |
IDCODE | 用户定义 | 测试 | Device ID |
USERCODE | 用户定义 | 测试 | Device ID |
CLAMP | 用户定义 | 测试 | BYPASS |
HIGHZ | 用户定义 | 测试 | BYPASS |
用户定义 | 用户定义 | 测试 | 用户定义 |
EXTEST指令
EXTEST指令提供了芯片与外部交互的测试,芯片的输出引脚工作在测试模式,输出引脚的状态由DR-UPDATE锁存的BSC内容驱动。在BSC的输入数据在Shift操作前锁存。shift操作允许在TDO观察测试响应,同时在TDI插入下一个测试激励。在移位操作后,新的测试激励传输到BSC更新锁存。
Sample/Preload指令
Bypass指令
Bypass指令用于缩短JTAG链路扫描途径。输入和输出工作在正常模式,单bit Bypass寄存器用于选择作为扫描。要求:所有全"1"指令或TAP控制器不支持的指令都会被解码为Bypass指令。