JTAG总结

1、最简单的JTAG硬件线
TMS:测试模式选择信号,输入,IEEE 1149.1标准强制要求。

TCK:测试时钟信号,输入,IEEE 1149.1标准强制要求。

TDI:测试数据输入信号,输入,IEEE 1149.1标准强制要求。

TDO:测试数据输出信号,输出,IEEE 1149.1标准强制要求
2、工作原理
2.1 JTAG的最简单连接方式
在这里插入图片描述
2.2 JTAG状态机
TAP控制器有16个状态,控制器的下一个状态由TMS信号决定,TMS信号在TCK的上升沿被采样生效。状态机的转移关系如下图所示。
在这里插入图片描述
2.3 数据/指令传输
每个IC都有自己所属长度的IR寄存器(指令寄存器)。比如图中CPU的IR长度是5,FPGA是10。这些IR寄存器组成联调通过TDI和TDO。
在这里插入图片描述
从PC端来看,IR链的长度就是15,为了装载IR的值,PC必须先保证TAP的状态是Shift-IR,然后才能通过TDI发送这15bit的数据。比如,要分别发送00100到CPU的IR,0000000010到FPGA的IR,这操作是:
JTAG_clock(0);
JTAG_clock(1);
JTAG_clock(0);
JTAG_clock(0);
JTAG_clock(0);
JTAG_clock(0);
JTAG_clock(0);
JTAG_clock(0);
JTAG_clock(0);
JTAG_clock(0);

JTAG_clock(0);
JTAG_clock(0);
JTAG_clock(1);
JTAG_clock(0);
JTAG_clock(0);
FPGA的指令可以有1024种,CPU的指令可以有32种。但是在JTAG情况下,存在一些强制的指令,(BYPASS,EXTEST,SAMPLE/PRELOAD,IDCODE(不是必须的,常常有)),每一个IC的IR指令往往不一样。
DR寄存器(数据寄存器)传输也是一样的。
2.4 BYPASS模式
此模式下,IC通过TDI接收到的数据迟延1个clk再从TDO转出去。比如查看JTAG链上一共有多少个IC器件。
// go to reset state
for(i=0; i<5; i++) JTAG_clock(TMS);

// go to Shift-IR
JTAG_clock(0);
JTAG_clock(TMS);
JTAG_clock(TMS);
JTAG_clock(0);
JTAG_clock(0);

// Send plenty of ones into the IR registers
// That makes sure all devices are in BYPASS!
for(i=0; i<999; i++) JTAG_clock(1);
JTAG_clock(1 | TMS);	// last bit needs to have TMS active, to exit shift-IR

// we are in Exit1-IR, go to Shift-DR
JTAG_clock(TMS);
JTAG_clock(TMS);
JTAG_clock(0);
JTAG_clock(0);

// Send plenty of zeros into the DR registers to flush them
for(i=0; i<1000; i++) JTAG_clock(0);

// now send ones until we receive one back
for(i=0; i<1000; i++) if(JTAG_clock(1)) break;

nbDevices = i;

在这里插入图片描述
以CPU和FPGA为例,时序示意如上图,逻辑是先清空了每个IC中DR的数据为0,当PC发送1时,CPU收到1,延迟1个clk再发出去(TDO_cpu),FPGA收到TDO_cpu的信号后,延迟1clk再发出去,则PC从TDO_fpga上收到1时,已经过了2个clk,因此知道IC的个数就是nbDevices (2)。

  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值