最近需要用到JTAG协议,端口较少但是有些总线行为总觉得怪怪的,根据看的文章做一个记录,不会涉及的很详细,会把看的文章都记录在参考文献中,有感兴趣可进链接细细研究。
JTAG协议简介
IEEE 1149.1 标准规定了一个四线串行接口(第五条线是可选的),该接口称作测试访问端口(TAP),用于访问复杂的集成电路(IC),例如微处理器、DSP、ASIC 和CPLD。除了TAP之外,混合IC也包含移位寄存器和状态机,以执行边界扫描功能。在TDI(测试数据输入)引线上输入到芯片中的数据存储在指令寄存器中或一个数据寄存器中。串行数据从TDO(测试数据输出)引线上离开芯片。边界扫描逻辑由TCK(测试时钟)上的信号计时,而且TMS(测试模式选择)信号驱动TAP控制器的状态。TRST(测试重置)是可选项。根据相关数据手册中的说明,TRST、TDI、TMS、TCK引脚上需要接一个10KΩ的上拉电阻。
JTAG接口的数据传输是双向串行传输。通过TDI接口,仿真器将数据一位位的送入MCU的JTAG电路中;通过TDO接口,MCU将JTAG内部的数据一位位的输出;数据的输入输出均是在TCK信号的上升沿/下降沿进行同步的。具体来说就是MCU的JTAG电路在TCK的上升沿采样TDI的信号,在下降沿在TDO输出数据。TMS信号也是在TCK的上升沿进行采样。JTAG主要用于扫描链测试,但对于我不是重点,有详细了解参见文献一[1]。
JTAG接口的几种形式
JTAG没有标准的接口定义,甚至每家公司定义都不一样,罗列了4种接口定义,有ARM公司的定义,有ST公司的定义等等,仅供大家参考。有详细了解参见文献一[2]。
JTAG接口的拓扑形式
JTAG接口可以一对一的使用,也可以组成菊花链的一对多拓扑结构,两种拓扑结构如下图所示。多核的芯片,其芯片内部已经接成了菊花链的形式。这应该也是JTAG用来作为扫描链的原因。
JTAG TAP状态机
对于每一个状态都有分析,参见参考文献[3]。
参考文献
【1】JTAG协议及接口