JTAG基礎知識

前言測試

本知識翻譯收集來自http://www.fpga4fun.com,版權歸原網站全部。網站

1.什麼是JTAG:Joint Test Action Group;聯合測試工做組翻譯

JTAG是一種IEEE標準用來解決板級問題,開發於上個世紀80年代。今天JTAG被用來燒錄、debug、探查端口。固然,最原始的使用是邊界測試。debug

邊界測試:rest

舉個栗子你有兩個芯片,這兩個芯片之間鏈接了不少不少的線,怎麼確保這些線之間的鏈接是OK的呢,用JTAG,它能夠控制全部IC的引腳。這叫作芯片邊界測試。(沒用過)blog

2.JTAG引腳:開發

JTAG發展到如今已經有腳了,一般四個腳:TDI,TDO,TMS,TCK,固然還有個復位腳TRST。對於芯片上的JTAG的腳其實是專用的。同步

TDI:測試數據輸入,數據經過TDI輸入JTAG口;it

TDO:測試數據輸出,數據經過TDO從JTAG口輸出;io

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多是不一樣的。

以上。

相關文章
相關標籤/搜索