1.什么是JTAG:Joint Test Action Group;聯合測試工作組
JTAG是一種IEEE標準用來解決板級問題,開發于上個世紀80年代。今天JTAG被用來燒錄、debug、探查端口。當然,最原始的使用是邊界測試。
邊界測試:
舉個栗子你有兩個芯片,這兩個芯片之間連接了很多很多的線,怎么確保這些線之間的連接是OK的呢,用JTAG,它可以控制所有IC的引腳。這叫做芯片邊界測試。(沒用過)
2.JTAG引腳:
JTAG發展到現在已經有腳了,通常四個腳:TDI,TDO,TMS,TCK,當然還有個復位腳TRST。對于芯片上的JTAG的腳實際上是專用的。
TDI:測試數據輸入,數據通過TDI輸入JTAG口;
TDO:測試數據輸出,數據通過TDO從JTAG口輸出;
TMS:測試模式選擇,用來設置JTAG口處于某種特定的測試模式;
TCK:測試時鐘輸入;
TRST:測試復位;
更多吊炸天的用法:
CPU和FPGA制造商允許JTAG用來端口debug;FPGA廠商允許通過JTAG配置FPGA,使用JTAG信號通入FPGA核。
3.JTAG怎么工作:
PC控制JTAG:用JTAG電纜連接PC的打印端口或者USB或者網口。最簡單的是連接打印端口。
TMS:在每個含有JTAG的芯片內部,會有個JTAG TAP控制器。TAP控制器是一個有16個狀態的狀態機,而TMS就是這玩意的控制信號。當TMS把各個芯片都連接在一起的時候,所有的芯片的TAP狀態跳轉是一致的。下面是TAP控制器的示意圖:
改變TMS的值,狀態就會發生跳轉。如果保持5個周期的高電平,就會跳回test-logic-rest,通常用來同步TAP控制器;
通常使用兩個最重要的狀態是Shift-DR和Shift-IR,兩者連接TDI和TDO使用。
IR:命令寄存器,你可以寫值到這個寄存器中通知JTAG干某件事。每個TAP只有一個IR寄存器而且長度是一定的。
DR:TAP可以有多個DR寄存器,與IR寄存器相似,每個IR值會選擇不同的DR寄存器。(很迷)
4.JTAG鏈相關疑問:
計算JTAG鏈中的IC數目:
一個重要的應用是IR值是全一值,表示BYPASS命令,在BYPASS模式中,TAP控制器中的DR寄存器總是單bit的,從輸入TDI到輸出TDO,通常一個周期,啥也不干。
可用BYPASS模式計算IC數目。如果每個IC的TDI-TDO鏈的延遲是一個時鐘,我們可以發送一些數據并檢測它延遲了多久,那么久可以推算出JTAG鏈中的IC數目。
得到JTAG鏈中的器件ID:
大多數的JTAG IC都支持IDCODE命令。在IDCODE命令中,DR寄存器會裝載一個32bit的代表器件ID的值。不同于BYPASS指令,在IDCODE模式下IR的值沒有標準。不過每次TAP控制器跳轉到Test-Logic-Reset態,它會進入IDCODE模式,并裝載IDCODE到DR。
5.邊界掃描:
TAP控制器進入邊界掃描模式時,DR鏈可以遍歷每個IO塊或者讀或攔截每個引腳。
在FPGA上使用JTAG,你可以知曉每個引腳的狀態當FPGA在運行的時候。
可以使用JTAG命令SAMPLE,當然不同IC可能是不同的。
以上。
-
控制器
+關注
關注
112文章
16446瀏覽量
179458 -
JTAG
+關注
關注
6文章
401瀏覽量
71842 -
Sample
+關注
關注
0文章
11瀏覽量
8740
原文標題:JTAG基礎知識
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論