JTAG基础知识

原帖地址:http://www.javashuo.com/article/p-tjtxpfzd-gn.htmlhtml

1.什么是JTAG:Joint Test Action Group测试

JTAG是一种IEEE标准用来解决板级问题,开发于上个世纪80年代。今天JTAG被用来烧录、debug、探查端口。固然,最原始的使用是边界测试。debug

边界测试:rest

举个例子你有两个芯片,这两个芯片之间链接了不少不少的线,怎么确保这些线之间的链接是OK的呢,用JTAG,它能够控制全部IC的引脚。这叫作芯片边界测试。htm

2.JTAG引脚:blog

JTAG发展到如今已经有脚了,一般四个脚:TDI,TDO,TMS,TCK,固然还有个复位脚TRST。对于芯片上的JTAG的脚其实是专用的。开发

TDI:测试数据输入,数据经过TDI输入JTAG口;get

TDO:测试数据输出,数据经过TDO从JTAG口输出;同步

TMS:测试模式选择,用来设置JTAG口处于某种特定的测试模式;it

TCK:测试时钟输入;

TRST:测试复位;

更多的用法:

CPU和FPGA制造商容许JTAG用来端口debug;FPGA厂商容许经过JTAG配置FPGA,使用JTAG信号通入FPGA核。

3.JTAG怎么工做:

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寄存器。

4.JTAG链相关疑问:

计算JTAG链中的IC数目:

一个重要的应用是IR值是全一值,表示BYPASS命令,在BYPASS模式中,TAP控制器中的DR寄存器老是单bit的,从输入TDI到输出TDO,一般一个周期,啥也不干。

可用BYPASS模式计算IC数目。若是每一个IC的TDI-TDO链的延迟是一个时钟,咱们能够发送一些数据并检测它延迟了多久,那么久能够推算出JTAG链中的IC数目。

获得JTAG链中的器件ID:

大多数的JTAG IC都支持IDCODE命令。在IDCODE命令中,DR寄存器会装载一个32bit的表明器件ID的值。不一样于BYPASS指令,在IDCODE模式下IR的值没有标准。不过每次TAP控制器跳转到Test-Logic-Reset态,它会进入IDCODE模式,并装载IDCODE到DR。

5.边界扫描:

TAP控制器进入边界扫描模式时,DR链能够遍历每一个IO块或者读或拦截每一个引脚。

在FPGA上使用JTAG,你能够知晓每一个引脚的状态当FPGA在运行的时候。

可使用JTAG命令SAMPLE,固然不一样IC多是不一样的。

相关文章
相关标签/搜索