分享

JTAG— 技术概览

 waston 2018-03-22

本文提供了有关XJTAG技术基础的有趣背景信息。当然,您不需要知道这些信息也能使用XJTAG开发系统,因为XJTAG测试是用高级编程语言开发出来的,而不需要任何对于JTAG详细运作的了解。

引言

硅设计的进步,例如不断增长的器件密度和最近的BGA封装,已经削弱了传统测试方法的功效。

为了克服这些问题,一些世界领先的硅制造商结合起来成立了联合测试行动小组。这个小组的发现和建议被用来作为电气与电子工程师协会(IEEE)1149.1标准的基础:标准测试访问端口和边界扫描架构。这个标准保留了和这个小组的联系而且以JTAG俗称。

边界扫描

使用边界扫描技术所提供的主要优势在于无须直接物理访问就可以设置和读取针脚的数值。

 

一个启用JTAG器件的示意图

图1:一个启用JTAG器件的示意图

参考图1中的示意图可以最容易地理解边界扫描的过程。

所有器件核心逻辑与针脚之间的信号都被一个称为边界扫描寄存器(BSR)串联扫描路径所拦截。正常运行时,这些边界扫描单元是不可见的。但是,在测试模式下这些单元可以被用来设置和(或)读取数值:在外置模式下,这些是针脚的值;在内置模式下,这些是核心逻辑的值。

接口信号

JTAG接口,总称测试访问接口TAP,使用如下信号来支持边界扫描操作。

  • TCK(测试时钟)–这个信号同步内部状态机的操作。
  • TMS(测试模式选择)–这个信号对TCK的上升边缘采样以判定下一个状态。
  • TDI(测试数据输入)–这个信号代表移入器件测试或编程逻辑的数据。当内部状态机在正确的状态时,它在TCK的上升边缘处采样。
  • TDO(测试数据输出)–这个信号代表移出器件测试或编程逻辑的数据并且当内部状态机处于正确的状态时,在TCK的下降边缘处有效。
  • TRST(测试重置)–这是一个可选针脚,当存在时,可以重置TAP控制器的状态机。

寄存器

有两类寄存器与边界扫描相关。每个兼容器件都有一个指令寄存器和两个或两个以上的数据寄存器。

指令寄存器–指令寄存器存有当前的指示。它的内容被TAP控制器用来决定如何处理接收到的信号。通常,指令寄存器的内容定义信号被传递到的数据寄存器。

数据寄存器–有三个主要的数据寄存器,边界扫描寄存器(BSR),旁路寄存器和识别码寄存器。其他数据寄存器可能存在,但不是JTAG标准所需的部分。

  • BSR–这是主要测试的数据寄存器。它被用来把数据从器件I/O针脚处移出和移入。
  • BYPASS这是一个把信息从TDI传到TDO的单位寄存器。它可以用最小的系统开销来测试电路中其他的器件。
  • IDCODES–这个寄存器含有器件的识别码和版本序号。这个信息可以使器件和它的边界扫描描述语言(BSDL)文件相关联这个文件含有器件边界扫描配置的详细情况。

测试访问端口(TAP)控制器

TAP控制器作为一个被TMS信号控制转换的状态机,控制着JTAG系统的行为。图2,如下,显示了状态机的图表。

TAP状态机

图2:TAP状态机

所有的状态都有两个退出,所以所有的转换都可以被一个在TCK上采样的单一TMS信号所控制。两条主要路径可以使信息从不是器件的数据寄存器就是器 件的指令寄存器中设定或读取。被操作的数据寄存器(如BSR, IDCODES, BYPASS)取决于指令寄存器中载入的值。

想要了解每个状态更详细的信息,请参考IEEE1149.1标准的JTAG文件。

边界扫描指令集

IEEE1149.1标准定义了一系列被视为兼容的器件所必须具备的指令。这些指令是:

  • BYPASS–这个指令用一个单位的贯通寄存器(旁通寄存器)来连接TDI和TDO线。这个指令使JTAG链上其他器件的测试不用不必要的系统开销。
  • EXTEST–这个指令用一个边界扫描寄存器(BSR)来连接TDI和TDO。器件针脚的状态通过‘捕获数据寄存器’的JTAG状态来采样而新值则通过‘移位数据寄存器’的状态转移到BSR中;这些数值然后通过‘更新数据寄存器’的状态来应用到器件的针脚上。
  • SAMPLE/PRELOAD(采样/预装)–这个指令用一个BSR来连接TDI和TDO。尽管如此,器件被置于正常运行的模式。在这个指 令下,可以通过一个数据扫描操作访问BSR来对于进入和流出器件的功能数据采样。这个指令还可以用来在装载EXTEST指令之前预装测试数据到BSR上。

其他通常可用的指令包括:

  • IDCODE–这个指令用一个识别码寄存器来连接TDI和TDO。
  • INTEST–这个指令用一个边界扫描寄存器(BSR)来连接TDI和TDO线。EXTEST指令允许用户设置和读取针脚状态,而INTEST指令则与器件核心逻辑信号相关联。

获取IEEE1149.1标准

IEEE1149.1标准的JTAG规范可以从IEEE直接获取:

http://standards.


什么是JTAG那么,我怎么样才能利用它呢?

JTAG不只是调试和编程

JTAG不只是调试和编程您可能会熟悉JTAG,这因为您曾使用过带有JTAG接口的工具。处理器经常使用JTAG来为它们的调试、仿真功能提供访问,而所有的FPGA和CPLD则使用JTAG来为它们的编程功能提供访问。

JTAG不只是一项用作处理器调试、仿真的技术
JTAG不只是一项用来给FPGA、CPLD编程的技术

通常与JTAG相关的调试与编程工具只利用了其底层技术的一个方面——即四线JTAG通信协议。

Boundary Scan Register (BSR) for JTAG testing

这四个信号,总称测试访问端口或TAP(Test Access Port),是IEEE1149.1标准的一部分。

这个标准是为了提供一项不用针床测试所需求的物理访问程度,或者功能测试所需的定制开发数量就能测试印刷电路板装配(Printed Circuit Board Assemblies)的技术而被开发出来的。

TAP是被设计用来与设备中新加入的的寄存器相互动的,以此来实现这个测试方法。

然而,硅厂商很快就意识到使用TAP访问寄存器所提供的例如调试和编程等其他功能的益处。

用于JTAG测试而特意加入设备中的主要寄存器叫作边界扫描寄存器(Boundary Scan Register)。

正如它名字所提示的那样,这个寄存器中的单个模块,或者单元,都位于设备的边界上,在它的功能核心和与板卡相连的针脚或焊点之间——很多时候
JTAG测试被称为边界扫描。

JTAG/边界扫描是怎样被用来测试一个板卡的?

边界扫描单元(见上图)可以在两种模式中运行。在它的功能模式下,它并不影响设备的运行——这是板卡正常运行时所处在的模式。在它的测试模式下,它断开设备功能核心与针脚的连接。通过把边界扫描单元置于测试模式中,它可以被用来控制从一个被启用的设备向一个网里所驱入的值,而且还可以被用来监视那个网的值。

把对针脚的控制与被启用设备的功能断开明显地使得边界扫描测试开发比传统的功能测试更为容易,因为无论是设备置配,还是启动,都不需要使用针脚。通过提供一个从四针TAP控制和监视设备上所有被启用信号的机制,JTAG显著地减少了测试板卡所需要的物理访问。

这个边界扫描功能主要可以通过两种方式被用来测试一个板卡。第一种方式,连接测试(见下节)提供了很好的测试覆盖率,尤其是对于短路故障。它完全是基于板卡上JTAG设备的功能,连接和网,以及——在XJTAG的情况下——板卡的逻辑功能。第二种方式,就是通过使用板卡上启用JTAG的设备来与外围非JTAG的设备如DDR RAM和闪存等进行通信来扩大这个覆盖率。

什么是JTAG连接测试?Example of faults tested for by the XJTAG connection test

JTAG连接测试检查板卡上启用JTAG设备周围的连接是否如设计中所描述的一样。

这个测试确保在两个启用JTAG的针脚本该相连的地方,一个针脚可以被另一个所控制。在被启用的针脚本不该相连的地方,通过驱动一个针脚并且核查这些数值没有在其它的针脚上被读取出来以测试它们是否有断路故障。

缺失的提拉电阻和固定故障也可以通过连接测试找到,还包括涉及可以用真值表描述其行为的逻辑设备的故障。

基于板卡的网表和被启用设备的JTAG信息,XJTAG会自动生成运行连接测试所需要的向量。

没有启动JTAG的设备怎么办?

虽然主要的设备,比如处理器和FPGA,通常是启用JTAG的,但是在每一个设计中总有许多设备不是这样的。DDR,SDRAM,SRAM,闪存,MDIO控制的以太网PHY,SPI和I2C温度传感器,实时时钟,ADC和DAC就是一些这种设备的例子。

连接测试仍然会为连接这些非JTAG设备和启用JTAG设备的网上的短路故障提供非常好的覆盖率;可是它不能检测JTAG设备或是非JTAG设备处的开路故障。

为了增加这项开路覆盖率,从被启用设备上的边界扫描与外围设备通信是非常有必要的。如果通信能被验证,那么则不存在开路故障。这类测试既可以非常简单,例如点亮LED后再让操作员证实它被激活了,又可以更复杂,例如把数据写入RAM的内存组后再读回。

建立一个JTAG测试系统需要许多工作吗?

利用XJTAG提供的标准非JTAG器件库,您可以无需代码开发就能为您的板卡构建一系列测试,并且运行起来。库文件包含所有非JTAG设备类型的模型,从简单的电阻和缓存到复杂的设备例如DDR3。正因为边界扫描把JTAG设备的功能从其对针脚的控制中分离出来,不论是什么JTAG设备控制外部设备,同样的模型都可以被使用。

大多数板卡已经包含了编程或调试用的JTAG接口,所以不需要额外的设计要求。

我从哪里获取我设备里关于JTAG的信息呢?

想要运行任何基于边界扫描的测试,都需要了解板卡上关于JTAG在被启用的设备上如何实现的一些信息。这个信息是从这些设备的BSDL(Boundary Scan Description Language或边界扫描描述语言)文件中获得的。设备的芯片供应商必须提供BSDL文件才能符合IEEE1149.1标准。

JTAG测试仅用在生产中吗?

完全不是。JTAG控制器作为唯一所需的测试硬件是边界扫描测试的主要益处之一。其它生产测试技术例如飞针,自动光学、X光审查或者针床都需要工程师台架上没有的特殊测试仪器。

在板卡启动时使用边界扫描可以消除不确定性-硬件工程师可以在系统测试之前就能测试原型板卡的制造缺陷,甚至是在固件完成之前。在产品生命周期如此初期开发的测试系统可以很容易地被重复利用,并且扩展到生产阶段。

我为什么要用JTAG/边界扫描来测试我的板卡?

三个简单的字母——BGA

越来越多的设备是以BGA(Ball Grid Array或球栅阵列)封装的形式被提供的。板卡上的每个BGA设备对能使用传统针床或者飞针仪器进行的测试强加了严格的限制。

利用一个简单的四针接口,JTAG/边界扫描允许被启用设备上的信号不用任何直接的物理访问就能被控制和监视。

再三个字母——NRE

建设测试夹具的一次性工程(non-recurring engineering或NRE)费用可能离谱地高。在许多情况下,使用JTAG/边界扫描会消除这样一个夹具的需求,在其它情况下,则可以显著地简化夹具从而大量地节约成本。

更短的测试时间

对于低产量的板卡,总是很难证明测试夹具开发成本的合理性。在这些情况下,一个选择是飞针测试;但是这种技术的测试周期时间往往过长。JTAG、边界扫描测试提供极短的测试时间并且不需要昂贵的夹具。

更低的测试开发成本

由于不同的处理器、FPGA与外部设备交互的方式不同,传统的功能性测试需要高价的且针对于每个板卡的定制开发。JTAG、边界扫描大幅地降低了这类开发成本,因为它提供了一个简易的接口来控制用来与外围设备交互的IO针脚。这个标准接口,对于所有启用JTAG的设备都一样,意味着一套通用的测试模型可以在构建测试系统时被使用,并且重复使用。

测试、编程二合一的工具

JTAG已经经常被用作生产中的一个环节:编程。通过把JTAG也用于边界扫描测试上,很有可能减少生产流程的工序和装卸操作的数量。

适用于原型板卡的、工程师台架上的生产级别测试

传统测试技术需要非常大的和非常贵的仪器。JTAG、边界扫描测试唯一所需要的测试仪器就是一个JTAG控制器——XJTAG XJLink2控制器和一个电脑鼠标一般大小。

卓越的故障诊断Short-circuit diagnosed with XJRunner

与功能测试不同,JTAG/边界扫描提供了高精度的故障信息以助于快速修复。XJTAG也提供了在板卡布局图上查看故障的物理位置,以及在原理图上浏览电路中故障存在部分的局部设计的功能。

还原连功能测试都无法运行的“死”板

如果板卡不能启动,那么传统功能测试就不能被运行;关键外围设备,例如RAM或者时钟上的简单故障都可以利用JTAG来找到,而功能测试则不能提供任何诊断信息。


高级JTAG指南

引言

JTAG是一项已经成熟的技术(和工业标准)而它的潜能如今才开始被完全发掘。连接测试和在线烧写(ISP)是两个经常与JTAG联系起来的应用,但是它还有更多的应用价值。

尽管我们不在这里强调XJTAG产品,但是它们是为了利用JTAG全部能量而设计的,并且能够实现这篇文章中描述的所有功能。

背景

JTAG是为了应对传统针床方法测试电路的困难而构想的。现在封装技术例如BGA和芯片尺寸封装限制了,甚至在有些情况下阻止了针脚*的物理访问。

简易的JTAG设备

图1:简易的JTAG设备

JTAG通过在外部连接和设备内部逻辑之间放置单元格来克服这个问题,参见图1。当单元格被设置成移位寄存器时,JTAG可以被用来设定和检索针脚的数值(和与之相连的网的值)而无须直接物理访问。

还有一个可以在设备正常运作时采集在核心逻辑与引脚间传递的数据的数值的选项。

JTAG接口在每个设备上额外增加了四个引脚:用来向设备输入数据的TDI,用来输出设备数据的TDO,用来控制如何处理数据和时钟信号的TMS,用来同步一切的TCK。

如果一个设备要兼容JTAG,它的厂商就必须提供一个描述JTAG方面在这个设备里如何运作的BSDL(边界扫描描述语言)文件。

如果一个电路包含一个以上的JTAG兼容设备,这些设备就可以被连接在一起形成一个JTAG链。I在一个JTAG链中,第一个设备的数据输出是第二个设备的数据输入 ;链中所有设备拥有共同的控制和时钟信号。图2展现了一个含有三个设备的简易JTAG链的图示。

Simple JTAG chain

图2:简易JTAG链

*针脚既用来描述设备的铅连接也可以描述BGA的焊锡球连接。

球栅阵列(BGA)

BGA device

图3:BGA设备

如图3所示,BGA封装不同于早期封装技术,因为它所有的外部连接都是通过设备底面与电路板之间的焊球来构成的而不是通过设备旁侧伸出的引脚。

含有BGA封装设备的电路测试一直是普及JTAG测试的推动力之一。因为设备与电路板的连接既不能被物理访问,也不能被肉眼检查,唯一替代JTAG而监控制造完整性的方法是X光检测。这项昂贵、费时的流程需要把每个板卡都做X光透视,然后通过审视图像来检查每个焊球是否被正确放置,与板卡接触,而没有扩散进而造成短路。X光虽可以提供有用的信息,但它仍然依赖于人工或者自动的目视检查,所以不能被完全信任来定位所有的错误。

在这一背景下,JTAG边界扫描不只是针床测试的有用替代品;它是能消除昂贵并且可能无结果的X射线技术的需求的重要省钱工具。

链的完备性测试

JTAG测试既可以很基本也可以很高级。最基本的测试是链完备性测试,即测试JTAG链中应该有的JTAG设备真实存在。

大部分JTAG兼容设备含有ID码,因此可以被用来测试设备是否放置恰、JTAG链是否被正确连接。不含有ID码的设备总是返回一个数值为零的单一位;所以可以检测JTAG链来验证含有码和没有ID码的器件的正确序列。

连接测试

连接测试实例

图4:连接测试实例

连接或者互联测试检查电路中启用了JTAG的部件周围的连接。这些被称为网的连接可以有四类故障;短路,开路,固定和提拉电阻故障。图4展示出了这些故障的实例。

JTAG链测试只在JTAG兼容设备间的网上进行完全检测故障,即信号从源头设置,然后从终端读取来检测开路故障。(只有一个启用JTAG的连接的网依然可以进行短路故障测试。)专业边界扫描检测工具可以自动生成非常广泛的测试模式来实现连接测试,经常需要极少的人工干预。

在生产校验过程中,连接测试是一个无价的工具。每一个生产出来的电路都可以被检查是否含有设备连接器焊接短路之类因制造错误而产生的生产故障。当涉及BGA设备时,很少有机会去目测检查或者去物理探测连接处,这时JTAG连接的价值就显而易见。

非JTAG设备测试

电路中非JTAG兼容的部分也可以被测试。无论哪里有非JTAG兼容设备共享JTAG兼容设备所连接的网,非JTAG兼容设备的输入都可以由JTAG控制。同样,非JTAG兼容设备的输出可以通过JTAG设备读回。因此,设计者对非JTAG兼容部分预期操作的理解将会允许他通过JTAG来构建和执行运行设备功能的测试。

这种测试形式既可以应用于单一非JTAG器件上也可以用于任何电路中可以当作功能单元看的非JTAG器件的集合上。这种方法的一个重要例子是储存测试。一系列产生的测试信号被用来操纵控制信号、储存设备的地址和数据总线从而可以往储存里写信息;第二系列产生的测试号则被用来把这个信息读回。

在线烧写

很多现代搭载JTAG可编程的设备例如FPGA和CPLD不仅有助于边界扫描测试,而且当装在PCB上时还允许通过附加的功能来编程。

其它设备例如闪存储存器则可以通过与JTAG链中相连的设备来间接编程。

使用JTAG在线编写设备的能力避免了购买昂贵的编程器和插口的需要。还有一点好处就是可以容易地更新设备里存留的储存image。

可测试性设计

在电路的整个生产周期中JTAG都是一个宝贵的工具。JTAG可以帮助设计者、生产测试工程师和现场测试工程师。

效果取决于JTAG测试套件所能达到的覆盖率。尽管潜能的一部分是电路中所固有的,但设计者在可测试性设计中的考虑也可使它最大化。

全套的可测试性设计指引可以从XJTAG网站上获得。不管怎样,作为起点首先确保所有JTAG兼容设备正确连接,以及一个恰当的测试访问端口(TAP)都被设计进入电路中。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多