Boundary Scan测试原理及实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
什么是边界扫描(boundary scan)?
Boundary Scan测试原理及实现
JTAG标准的IC芯片结构
IEEE 1149.1 标准背景
JTAG
什么是边界扫描(boundary scan)?
边界扫描(Boundary scan )是一项测试技术,是在传统的在线测试不在适应大规模,高集成电路测试的情况下而提出的,就是在IC设计的过程中在IC的内部逻辑和每个器件引脚间放置移位寄存器(shift register).每个移位寄存器叫做一个CELL。
这些CELL准许你去控制和观察每个输入/输出引脚的状态。
当这些CELL连在一起就形成了一个数据寄存器链(data register chain),我门叫它边界寄存器(boundaryregister)。
除了上面的移位寄存器外,在IC上还集成测试访问端口控制器 (TAP controller),指令寄存器(Instruction register)对边界扫描的指令进行解码以便执行各种测试功能。
旁路寄存器(bypass register)提供一个最短的测试通路。
另外可能还会有IDCODE register和其它符合标准的用户特殊寄存器。
边界扫描器件典型特征及边界扫描测试信号的构成。
如果一个器件是边界扫描器件它一定有下面5个信号中的前四个:
1.TDI (测试数据输入)
2.TDO (侧试数据输出)
3.TMS (测试模式选择输入)
4.TCK (测试时钟输入)
5.TRST (测试复位输入,这个信号是可选的)
TMS,TCK,TRST构成了边界扫描测试端口控制器(TAP controller),它负责测试信号指令的输入,输出,指令解码等,TAP controller是一个16位的状态机,边界扫描测试的每个环节都由它来控制,所以要对TAP controller有一个比较清楚的了解。
在后续的文章中还会向大家介绍边界扫描的其它方面。
边界扫描为开发人员缩短开发周期,并且提供良好的覆盖率和诊断信息。
在不了解
IC内部逻辑的情况下快速的开发出优秀的测试程序。
在未来的测试领域,边界扫描将会得到广泛的应用。
Boundary Scan测试原理及实现
Boundary scan的目的:
Boundary scan是一种用于测试数字集成电路的技术,它能找出,开路,短路,和功能不良的数字器件,另外它还能完成一些功能测试。
相对于传统的数字器件的向量测试,它还有以下几个优点:
具有较短的测试开发时间;
能用于探针接触有困难的那些器件的测试;
能减少维修时间和维修成本,故障诊断范围可以到PIN脚。
一般理论:
Boundary-Scan 测试的时候发送一组信号流到被测的数字器件的转换寄存器单元里面。
而这个单元可以在每一个输入,输出,和双向引脚以及器件的逻辑中心那里找到。
那些信号在寄存器周围转换并且从器件输出,然后用输出的信号和输入的信号之间的差异来比较并判断出错。
例如有两个引脚之间短路或者电源与地脚短路之类的,它都会报错。
几个boundary scan 器件可以被连接到一个链上,从而一些相同的基础测试可以同时执行。
当然,boundary scan还有许多的附加的测试能力,但是这种使用转换寄存器来检查输出的信号流是整个boundary scan测试
理论的基础。
两种软件包:
在Agilent 3070上有两个不同类型的boundary scan测试软件:他们是:
in-circuit boundary scan和HP interconnectplus. 其中in-circuit boundary scan是Agilent 3070标准软件包中自带的,它可以生成标准的单独的数字器件的在线boundary scan测试。
而HP interconnectplu是一个可选软件,它可以生成链式的boundary scan测试程序,同时,它也能自动生成单独器件的boundary scan测试程序。
boundary scan器件的设计
boundary scan测试软件遵从IEEE 1149.1的标准,遵从此类标准的IC在每个引脚和逻辑中心之间都有一个独立单元。
这些相互独立的单元们连接到一个转换寄存器也叫boundary scan寄存器中,他负责控制和观察每个输入,输出,和双向引脚的值。
每一个boundary scan的器件都有一个特殊的输入引脚(TDI),一个特殊的输出引脚(TDO),TDI作为boundary scan寄存器的输入端,而TDO则连接到boundary scan寄存器的输出端。
在TCK(时钟控制)的基础上,由TAP(test access port)来控制整个工作流程,工作模式选择(TMS)和复位信号(TRST*)
有两种boundary-scan测试依赖于boundary-scan器件本身,假如一个元件设计者在设计的时候把IDCODE 放到寄存器中,boundary-scan就可以去确认此器件的制造商,PN,和版本号之类的信息,假如此器件还有内嵌的自测(BIST)时,boundary-scan还可以运行这种自测并且报错。
指令寄存器:
指令寄存器包含了指令的解码。
也包含了一些数据寄存所使用的特殊指令。
ByPass寄存器:
你可以使用ByPass寄存器通过那些没有被使用的Boundary –Scan寄存器链来进行数据传输的工作。
假想你有一个很复杂的IC被用其它的技术象TESTJET之类的去测试而不用boundary-Scan,你也许会决定省略掉这个Boundary-Scan寄存器的长度并用单个单元的ByPass寄存器来代替。
在下图中,使用ByPass寄存器可以包含12个boundary-Scan寄存器,事实上boundary-Scan寄存器的个数一般都很大,所以采用ByPass寄存器,会节约一些测试时间。
身份辨别寄存器:
身份辨别寄存器是一个32位的寄存器,它包含了元器件的一些制造信息。
身份辨别寄存器有时也称IDCODE 寄存器,因为IDCODE指令显示了身份辨别寄存器中的内容,并不是所有的boundary-scan器件都有IDCODE 寄存器,IEEE 1149.1明确指出IDCODE只是一个选项。
Boundary-scan 单元的功能:
下图显示了一个典型数据寄存器单元它能灵活的扮演输入或输出单元。
灰色的Internal logic 和Outout Pin阐明了输出的配置。
而紫色的Input pin和
Internal logic阐明了输入的配置,对于双向PIN来说,你可以只选用一个单独的单元就行了。
转换,更新和测试模式用其它的颜色来标明:
TAP控制器:
TAP控制器是一种16位态的设备,它控制boundary-scan测试的操作。
由于TAP控制器管理着大多数的数据和指令寄存器,理解TAP控制器在另一种意义上说等于理解了boundary-Scan, TAP控制器通过TCK,TMS,TRST*来实现控制。
控制线:
三个输入控制线:TCK,TMS,TRST*,TCK是一个方波时钟信号,Agilent3070用一个50%的DUTY CYCLE来实现它,TMS信号通过状态图控制着TAP控制器的动作,一般在TCK的上升沿触发TMS,有时也会在TCK 的下降沿触发。
而TRSTR*用于复位动作。
例如下图所示,TRST信号一般是在接近序列的中间出现。
测试-逻辑-复位:
在测试-逻辑-复位状态时,测试逻辑被禁用从而使此器件可以正常工作,当器件第一次被打开的时候,只要
有ID寄存器存在,那个指令寄存器就会引入IDCODE指令,假如没有的话,会引入ByPass寄存器。
一般的,测试-逻辑-复位在TAPcontroller 上电的时候才工作的,测试程序员能够通过使TRST*为低电平或使TMS为高电平并持续至少5个TCK周期来迫使TAP控制器进入上电的状态。
Run-Test/Idle:
Run-Test/Idle允许在指令寄存器的指令的基础下激活被选种的测试逻辑电平,TAP controller 在TMS 保持低电平的状态下,会保持Run-Test/Idle的状态,而当TMS转换为高电平的时候,它转移到Select-DR-Scan上去。
Select-DR-Scan:
这个TAP控制器扮演一个开关的角色,在下一个TCK的上升沿TAP控制器会开始数据寄存器的扫描或者转到Select-IR-Scan的状态上面。
Capture –DR:
在Capture –DR的状态时,夹具上连接到输入PIN的测试针的值,会替换一部分当前被指令选中的部分数据寄存器。
并不是所有的指令都在这个状态做任何事,一些指令可以在数据寄存器现存的数据的基础上工作,TAP控制器会在一个时钟周期内保持这种状态,然后再转移到Exit1-IR或Shift-IR。
Shift-DR:
在Shift-DR的状态,数据寄存器就好象一个转换寄存器在TDI和TDO数据之间并从TDI转移到数据寄存器然后再通过TDO在每一个TCK的上升沿从数据寄存器中出去。
数据寄存器会保持这种状态直到TMS变为高电平,然后设备会转移到Exit1-DR的状态。
Exit1-DR
在到达Exit1-DR状态后,TAP controller转移到Pause-DR 或者Update-DR在TCK下一个上升沿,转到Update-DR 时,扫描的过程就结束了,当移动到Pause-DR时可以暂停TAP controller的状态进程,此时可以允许测试机调用内存。
Pause-DR
当Pause-DR状态时,它允许一个暂停来通过指令寄存器来转换数据,一种情况是TAP controller执行其他的任务时可以使用此种状态,TAP controller会保持这种状态知道TMS变为高电平,然后TAP controller会转移到Exit2-DR状态。
Exit2-DR
在到达Exit2-DR状态之后,在下一个TCK的上升沿时TAP controller会转移到Shift-DR或Update-DR。
转移到Shift-DR时会从新开始扫描,转移到Update-DR时中止扫描的进程。
Update-DR
在TCK的下降沿时,Update-DR状态从boundaryscan寄存器锁住数据到boundaryscan寄存器的并联输出。
在到达这个状态之后,状态设备转移到Run-Test/Idle或Select-DR-scan,当一个测试转移到Select-DR-scan 时比转移到RUN-Test/Idle要快一个时钟周期,转到RUN-Test/Idle去压制ground bounce的影响是一个好办法。
Select-IR-Scan
TAPcontroller 充当一个开关的角色。
在TCK下一个上升沿时,TAPcontroller开始IR扫描进程或者重置TAPcontroller到TEST-Logic-Reset状态。
IR—SCAN进程放在TDI和TDO之间的指令寄存器中,并在下一个TAPcontroller指令中转换。
Capture-IR
Capture-IR状态在TCK的上升沿时从集成电路板上纳入一个逻辑电平到指令寄存器。
一般都是01之类的信号,用于测试boudary-Scan 电路的完整性。
其他的信号被设计员另外再特指标明或把值赋给变量,在Capture-IR状态待满一个时钟周期后,TAP controller转移到EXIT-IR或Shift-IR。
Shift –IR
在Shift –IR的状态,指令寄存器在TDI和TDO之间扮演一个转换寄存器的角色,在Capture-IR抓到的数据
在TCK的上升沿时转换到TDO并且一个新的指令从TDI转换进来。
TAP controller直到TMS变为高电平才会改变状态到Exit1-IR.
Exit1-IR.
到达Exit1-IR 状态之后,在下一个TCK的上升沿时转换到Pause-IR或者Update-IR. 转移到Update-IR时中止扫描的进程。
当移动到Pause-IR时可以暂停TAP controller的状态进程,此时可以允许测试机调用内存。
Pause-IR
当Pause-IR状态时,它允许一个暂停来通过指令寄存器来转换数据,一种情况是TAP controller执行其他的任务时可以使用此种状态,TAP controller会保持这种状态知道TMS变为高电平,然后TAP controller会转移到Exit2-IR状态。
Exit2-IR
在到达Exit2-IR状态之后,在下一个TCK的上升沿时TAP controller会转移到Shift-DR或Update-IR。
转移到Shift-IR时会从新开始扫描,转移到Update-IR时中止扫描的进程。
Update-IR
在TCK的下降沿时,Update-IR状态latches the instruction register from the flip-flops into latches where the instruction decodeed,一旦一个新的指令被锁住它立刻转变为当前的指令。
在到达这个状态之后,状态设备转移到Run-Test/Idle或Select-IR-scan,当一个测试转移到Select-IR-scan时比转移到RUN-Test/Idle要快一个时钟周期,转到RUN-Test/Idle去压制ground bounce的影响是一个好办法。
ByPass
Bypass指令放在一个单独的单元,ByPass寄存器在TDI和TDO之间,它并不象其他的测试一样去确认元件的放置和方向,在Bypass指令执行时,元件仍然保持正常的操作。
根据IEEE1149.1的标准,指令代码为1的必须解码为Bypass.
EXTEST
EXTEST指令是最有用的boundaryscan的指令,因为它允许你在对元件的逻辑核心一无所知的情况下去测试所有的输入输出和双向引脚。
EXTEST指令隔离了元件的逻辑核心测试,在元件的逻辑核心之外进行测试,他测试Boundaryscan单元,引脚到板上的连接等等。
EXTEST指令有三种模式:
标准-单独模式用于测试boudary 寄存器,和器件到板子上的连接情况。
内部连接模式用于测试boudary 寄存器,和连接到boundaryscan器件的电路。
簇模式用于用于测试boudary 寄存器和在boundaryscan器件和其它器件之间的电路。
根据IEEE1149.1的标准,指令代码为0的必须解码为EXTEST。
Sample /preload
Sample /preload指令允许在元件正常工作的时候有有采样的输入和输出。
然后Boundaryscan测试可以对那些采样数据进行分析比并从TDO输出。
当Boundaryscan测试在转换采样数据并输出时,它可以通过TDI将采样数据预载到Boundaryscan寄存器中,那些信号解码到Sample /preload指令并不属于IEEE1149.1标准,他们被元件设计师所制定。
Sample /preload指令的预载功能是用来准备那些例如EXTEST的指令的,例如,假想一个芯片选择器件如下图它连接了两个ROMS并共享了一个输出BUS,在这个事例中你可以使用preload来确保芯片选择器件的输出不会同时出现高电平而导致BUS竟争。
IDCODE
IDCODE指令被放在TDI和TDO之间的寄存器中间,由于在这里面放了元件的制造信息,所以可以通过此指令来辨别WRONG PART。
USERCODE
USERCODE指令允许测试开发人员登入一个32位的代码从而可以被转换并输出用于校验。
这个指令是根据有设计人员的定义来定的,并且它依赖于身份辨别寄存器的存在而存在。
Intest:
Intest对元件的内部逻辑进行静态的测试,在进行静态的测试的时候,这些测试并不是在元件固有的测试速度下进行的,而是在TCK的单步测试模式下进行的。
这种测试不会受元件的拓扑结构的影响。
它的测试结果从TDO输出。
RunBIST:
RUNBIST是使元件进行自测的指令,当元件执行BIST时,TAP控制器处于RUN_TEST/IDLE状态。
它测试的结果从TDO输出。
同样这个测试不会受元件的拓扑结构的影响。
CLamp:
CLAMP是一个设计人员定义的代码,它能设置所有的系统逻辑输出和双向引脚从Boundary-scan寄存器中锁住一个常量值。
在此指令执行的时候,处于TDI和TDO之间的ByPass寄存器在SHIFT-DR控制的状态。
HIGHZ:
HIGHZ是一个设计人员定义的代码,它能设置所有的系统逻辑输出和双向引脚到一个高阻状态。
这就能允许测试机在不损坏元件的前提下去驱动信号到元件的输出和双向引脚上。
在此指令执行的时候,处于TDI和TDO之间的ByPass寄存器在SHIFT-DR控制的状态。
BOUNDARY-SCAN 的软件
In-circuit Boundary-Scan
一种使用Boundary-Scan技术的方式是使用BSDL INFORMATION 去创建一个传统的在线库测试。
In-circuit Boundary-Scan,扫描端口驱动界面(SPDIF)是HP3070测试机所具有的标准的功能。
它为单个的Boundary-Scan器件创建测试,不能创建链式的Boundary-Scan测试。
和许多的数字测试一样,你在做n-circuit Boundary-Scan测试时要首先确认你的测试点数是否够。
HP interconnectPlus software:
一种使用链式的Boundary-Scan测试软件包,可生成测试类型如下:
BSDL源文件:
BSDL是一种使用IEEE1149.1标准的语言,同时它也是VLSI语言的一个分支。
在开发boundary scan测试时要先用BSDL compiler来验证一下语法有无错误。
Boundary scan测试技术
In-circuit boundary scan测试
SPDIF 界面:
Reset Tap: 生成十个向量来保持TMS为高电平并持续五个时钟周期。
这样就把TAP控制器放在TEST-LOGIC-RESET状态并与其它的状态隔离开来。
Bypass Test:执行Bypass 指令,能用于快速发现TAP控制器在运行时的问题。
ID code Test:执行IDCODE指令,假如器件没有ID信息,则执行BYPASS指令。
User Code Test:执行User Code Test指令,假如器件没有User Code Test信息,则什么也不执行。
Parallel toggle:产生锁住所有输入输出脚状态的向量,但是它受限于那些相互之间两两短路和连接到电源脚的PINS。
Running Toggle:类似于Parallel toggle,但是它能对输入PIN实现持续的锁住,虽然测试速度会慢一店,但是这样会减小板子拓朴结构对测试的影响。
Toggle Pins:同Running Toggle,只是精确到PIN脚。
EXTEST:你可以定义输入,输出,双向脚的值,对于调试来说,是非常有用的。
Simple setup:生成set-up-only测试,它会允许你指定你元件的逻辑家族,自动生成一个set-up-only测试。
Setup & Disable:同Simple setup一样,另外它还会生成元件的DISABLE信息,很有用的。
Verify BSDL:验证你的BSDL有无错误。
HP interconnectPlus测试:
Integrity Test:通过指令寄存器来测试从TDI到TDO路径的数据的完整性。
它用来在Capture-IR指令后,比
较指令寄存器中的内容和从TDO中出来的内容。
由于在指令寄存器捕获的最小有效信号为0,1所以从TDO 中出来的信号必定是1,0,如下图显示:
假如有身份验证寄存器存在的话,Integrity Test会执行IDCODE指令,假如没有身份验证寄存器存在的话,Integrity Test会执行BYPASS指令,来验证BYPASS寄存器的好坏。
Power-short测试:用来检查UNNAILED的Boundary scan Nodes与其他类型的nailed Nodes之间的短路。
它会参考board_xy文件的信息并自动生成测试。
Connect测试:用来查找元件的open的故障,一次只能找一个元件,当一个元件在测试的过程中,其它的元件会处于BYPASS的状态,如下图U3处于connect测试的状态中:它只会测试那些在输
入和输出的引脚上有固定的探针的元件,并且它会自动生成分离的两段测试为那些双向引脚,那就是第一次把他们当成DRIVER然后再把他们当成RECEIVER。
inter Connect测试:用来测试元件在boundary scan 链上的连接。
bus wire测试:用来验证双向PIN的测试,会生成不同的向量,先把他们当DRIVERS来测再把他们当RECEIVERS来测。
bus wire测试会一次打开一个驱动去检查开路,随后它会测试所有的DRIVERS的运行情况。
它会自动生成测试只要在链上有BUSDRIVERS。
Silicon-Nails测试: 用于测试那些与Boundaryscan元件相连的传统数字器件。
Boundaryscan软件使用Boundaryscan寄存器去向那些非Boundaryscan元件传送和接受信号,这对那些不能下探针的元件是一种很好的测试方法。
Boundaryscan Disabling:防止其他的Boundaryscan元件在测试的时候有输出信号干扰,此功能选项可在IPG 中打开。
当一个元件被Disable掉的时候,TAP控制器处于Run- Test/Idle的状态,为此,利用GPRELAY 把TMS短接到地是一个好方法。
当今,微电子技术已经进入超大规模集成电路(VLSI)时代。
随着芯片电路的小型化及表面封装技术(SMT)和电路板组装技术的发展,使得传统测试技术面临着巨大的挑战。
在这种情况下,为了提高电路和系统的可测试性,联合测试行动小组(JTAG)于1987年提出了一种新的电路板测试方法--边界扫描测试,并于1990年被IEEE接纳,形成了IEEE1149.1标准,也称为JTAG标准[1]。
这种技术以全新的"虚拟探针"代替传统的"物理探针"来提高电路和系统的可测性。
由于JTAG标准的通用性很好,现在许多IC公司都提供了支持边界扫描机制的IC芯片,甚至部分FPGA和CPLD芯片也采用了这一技术。
本文介绍支持JTAG标准的IC芯片结构,并以Xilinx公司的两块xc9572_pc84芯片为例,探讨并利用边界扫描技术控制IC芯片处于某种特定功能模式的方法,并且针对IC芯片某种特定的功能模式设计该芯片的JTAG控制器。
1支持JTAG标准的IC芯片结构
边界扫描技术的核心就是在IC芯片的输入输出引脚与内核电路之间设置边界扫描结构。
JTAG标准定义了一个4-wire串行总线[2],通过这四条测试线访问边界扫描单元,可以达到测试芯片内核与外围电路的目的。
图1示出了支持JTAG标准的IC芯片结构。
图中,扫描结构由测试存取通道(TAP)、边界扫描寄存器(BSR)、
TAP控制器、指令寄存器(IR)和辅助寄存器等组成。
1.1 TAP
TAP是由4-wire串行测试线组成的测试存取通道,JTAG标准定义的所有操作都由这四条测试线来控制。
这四条测试线分别是:测试时钟输入线(TCK),测试方式选择输入线(TMS),测试数据输入线(TDI),测试数据输出线(TDO)。
1.2 TAP控制器
TAP控制器是边界扫描测试的核心控制器,具有一个16状态的有限状态机。
它与TCK信号同步工作,并响应TMS信号。
在TCK信号和TMS信号的控制下,TAP控制器可以选择使用指令寄存器扫描还是数据寄存器扫描,以及选择用于控制边界扫描测试的各个状态。
图2描述了TAP控制器的状态转换全过程[3]。
无论当前状态如何,只要TMS保持5个TCK时钟为高电平,TAP控制器都会回到Test_Logic_Reset状态,使测试电路不影响IC芯片本身的正常逻辑。
需要测试时,TAP控制器跳出该状态,选择数据寄存器扫描(Select_DR_Scan)或选择指令寄存器扫描(Select_IR_Scan)进入图2的各个状态。
一个标准的测试过程如下:TAP控制器在Capture_IR状态捕获指令信息,经过Shift_IR状态移入新指令,新指令经过Update_IR 状态成为当前指令;紧接着,当前指令在Select_DR_Scan状态选择相应的测试数据寄存器,在Capture_DR 状态捕获前一测试向量的响应向量,在Shift_DR状态移出该响应向量,同时移入下一测试向量,在Update_DR状态将新的测试量并行加载到相应的串行数据通道,直到移入最后一个测试向量为止。
其中,Pause_DR状态和Pause_IR状态暂停数据移位状态;而四个Exit状态是不稳定状态,它们为状态转换提供灵活性。
1.3 BSR
BSR是边界扫描技术的核心,它构成边界扫描链,其中的每一个边界扫描单元(BSC)都是由触发器Q、多路选择开关mux组成。
图3示出了JTAP标准中BC_1类型的BSC的结构[3]。
在图3中,SI为BSC的串行输入端,连接上一个器件(BSC)的串行输出端SO,依次相连便构成边界扫描链。
该扫描链的首端接TDI引脚,末端接TDO引脚。
当MODE为0时,芯片工作在正常模式下。
当芯片工作在测试模式时,测试数据在移位信号(SHIFT=1)的控制下,通过SI端进入到多路选择器1(MUX1)中,通过SO端进入下一个BSC的SI端;当芯片工作在捕获方式时(SHIFT=0),触发器Q1将捕获BSR并行输入端(DI)的数据,送入SO端,在扫描链中传递捕获的数据,并在TDO回收数据,以此来检测故障的存在并且定位故障所在的位置。
当MODE为1时,芯片工作在更新方式下,Q1中的数据在更新信号(UPDATE)的作用下,进入到多路选择器2(MUX2)中,通过BSR的并行输出端(D0)进入芯片的内核中。
1.4 IR
IR是向各个数据寄存器发出各种操作码并确定其工作方式的指令寄存器,图4示出了一种IR单元的结构[4]。
由图4可以看出,IR单元是由一个触发器Q1和一个锁存器Q2构成的。
CAPTURE DATE信号控制IR装载指令,SHIRFT IR信号控制指令在IR中的移位;CLK IR信号是从TCK获得的时钟信号,用于为BSR的捕
获操作、移位操作提供时钟信号。
UPDATE IR信号用于将当前指令装入锁存器Q2,以决定将要执行的操作模式和将要用到的测试数据寄存器的类别。
1.5辅助寄存器
辅助寄存器包括器件标志寄存器和旁路寄存器,器件标志寄存器用于存储器件制造商、器件序列号和器件版本号等信息,借助它可以辨别板上器件的制造商,还可以通过它检测是否已将正确的器件安装在电路板的正确位置上。
旁路寄存器用于将边界扫描单元直接旁路,把扫描数据直接传递给下一个扫描器件。
2基于边界扫描技术的数字系统测试
基于边界扫描技术的数字系统测试包括两个方面,一是对IC芯片电路功能测试及系统互连测试;二是利用边界扫描技术控制IC芯片处于某种特定的功能模式,以方便电路系统的设计和调试。
本文主要论述后者。
2.1测试系统组成
测试系统由主机(PC机)、测试仪和PCB实验板组成,测试仪通过标准口(RS232)与PC机连接,通过串行标准信号电缆与PCB板上的测试存取通道相连,如图5所示。
PCB板由Xilinx公司的两块xc9572 pc84芯片互连组成,芯片符合IEEE1149.1的JTAG接口标准,具有84个外部引脚、4个JTAG引脚、5个Vcc引脚、6个Vss引脚、69个双向数据输入/输出引脚,xc9572系列芯片未实现异步复位信号引脚TRST,电缆不需要提供这一信号线。
该器件的边界扫描寄存器由216个边界扫描单元组成,其中9个单元是内部属性的单元,其余207个单元组成69组边界扫描单元组[5]。
2.2设计分析与实现
2.2.1设计内容与分析
在图5所示的测试系统中,要求两片IC芯片分别实现不同功能的数据处理。
为了对存储器实现分时访问,可以设定其中的一片xc9572_pc84芯片(IC2)受到另一片xc9572_pc84芯片(IC1)的控制,使IC2进入高阻模式(高阻模式是JTAG标准中推荐的任选模式之一),用以对存储器的访问屏蔽一段时间,此时受控芯片E2的所有输出管脚都将处于浮空状态即高阻态。
从图2描述的TAP控制器的状态机可知,通过改变IC芯片自身的输入输出状态,就可以进行边界扫描测试或利用JTAG接口使IC芯片处于某个特定的功能模式。
支持JTAG标准的芯片都附有特定的BSDL(Boundary Scan Description Language)描述文件[3]。
BSDL语言是硬件描述语言(VHDL)的一个子集。
它对该芯片的边界扫描特性进行描述,用来沟通厂商、用户与测试工具之间的联系,为自动测试图形生成工具、检测特定的电路板提供相关的信息;在BSDL文件的支持下可生成由JYAG标准定义的测试逻辑。
BSDL文件可与软件工具结合起来,用于测试生成、结果分析和故障诊断。
通过对xc9572 pc84芯片的BSDL部分文件[6]的分析可知:
通过该部分代码可得出,控制该芯片进入高阻模式需要写入指令寄存器的控制码为11111100。
此时应选择旁路寄存器将边界扫描寄存单元旁路,以使扫描数据直接传递给下一个扫描器件。
2.2.2设计实现
根据上面的分析可以得出,要使芯片从正常工作模式下受控进入JTAG高阻状态需要经过以下五个步骤:
① 复位。
由于Xilinx 9572_pc84芯片不具备TRST管脚,而且芯片正常工作时TMS持续为高电平,所以控制器进入复位状态需要使TMS端接收低电平信号,控制TAP控制器完成复位操作。
②进入Shift_IR状态。
由TAP控制器状态机可以看出,当持续5个TCK上升沿使TMS端接收到01100时,则进入Shift_IR状态。
③将指令码写入指令寄存器。
在Shift_IR状态,通过TDI将高阻状态指令码11111100写入指令寄存器,需要5个TCK周期,此时TMS需保持4个周期低电平。
④进入Exit1_IR状态。
在Shift_IR状态的第5个TCK的上升沿,使TMS=1,进入Exit1_IR状态。