JTAG协议制定了一种边界扫描的规范,边界扫描架构提供了有效的测试布局紧凑的PCB板上元件的能力。边界扫描能够在不使用物理测试探针的状况下测试引脚链接,并在器件正常工做的过程当中捕获运行数据。编程
SoC FPGA做为在同一芯片上同时集成了FPGA和HPS的芯片,其JTAG下载和调试电路相较于单独的FPGA或ARM处理器都有一些差别,可是同时二者又有紧密的联系。AC501-SoC开发板上的JTAG链同时链接了FPGA和HPS。使用时,仅需一个JTAG链路,就能同时调试FPGA和HPS。FPGA和HPS各自有其独立的JTAG信号引脚,电路设计时使用了一种串行链的方式来将二者链接到一块儿,如图xxx所示:架构
如下为4个JTAG信号的功能说明:布局
管脚名称测试 |
管脚类型spa |
说明设计 |
TDI3d |
测试数据输入调试 |
指令以及测试和编程数据的串行输入管脚的。数据在TCK 的上升沿移入。若是在电路板上不须要JTAG 接口,能够经过将此管脚链接至VCC来禁用JTAG。TDI 管脚具备内部弱上拉电阻(一般为25KΩ)。blog |
TDO接口 |
测试数据输出 |
指令以及测试和编程数据的串行数据输出管脚。数据在TCK的降低沿移出。若是数据没有从器件中被移出,此管脚处于三态。若是在电路板上不须要JTAG接口,悬空此管脚以禁用 JTAG 电路。 |
TMS |
测试模式选择 |
提供的控制信号输入管脚,控制信号用来控制TAP状态机的跳变。状态机跳变发生在 TCK 的上升沿。所以,TMS必须在 TCK 的上升沿以前被设置。 TMS 在 TCK 的上升沿中被评估。若是在电路板上不须要 JTAG 接口,JTAG 电路被禁用链接此管脚至 VCC。 TMS 管脚具备内部弱上拉电阻 (一般为25KΩ)。 |
TCK |
测试时钟输入 |
边界扫描电路的时钟输入脚。一些操做发生在上升沿,而其它的则发生在降低沿。若是在电路板上不须要JTAG 接口,JTAG 电路被禁用链接此管脚至 GND。 TCK 管脚具备内部弱下拉电阻。 |
使用JTAG配置或调试一个器件时,根据用户选定的器件,编程软件(Quartus Programmer或DS-5中提供的调试器)会旁路全部其它的器件。在旁路模式下,器件经过一个旁路寄存器将编程数据从 TDI 管脚传至 TDO 管脚,即经过TDI送入器件的配置数据会在一个时钟周期以后呈如今TDO上。而若是将TDO端口输出的数据再次接入另个器件的TDI端口,则可以直接对下一个器件进行调试了。而每个器件都有其JTAG ID,经过JTAG ID可以辨识具体调试哪一个器件。
在图xxx(上图)能够看到,由USB Blaster的TDO输出的数据首先是接入到了HPS的TDI端口,而后由HPS的TDO端口流出的数据又接到了FPGA的TDI端口上,最后数据再由FPGA的TDO端口流出,回到USB Blaster的TDI端口,造成了完整的数据回路。
当须要经过Quartus Programer来配置或调试FPGA部分时,会设置直接旁路HPS部分,由HPS的TDI端口流入的数据会在一个时钟周期后出如今HPS的TDO端口上,再进入HPS的TDO端口所链接的FPGA的TDI端口。从而向FPGA的各个寄存器中写入或读取出数据,经过FPGA的TDO端口输出,流入到USB Blaster的TDI端口,完成对FPGA的调试。
当须要经过DS-5中的仿真器来调试HPS部分时,会设置直接旁路FPGA部分,由HPS的TDI端口流入的数据直接做用在HPS上,对HPS的相应的寄存器进行读写,结果数据从HPS的TDO端口流出,再流入FPGA的TDI端口,因为此时FPGA的JTAG功能处于旁路状态,TDI端口流入的数据会直接由FPGA的TDO端口流出,进入USB Blaster的TDI端口,完成对HPS的调试。