我们看到很多芯片,都有一个JTAG口,这是干什么用的呢?
JTAG(Joint Test Action Group)联合测试工作组。是一种标准测试协议,主要用于芯片内部的测试兼容IEEE 1149.1协议,很多的高级芯片均具有这个协议,如FPGA、DSP等。
JTAG口一开始只是用来对芯片内部进行测试的,他的原理就是在器件内部定义一个名为TAP(Test Access Port)测试访问口,然后通过专用的工具对内部进行测试。现在,通过JTAG可对芯片内部的所有部件进行编程控制。
JTAG口有很多的封装,比如10脚、14脚和20脚,尽管引脚的数目和排序不同,但都是大同小异!
IEEE1149.1标准里是强制要求的如下:
1、TCK(Test Clock Input)--JTAG口时钟脚
测试时钟输入脚为TAP的操作提供了一个独立的、基本的时钟信号,TAP的所有操作都是通过这个时钟信号来驱动的。
2、TMS (Test Mode Selection Input) -----测试模式选择输入脚
TMS信号可以控制TAP在不同的状态之间进行相互转换,此信号在TCK的上升沿有效。
3、TDI (Test Data Input) -----测试数据输入脚
TDI是所有要输入到特定寄存器的数据串行输入的接口。
4、TDO (Test Data Output) -----测试数据输出脚
TDO是所有要从特定的寄存器中输出的数据串行输出的接口。
5、 (VTREF) -----接口信号电平
接口信号电平可以用来确定ARM的JTAG接口使用的逻辑电平。
IEEE1149.1标准里是可选项的要求如下:
1、TRST (Test Reset Input) ----测试复位输入脚
TRST信号可以执行与TMS一样的功能,即用来对TAPController进行复位(初始化)。
2、RTCK(Return Test Clock ) ----反馈测试时钟
此脚是用来同步TCK信号的,由目标端反馈给仿真器的时钟信号,在不使用时直接接地。
3、nSRST (System Reset )----时钟复位信号反馈脚
此脚可以检测目标系统的复位情况同时也可与目标板上的系统复位信号相连,直接对目标系统复位。建议为了防止误触发应在目标端加上适当的上拉电阻。
4、USER IN--用户自定义输入
此脚可以接到目标机的一个IO上,用来接受上位机的控制。
5、USER OUT--用户自定义输出
此脚可以接到目标机的一个IO上,用来向上位机的反馈一个状态。
实际上,这些可以选择的脚,一般都是不使用的,在实际应用中出现的20线等口,主要是为了增加地线,减小JTAG的干扰而出现的。