本文主要介紹JTAG總線的引腳定義、接口標(biāo)準(zhǔn)、邊界掃描和TAP控制器。
JTAG(Joint Test Action Group;聯(lián)合測試行動(dòng)小組)是一種國際標(biāo)準(zhǔn)測試協(xié)議(IEEE 1149.1兼容),主要用于芯片內(nèi)部測試。現(xiàn)在多數(shù)的高級器件都支持JTAG協(xié)議,如ARM、DSP、FPGA等。標(biāo)準(zhǔn)的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時(shí)鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。
JTAG最初是用來對芯片進(jìn)行測試的,JTAG的基本原理是在器件內(nèi)部定義一個(gè)TAP(TestAccess Port;測試訪問)通過專用的JTAG測試工具對進(jìn)行內(nèi)部節(jié)點(diǎn)進(jìn)行測試。JTAG測試允許多個(gè)器件通過JTAG接口串聯(lián)在一起,形成一個(gè)JTAG鏈,能實(shí)現(xiàn)對各個(gè)器件分別測試。現(xiàn)在,JTAG接口還常用于實(shí)現(xiàn)ISP(In-System Programmable;在線編程),對Flash等器件進(jìn)行編程。
JTAG內(nèi)部有一個(gè)狀態(tài)機(jī),稱為TAP控制器。TAP控制器的狀態(tài)機(jī)通過TCK和TMS進(jìn)行狀態(tài)的改變,實(shí)現(xiàn)數(shù)據(jù)和指令的輸入。
1、引腳定義
含有JTAG口的芯片種類較多,如CPU、DSP、CPLD等。都有如下JTAG引腳定義(信號方向都是針對CPU來說的):
TCK——測試時(shí)鐘輸入。TMS和TDI的數(shù)據(jù)在TCK的上升沿被采樣。數(shù)據(jù)在時(shí)鐘的下降沿輸出到TDO。建議下拉。
TDI——測試數(shù)據(jù)輸入。輸入到指令寄存器(IR)或數(shù)據(jù)寄存器(DR)的數(shù)據(jù)出現(xiàn)在TDI輸入端,在TCK的上升沿被采樣。建議上拉,上拉電阻阻值不能小于1K。
TDO——測試數(shù)據(jù)輸出。來自指令寄存器或數(shù)據(jù)寄存器的數(shù)據(jù)在時(shí)鐘的下降沿被移出到TDO。不用上下拉,懸空時(shí),盡量引出測試點(diǎn),同時(shí)應(yīng)避免將TDO作為I/O使用。
TMS——測試模式選擇。TMS用來設(shè)置JTAG口處于某種特定的測試模式,用于控制TAP狀態(tài)機(jī)。必須上拉。
VTref——目標(biāo)板參考電壓,接電源。用來確定CPU的JTAG接口使用的邏輯電平。
可選引腳TRST——測試復(fù)位,輸入引腳,低電平有效。TRST可以用來對TAP Controller進(jìn)行復(fù)位(初始化)。因?yàn)橥ㄟ^TMS也可以對TAPController進(jìn)行復(fù)位(初始化)。所以有四線JTAG與五線JTAG之分。
可選引腳RTCK——測試時(shí)鐘返回信號。RTCK由目標(biāo)端反饋給仿真器的時(shí)鐘信號,用來同步TCK信號的產(chǎn)生,不使用時(shí)直接接地。
可選引腳nSRST——目標(biāo)系統(tǒng)復(fù)位信號。與目標(biāo)板上的系統(tǒng)復(fù)位信號相連,可以直接對目標(biāo)系統(tǒng)復(fù)位。同時(shí)可以檢測目標(biāo)系統(tǒng)的復(fù)位情況,為了防止誤觸發(fā)應(yīng)在目標(biāo)端加上適當(dāng)?shù)纳侠娮琛?/p>
另外還有一些控制器會(huì)有如下一些額外信號:
TDIS
PD或TVD——(Presence Detect, Target Voltage Detect),和VTref的功能一樣。
EMU[0:n]或ET[0:n]——(EMUlation, Emulation Test)
EMU pins are bi-directional multifunctional pinsthat provide support for the following features:
Boot Modes
Cross Triggers
Core Trace
System Trace
HS-RTDX (high speed RTDX,deprecated functionality)
In the case of Boot Modes, the EMU0/1 pin state is driven by the XDS. HS-RTDX provides bi-directional data transport. Both Core and System Trace transport event history and timing data from the target to the XDS. Crosstriggers are bi-directional triggers that allow an event in one device to causea debug action in other devices.
2、JTAG接口標(biāo)準(zhǔn)
目前JTAG接口的連接有三種標(biāo)準(zhǔn),即10針、14針接口和20針接口,其定義分別如下所示。
★由于JTAG經(jīng)常使用排線連接,為了增強(qiáng)抗干擾能力,在每條信號線間加上地線,偶數(shù)針腳都是地信號。
3、邊界掃描(Boundary-Scan)
邊界掃描技術(shù)的基本思想是在靠近芯片的輸入輸出管腳上增加一個(gè)移位寄存器單元。因?yàn)檫@些移位寄存器單元都分布在芯片的邊界上(周圍),所以被稱為邊界掃描寄存器(Boundary-Scan Register Cell)。
當(dāng)芯片處于調(diào)試狀態(tài)的時(shí)候,這些邊界掃描寄存器可以將芯片和外圍的輸入輸出隔離開來。通過這些邊界掃描寄存器單元,可以實(shí)現(xiàn)對芯片輸入輸出信號的觀察和控制。對于芯片的輸入管腳,可以通過與之相連的邊界掃描寄存器單元把信號(數(shù)據(jù))加載到該管腳中去;對于芯片的輸出管腳,也可以通過與之相連的邊界掃描寄存器“捕獲”該管腳上的輸出信號。在正常的運(yùn)行狀態(tài)下,這些邊界掃描寄存器對芯片來說是透明的,所以正常的運(yùn)行不會(huì)受到任何影響。這樣,邊界掃描寄存器提供了一個(gè)便捷的方式用以觀測和控制所需要調(diào)試的芯片。另外,芯片輸入輸出管腳上的邊界掃描(移位)寄存器單元可以相互連接起來,在芯片的周圍形成一個(gè)邊界掃描鏈(Boundary-Scan Chain)。一般的芯片都會(huì)提供幾條獨(dú)立的邊界掃描鏈,用來實(shí)現(xiàn)完整的測試功能。邊界掃描鏈可以串行的輸入和輸出,通過相應(yīng)的時(shí)鐘信號和控制信號,就可以方便的觀察和控制處在調(diào)試狀態(tài)下的芯片。
4、TAP(TEST ACCESS PORT)
TAP是一個(gè)通用的端口,通過TAP可以訪問芯片提供的所有數(shù)據(jù)寄存器(DR)和指令寄存器(IR)。對整個(gè)TAP的控制是通過TAP Controller來完成的。TAP總共包括5個(gè)信號接口TCK、TMS、TDI、TDO和TRST:其中4個(gè)是輸入信號接口和另外1個(gè)是輸出信號接口。一般,我們見到的開發(fā)板上都有一個(gè)JTAG接口,該JTAG接口的主要信號接口就是這5個(gè)。
通過保持TMS為高電平(邏輯1)并在TCK端輸入至少5個(gè)選通脈沖(變高后再變低)后TAP邏輯被復(fù)位。這使TAP狀態(tài)機(jī)的狀態(tài)從任何其它狀態(tài)轉(zhuǎn)到測試邏輯復(fù)位狀態(tài)對,JTAG口和測試邏輯復(fù)位,該狀態(tài)不復(fù)位CPU和外設(shè)。
通過TAP接口,對數(shù)據(jù)寄存器(DR)進(jìn)行訪問的一般過程是:
通過指令寄存器(IR),選定一個(gè)需要訪問的數(shù)據(jù)寄存器。
把選定的數(shù)據(jù)寄存器連接到TDI和TDO之間。
由TCK驅(qū)動(dòng),通過TDI,把需要的數(shù)據(jù)輸入到選定的數(shù)據(jù)寄存器當(dāng)中去;同時(shí)把選定的數(shù)據(jù)寄存器中的數(shù)據(jù)通過TDO讀出來。
下圖是TAP控制器的16-states有限狀態(tài)機(jī)圖示:
TAP控制器的狀態(tài)在TCK的上升沿變化。
在上電時(shí)進(jìn)入邏輯復(fù)位狀態(tài)(Test-Logic Reset),在該狀態(tài)下,測試部分的邏輯電路全部被禁用,以保證芯片核心邏輯電路的正常工作。通過TRST信號也可以對測試邏輯電路進(jìn)行復(fù)位,使得TAP Controller進(jìn)入Test-Logic Reset狀態(tài)。前面我們說過TRST是可選的一個(gè)信號接口,這是因?yàn)樵赥MS上連續(xù)加5個(gè)TCK脈沖寬度的“1”信號也可以對測試邏輯電路進(jìn)行復(fù)位,使得TAP Controller進(jìn)入Test-Logic Reset狀態(tài)。所以,在不提供TRST信號的情況下,也不會(huì)產(chǎn)生影響。
Shift-DR state掃描DR,TDO輸出有效。
Shift-IR state掃描IR,TDO輸出有效。
其他狀態(tài)下TDO輸出無效。
如果需要捕獲芯片某個(gè)管腳上的輸出,首先需要把該管腳上的輸出裝載到邊界掃描鏈的寄存器單元里去,然后通過TDO輸出,這樣我們就可以從TDO上得到相應(yīng)管腳上的輸出信號。如果要在芯片的某個(gè)管腳上加載一個(gè)特定的信號,則首先需要通過TDI把期望的信號移位到與相應(yīng)管腳相連的邊界掃描鏈的寄存器單元里去,然后把該寄存器單元的值加載到相應(yīng)的芯片管腳。
指令寄存器的訪問過程:系統(tǒng)上電,TAP Controller進(jìn)入Test-Logic Reset狀態(tài),然后依次進(jìn)入:Run-Test/Idle→Select-DR-Scan→Select-IR-Scan→Capture-IR→Shift-IR→Exit1-IR→Update-IR,最后回到Run-Test/Idle狀態(tài)。在Capture-IR狀態(tài)中,一個(gè)特定的邏輯序列被加載到指令寄存器當(dāng)中;然后進(jìn)入到Shift-IR狀態(tài)。在Shift-IR狀態(tài)下,通過TCK的驅(qū)動(dòng),可以將一條特定的指令送到指令寄存器當(dāng)中去。每條指令都將確定一條相關(guān)的數(shù)據(jù)寄存器。然后從Shift-IR→Exit1-IR→Update-IR。在Update-IR狀態(tài),剛才輸入到指令寄存器中的指令將用來更新指令寄存器。最后,進(jìn)入到Run-Test/Idle狀態(tài),指令生效,完成對指令寄存器的訪問。
數(shù)據(jù)寄存器的訪問:當(dāng)前可以訪問的數(shù)據(jù)寄存器由指令寄存器中的當(dāng)前指令決定。要訪問由剛才的指令選定的數(shù)據(jù)寄存器,需要以Run-Test/Idle為起點(diǎn),依次進(jìn)入Select-DR-Scan→Capture-DR→Shift-DR→Exit1-DR→Update-DR,最后回到Run-Test/Idle狀態(tài)。在這個(gè)過程當(dāng)中,被當(dāng)前指令選定的數(shù)據(jù)寄存器會(huì)被連接在TDI和TDO之間。通過TDI和TDO,就可以將新的數(shù)據(jù)加載到數(shù)據(jù)寄存器當(dāng)中去,同時(shí),也可以捕獲數(shù)據(jù)寄存器中的數(shù)據(jù)。具體過程如下。在Capture-DR狀態(tài)中,由TCK的驅(qū)動(dòng),芯片管腳上的輸出信號會(huì)被“捕獲”到相應(yīng)的邊界掃描寄存器單元中去。這樣,當(dāng)前的數(shù)據(jù)寄存器當(dāng)中就記錄了芯片相應(yīng)管腳上的輸出信號。接下來從Capture-DR進(jìn)入到Shift-DR狀態(tài)中去。在Shift-DR狀態(tài)中,由TCK驅(qū)動(dòng),在每一個(gè)時(shí)鐘周期內(nèi),一位新的數(shù)據(jù)可以通過TDI串行輸入到數(shù)據(jù)寄存器當(dāng)中去,同時(shí),數(shù)據(jù)寄存器可以通過TDO串行輸出一位先前捕獲的數(shù)據(jù)。在經(jīng)過與數(shù)據(jù)寄存器長度相同的時(shí)鐘周期后,就可以完成新信號的輸入和捕獲數(shù)據(jù)的輸出。接下來通過Exit1-DR狀態(tài)進(jìn)入到Update-DR狀態(tài)。在Update-DR狀態(tài)中,數(shù)據(jù)寄存器中的新數(shù)據(jù)被加載到與數(shù)據(jù)寄存器的每個(gè)寄存器單元相連的芯片管腳上去。最后,回到Run-Test/Idle狀態(tài),完成對數(shù)據(jù)寄存器的訪問。
以上就是針對JTAG的相關(guān)介紹,詳細(xì)可參見標(biāo)準(zhǔn)《IEEE Std 1149.1 Test Access Port and Boundary-Scan Architecture》。
編輯:hfy
-
控制器
+關(guān)注
關(guān)注
113文章
16580瀏覽量
180462 -
cpu
+關(guān)注
關(guān)注
68文章
10951瀏覽量
213948 -
JTAG
+關(guān)注
關(guān)注
6文章
401瀏覽量
72132
發(fā)布評論請先 登錄
相關(guān)推薦
Simulink中的狀態(tài)機(jī)建模方法 Simulink數(shù)據(jù)可視化與分析功能
接口的控制與狀態(tài)寄存器什么作用
通過JTAG接口使用SimpleLink?MSP432E4微控制器

微控制器內(nèi)部的存儲(chǔ)器有哪些
觸發(fā)器和狀態(tài)機(jī)的關(guān)系是什么
【GD32 MCU 入門教程】二、GD32 MCU 燒錄說明 (2)SWD/JTAG在線下載

如何在FPGA中實(shí)現(xiàn)狀態(tài)機(jī)
SN74LVT8996-EP 多點(diǎn)可尋址IEEE標(biāo)準(zhǔn)1149.1(JTAG)TAP收發(fā)器數(shù)據(jù)表

玩轉(zhuǎn)Spring狀態(tài)機(jī)

工業(yè)控制器的核心是什么技術(shù)
上位機(jī)如何實(shí)時(shí)讀plc的狀態(tài)
基于FPGA的SPI Flash控制器的設(shè)計(jì)方案
關(guān)于SMU狀態(tài)機(jī)的問題求解
在Verilog中實(shí)現(xiàn)Moore型和Mealy型狀態(tài)機(jī)的方法簡析
如何采用“狀態(tài)機(jī)”解析UART數(shù)據(jù)幀

評論