JTAG協議制定了一種邊界掃描的規范,邊界掃描架構提供了有效的測試布局緊湊的PCB板上元件的能力。邊界掃描可以在不使用物理測試探針的情況下測試引腳連接,並在器件正常工作的過程中捕獲運行數據。
SoC FPGA作為在同一芯片上同時集成了FPGA和HPS的芯片,其JTAG下載和調試電路相較於單獨的FPGA或ARM處理器都有一些差異,但是同時兩者又有緊密的聯系。AC501-SoC開發板上的JTAG鏈同時連接了FPGA和HPS。使用時,僅需一個JTAG鏈路,就能同時調試FPGA和HPS。FPGA和HPS各自有其獨立的JTAG信號引腳,電路設計時使用了一種串行鏈的方式來將兩者連接到一起,如圖xxx所示:
以下為4個JTAG信號的功能說明:
管腳名稱 |
管腳類型 |
說明 |
TDI |
測試數據輸入 |
指令以及測試和編程數據的串行輸入管腳的。數據在TCK 的上升沿移入。如果在電路板上不需要JTAG 接口,可以通過將此管腳連接至VCC來禁用JTAG。TDI 管腳具有內部弱上拉電阻(通常為25KΩ)。 |
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的調試。