JTAG (Joint Test Action Group,联合测试工作组) 是一种国际标准测试协议(IEEE 1149.1 兼容),主要用于芯片内部测试。现在多数的高级器件都支持 JTAG 协议,如 DSP、FPGA 器件等。标准的 JTAG 接口是 4 线:TMS(测试模式选择)、TCK(测试时钟输入)、TDI(测试数据输)、TDO(测试数据输出),JTAG 最初是用来对芯片进行测试的,JTAG 的基本原理是在器件内部定义一个 TAP(Test Access Port,测试访问口)通过专用的 JTAG 测试工具对内部节点进行测试。JTAG 测试允许多个器件通过 JTAG 接口串联在一起,形成一个 JTAG 链,能实现对各个器件分别测试。如今,JTAG 接口还常用于实现 ISP(In-System Programmer
,在系统编程),对 FLASH 等器件进行编程。
主要用于芯片内部测试。现在多数的高级器件都支持 JTAG 协议,如 DSP、FPGA 器件等。标准的 JTAG 接口是 4 线:TMS(测试模式选择)、TCK(测试时钟输入)、TDI(测试数据输入)、TDO(测试数据输出),JTAG 最初是用来对芯片进行测试的,JTAG 的基本原理是在器件内部定义一个 TAP(Test Access Port,测试访问口)通过专用的 JTAG 测试工具对内部节点进行测试。JTAG 测试允许多个器件通过 JTAG 接口串联在一起,形成一个 JTAG 链,能实现对各个器件分别测试。如今,JTAG 接口还常用于实现 ISP(In-System Programmer,在系统编程),对 FLASH 等器件进行编程。
当一个系统中含有多片(2 片以上)XilinxFPGA、CPLD 或 PROM(FLASH)时,为解决 JTAG 口过多占用 PCB 的问题,可采用单一 JTAG 口以菊花链(Daisy Chain)形式将所有芯片串联起来实现下载编程 (在 FPGA 应用尤其广泛),如下图所示。

JTAG 菊花链中,TMS、TCK 是一主多从并联的结构, TMS 是一个模式选择开关信号;TCK 是时钟脉冲信号,缺省频率为 6MHz, 所有从器件接收同一个时钟信号。TDI、TDO 是一主一从串联的,只有链上的第一个从器件 (SLAVE 1) 从 Header 直接接收命令。 其他所有从器件都从链上前一个器件的 TDO 输出获得其 TDI 数据。当通过 TDI 引脚输入我们自己的信号的时候,会发生沿上面红线方向的移位操作, TDI→FPGA1→TDO→TDI→FPGA2→TDO→…… 就能将从 TDI 输入的信号传导到每一个 FPGA 内。
配图为 SPI 菊链的时序,原理与 JTAG 的相似。
由于 TCK 和 TMS 两个信号是连接到菊花链中的所有芯片,因此这两个信号的质量(完整性)非常重要!特别是时钟信号 TCK,任何毛刺干扰和边沿抖动都会导致下载失败。当菊花链中的芯片(或设备)在 3 个以上时,TMS 和 TCK 必须加缓冲器(如 74LVC245),以增加其驱动能力,对于一些驱动能力差的国产下载器尤其重要。每个驱动门所在分支链路中的芯片(或设备)数量取决于缓冲器的驱动能力,一般 74LVC245 (8 缓冲) 的一个缓冲门可驱动 3~4 个负载(芯片)。在 TCK 的缓冲器输出端串接一个 20~30Ω 的电阻,设备端并接一个 100~1000p 的电容到地,可明显降低边沿抖动、减少毛刺干扰。
要保证菊链正常工作, 每一个从器件就必须能在给定的命令周期内 (定义为每一个命令所需的时钟数) 从 TDI 引脚读入命令, 而在下一个命令周期从 TDO 引脚输出同样的命令。 显然,从 TDI 到 TDO 会有一个命令周期的延迟。
JTAG 协议规定 TCK 下降沿输出 TDI 数据有效,并在 TCK 上升沿采集 TDO 数据,因此,在整个 JTAG 链中必须保证 TDI 至 TDO 的贯通延时(Propagation Delay)TCPD 必须小于 TCK 的 1/2 周期 TCLK/2,即△T=TCLK/2 –TCPD>0。也就是说,在增加缓冲驱动的情况下,JTAG 链路中的芯片总数与每个芯片的 TDO 延时 TDOV(FPGA 为 TTCKTDO)和 TCK 频率有关。在芯片总数确定以后,为保证△T>0,可以降低 TCK 的频率。
菊链结构有两个好处:(1)可以节省多个 JTAG 口所占用的 PCB 空间,特别适合空间有限的嵌入式系统,如小型工业摄像机等;(2)嵌入式系统处于封闭环境中,有时需要对系统中的 FPGA 程序进行在线或远程升级,必须将 JTAG 口引到机箱外,显然这种单 JTAG 口的菊花链结构是最佳选择。



