关于JTAG口的知识!
更多精彩点
ittbank
3天前
收录于话题
素材来源:
FPGA
资源侠客
在
FPGA
研发及学习过程中,有一个关键步骤就是下板实现,做硬件“硬现”很重要,一般来说用
JTAG
口比较常见一些,因此相信肯定有些大侠遇到过JTAG口失灵或者损坏无法使用的事情。最近我就遇到了这类事情,
FPGA
的JTAG口突然就不能下载程序了,而且这种事情已经不是第一次了,之前在做项目的时候也出现过,而且出现的形式也极其相似,之前还用的好好的,第二天就不行了,真是让人郁闷。为此,本人也是去尝试了很多解决办法,一开始也没有去设想是JTAG口坏了,于是乎,本人换了usb-blaster,可一点反应也没有。难道真的是JTAG口坏了?于是,本人就去查阅相关资料去搞清楚问题的本质在哪里,下面就是本人的一些收获,分享出来,仅供各位大侠参考,一起交流学习。
根据查阅资料及本人的一些实践经验所得,在使用
JTAG
下载
接口
的过程中,请不要随意带电插拔,否则会损坏
FPGA
芯片的JTAG口信号管脚。那么如何去确认JTAG口已经损坏了呢。首先你要去排除基本的几项因素,一是,是否匹配连接,有很多
设备
会对应很多
接口
,在实际条件下要匹配正确,否则也会出现上述情况;二是,排除下载线的问题,如果是下载线坏了,可以使用多根下载线去尝试,排除这类问题。如果还是不能访问FPGA的JTAG口,那么很有可能你的FPGA芯片的JTAG口已经损坏。此时请用
万用表
检查TCK,TMS,TDO和Tdi是否和GND
短路
,如果任何一个信号对地短路则表示JTAG信号管脚已经损坏。
至于
JTAG
口是什么,这里我们也来探讨一下,JTAG英文全称是
Joint Test Action Group
,翻译过来中文就是联合
测试
工作组。
JTAG
是一种IEEE标准用来解决板级问题,诞生于20世纪80年代。今天JTAG被用来烧录、debug、探查端口。当然,最原始的使用是边界
测试
。
1、边界
测试
举个例子,你有两个芯片,这两个芯片之间连接了很多很多的线,怎么确保这些线之间的连接是OK的呢,用
JTAG
,它可以控制所有IC的
引脚
。这叫做芯片边界
测试
。
2、
JTAG
引脚
JTAG
发展到现在已经有脚了,通常四个脚:TDI,TDO,TMS,TCK,当然还有个复位脚TRST。对于芯片上的JTAG的脚实际上是专用的。
TDI:
测试
数据输入,数据通过TDI输入
JTAG
口;
TDO:
测试
数据输出,数据通过TDO从
JTAG
口输出;
TMS:
测试
模式选择,用来设置
JTAG
口处于某种特定的
测试
模式;
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可能是不同的。
如果
JTAG
口已经损坏了,那只能“节哀顺变”了,但是也不要只顾着伤心,最重要的是分析其中的原因,做其他事情也是一样的道理。那我们就来分析分析,我们在使用的过程中,可能经常为了方便,随意插拔JTAG下载口,在大多数情况下不会发生问题。但是仍然会有很小的机率发生下面的问题,因为热插拔而产生的JTAG口的
静电
和
浪涌
,最终导致
FPGA
管脚的击穿。至此,也有人怀疑是否是盗版的
USB
Blaster或者ByteBlasterII
设计
简化,去除了保护电路导致的。但经过很多实际情况的反馈,事实证明原装的USB Blaster 也会发生同样的问题。也有人提出质疑是否是ALTERA的低端芯片为了降低成本,FPGA的
IO
单元没有加
二极管
钳位保护电路。这类质疑其实都不是解决问题的本质,最重要的是我们要规范操作,尽可能的去减少因为实际操作不当导致一些硬件
设备
、
接口
等提前结束寿命或“英年早逝”,那重点来了,关于JTAG下载口的使用,我们需要如何去规范操作呢。
上电时的操作流程顺序:
1.在
FPGA
开发板及相关
设备
断电的前提下,插上
JTAG
下载线
接口
;
2.插上
USB
Blaster或者ByteBlasterII的电缆;
3.接通
FPGA
开发板的
电源
。
下电时的操作流程顺序:
1.断开
FPGA
开发板及相关
设备
的
电源
;
2.断开
USB
Blaster或者ByteBlasterII的电缆;
3.拔下
JTAG
下载线
接口
,并放置适宜地方存储。
虽然上述的操作步骤有点繁琐,有时我们在使用的时候也是不以为然,但是为了保证芯片不被损坏,建议大家还是中规中矩的按照上述的步骤来操作。本人上述出现的问题,经过检测后就是TCK跟GND
短路
了,虽然发生的概率不是很大,但是为了能够更合理更长久的的使用硬件相关
设备
,还是建议大家在实操过程中,不要担心繁琐,中规中矩操作,换个角度思考,“多磨多练”也是对自己有好处的。最后,还是给各位唠叨一句,关于
JTAG
下载口的使用最好不要带
电热
插拔,起码可以让JTAG口“活”的久一些,毕竟长情陪伴也是挺不错的,不要等到失去了才知道惋惜。
—END—
ittbank
让电子库存因技术创造需求而改变的ITT模式电商平台。以共享经济理念的创客及工程师为核心、以开放用户生成的数据为基础,为其提供高性价比的应用解决方案和及时精准的供求信息,快速提高产品开发周期和生产直通率、提升电子
器件
的应用附加值。
139篇原创内容
公众号
预览时标签不可点
收录于话题
#
个
上一篇
下一篇
阅读
分享
收藏
赞
在看
已同步到看一看
写下你的想法
前往“发现”-“看一看”浏览“朋友在看”
前往看一看
看一看入口已关闭
在“设置”-“通用”-“发现页管理”打开“看一看”入口
我知道了
已发送
取消
发送到看一看
发送
关于JTAG口的知识!
最多200字,当前共
字
发送中