JTAG实测波形
JTAG实测波形
1.JTAG基础
1.1引脚定义
| 信号线 | 方向 (相对于FPGA) | 全称 | 主要作用 |
|---|---|---|---|
| TCK | 输入 | Test Clock | 提供同步时钟,所有操作都在其边沿进行 |
| TMS | 输入 | Test Mode Select | 控制JTAG状态机的状态转换 |
| TDI | 输入 | Test Data Input | 串行数据输入,比特流文件、调试命令等,最终都是通过这根线传输到FPGA |
| TDO | 输出 | Test Data Output | 串行数据输出,可以从FPGA读回配置数据、芯片ID、内部寄存器状态或者调试数据。 |
| TRST | 输入 (可选) | Test Reset | 异步复位JTAG接口 ,低电平有效。用于将JTAG的TAP控制器强制复位到一个已知的初始状态。 |
这几个信号一般内部有上拉电阻。
TRST 可选。因为通过给TMS连续发送5个以上的高电平脉冲,也可以实现JTAG的逻辑复位。
TMS的值在TCK的上升沿被采样,JTAG内部一个固定的16状态状态机(TAP Controller)根据TMS的信号序列进行状态转换。
16个状态如下所示,主要有复位状态,空闲状态、数据寄存器状态,指令寄存器状态。
复位状态:进入此状态后,JTAG逻辑被禁用,芯片正常工作逻辑被激活。上电,或保持 TMS=1 并连续5个TCK时钟,可以进入此状态。
空闲状态:在多个状态下,只要 TMS=0,通常最终都会回到这里。
数据寄存器和指令寄存器都包括7种状态。

Select-DR-Scan:一个临时路口。在此状态,通过TMS的值决定是进入DR路径,还是切换到IR路径。
Capture-DR:捕获数据。在此状态,芯片会根据当前生效的JTAG指令,将并行数据预加载到数据移位寄存器中。
Shift-DR:核心移位状态。在此状态下,每个TCK周期,数据移位寄存器都会通过TDO移出一位数据,同时通过TDI移入一位新数据。
Exit1-DR:退出移位的第一阶段。用于离开Shift-DR状态。
Pause-DR:暂停移位。允许暂时停止数据移位,而不中断整个操作。这在处理长数据链时很有用。
Exit2-DR:从Pause-DR状态退出的另一个出口。
Update-DR:更新输出。这是一个关键状态。将在Shift-DR阶段移入的数据,锁存到目标寄存器中,并生效。
1.2 时序

TDO由TCK下降沿驱动。
1.3 JTAG级联

2.JTAG波形
2.1 擦flash 波形
Ch1:TCK Ch2:TMS Ch3:TDI Ch4:TDO

连接jtag 时只有tdo为高。测试fpga是安陆的fpga,可以看到擦写时,TDI没有数据,可能是fpga内部逻辑自主擦写。
上图中TMS先复位JTAG,然后从空闲状态进入数据寄存器状态,TDO输出数据。
擦除过程:


2.1 烧录flash波形
烧录flash过程和擦写flash一样,都有连接、配置、擦除、编程、验证五个阶段,只不过烧录过程更复杂,数据来源于比特流文件、svf文件等,还涉及到更复杂的jtag协议。
烧录初始波形:除了TDO其他都有数据。

烧录中

烧录完成中

烧录完成:TMS为0,回归空闲状态。

参考文档
[1]: 7 Series FPGAs Configuration User Guide(Xlinx)