JTAG(Joint Test Action Group;联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1 兼
容),主要用于芯片内部测试。现在多数的高级器件都支持 JTAG 协议,如 DSP、
��FPGA 器件等。标准的 JTAG 接口是 4 线:TMS、TCK、TDI、TDO,分别为模式选择、
时钟、数据输入和数据输出线。
��JTAG 最初是用来对芯片进行测试的,基本原理是在器件内部定义一个 TAP(Test
Access Port;测试访问口)通过专用的 JTAG 测试工具对进行内部节点进行测试。JTAG 测试
允许多个器件通过 JTAG 接口串联在一起,形成一个 JTAG 链,能实现对各个器件分别测试。
现在,JTAG 接口还常用于实现 ISP(In-System Programmable�在线编程),对 FLASH 等
器件进行编程。
��JTAG 编程方式是在线编程,传统生产流程中先对芯片进行预编程现再装到板上因此而
改变,简化的流程为先固定器件到电路板上,再用 JTAG 编程,从而大大加快工程进度。JTAG
接口可对 PSD 芯片内部的所有部件进行编程
具有 JTAG 口的芯片都有如下 JTAG 引脚定义:
TCK——测试时钟输入;
TDI——测试数据输入,数据通过 TDI 输入 JTAG 口;
TDO——测试数据输出,数据通过 TDO 从 JTAG 口输出;
TMS——测试模式选择,TMS 用来设置 JTAG 口处于某种特定的测试模式。
可选引脚 TRST——测试复位,输入引脚,低电平有效。
含有 JTAG 口的芯片种类较多,如 CPU、DSP、CPLD 等。
JTAG 内部有一个状态机,称为 TAP 控制器。TAP 控制器的状态机通过 TCK 和 TMS 进行
状态的改变,实现数据和指令的输入。图 1 为 TAP 控制器的状态机框图。
2 JTAG 芯片的边界扫描寄存器
JTAG 标准定义了一个串行的移位寄存器。寄存器的每一个单元分配给 IC 芯片的相应引脚,
每一个独立的单元称为 BSC(Boundary-Scan Cell)边界扫描单元。这个串联的 BSC 在 IC
内部构成 JTAG 回路,所有的 BSR(Boundary-Scan Register)边界扫描寄存器通过 JTAG 测
试激活,平时这些引脚保持正常的 IC 功能。图 2 为具有 JTAG 口的 IC 内部 BSR 单元与引
脚的关系。
3 JTAG 在线写 Flash 的硬件电路设计和与 PC 的连接方式
以含 JTAG 接口的 StrongARM SA1110 为例,Flash 为 Intel 28F128J32 16MB 容量。SA1110
的 JTAG 的 TCK、TDI、TMS、TDO 分别接 PC 并口的 2、3、4、11 线上,通过程序将对 JTAG
口的控制指令和目标代码从 PC 的并口写入 JTAG 的 BSR 中。在设计 PCB 时,必须将
SA1110 的数据线和地址线及控制线与 Flash 的地线线、数据线和控制线相连。因 SA1110 的
数据线、地址线及控制线的引脚上都有其相应 BSC,只要用 JTAG 指令将数据、地址及控