登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
RFIC 射频集成电路
>
RFIC制造、封装及测试
>
JTAG及JTAG接口简介
发帖
回复
3652
阅读
2
回复
[
转载
]
JTAG及JTAG接口简介
离线
wudawolf
智者不锐,慧者不傲。
UID :7362
注册:
2008-01-09
登录:
2025-09-27
发帖:
3709
等级:
荣誉管理员
0楼
发表于: 2009-03-10 08:41:11
1、JTAG(Joint Test Action Group;联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。
sA2-3V<t8
>d + }$dB
现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。
X)b$CG
N"70P/
JTAG最初是用来对芯片进行测试的,JTAG的基本原理是在器件内部定义一个TAP(Test Access Port;测试访问口)通过专用的JTAG测试工具对进行内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。现在,JTAG接口还常用于实现ISP(In-System Programmable;在线编程),对FLASH等器件进行编程。
5XKTb
[}L~zn6>?a
JTAG编程方式是在线编程,传统生产流程中先对芯片进行预编程现再装到板上因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。JTAG接口可对PSD芯片内部的所有部件进行编程
=[(34#
c{M ,K
具有JTAG口的芯片都有如下JTAG引脚定义:
8 lggGt
TCK——测试时钟输入;
~5KcbGD~
TDI——测试数据输入,数据通过TDI输入JTAG口;
)~U1sW&t
TDO——测试数据输出,数据通过TDO从JTAG口输出;
Z8SwW<{ $
TMS——测试模式选择,TMS用来设置JTAG口处于某种特定的测试模式。
&K/?#
*#=Ij r~
可选引脚TRST——测试复位,输入引脚,低电平有效。
J,Sa7jv[
6<lo0PQ"Z
含有JTAG口的芯片种类较多,如CPU、DSP、CPLD等。
z<%P"
<*(Z}p
JTAG内部有一个状态机,称为TAP控制器。TAP控制器的状态机通过TCK和TMS进行状态的改变,实现数据和指令的输入。
6 s=VU\
l2 .S^S
2、JTAG芯片的边界扫描寄存器
f'*-<sSr
Aw#<: 6-
JTAG标准定义了一个串行的移位寄存器。寄存器的每一个单元分配给IC芯片的相应引脚,每一个独立的单元称为BSC(Boundary-Scan Cell)边界扫描单元。这个串联的BSC在IC内部构成JTAG回路,所有的BSR(Boundary-Scan Register)边界扫描寄存器通过JTAG测试激活,平时这些引脚保持正常的IC功能。
oZBD.s
Bj@>iw?g'
3、JTAG在线写Flash的硬件电路设计和与PC的连接方式
p@tg pFt
*[si!e%
以含JTAG接口的StrongARM SA1110为例,Flash为Intel 28F128J32 16MB容量。SA1110的JTAG的TCK、TDI、TMS、TDO分别接PC并口的2、3、4、11线上,通过程序将对JTAG口的控制指令和目标代码从PC的并口写入JTAG的BSR中。在设计PCB时,必须将SA1110的数据线和地址线及控制线与Flash的地线线、数据线和控制线相连。因SA1110的数据线、地址线及控制线的引脚上都有其相应BSC,只要用JTAG指令将数据、地址及控制信号送到其BSC中,就可通过BSC对应的引脚将信号送给Flash,实现对Flash的操作。
ofy"SM
?NMk|+
4、通过使用TAP状态机的指令实行对Flash的操作
-#Z df|
}3#\vn0gT
通过TCK、TMS的设置,可将JTAG设置为接收指令或数据状态。JTAG常用指令如下:
J"r?F0
{7M++J=
SAMPLE/PRELOAD——用此指令采样BSC内容或将数据写入BSC单元;
c1f"z1Z
"jL>P)
EXTEST——当执行此指令时,BSC的内容通过引脚送到其连接的相应芯片的引脚,我们就是通过这种指令实现在线写Flash的;
tsb[=W!Ar8
H>TO8;5(
BYPASS——此指令将一个一位寄存器轩于BSC的移位回路中,即仅有一个一位寄存器处于TDI和TDO之间。
(nqry[g&
CFbNv9GZj
在PCB电路设计好后,即可用程序先将对JTAG的控制指令,通过TDI送入JTAG控制器的指令寄存器中。再通过TDI将要写Flash的地址、数据及控制线信号入BSR中,并将数据锁存到BSC中,用EXTEST指令通过BSC将写入Flash。
JEto_&8,C
:;{M0
5、软件编程
.+:iAnf
=D1
在线写Flash的程序用Turbo C编写。程序使用PC的并行口,将程序通过含有JTAG的芯片写入Flash芯片。程序先对PC的并口初始化,对JTAG口复位和测试,并读Flash,判断是否加锁。如加锁,必须先解锁,方可进行操作。写Flash之前,必须对其先擦除。将JTAG芯片设置在EXTEST模式,通过PC的并口,将目标文件通过JTAG写入Flash,并在烧写完成后进行校验。
<`nShP>vl
@c|=onx5
通过JTAG的读芯片ID子程序如下:
HI8mNX3 "j
j9 nw,x$
void id_command(void){
xUdF.c
\g}]u(zg%
putp(1,0,IP); //Run-Test/Idle;使JTAG复位
H*W>v[>
`5Y*) q
putp(1,0,IP); //Run-Test/Idle
@| z _&E
iWCYK7c@.-
putp(1,0,IP); //Run-Test/Idle
6 U.Jaai:
B>2R-pa4~
putp(1,0,IP); //Run-Test/Idle
5u$.!l8Nl
pD{OB
putp(1,1,IP);
p2STy\CS
.QvD603%5
putp(1,1,IP); //选择指令寄存器
^j}C]cq{Xg
<C`bf$ak
putp(1,0,IP); //捕获指令寄存器
+CSpL2@
d/d)MoaJ*t
putp(1,0,IP); /移位指令寄存器
YmV/[{
-xtT,^<B
putp(0,0,IP); //SA1110JTAG口指令长度5位,IDCODE为01100
]1 f^ SxSI
NUsxMhP
putp(1,0,IP);
>=@-]X2%j
k|;a"56F
putp(1,0,IP);
tMl y*E
&_L@hsm
putp(0,0,IP);
SzW;Yb"#^k
@)Vpj\jM-C
putp(0,0,IP);
0Ui.nz j
w#.3na
putp(0,1,IP); //退出指令寄存器
`J.,dqGb
x3O%W?5
putp(1,1,IP); //更新指令寄存器,执行指令寄存器中的指令
qDdO-fPev
3ahriZe
putp(1,0,IP); //Run-Test/Idle
MLDzWZ~}ef
[mtp-4*
putp(1,0,IP); //Run-Test/Idle
NW\CEJV
;<+efYmyc
putp(1,0,IP); //Run-Test/Idle
%-n)L
65LtCQ}
putp(1,1,IP);
/v!yI$xc
't<iB&wgF
putp(1,0,IP);
<F9-$_m
7By7F:[ b
if(check_id(SA1110ID))
Wb}-H-O
{hS!IOM
error_out("failed to read device ID for the SA-1110");
-E7mt`:d
^6W}ZLp
putp(1,1,IP); //退出数据寄存器
x1gS^9MqCB
_U~R
putp(1,1,IP); //更新数据寄存器
(5$Ge$
$?GggP d
putp(1,0,IP); //Run-Test/Idle,使JTAG复位
A?YYR%o%'
$LXa]
putp(1,0,IP); ..
K,S4
SAm%$vz%M
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
离线
rocketsci
四海皆兄弟,五湖会朋友
UID :7390
注册:
2008-01-10
登录:
2025-09-30
发帖:
1112
等级:
论坛版主
1楼
发表于: 2009-04-12 02:09:22
JTAG在线写Flash是除芯片内部测试之外很重要的功能。
共
条评分
离线
wudawolf
智者不锐,慧者不傲。
UID :7362
注册:
2008-01-09
登录:
2025-09-27
发帖:
3709
等级:
荣誉管理员
2楼
发表于: 2009-04-22 05:05:28
引用第1楼rocketsci于2009-04-12 02:09发表的 :
,#N}Ni:
JTAG在线写Flash是除芯片内部测试之外很重要的功能。
~;6^n
*_YH}U
8'E7Uj
的确如此。
共
条评分
发帖
回复