1MidtermReportDueday:11/30/2005Studentname:SU-JENLU(陸述人)StudentID:94599001OPEN-JTAGARMJTAG測試原理1前言本篇報告主要介紹ARMJTAG測試的基本原理。基本的內容包括了TAP(TESTACCESSPORT)和BOUNDARY-SCANARCHITECTURE的介紹,在此基礎上,結合ARM7TDMI詳細介紹了的JTAG測試原理。2IEEEStandard1149.1-TestAccessPortandBoundary-ScanArchitecture從IEEE的JTAG測試標準開始,JTAG是JOINTTESTACTIONGROUP的簡稱。IEEE1149.1標準最初是由JTAG這個組織提出,最終由IEEE批准並且標準化,所以,IEEE1149.1這個標準一般也俗稱JTAG測試標準。接下來介紹TAP(TESTACCESSPORT)和BOUNDARY-SCANARCHITECTURE的基本架構。2-1邊界掃描在JTAG測試當中,邊界掃描(Boundary-Scan)是一個很重要的概念,邊界掃描技術的基本思想,是在靠近晶片的輸入輸出接腳上增加一個移位暫存器單元,因為這些移位暫存器單元都分佈在晶片的邊界上(周圍),所以被稱為邊界掃描暫存器(Boundary-ScanRegisterCell),當晶片處於測試狀態的時候,這些邊界掃描暫存器可以將晶片和週邊的輸入輸出隔離開來。透過這些邊界掃描暫存器單元,可以實現對晶片輸入輸出信號的觀察和控制。對於晶片的輸入接腳,可以透過與之相連的邊界掃描暫存器單元把信號(資料)載入到該接腳中去;對於晶片的輸出接腳,也可以透過與之相連的邊界掃描暫存器“補捉”(CAPTURE)該接腳輸出信號。在正常的運行狀態下,這些邊界掃描暫存器對晶片來說是透通的,所以正常的運行不會受到任何影響。這樣,邊界掃描暫存器提供便捷方式用以觀測和控制所需要測試的晶片。另外,晶片輸入輸出接腳上的邊界掃描(移位元)暫存器單元可以相互連接起來,在晶片的周圍形成一個邊界掃描鏈(Boundary-ScanChain)。一般的晶片都會提供幾條獨立的邊界掃描鏈,用來實現完整的測試功能。邊界掃描鏈可以串列的輸入和輸出,透過相對應的時鐘信號和控制信號,就可以方便的觀察和控制處在測試狀態下的晶片。利用邊界掃描鏈可以實現對晶片的輸入輸出進行觀察和控制;管理和使用這些邊界掃描鏈主要是透過TAP(TestAccessPort)Controller來完成的,再來就討論TAP是如何工作的。2-2TAP(TESTACCESSPORT)在上一節,已經簡單介紹了邊界掃描鏈,而且也瞭解了一般的晶片都會提供幾條邊界掃描鏈,用來實現完整的測試功能,接下來逐步介紹如何實現掃描鏈的控制和存取。在IEEE1149.1標準裡面,暫存器被分為兩大類:資料暫存器(DR-DataRegister)2和指令暫存器(IR-InstructionRegister),邊界掃描鏈屬於資料暫存器中很重要的一種,邊界掃描鏈用來實現對晶片輸入輸出的觀察和控制,而指令暫存器用來實現對資料暫存器的控制,例如:在晶片提供的所有邊界掃描鏈中,選擇一條指定的邊界掃描鏈作為目前的目標掃描鏈,並作為存取對象,下面,讓我們從TAP(TestAccessPort)開始。TAP是一個通用的埠,透過TAP可以存取晶片提供的所有資料暫存器(DR)和指令暫存器(IR)。對整個TAP的控制是透過TAPController來完成的。TAP總共包括5個信號介面TCK、TMS、TDI、TDO和TRST:其中4個是輸入信號介面和另外1個是輸出信號介面,我們一般見到的公板上都有一個JTAG介面,該JTAG介面的主要信號介面就是這5個,以下介紹這個5個介面信號及其作用。TestClockInput(TCK)TCK為TAP的操作提供了一個獨立的、基本的時鐘信號。TAP的所有操作都是透過這個時鐘信號來驅動的。TCK在IEEE1149.1標準裡是強制要求的。TestModeSelectionInput(TMS)TMS信號用來控制TAP狀態機的轉換。透過TMS信號,可以控制TAP在不同的狀態間相互轉換。TMS信號在TCK的上升緣有效。TMS在IEEE1149.1標準裡是強制要求的。TestDataInput(TDI)TDI是資料登錄的介面。所有輸入到特定暫存器的資料都是透過TDI介面一位元一位元串列輸入的(由TCK驅動)。TDI在IEEE1149.1標準裡是強制要求的。TestDataOutput(TDO)TDO是資料輸出的介面。所有從特定的暫存器中輸出的資料都是透過TDO介面一位元一位元串列輸出的(由TCK驅動)。TDO在IEEE1149.1標準裡是強制要求的。TestResetInput(TRST)TRST可以用來對TAPController進行復位(初始化)。不過這個信號介面在IEEE1149.1標準裡是可選的,並不是強制要求的。因為透過TMS也可以對TAPController進行復位(初始化)。事實上,透過TAP介面,對資料暫存器(DR)進行存取的一般過程是:透過指令暫存器(IR),選定一個需要存取的資料暫存器;把選定的資料暫存器連接到TDI和TDO之間;由TCK驅動,透過TDI,把需要的資料登錄到選定的資料暫存器當中去;同時把選定的資料暫存器中的資料透過TDO讀出來。接下來,讓我們一起來瞭解一下TAP的狀態機,TAP的狀態機如圖1所示,總共有16個狀態,在圖中,每個六邊形表示一個狀態,六邊形中標有該狀態的名稱和標誌代碼。圖中的箭頭表示了TAPController內部所有可能的狀態轉換流程,狀態的轉換是由TMS控制的,所以在每個箭頭上有標有tms=0或者tms=1,在TCK的驅動下,從目前狀態到下一個狀態的轉換是由TMS信號決定,假設TAPController的目前狀態為Select-DR-Scan,在TCK的驅動下,如果TMS=0,TAPController進入Capture-DR狀態,如果TMS=1,TAPController進入Select-IR-Scan狀態。3圖1.TAPControllerStateTransitions這個狀態機看似很複雜,其實理解以後會發現這個狀態機其實很直接、很簡單。觀察圖1,我們可以發現,除了Test-LogicReset和Test-Run/Idle狀態外,其他的狀態有些類似;例如Select-DR-Scan和Select-IR-Scan相對應,Capture-DR和Capture-IR對應,Shift-DR和Shift-IR相對應,在這些相對應狀態中,DR表示DataRegister,IR表示InstructionRegister,暫存器分為兩大類,資料暫存器和指令暫存器,其實標誌有DR的這些狀態是用來存取資料暫存器的,而標誌有IR的這些狀態是用來存取指令暫存器的。在詳細描述整個狀態機中的每一個狀態之前,首先想一想:要透過邊界掃描鏈來觀察和控制晶片的輸入和輸出,需要做些什麼?如果需要補捉晶片某個接腳上的輸出,首先需要把該接腳上的輸出裝載到邊界掃描鏈的暫存器單元裡去,然後透過TDO輸出,這樣我們就可以從TDO上得到相對應接腳上的輸出信號。如果要在晶片的某個接腳上載入一個特定的信號,則首先需要透過TDI把期望的信號移位到與相對應接腳相連邊界掃描鏈的暫存器單元裡去,然後把該暫存器單元的值載入到相對應的晶片接腳。下面介紹每個狀態具體表示什麼意思?完成什麼功能?Test-LogicReset系統通電後,TAPController自動進入該狀態。在該狀態下,測試部分的邏輯電路全部被禁用,以保證晶片核心邏輯電路的正常工作,透過TRST信號也可以對測試邏輯電路進行重設,使得TAPController進入Test-LogicReset狀態。前面我們說過TRST是可選的一個信號介面,這是因為在TMS上連續加5個TCK脈衝寬度的“1”信號也可以對測試邏輯電路進行重設,使得TAPController進入Test-LogicReset狀態,在不提供TRST信號的情況下,也不會產生問題,在該狀態下,如果TMS一直保持為“1”,TAPController將保持在Test-LogicReset狀態下;如果TMS4由“1”變為“0”(在TCK的上升緣觸發),將使TAPController進入Run-Test/Idle狀態。Run-Test/Idle這個是TAPController在不同操作間的一個中間狀態,這個狀態下的動作取決於目前指令暫存器中的指令,有些指令會在該狀態下執行一定的操作,而有些指令在該狀態下不需要執行任何操作,在該狀態下,如果TMS一直保持為“0”,TAPController將一直保持在Run-Test/Idle狀態下;如果TMS由“0”變為“1”(在TCK的上升緣觸發),將使TAPController進入Select-DR-Scan狀態。Select-DR-Scan這是一個臨時的中間狀態,如果TMS為“0”(在TCK的上升緣觸發),TAPController進入Capture-DR狀態,後續的系列動作都將以資料暫存器作為操作物件;如果TMS為“1”(在TCK的上升緣觸發),TAPController進入Select-IR-Scan狀態。Capture-DR當TAPController在這個狀態中,在TCK的上升緣,晶片輸出接腳上的信號將被“補捉”到與之相對應的資料暫存器各個單元中去,如果TMS為“0”(在TCK的上升緣觸發),TAPController進入Shift-DR狀態;如果TMS為“1”(在TCK的上升緣觸發),TAPController進入Exit1-DR狀態。Shift-DR在這個狀態中,由TCK驅動,每一個時鐘週期,被連接在TDI和TDO之間的資料暫存器將從TDI接收一位元資料,同時透過TDO輸出一位元資料,如果TMS為“0”(在TCK的上升緣觸發),TAPController保持在Shift-DR狀態;如果TMS為“1”(在TCK的上升緣觸發),TAPController進入到Exit1-DR狀態,假設目前的資料暫存器的長度為4,如果TMS保持為0,那在4個TCK時鐘週期後,該資料暫存器中原來的4位元資料(一般是在Capture-DR狀態中補捉的資料)將從TDO輸出來;同時該資料暫存器中的每個暫存器單元中將分別獲得從TDI輸入的4位元新資料。Update-DR在Update-DR狀態下,由TCK上升緣驅動,資料暫存器當中的資料將被載入到相對應的晶片接腳上去,用以驅動晶片。在該狀態下,如果TMS為“0”,TAPController將回到Run-Test/Idle狀態;如果TMS為“1”,TAPController將進入Select-DR-Scan狀態。Select-IR-Scan這是一個臨時的中間狀態,如果TMS為“0”(在TCK的上升緣觸發),TAPController進入Capture-IR狀態,後續的系列動作都將以指令暫存器作為操作物件;如果TMS為“1”(在TCK的上升緣觸發),TAPController進入Test-LogicReset狀態。Capture-IR當TAPController在這個狀態中,在TCK的上升緣,一個特定的邏輯序列將被裝載到指令暫存器中去,如果TMS為“0”(在TCK的上升緣觸發),TAPController進入Shift-IR狀態;如果TMS為“1”(在TCK的上升緣觸發),TAPController5進入Exit1-IR狀態。Shift-IR在這個狀態中,由TCK驅動,每一個時鐘週期,被連接在TDI和TDO之間的指令暫存器將從TDI接收一位元資料,同時透過TDO輸出一位元資料,如果TMS為“0”(在TCK的上升緣觸發),TAPController保持在Shift-IR狀態;如果TMS為“1”(在TCK的上升緣觸發),TAPController進入到Exit1-