JTAG(Join Test Action Group)的中文名称为联合测试工作组,是一种国际标准测试协议,主要用于芯片内部测试:验证设计和PCB测试。现在目前市面上的很多产品都支持JTAG协议(DSP、FPGA、CPLD、ARM等)。
JTAG接口通过4/5引脚连接到芯片上,这些引脚分别是:
| 网络 | 名称 | 描述 |
|---|---|---|
| TCK | 测试时钟输入 | 数据时钟输入 |
| TDI | 测试数据输入 | 数据通过 TDI 引脚输入 JTAG 接口 |
| TDO | 测试数据输出 | 数据通过 TDO 引脚从 JTAG 接口输出 |
| TMS | 测试模式选择 | TMS 用来设置 JTAG 接口处于某种特定的测试模式 |
| TRST | 为测试复位(可选) | 输入引脚,低电平有效。 |
一个含有 JTAG Debug 接口模块的 CPU,只要时钟正常,就可以通过 JTAG接口访问 CPU 的内部寄存器和挂在 CPU 总线上的设备,如 FLASH,RAM,SOC等内置模块的寄存器,像 UART,Timers,GPIO 等等的寄存器。上面说的只是 JTAG 接口所具备的能力,要使用这些功能,还需要软件的配合,具体实现的功能则由具体的软件决定。
上电时序
JTAG 电路的时序如图所示,所有基于 JTAG 的操作都必须同步于 JTAG时钟信号 TCK。在 TCK 的上升沿读取或输出有效数据,有严格的建立、保持时间要求,因此一般情况下 JTAG 的时钟不会太高。
PIN序定义:

| PIN | SINGLE NAME | I/O DIAGRAM |
|---|---|---|
| 1 | VTREF | F |
| 2 | NC | NA |
| 3 | nTRST | D |
| 4 | GND | H |
| 5 | TDI | B |
| 6 | GND | H |
| 7 | TMS/SWDIO | B/C |
| 8 | GND | H |
| 9 | TCK/SWCLK | B |
| 10 | GND | H |
| 11 | RTCK | A |
| 12 | GND | H |
| 13 | TDO/SWO | A |
| 14 | GND | H |
| 15 | nSRST | E |
| 16 | GND | H |
| 17 | DBGRQ | B |
| 18 | GND | H |
| 19 | DBGACK | A |
| 20 | GND | H |
实物照片如图所示:

TDI,TMS 是输入,上拉是为了在没有连接下载线的时候,给一个电平,同时提高信号的建立速度。
PCB 建库的需注意添加防呆标志,防止接反。
加上 ESD 保护芯片。


JTAG:JTAG 是直接烧到 FPGA 里面的。由于是 SRAM 断电后要重烧,AS 是烧到 FPGA 的配置芯片里保存的,每次上电就写到 FPGA 里。一般情况下,Cyclone II 开发板上应该有两种下载模式,AS 和 JTAG。AS 就是下载.pof 文件到 EPCS 中。而 JTAG 就是下载.sof 文件到 FPGA 中的RAM 中。//