|
1.什么是JTAG:Joint Test Action Group;聯(lián)合測(cè)試工作組 JTAG是一種IEEE標(biāo)準(zhǔn)用來解決板級(jí)問題,開發(fā)于上個(gè)世紀(jì)80年代。今天JTAG被用來燒錄、debug、探查端口。當(dāng)然,最原始的使用是邊界測(cè)試。 邊界測(cè)試: 舉個(gè)栗子你有兩個(gè)芯片,這兩個(gè)芯片之間連接了很多很多的線,怎么確保這些線之間的連接是OK的呢,用JTAG,它可以控制所有IC的引腳。這叫做芯片邊界測(cè)試。(沒用過) 2.JTAG引腳: JTAG發(fā)展到現(xiàn)在已經(jīng)有腳了,通常四個(gè)腳:TDI,TDO,TMS,TCK,當(dāng)然還有個(gè)復(fù)位腳TRST。對(duì)于芯片上的JTAG的腳實(shí)際上是專用的。 TDI:測(cè)試數(shù)據(jù)輸入,數(shù)據(jù)通過TDI輸入JTAG口; TDO:測(cè)試數(shù)據(jù)輸出,數(shù)據(jù)通過TDO從JTAG口輸出; TMS:測(cè)試模式選擇,用來設(shè)置JTAG口處于某種特定的測(cè)試模式; TCK:測(cè)試時(shí)鐘輸入; TRST:測(cè)試復(fù)位; 更多吊炸天的用法: CPU和FPGA制造商允許JTAG用來端口debug;FPGA廠商允許通過JTAG配置FPGA,使用JTAG信號(hào)通入FPGA核。 3.JTAG怎么工作: PC控制JTAG:用JTAG電纜連接PC的打印端口或者USB或者網(wǎng)口。最簡(jiǎn)單的是連接打印端口。 TMS:在每個(gè)含有JTAG的芯片內(nèi)部,會(huì)有個(gè)JTAG TAP控制器。TAP控制器是一個(gè)有16個(gè)狀態(tài)的狀態(tài)機(jī),而TMS就是這玩意的控制信號(hào)。當(dāng)TMS把各個(gè)芯片都連接在一起的時(shí)候,所有的芯片的TAP狀態(tài)跳轉(zhuǎn)是一致的。下面是TAP控制器的示意圖: 改變TMS的值,狀態(tài)就會(huì)發(fā)生跳轉(zhuǎn)。如果保持5個(gè)周期的高電平,就會(huì)跳回test-logic-rest,通常用來同步TAP控制器; 通常使用兩個(gè)最重要的狀態(tài)是Shift-DR和Shift-IR,兩者連接TDI和TDO使用。 IR:命令寄存器,你可以寫值到這個(gè)寄存器中通知JTAG干某件事。每個(gè)TAP只有一個(gè)IR寄存器而且長(zhǎng)度是一定的。 DR:TAP可以有多個(gè)DR寄存器,與IR寄存器相似,每個(gè)IR值會(huì)選擇不同的DR寄存器。(很迷) 4.JTAG鏈相關(guān)疑問: 計(jì)算JTAG鏈中的IC數(shù)目: 一個(gè)重要的應(yīng)用是IR值是全一值,表示BYPASS命令,在BYPASS模式中,TAP控制器中的DR寄存器總是單bit的,從輸入TDI到輸出TDO,通常一個(gè)周期,啥也不干。 可用BYPASS模式計(jì)算IC數(shù)目。如果每個(gè)IC的TDI-TDO鏈的延遲是一個(gè)時(shí)鐘,我們可以發(fā)送一些數(shù)據(jù)并檢測(cè)它延遲了多久,那么久可以推算出JTAG鏈中的IC數(shù)目。 得到JTAG鏈中的器件ID: 大多數(shù)的JTAG IC都支持IDCODE命令。在IDCODE命令中,DR寄存器會(huì)裝載一個(gè)32bit的代表器件ID的值。不同于BYPASS指令,在IDCODE模式下IR的值沒有標(biāo)準(zhǔn)。不過每次TAP控制器跳轉(zhuǎn)到Test-Logic-Reset態(tài),它會(huì)進(jìn)入IDCODE模式,并裝載IDCODE到DR。 5.邊界掃描: TAP控制器進(jìn)入邊界掃描模式時(shí),DR鏈可以遍歷每個(gè)IO塊或者讀或攔截每個(gè)引腳。 在FPGA上使用JTAG,你可以知曉每個(gè)引腳的狀態(tài)當(dāng)FPGA在運(yùn)行的時(shí)候。 可以使用JTAG命令SAMPLE,當(dāng)然不同IC可能是不同的。 以上。 |
|
|