0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

硬件接口协议技术:JTAG内部状态机——TAP控制器

电子设计 来源:硬件助手 作者:硬件助手 2020-11-27 14:13 次阅读

本文主要介绍JTAG总线的引脚定义、接口标准、边界扫描和TAP控制器

JTAG(Joint Test Action Group;联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如ARMDSPFPGA等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。

JTAG最初是用来对芯片进行测试的,JTAG的基本原理是在器件内部定义一个TAP(TestAccess Port;测试访问)通过专用的JTAG测试工具对进行内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。现在,JTAG接口还常用于实现ISP(In-System Programmable;在线编程),对Flash等器件进行编程。

JTAG内部有一个状态机,称为TAP控制器。TAP控制器的状态机通过TCK和TMS进行状态的改变,实现数据和指令的输入。

1、引脚定义

含有JTAG口的芯片种类较多,如CPU、DSP、CPLD等。都有如下JTAG引脚定义(信号方向都是针对CPU来说的):

TCK——测试时钟输入。TMS和TDI的数据在TCK的上升沿被采样。数据在时钟的下降沿输出到TDO。建议下拉。

TDI——测试数据输入。输入到指令寄存器(IR)或数据寄存器(DR)的数据出现在TDI输入端,在TCK的上升沿被采样。建议上拉,上拉电阻阻值不能小于1K。

TDO——测试数据输出。来自指令寄存器或数据寄存器的数据在时钟的下降沿被移出到TDO。不用上下拉,悬空时,尽量引出测试点,同时应避免将TDO作为I/O使用。

TMS——测试模式选择。TMS用来设置JTAG口处于某种特定的测试模式,用于控制TAP状态机。必须上拉。

VTref——目标板参考电压,接电源。用来确定CPU的JTAG接口使用的逻辑电平。

可选引脚TRST——测试复位,输入引脚,低电平有效。TRST可以用来对TAP Controller进行复位(初始化)。因为通过TMS也可以对TAPController进行复位(初始化)。所以有四线JTAG与五线JTAG之分。

可选引脚RTCK——测试时钟返回信号。RTCK由目标端反馈给仿真器的时钟信号,用来同步TCK信号的产生,不使用时直接接地。

可选引脚nSRST——目标系统复位信号。与目标板上的系统复位信号相连,可以直接对目标系统复位。同时可以检测目标系统的复位情况,为了防止误触发应在目标端加上适当的上拉电阻。

另外还有一些控制器会有如下一些额外信号:

TDIS

PD或TVD——(Presence Detect, Target Voltage Detect),和VTref的功能一样。

EMU[0:n]或ET[0:n]——(EMUlation, Emulation Test)

EMU pins are bi-directional multifunctional pinsthat provide support for the following features:

Boot Modes

Cross Triggers

Core Trace

System Trace

HS-RTDX (high speed RTDX,deprecated functionality)

In the case of Boot Modes, the EMU0/1 pin state is driven by the XDS. HS-RTDX provides bi-directional data transport. Both Core and System Trace transport event history and timing data from the target to the XDS. Crosstriggers are bi-directional triggers that allow an event in one device to causea debug action in other devices.

2、JTAG接口标准

目前JTAG接口的连接有三种标准,即10针、14针接口和20针接口,其定义分别如下所示。

★由于JTAG经常使用排线连接,为了增强抗干扰能力,在每条信号线间加上地线,偶数针脚都是地信号。

3、边界扫描(Boundary-Scan

边界扫描技术的基本思想是在靠近芯片的输入输出管脚上增加一个移位寄存器单元。因为这些移位寄存器单元都分布在芯片的边界上(周围),所以被称为边界扫描寄存器(Boundary-Scan Register Cell)。

当芯片处于调试状态的时候,这些边界扫描寄存器可以将芯片和外围的输入输出隔离开来。通过这些边界扫描寄存器单元,可以实现对芯片输入输出信号的观察和控制。对于芯片的输入管脚,可以通过与之相连的边界扫描寄存器单元把信号(数据)加载到该管脚中去;对于芯片的输出管脚,也可以通过与之相连的边界扫描寄存器“捕获”该管脚上的输出信号。在正常的运行状态下,这些边界扫描寄存器对芯片来说是透明的,所以正常的运行不会受到任何影响。这样,边界扫描寄存器提供了一个便捷的方式用以观测和控制所需要调试的芯片。另外,芯片输入输出管脚上的边界扫描(移位)寄存器单元可以相互连接起来,在芯片的周围形成一个边界扫描链(Boundary-Scan Chain)。一般的芯片都会提供几条独立的边界扫描链,用来实现完整的测试功能。边界扫描链可以串行的输入和输出,通过相应的时钟信号和控制信号,就可以方便的观察和控制处在调试状态下的芯片。

4、TAP(TEST ACCESS PORT)

TAP是一个通用的端口,通过TAP可以访问芯片提供的所有数据寄存器(DR)和指令寄存器(IR)。对整个TAP的控制是通过TAP Controller来完成的。TAP总共包括5个信号接口TCK、TMS、TDI、TDO和TRST:其中4个是输入信号接口和另外1个是输出信号接口。一般,我们见到的开发板上都有一个JTAG接口,该JTAG接口的主要信号接口就是这5个。

通过保持TMS为高电平(逻辑1)并在TCK端输入至少5个选通脉冲(变高后再变低)后TAP逻辑被复位。这使TAP状态机的状态从任何其它状态转到测试逻辑复位状态对,JTAG口和测试逻辑复位,该状态不复位CPU和外设。

通过TAP接口,对数据寄存器(DR)进行访问的一般过程是:

通过指令寄存器(IR),选定一个需要访问的数据寄存器。

把选定的数据寄存器连接到TDI和TDO之间。

由TCK驱动,通过TDI,把需要的数据输入到选定的数据寄存器当中去;同时把选定的数据寄存器中的数据通过TDO读出来。

下图是TAP控制器的16-states有限状态机图示:

TAP控制器的状态在TCK的上升沿变化。

在上电时进入逻辑复位状态(Test-Logic Reset),在该状态下,测试部分的逻辑电路全部被禁用,以保证芯片核心逻辑电路的正常工作。通过TRST信号也可以对测试逻辑电路进行复位,使得TAP Controller进入Test-Logic Reset状态。前面我们说过TRST是可选的一个信号接口,这是因为在TMS上连续加5个TCK脉冲宽度的“1”信号也可以对测试逻辑电路进行复位,使得TAP Controller进入Test-Logic Reset状态。所以,在不提供TRST信号的情况下,也不会产生影响。

Shift-DR state扫描DR,TDO输出有效。

Shift-IR state扫描IR,TDO输出有效。

其他状态下TDO输出无效。

如果需要捕获芯片某个管脚上的输出,首先需要把该管脚上的输出装载到边界扫描链的寄存器单元里去,然后通过TDO输出,这样我们就可以从TDO上得到相应管脚上的输出信号。如果要在芯片的某个管脚上加载一个特定的信号,则首先需要通过TDI把期望的信号移位到与相应管脚相连的边界扫描链的寄存器单元里去,然后把该寄存器单元的值加载到相应的芯片管脚。

指令寄存器的访问过程:系统上电,TAP Controller进入Test-Logic Reset状态,然后依次进入:Run-Test/Idle→Select-DR-Scan→Select-IR-Scan→Capture-IR→Shift-IR→Exit1-IR→Update-IR,最后回到Run-Test/Idle状态。在Capture-IR状态中,一个特定的逻辑序列被加载到指令寄存器当中;然后进入到Shift-IR状态。在Shift-IR状态下,通过TCK的驱动,可以将一条特定的指令送到指令寄存器当中去。每条指令都将确定一条相关的数据寄存器。然后从Shift-IR→Exit1-IR→Update-IR。在Update-IR状态,刚才输入到指令寄存器中的指令将用来更新指令寄存器。最后,进入到Run-Test/Idle状态,指令生效,完成对指令寄存器的访问。

数据寄存器的访问:当前可以访问的数据寄存器由指令寄存器中的当前指令决定。要访问由刚才的指令选定的数据寄存器,需要以Run-Test/Idle为起点,依次进入Select-DR-Scan→Capture-DR→Shift-DR→Exit1-DR→Update-DR,最后回到Run-Test/Idle状态。在这个过程当中,被当前指令选定的数据寄存器会被连接在TDI和TDO之间。通过TDI和TDO,就可以将新的数据加载到数据寄存器当中去,同时,也可以捕获数据寄存器中的数据。具体过程如下。在Capture-DR状态中,由TCK的驱动,芯片管脚上的输出信号会被“捕获”到相应的边界扫描寄存器单元中去。这样,当前的数据寄存器当中就记录了芯片相应管脚上的输出信号。接下来从Capture-DR进入到Shift-DR状态中去。在Shift-DR状态中,由TCK驱动,在每一个时钟周期内,一位新的数据可以通过TDI串行输入到数据寄存器当中去,同时,数据寄存器可以通过TDO串行输出一位先前捕获的数据。在经过与数据寄存器长度相同的时钟周期后,就可以完成新信号的输入和捕获数据的输出。接下来通过Exit1-DR状态进入到Update-DR状态。在Update-DR状态中,数据寄存器中的新数据被加载到与数据寄存器的每个寄存器单元相连的芯片管脚上去。最后,回到Run-Test/Idle状态,完成对数据寄存器的访问。

以上就是针对JTAG的相关介绍,详细可参见标准《IEEE Std 1149.1 Test Access Port and Boundary-Scan Architecture》。

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16153

    浏览量

    177269
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10816

    浏览量

    210989
  • JTAG
    +关注

    关注

    6

    文章

    398

    浏览量

    71570
收藏 人收藏

    评论

    相关推荐

    接口控制状态寄存什么作用

    接口控制状态寄存(Control and Status Registers,简称CSR)是计算机系统中用于控制和监控
    的头像 发表于 10-17 10:42 249次阅读

    通过JTAG接口使用SimpleLink™MSP432E4微控制器

    电子发烧友网站提供《通过JTAG接口使用SimpleLink™MSP432E4微控制器.pdf》资料免费下载
    发表于 09-14 10:23 0次下载
    通过<b class='flag-5'>JTAG</b><b class='flag-5'>接口</b>使用SimpleLink™MSP432E4微<b class='flag-5'>控制器</b>

    触发状态机的关系是什么

    触发状态机在数字电路设计中有着紧密的关系,它们共同构成了时序逻辑电路的基础,用于实现数据的存储、处理和传输。
    的头像 发表于 08-12 11:24 354次阅读

    如何在FPGA中实现状态机

    在FPGA(现场可编程门阵列)中实现状态机是一种常见的做法,用于控制复杂的数字系统行为。状态机能够根据当前的输入和系统状态,决定下一步的动作和新的
    的头像 发表于 07-18 15:57 461次阅读

    玩转Spring状态机

    说起Spring状态机,大家很容易联想到这个状态机和设计模式中状态模式的区别是啥呢?没错,Spring状态机就是状态模式的一种实现,在介绍S
    的头像 发表于 06-25 14:21 872次阅读
    玩转Spring<b class='flag-5'>状态机</b>

    基于FPGA的SPI Flash控制器的设计方案

    ,wr}值,接收第3字节数据值,同理,可读出SPI Flash内部所有数据。 当状态机处于wait8状态而用户想退出读数据操作时,可向控制器输入NOP指令强制结束当前读数据操作。
    发表于 06-03 10:13

    在Verilog中实现Moore型和Mealy型状态机的方法简析

    编写能够被综合工具识别的状态机,首先需要理解状态机的基本概念和分类。状态机(FSM)是表示有限个状态以及在这些状态之间转换的逻辑结构。
    的头像 发表于 05-01 11:38 1417次阅读

    如何采用“状态机”解析UART数据帧

    如果一个系统接收上述“不定长度”的协议帧,将会有一个挑战--如何高效接收与解析。 为简化系统设计,我们强烈建议您采用“状态机”来解析UART数据帧。
    的头像 发表于 03-25 14:29 606次阅读
    如何采用“<b class='flag-5'>状态机</b>”解析UART数据帧

    什么是有限状态机?如何解决传统有限状态机状态爆炸」问题?

    有限状态机(Finite State Machine,简称FSM)是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列以及如何响应来自外界的各种事件。
    的头像 发表于 02-17 16:09 5968次阅读
    什么是有限<b class='flag-5'>状态机</b>?如何解决传统有限<b class='flag-5'>状态机</b>「<b class='flag-5'>状态</b>爆炸」问题?

    Verilog状态机+设计实例

    在verilog中状态机的一种很常用的逻辑结构,学习和理解状态机的运行规律能够帮助我们更好地书写代码,同时作为一种思想方法,在别的代码设计中也会有所帮助。 一、简介 在使用过程中我们常说
    的头像 发表于 02-12 19:07 3798次阅读
    Verilog<b class='flag-5'>状态机</b>+设计实例

    关于JTAG口,你了解多少?

    JTAG的芯片内部,会有个JTAG TAP控制器TAP控制
    发表于 01-19 21:19

    状态机该怎么监控

    状态机卡住的场景——通过状态跳转条件的DFX信号去判断卡住的原因
    的头像 发表于 01-15 10:03 387次阅读
    <b class='flag-5'>状态机</b>该怎么监控

    Spring状态机的实现原理和使用方法

    说起 Spring 状态机,大家很容易联想到这个状态机和设计模式中状态模式的区别是啥呢?没错,Spring 状态机就是状态模式的一种实现,在
    的头像 发表于 12-26 09:39 1858次阅读
    Spring<b class='flag-5'>状态机</b>的实现原理和使用方法

    SaberRD状态机建模工具介绍(一)什么是状态机建模

    状态机建模是使用状态图和方程式的手段,创建基于混合信号的有限状态机模型的一种建模工具。
    的头像 发表于 12-05 09:51 1616次阅读
    SaberRD<b class='flag-5'>状态机</b>建模工具介绍(一)什么是<b class='flag-5'>状态机</b>建模

    状态机怎么上来就错了?怎么解决?

    状态机本身很简单,default也写了,然后进行仿真时看到了这样的波形:
    的头像 发表于 12-04 10:43 352次阅读
    <b class='flag-5'>状态机</b>怎么上来就错了?怎么解决?