JTAG 测试

http://blog.csdn.net/zrlean/article/details/7516724

1 引言 
“边界扫描”是一种可测性设计技术,即在电子系统的设计阶段就考虑其测试问题[1]。 
BSDL(boundary scan des cription language) 语言硬件描述语言(VHDL)的一个子集,是对边界扫描器件的边界扫描特性的描述,主要用来沟通边界扫描器件厂商、用户与测试工具之间的联系,其应用包括:厂商将BSDL描述作为边界扫描器件的一部分提供给用户;BSDL描述为自动测试图形生成(ATPG)工具测试特定的电路板提供相关信息;在BSDL的支持下生成由IEEE1149.1标准定义的测试逻辑 [2]。现在,BSDL语言已经正式成为IEEE1149.1标准文件的附件。BSDL本身不是一种通用的硬件描述语言,但它可与软件工具结合起来用于测试生成、结果分析和故障诊断。每一边界扫描器件都附有特定的BSDL描述文件,为了论述的方便,本文将以Altera公司的CPLD器件EPM7128SL84 芯片为例说明BSDL描述在测试中的应用。 
2 EPM7128SL84芯片的BSDL描述 
该器件采用了先进的CMOS EEPROM制造工艺,共有84个引脚,其中包括四个JTAG测试引脚 TDI、TMS、TCK和TDO,通过标准JTAG测试接口它还可以支持在系统可编程(ISP)。下面首先讨论EPM7128SL84的BSDL描述中与应用相关的各基本元素。 
2.1 TAP描述 
TAP描述说明与TAP控制器相关的特性。TAP 控制器包括4个或5个控制信号,一个用户定义的指令集(在IEEE1149.1标准规定范围内)和一些可选择的数据寄存器。EPM7128SL84的TAP描述有: 
(1)attribute INSTRUCTION_LENGTH of EPM7128SL84:entity is 10; 
指令长度(INSTRUCTION_LENGTH)属性定义了所有操作码的长度必须为10位。 
(2)attribute INSTRUCTION_OPCODE of EPM7128SL84:entity is 
“BYPASS (1111111111), ”& 
“EXTEST (0000000000),”& 
“SAMPLE (0001010101),”& 
“IDCODE (0001011001)”; 
指令操作码(INSTRUCTION_OPCODE)属性指出器件所支持的指令的二进制代码,如器件标志代码指令IDCODE的位图形为“0001011001” ,所有字串中最右边的位最靠近TDO。根据1149.1标准,旁路、外部测试和采样指令是强制性的,且旁路指令BYPASS为全“1”串,外部测试EXTEST指令为全“0”串。
(3)attribute INSTRUCTION_CAPTURE of EPM7128SL84:entity is "0101010101"; 
指令捕获(INSTRUCTION_CAPTURE)属性说明,当TAP控制器处于捕获指令寄存(Capture-IR)状态时,位图形“0101010101”被装入指令寄存器的移位寄存器部分,当送入新指令时,此位图形被移出,IEEE 1149.1标准规定其最低两位为“01”,其余位由厂商自行定义,这样可以保证通过Capture信号可以检测到扫描链上固定为“0”和固定为“1”的故障。 
(4)attribute IDCODE_REGISTER of EPM7128SL84:entity is 
"0000"&"0111000100101000"&"00001101110"&"1"; 
标志寄存器属性描述芯片内置在标志寄存器里的芯片ID码。IEEE 1149.1标准规定芯片ID码为32位,最右边的一位是最靠近TDO的。如图1所示,标志寄存器的LSB是IEEE 1149.1标准强制为“1”的最低位,表示器件标志寄存器的存在;第1位至11 位是厂商代码号“01110110000”,这个代码表示Altera公司;第12位至27位是芯片型号 “0001010010001110”,即十六进制“7128”(从右至左);第28位至31位是芯片版本号“0000” [2]。

2.2 边界扫描寄存器描述 
这是BSDL整体结构的最重要部分,它描述了边界扫描单元(BSC)的长度及每个BSC的单元号与属性。 
(1)attribute BOUNDARY_LENGTH of EPM7128SL84:entity is 288; 
边界扫描长度属性表示EPM7128SL84芯片共有 288个边界扫描单元。 
(2)attribute BOUNDARY_REGISTER of EPM7128SL84:entity is 
--num(cell, port, function, safe [ccell, disval, rstl]) 
"0 (BC_4, IN84, input, X)," & 
"1 (BC_4, *, internal, X)," & 
"2 (BC_4, *, internal, X)," & 
…… 
"144 (BC_4, IO41, input, X)," & 
"145 (BC_1, *, control, 0)," & 
"146 (BC_1, IO41, output3, X, 145, 0, Z)," & 
…… 
"279 (BC_4, IO4, input, X)," & 
"280 (BC_1, *, control, 0)," & 
"281 (BC_1, IO4, output3, X, 280, 0, Z)," & 
…… 
"285 (BC_4, IN1, input, X)," & 
"286 (BC_4, *, internal, X)," & 
"287 (BC_4, *, internal, X)"; 
对边界扫描寄存器单元(BSC)属性的描述由单元号与4个或7个圆括号内的数据子段组成,这些BSC的排列顺序可以是任意的,但每个单元都必须被定义。单元号从0到287 (BOUNDARY_LENGTH-1)进行编号,0单元是最靠近TDO的单元。括号中数据子段的名称为: cell, port, function, safe [ccell, disval, rstl],后三个方括号内的可选子段只有在function子段的值为 out put3或bidir时才被定义。它们的含义如下: 
● 单元子段:确定器件所使用的边界扫描单元。EPM7128SL84芯片采用的BSC类型为标准单元 BC_1与BC_4,其属性已经在VHDL组件STD_1149_1_1994中加以定义; 
● 通道子段:说明与对应BSC相连的系统管脚。其名称与BSDL“logical port des cription”属性中描述的管脚逻辑名称相一致。“*”表示此BSC 为输出控制单元或内部单元; 
● 功能子段:表示该BSC的主要功能。EPM7128SL84芯片BSC所涉及的功能有“input”、 “control”,“output3”和“internal”4种; 
input:表示一个简单的实现输入管脚接收的 BSC; 
control:表示一个进行输出使能控制,或输出驱动与双向管脚的单元方向控制的BSC; 
output3:表示一个为三态输出提供数据的 BSC; 
internal:表示一个用于捕获系统内部逻辑的 BSC,它不与任何系统管脚相连; 
● 安全子段:当ATPG软件提供一个额外随机值时,safe子段定义了一个要装入捕获寄存器CAP 与更新寄存器UPD(如果存在的话)的值,以防止系统逻辑因为过激励信号等原因造成的错误连接。这个值可以是“0”,“1”或“X”。“X”表示“0”,“1”均可; 
● 控制单元子段:说明对功能为output3或bidir的BSC进行输出使能控制的控制单元号; 
● 无效值子段:为禁用对应的系统管脚,要给由ccell子段指定的控制单元赋的值; 
● 无效状态子段:给出被禁用驱动器的状态。这个状态可以是高阻态(Z)、弱“1”态(weak1)或弱“0”态(weak0)[2]。 
EPM7128SL84芯片的管脚与边界扫描单元如图2所示,与输入输出管脚IO41相对应的三个BSC单元号分别为144,145和146。

3 BSDL描述语言的实际应用 
3.1 TAP完整性测试 
指令捕获(INSTRUCTION_CAPTURE)属性提供了测试TAP完整性的一条途径。TAP完整性测试可以检测时钟TCK和模式选择TMS的输入端连接是否正确,所提供的有关信号是否正常;数据输入TDI和数据输出TDO端的连接是否正确,且输入和输出的功能是否正常;内部的指令寄存器工作是否正常;内部的边界扫描寄存器工作是否正常。TAP完整性测试是进行边界扫描其他任何测试之前建议首先进行的测试操作,以确保边界扫描链能正常工作。 
TAP完整性测试的过程如图3所示。在TAP的 Shift-IR状态,指令捕获位图形已加载至指令寄存器的移位寄存器部分,直接从TDO移出数据并与各芯片的Capture位图形比较,若数据一致则TAP完整性测试通过。

3.2 芯片ID码的检测 
芯片ID码是识别芯片的内建器件标识码,通过检测芯片ID码可以识别该芯片,判断芯片装配正确与否,并可进一步判断芯片的型号、生产厂家及版本号与其标识是否相符,辨别芯片的真伪。当TAP进入Test-Logic-Reset状态时,若标志寄存器存在,则被强制接入TDI与TDO之间,寄存器LSB的值为“1”,否则,旁路寄存器被接入TDI与TDO之间,寄存器的值为“0”。所以,在检测芯片标志寄存器的值时,可以由复位状态直接进入移位数据状态,输出TDO的值,并判断其第一位是否为“1”,若是,则此芯片有标准寄存器存在,可继续移出其他31位,并进行判断与显示。检测流程如图4所示。我们在对芯片EPM7128SL84进行ID标识码检测时,用逻辑分析仪采集到的TDO端的输出波形如图5所示,与BSDL描述中的ID码一致,说明器件正确。

3.3 边界扫描互连测试 
我们在开发边界扫描测试软件过程中,设计制作了基于边界扫描机制的试验电路板当作诊断实验对象。其中两块EPM7128SL84芯片间的有16个互连网络,分别是两芯片的4~12管脚之间、33~41管脚之间的互连(除去7脚地线,38脚电源线)。在进行互连测试时,首先要构造一个16×16的测试矩阵,然后将此矩阵的16个列向量分别加载到芯片1的IO4~ IO12,IO33~IO41管脚(除去7脚和38脚),然后执行外部测试指令。由芯片2捕获对应管脚上的信号,形成响应向量,全部16个列向量分别加载捕获完成后,再对响应矩阵进行故障诊断 [3],如图6所示。在此测试过程中,对芯片1的IO管脚加载的向量数据必须定位到每个管脚对应的三态输出单元,即芯片1的281,278,275,269,263,260, 257,251,179,173,167,164,161,155,149,146单元;而芯片2所捕获的对应管脚上的信号,在执行采样指令之后,都被置入每个管脚对应的输入单元,即芯片2的279,276,273,267, 261,258,255,249,177,171,165,162,159,153,147,144单元。这样,从TDO输出的对应单元的数据就组成了响应矩阵,对响应矩阵按照一定的算法进行分析,便可检测出呆滞、短路、开路与桥接故障。

4 结束语 
以上所述测试流程均用C++ Builder编程实现,能对基于边界扫描机制的试验电路板进行准确、可靠的测试。试验证明,在边界扫描各项测试中,对BSDL描述信息进行有效的编译提取,对测试的成功实现至关重要。但器件的BSDL描述必须严谨、确切,所以,在下一步的软件完善中,将加入BSDL 文件的数据完整性检查,以防止错误数据损坏被测对象。 
本文摘自《半导体技术》

时间: 2024-10-04 15:50:06

JTAG 测试的相关文章

JLINK使用教程详解,以及与JTAG区别

对于一个新手来说,一切都不容易. 而从头学起也是一件非常美好的事. 观看     调试ARM,要遵循ARM的调试接口协议,JTAG就是其中的一种.当仿真时,IAR.KEIL.ADS等都有一个公共的调试接口,RDI就是其中的一种,那么我们如何完成RDI-->ARM调试协议(JTAG)的转换呢?有以下两种做法: 1.在电脑上写一个服务程序,把IAR.KEIL和ADS中的RDI命令解析成相关的JTAG协议,然后通后一个物理转换接口(注意,这个转换只是电气 物理层上的转换,就像RS232那样的作用)发送

NetFPGA

From Wikipedia, the free encyclopedia The NetFPGA project[1] is an effort to develop open source hardware and software for rapid prototyping of computer network devices. The project targeted academic researchers, industry users, and students. It was

RAPIDIO高速串行协议

RapidIO是由Motorola和Mercury等公司率先倡导的一种高性能. 低引脚数. 基于数据包交换的互连体系结构,是为满足和未来高性能嵌入式系统需求而设计的一种开放式互连技术标准.RapidIO主要应用于嵌入式系统内部互连,支持芯片到芯片.板到板间的通讯,可作为嵌入式设备的背板(Backplane)连接. RapidIO协议由逻辑层.传输层和物理层构成.逻辑层定义了所有协议和包格式.这是对终端进行初始化和完成传送的很有必要的信息.传输层为数据包从一个终端到另一个终端通道的必要信息.物理层

嵌入式系统硬件组成

嵌入式系统的硬件主要包括:嵌入式处理芯片.嵌入式系统存储器.I/O接口及常用的I/O设备.典型ARM处理芯片以及嵌入式互连通信接口. 嵌入式最小硬件系统有: 1.电源电路 2.时钟电路 3.复位电路 4.JTAG测试接口 典型的嵌入式系统硬件有嵌入式最小系统.前向通道.后向通道.人机交互通到以及相互互联通信通道等组成. 嵌入式系统的设计步骤 嵌入式系统设计步骤 1. 系统需求分析:确定设计任务和设计目标,并提炼出设计规格说明书,作为正式设计指导和验收的标准.系统的需求一般分功能性需求和非功能性需

verilog学习(7)实战之扫描链

一:可侧性设计简介(DFT) 1:什么是可测性? 相当于debug中给程序段加入断点. 设计工具自动将扫描插入到设计中,在设计通过仿真后,在设计阶段的后期,扫描被插入到设计中.扫描的目的是未来观察一个设计或者是整个芯片的内部变化. 2:JTAG 用一组特别的测试端口来控制扫描操作,这组端口被称为JTAG. 二:简单扫描举例 我们在实战一中加入扫描链 1:在Intro_Top中加入JTAG测试端口,加入5个1比特端口,先不连接它们,这5个端口分别是:ScanMode,ScanIn,ScanOut,

全国计算机三级嵌入式资料整理

1.  嵌入式系统简介 嵌入式系统一般定义: 以应用为中心.以计算机技术为基础,软硬件可裁剪,应用系统对功能.可靠性.成本.体积.功耗和应用环境有特殊要求的专用计算机系统. 嵌入式系统的特点:系统内核小.专用性强.运行环境差异大.可靠性要求高.系统精简和高实时性操作系统.具有固化在非易失性存储器中的代码.嵌入式系统开发工作和环境.( 专用性.隐蔽性.资源受限.高可靠性. 软件固化.实时性) 嵌入式系统中的处理器分类:微处理器(MPU).微控制器(MCU).数字信号处理器(DSP).嵌入式片上系统

板卡调试遇到个JTAG下载失败的问题原因及解决方法

新生产的6块板卡,其中1块JTAG下载老是失败.即使更换下载线.机器重启也无济于事. 遂挨个排查原因: 1.首先怀疑TMS.TDS.TDI.TCK的上.下拉电阻有问题.经过观察.并用万用表测量没有发现虚焊.短路的情况. 2.查FPGA供电,IO电压VCC与GND之间的阻值正常:VCC1.2与GND之间的阻值也正常,阻值较其他几块板卡偏大.但均没有出现短路的情况,应该不影响. 3.给FPGA上电,测量FPGA去耦电容上VCC.GND之间的电压.发现问题,3.3V正常:但1.2V的地方电压只有0.5

ARM JTAG 调试原理

OPEN-JTAG 开发小组 1 前言 这篇文章主要介绍 ARM JTAG 调试的基本原理. 基本的内容包括了 TAP (TEST ACCESS PORT) 和 BOUNDARY-SCAN ARCHITECTURE 的介绍, 在此基础上,结合 ARM7TDMI 详细 介绍了的 JTAG 调试原理. 这篇文章主要是总结了前段时间的一些心得体会,希望对想了解 ARM JTAG 调试的网友们 有所帮助. 我个人对 ARM JTAG 的理解还不是很透彻,在文章中,难免会有偏失和不准确的地 方, 希望精通

SPI、IIC、IIS、UART、JTAG的应用场合级区别

SPI  SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的. SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间.  SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号: (1)MOSI – 主器件数据输出,从器件数据输入 (2)MISO – 主器件数据输入,从器件数据输出 (3