31---JTAG电路设计

2024-03-28 09:44
文章标签 31 电路设计 jtag

本文主要是介绍31---JTAG电路设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

视频链接

JTAG电路设计(JLINK&XILINX&ALTERA)_哔哩哔哩_bilibili

JTAG电路设计

1、JTAG简介

JTAG(Joint Test Action Group):联合测试工作组,是在名为标准测试访问端口和边界扫描结构的IEEE的标准1149.1的常用名称。

JTAG是一种国际标准测试协议,主要用于芯片内部测试;验证设计与测试生产出的印刷电路板

现在多数的高级器件都支持JTAG协议,如DSP、FPGA、CPLD器件等。

JTAG最初是用来对芯片进行测试的,基本原理是在器件内部定义一个TAP(Test Access Port测试访问口)通过专用的JTAG测试工具对内部节点进行测试。

程序代码的下载和调试。

(对于板子上则对应的是(2.54 X2 X7或者X5 的防呆座子或者直接是2.54单排针)

2、JTAG接口解读及优点

JTAG的接口是一种特殊的4/5个接脚接口连到芯片上 ,在电路板上很多芯片可以将他们的JTAG接脚通过Daisy Chain(菊花链)的方式连在一起,并且集成电路只需连接到一个“JTAG端口”就可以访问一块PCB上的所有集成电路。这些连接引脚是:

TCK为测试时钟输入

TDI为测试数据输入,数据通过TDI引脚输入JTAG接口;

TDO为测试数据输出,数据通过TDO引脚从JTAG接口输出;

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

TRST为测试复位(可选输入引脚,低电平有效。

3、JTAG的电路时序

JTAG电路的时序如图所示,所有基于JTAG的操作都必须同步于JTAG时钟信号TCK。在TCK的上升沿读取或输出有效数据,有严格的建立、保持时间要求,因此一般情况下JTAG的时钟不会太高。

4、JTAG工作流程

5、JTAG工作原理

PC控制JTAG:用JTAG电缆连接PC的打印端口或者USB或者网口。最简单的是连接打印端口。

6、下载调试器-国际标准

下载调试器是将PC(例如通过USB协议)发送的命令转换为MCU(负责MCU内部外围设备)理解的语言(例如SWD或JTAG协议)的设备,加载代码并精确控制执行。

6.1、ARM调试器----STM32、全志H3等

JLINK V9 仿真器下载器STM32 ARM单片机 开发板烧录器J-LINK V9调试编程器 高配版+转接板【图片 价格 品牌 报价】-京东 (jd.com)

(2.54 X2 X10 )

JTAG有10pin的、14pin的和20pin的,尽管引脚数和引脚的排列顺序不同,但是其中有一些引脚是一样的,各个引脚的定义如下。

6.2、Xilinx(2.54 or 2     X2 X7 )

6.3、ALTERA  ------USB blaster(2.54 X2 X5 )

出10根针

7、JTAG管脚定义

管脚符号

类型

描述

TDI

测试数据输入管脚

Test Data Input(TDI)

TDI是数据输入的接口。所有要输入到特定寄存器的数据都是通过TDI输入端口串行输入的(由TCK驱动)。

TDI在IEEE 1149.1标准里是强制要求的。

TDO

测试数据输出管脚

Test Data Output(TDO)

TDO是数据输出的接口。所有要从特定的寄存器中输出的数据都是通过TDO输出端口串行输出的(由TCK驱动)。

TDO在IEEE 1149.1标准里是强制要求的。

TMS

测试模式选择管脚

Test Mode Selection Input(TMS)

TMS信号用来控制TAP状态机的转换。通过TMS信号,可以控制TAP在不同的状态间相互转换。TMS信号在TCK的上升沿有效。

TMS在IEEE 1149.1标准里是强制要求的。

TCK

测试时钟输入管脚

Test Clock Input (TCK)

TCK为TAP的操作提供了一个独立的、基本的时钟信号,TAP的所有操作都是通过这个时钟信号来驱动的。

TCK在IEEE 1149.1标准里是强制要求的。

TRST

测试复位输入管脚

Test Reset Input(TRST)

TRST可以用来对TAP Controller进行复位(初始化)。不过这个信号接口在IEEE 1149.1标准里是可选的,因为通过TMS也可以对TAP Controller进行复位(初始化)操作。

VTREF

接口信号电平参考电压一般直接连接Vsupply。

这个可以用来确定ARM的JTAG接口使用的逻辑电平(比如3.3V,还是5.0V)

RTCK

Return Test Clock: 可选项,由目标端反馈给仿真器的时钟信号,用来同步TCK信号的产生,不使用时直接接地。

nSRST

System Reset: 可选项,与目标板上的系统复位信号相连,可以直接对目标系统复位。

同时可以检测目标系统的复位情况,为了防止误触发应在目标端加上适当的上拉电阻。

JTAG调试用到了TCK、TMS、TDI、TDO和TRST这几个脚。

其中,TRST不是必须的。TRST可以用来对TAP Controller进行复位(初始化)。不过这个信号接口在IEEE 1149.1标准里是可选的,并不是强制要求的。

8、JTAG硬件电路设计要点

9、硬件实战设计 

9.1   A7硬件实战---黑金

9.2   K7 JTAG硬件实战(米联客)

9.3   XC7Z020 JTAG硬件实战

9.4、CS6S硬件实战

9.5、H3硬件实战

9.6、HI3516硬件实战

9.7、Altera

9.8、STM32

10、拓展 

详细内容参考视频讲解

这篇关于31---JTAG电路设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/855247

相关文章

Linux 删除 当前下的 mysql-8.0.31 空文件夹

在Linux中,如果你想要删除当前目录下的名为mysql-8.0.31的空文件夹(即该文件夹内没有任何文件或子文件夹),你可以使用rmdir命令。但是,如果mysql-8.0.31文件夹并非完全为空(即它包含文件或子文件夹),rmdir命令会失败。 如果你的目标是删除mysql-8.0.31文件夹及其内部的所有内容(无论是否为空),你应该使用rm命令结合-r(或-R,它们是等价的)选项来递归地删

尝试用java spring boot+VUE3实现前后端分离部署(8/31)

前言         这几天开学了,公司这边几个和学校对接的项目都挺忙的,然后我又开始有点闲的情况了。问大佬能不能继续看看若依的项目,大佬让我自己去学了。在看若依的项目的时候在想,python的FLASK后端实现和JAVA spring boot的实现差别大不大,两者实现的思路估计大差不差,那具体的代码逻辑和代码实现又有多大差别,java面向对象的编程思想又是怎么体现的。这些想法迫使我将原来使用

[C/C++入门][进制原理]31、求分数序列和

题目来自于信息学奥赛 1078 分析: 这道题看起来比较复杂,实际上只需要通过两个公式,一次性求出分母和分子,然后把这个求出来的数加入到变量和中。甚至都不需要知道总共游哪些数。数组都用不上。循环就能解决。 #include <iostream>#include <iomanip> // 用于格式化输出using namespace std;int main() {double s

“弹性盒子”一维布局系统(补充)——WEB开发系列31

弹性盒子是一种一维布局方法,用于根据行或列排列元素。元素可以扩展以填补多余的空间,或者缩小以适应较小的空间,为容器中的子元素提供灵活的且一致的布局方式。 一、什么是弹性盒子? CSS 弹性盒子(Flexible Box Layout,简称 Flexbox)是 CSS3 中引入的一种布局模式,提供一种有效的方式来布局、对齐和分配容器内空间,特别是在动态和复杂的应用界面中。 1、

Linux入门攻坚——31、rpc概念及nfs和samba

NFS:Network File System     传统意义上,文件系统在内核中实现 RPC:函数调用(远程主机上的函数),Remote Procedure Call protocol     一部分功能由本地程序完成     另一部分功能由远程主机上的 NFS本质上是一种RPC的实现。 本地用户进程要使用文件系统,通过系统调用,由内核完成文件系统的操作,而NFS只不过是系统内核又通过RP

LeetCode 31 Next Permutation

题意: 给出一串数字,求该排列的下一个排列。如果该排列为字典序最大排列,则输出字典序最小排列。 思路: 首先C++里面有求下一个排列的函数next_permutation,该函数返回0即表示当前排列字典序最大。 如果要自己动手实现,那么就考虑“如何找到比当前排列大1的排列”。 假设排列A(aaaXddd)比排列B(aaaYfff)大1,a部分为两排列相同部分,X与Y表示最靠左边不同

C++相关概念和易错语法(31)(特殊类的设计、new和delete底层调用分析)

特殊类的设计 在实践过程中,我们难免会接触到一些需要实现特定功能的类。像之前提过的unique_ptr就是直接delete拷贝构造和赋值函数。下面会分享一些常见的特殊类的实现 1、防拷贝和防赋值 通过封死拷贝构造和赋值函数来保护对象里面内容不被复制。如果对象里面的内容是指针,对析构次数有严格要求的话(如unique_ptr)就通常采用这种处理方法。 注意拷贝构造和移动拷贝为一体,赋值重

Python精选200Tips:31-40

With dreams ahead, I fear no storms 031 any032 all033 try034 del035 not036 return037 with038 yield039 next040 from 运行系统:macOS Sonoma 14.6.1 Python编译器:PyCharm 2024.1.4 (Community Edition) Pytho

有理有据!为什么String选择数字31作为hashCode方法乘子?

点击上方“朱小厮的博客”,选择“设为星标” 回复”1024“获取独家整理的学习资料 来源:http://1t.click/Xkk 1. 背景 某天,我在写代码的时候,无意中点开了 String hashCode 方法。然后大致看了一下 hashCode 的实现,发现并不是很复杂。但是我从源码中发现了一个奇怪的数字,也就是本文的主角31。这个数字居然不是用常量声明的,所以没法从字面意思上推断

Day 31: 贪心算法基础 V

56. 合并区间 本题也是重叠区间问题,如果昨天三道都吸收的话,本题就容易理解了。 给出一个区间的集合,请合并所有重叠的区间。 示例 1: 输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2: 输入: interva