赞
踩
JTAG:Joint Test Action Group
;联合测试工作组。JTAG
是一种IEEE标准用来解决板级问题,开发于上个世纪80年代。今天JTAG
被用来烧录、debug
、探查端口。当然,最原始的使用是边界测试。边界测试:举个例子你有两个芯片,这两个芯片之间连接了很多很多的线,怎么确保这些线之间的连接是OK
的呢,用JTAG
,它可以控制所有IC
的引脚。这叫做芯片边界测试。
JTAG
发展到现在通常四个脚:TDI,TDO,TMS,TCK
,当然还有个复位脚TRST
。对于芯片上的JTAG
的脚实际上是专用的。
TDI
:测试数据输入,数据通过TDI
输入JTAG
口;TDO
:测试数据输出,数据通过TDO
从JTAG
口输出;TMS
:测试模式选择,用来设置JTAG
口处于某种特定的测试模式;TCK
:测试时钟输入;TRST
:测试复位;
CPU
和FPGA
制造商允许JTAG
用来端口debug
;FPGA
厂商允许通过JTAG
配置FPGA
,使用JTAG
信号通入FPGA
核。
PC
控制JTAG
:用JTAG
电缆连接PC
的打印端口或者USB
或者网口。最简单的是连接打印端口。
TMS
:在每个含有JTAG
的芯片内部,会有个JTAG TAP
控制器。TAP
控制器是一个有16个状态的状态机
,而TMS
就是这玩意的控制信号。当TMS
把各个芯片都连接在一起的时候,所有的芯片的TAP
状态跳转是一致的。下面是TAP
控制器的示意图:
改变TMS
的值,状态就会发生跳转。如果保持5
个周期的高电平,就会跳回test-logic-rest
,通常用来同步TAP
控制器。
通常使用两个最重要的状态是Shift-DR
和Shift-IR
,两者连接TDI
和TDO
使用。
IR
:命令寄存器,你可以写值到这个寄存器中通知JTAG
干某件事,通常是写寄存器地址。每个TAP
只有一个IR
寄存器而且长度是一定的。
DR
:TAP
可以有多个DR
寄存器,与IR
寄存器相似,每个IR
值会选择不同的DR
寄存器,通常是写往寄存器里面存的数据。
计算JTAG
链中的IC
数目:
- 一个重要的应用是
IR
值是全一值,表示BYPASS
命令,在BYPASS
模式中,TAP
控制器中的DR
寄存器总是单bit
的,从输入TDI
到输出TDO
,通常一个周期,啥也不干。- 可用
BYPASS
模式计算IC
数目。如果每个IC
的TDI-TDO
链的延迟是一个时钟,我们可以发送一些数据并检测它延迟了多久,那么久可以推算出JTAG
链中的IC
数目。
得到JTAG
链中的器件ID
:- 大多数的
JTAG IC
都支持IDCODE
命令。在IDCODE
命令中,DR
寄存器会装载一个32 bit
的代表器件ID
的值。不同于BYPASS
指令,在IDCODE
模式下IR
的值没有标准。不过每次TAP
控制器跳转到Test-Logic-Reset
态,它会进入IDCODE
模式,并装载IDCODE
到DR
。
TAP
控制器进入边界扫描模式时,DR
链可以遍历每个IO
块或者读或拦截每个引脚。
在FPGA
上使用JTAG
,你可以知晓每个引脚的状态当FPGA
在运行的时候。
可以使用JTAG
命令SAMPLE
,当然不同IC
可能是不同的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。