前言
JTGA這個東西IC和嵌入式靚仔們肯定是有用過的,但是對于JTAG內(nèi)部的東西,以及實現(xiàn)如果不了解的,可以看看這篇文章。
之前和coresight有了解過的靚仔,了解了對于ARM內(nèi)部的調(diào)試,知道了對于調(diào)試的入口在于那個JTAG Port,但是對于外部的JTGA Port你真的又了解多少,是否真的就是那么簡單的一個port?
不知道coresight的可以看看【來跟著前輩看看coresight】這篇文章。
為什么要了解這個東西,是因為最近在調(diào)試這個JTAG,還要用到一些腳本,對于這些指令很是好奇,于是就來看看這些指令是怎么在JTAG內(nèi)部工作,下面廢話不多說開始吧。
[PS:感謝文末前輩們的優(yōu)秀博客作為參考,以及優(yōu)秀的開源文檔]
1-JTAG的概述
1-什么是JTAG
?JTAG:Joint Test Action Group“(聯(lián)合測試工作組) 的英文縮寫
?邊界掃描要求符合IEEE1149.1 (JTAG) 標準
?BSDL(Boundary- ScanDescriptionLanguage)邊界掃描描述語言
?邊界掃描測試 (Boundary-Scan-TEST):對符合IEEE1149.1標準的器件,通過BSDL文件生成測試向量, 測試器件開路短路的一種測試方法
邊界掃描(Boundary Scan)測試發(fā)展于上個世紀90年代,隨著大規(guī)模集成電路的出現(xiàn),印制電路板制造工藝向小,微,薄發(fā)展,傳統(tǒng)的ICT 測試已經(jīng)沒有辦法滿足這類產(chǎn)品的測試要求。由于芯片的引腳多,元器件體積小,板的密度特別大,根本沒有辦法進行下探針測試。一種新的測試技術產(chǎn)生了,聯(lián)合測試行為組織(Joint Test Action Group)簡稱JTAG 定義這種新的測試方法即邊界掃描測試。
隨著表面貼裝技術的使用,印制電路板(PCB)的密度越來越高,已不易采用傳統(tǒng)的針床測試技術。而增加電路測試點、對復雜電路增加附加的測試電路來進行單獨測試等方法只是對傳統(tǒng)方法的改進,對提高電路可測性十分有限且通用性較差。
為提高電路和系統(tǒng)的可測試性,1985年菲利浦電子公司首先倡議并聯(lián)合歐洲、北美和亞洲其他電子設備制造公司組建了聯(lián)合測試行動組(Jo int TestA ction Group,JTAG)。1990年2月JTAG與TEEE標準化委員會合作提出了“標準測試訪問通道與邊界掃描結(jié)構(gòu)”的IEEE114911 1990標準。該標準要求在集成電路中加入邊界掃描電路。
在板級測試時,可以在模式選擇的控制下,構(gòu)成一條就集成電路邊界繞行的移位寄存器鏈,對板內(nèi)集成電路的所有引腳進行掃描,通過將測試數(shù)據(jù)串行輸入到該寄存器鏈的方法,檢查發(fā)現(xiàn)印刷電路板上的器件焊接故障和板內(nèi)連接故障,極大地方便了系統(tǒng)電路的調(diào)試。IEEE114911標準的推廣應用引起測試設備和測試系統(tǒng)的重大變革,邊界掃描測試技術正日益成為超大規(guī)模集成電路的主流測試技術。
2-使用JTAG的好處
?縮短產(chǎn)品面世時間
?降低測試成本
?提高產(chǎn)品質(zhì)量和可靠性
?降低PCB成本
小結(jié)
邊界掃描測試有2大優(yōu)點:
?一個是方便芯片的故障定位,迅速準確地測試兩個芯片管腳的連接是否可靠,提高測試檢驗效率;
?另一個是,具有JTAG接口的芯片,內(nèi)置一些預先定義好的功能模式,通過邊界掃描通道使芯片處于某個特定的功能模式,以提高系統(tǒng)控制的靈活性和方便系統(tǒng)設計。
2-邊界掃描器件的結(jié)構(gòu)
在這里插入圖片描述
JTAG旨在解決使用傳統(tǒng)的ICT方法測試電路的困難。
現(xiàn)代封裝技術(如BGA和芯片級封裝)限制了并在某些情況下消除了對引腳的物理訪問。
JTAG通過在器件的外部連接和內(nèi)部邏輯之間放置單元(邊界掃描單元)來克服這個問題,如上圖。通過將單元配置為移位寄存器,JTAG可用于監(jiān)視/控制這些引腳(以及連接到它們的網(wǎng)絡)的值,而無需直接物理訪問。極大減少了對板卡的物理訪問。
在器件的正常工作期間,還可以選擇對芯片和引腳之間傳遞時的數(shù)據(jù)值進行采樣,實時觀察芯片引腳的狀態(tài)。
這個寄存器中的每個單元都位于設備的邊界上,位于它的核心邏輯和與板卡相連的針腳之間——所以JTAG測試也被稱為邊界掃描。
對于要符合JTAG標準的設備,其制造商必須提供BSDL文件(邊界掃描描述語言),該文件描述了設備的JTAG方面如何工作。
如果電路包含多個JTAG兼容器件,則可以將這些器件鏈接在一起以形成JTAG鏈。
在JTAG鏈中,來自第一器件的數(shù)據(jù)輸出成為第二器件的數(shù)據(jù)輸入。
控制和時鐘信號對于鏈中的所有設備都是通用的。以保證鏈中的設備在測試期間保持相同的狀態(tài)。
在這里插入圖片描述
如果此時你還不理解這個鏈路,沒事繼續(xù)看下午,非后續(xù)阻塞點。
0-邊界掃描
在JTAG調(diào)試當中,邊界掃描(Boundary-Scan)是一個很重要的概念。
邊界掃描技術的基本思想是在靠近芯片的輸入輸出管腳上增加一個移位寄存器單元。因為這些移位寄存器單元都分布在芯片的邊界上(周圍),所以被稱為邊界掃描寄存器(Boundary-Scan Register Cell)。
當芯片處于調(diào)試狀態(tài)的時候,這些邊界掃描寄存器可以將芯片和外圍的輸入輸出隔離開來。通過這些邊界掃描寄存器單元,可以實現(xiàn)對芯片輸入輸出信號的觀察和控制。
?對于芯片的輸入管腳,可以通過與之相連的邊界掃描寄存器單元把信號(數(shù)據(jù))加載到該管腳中去;
?對于芯片的輸出管腳,也可以通過與之相連的邊界掃描寄存器“捕獲”(CAPTURE)該管腳上的輸出信號。
在正常的運行狀態(tài)下,這些邊界掃描寄存器對芯片來說是透明的,所以正常的運行不會受到任何影響。這樣,邊界掃描寄存器提供了一個便捷的方式用以觀測和控制所需要調(diào)試的芯片。
另外,芯片輸入輸出管腳上的邊界掃描(移位)寄存器單元可以相互連接起來,在芯片的周圍形成一個邊界掃描鏈(Boundary-Scan Chain)。一般的芯片都會提供幾條獨立的邊界掃描鏈,用來實現(xiàn)完整的測試功能。邊界掃描鏈可以串行的輸入和輸出,通過相應的時鐘信號和控制信號,就可以方便的觀察和控制處在調(diào)試狀態(tài)下的芯片。
利用邊界掃描鏈可以實現(xiàn)對芯片的輸入輸出進行觀察和控制。
下一個問題是:如何來管理和使用這些邊界掃描鏈?
對邊界掃描鏈的控制主要是通過TAP(Test Access Port) Controller來完成的。
在這里插入圖片描述
1-邊界掃描的硬件結(jié)構(gòu)
BST的核心思想是在芯片管腳和芯片內(nèi)部邏輯之間,即緊挨元件的每個輸入、輸出引腳處增加移位寄存器組,在PCB的測試模式下,寄存器單元在相應的指令作用下,控制輸出引腳的狀態(tài),讀入輸入引腳的狀態(tài),從而允許用戶對PCB上的互連進行測試。
在這里插入圖片描述
BST電路主要包括
?指令寄存器(IR)、
?旁路寄存器(BR)、
?邊界掃描寄存器(BSR)
?測試訪問端口(TAP)控制器。
BST電路一般采用4線測試總線接口,如圖1所示,如果測試信號中有復位信號(nTRST),則采用5線測試總線接口。
5個信號分別為:
?測試數(shù)據(jù)輸入總線(TDI),測試數(shù)據(jù)輸入至移位寄存器(SR);
?測試數(shù)據(jù)輸出總線(TDO),測試數(shù)據(jù)從SR移出;
?測試時鐘總線(TCK);
?測試模式選擇總線(TMS),控制各個測試過程,如選擇寄存器、加載數(shù)據(jù)、形成測試、移出結(jié)果等;
?復位信號總線(TRST),低電平有效。
IEEEStd114911測試總線使用TCK的2個時鐘沿,
?TMS和TDI在TCK的上升沿被采樣,
? TDO在TCK的下降沿變化。
2-TAP(Test Access Port)
在上一節(jié),我們已經(jīng)簡單介紹了邊界掃描鏈,而且也了解了一般的芯片都會提供幾條邊界掃描鏈,用來實現(xiàn)完整的測試功能。下面,我將逐步介紹如何實現(xiàn)掃描鏈的控制和訪問。
在IEEE 1149.1標準里面,寄存器被分為兩大類:
?數(shù)據(jù)寄存器(DR-Data Register)
?指令寄存器(IR-Instruction Register)
邊界掃描鏈屬于數(shù)據(jù)寄存器中很重要的一種。
?邊界掃描鏈用來實現(xiàn)對芯片的輸入輸出的觀察和控制。
?而指令寄存器用來實現(xiàn)對數(shù)據(jù)寄存器的控制,
例如:在芯片提供的所有邊界掃描鏈中,選擇一條指定的邊界掃描鏈作為當前的目標掃描鏈,并作為訪問對象。下面,讓我們從TAP(Test Access Port)開始。
2.1 接口信號定義
TAP是一個通用的端口,通過TAP可以訪問芯片提供的所有數(shù)據(jù)寄存器(DR)和指令寄存器(IR)。對整個TAP的控制是通過TAP Controller來完成的。TAP總共包括5個信號接口TCK、TMS、TDI、TDO和TRST :其中4個是輸入信號接口和另外1個是輸出信號接口。
一般,我們見到的開發(fā)板上都有一個JTAG接口,該JTAG接口的主要信號接口就是這5個。下面,先分別介紹這個5個接口信號及其作用。
? Test Clock Input (TCK) TCK為TAP的操作提供了一個獨立的、基本的時鐘信號,TAP的所有操作都是通過這個時鐘信號來驅(qū)動的。TCK在IEEE 1149.1標準里是強制要求的。
? Test Mode Selection Input (TMS) TMS信號用來控制TAP狀態(tài)機的轉(zhuǎn)換。通過TMS信號,可以控制TAP在不同的狀態(tài)間相互轉(zhuǎn)換。TMS信號在TCK的上升沿有效。TMS在IEEE 1149.1標準里是強制要求的。
? Test Data Input (TDI) TDI是數(shù)據(jù)輸入的接口。所有要輸入到特定寄存器的數(shù)據(jù)都是通過TDI接口一位一位串行輸入的(由TCK驅(qū)動)。TDI在IEEE 1149.1標準里是強制要求的。
? Test Data Output (TDO) TDO是數(shù)據(jù)輸出的接口。所有要從特定的寄存器中輸出的數(shù)據(jù)都是通過TDO接口一位一位串行輸出的(由TCK驅(qū)動)。TDO在IEEE 1149.1標準里是強制要求的。
? Test Reset Input (TRST) TRST可以用來對TAP Controller進行復位(初始化)。不過這個信號接口在IEEE 1149.1標準里是可選的,并不是強制要求的。因為通過TMS也可以對TAP Controller進行復位(初始化)。
2.2 指令寄存器、公共指令以及數(shù)據(jù)寄存器
在IEEE 1149.1標準當中,規(guī)定了一些指令寄存器、公共指令和相關的一些數(shù)據(jù)寄存器。對于特定的芯片而言,芯片廠商都一般都會在IEEE 1149.1標準的基礎上,擴充一些私有的指令和數(shù)據(jù)寄存器,以幫助在開發(fā)過程中進行進行方便的測試和調(diào)試。在這一部分,我將簡單介紹IEEE 1149.1規(guī)定的一些常用的指令及其相關的寄存器。
1-指令寄存器:
指令寄存器允許特定的指令被裝載到指令寄存器當中,用來選擇需要執(zhí)行的測試,或者選擇需要訪問的測試數(shù)據(jù)寄存器。每個支持JTAG調(diào)試的芯片必須包含一個指令寄存器。(IR)
2-BYPASS指令和Bypass寄存器:
Bypass寄存器是一個一位的移位寄存器,通過BYPASS指令,可以將bypass寄存器連接到TDI和TDO之間。在不需要進行任何測試的時候,將bypass寄存器連接在TDI和TDO之間,在TDI和TDO之間提供一條長度最短的串行路徑。這樣允許測試數(shù)據(jù)可以快速的通過當前的芯片送到開發(fā)板上別的芯片上去。
3-IDCODE指令和Device Identification 寄存器:
Device identification寄存器中可以包括生產(chǎn)廠商的信息,部件號碼,和器件的版本信息等。使用IDCODE指令,就可以通過TAP來確定器件的這些相關信息。例如,ARM MULTI-ICE可以自動識別當前調(diào)試的是什么片子,其實就是通過IDCODE指令訪問Device Identification寄存器來獲取的。
4-INTEST指令和Boundary-Scan 寄存器:
Boundary-Scan寄存器就是我們前面例子中說到的邊界掃描鏈,一般一個芯片內(nèi)部有多個邊界掃描鏈。通過邊界掃描鏈,可以進行部件間的連通性測試。當然,更重要的是可以對測試器件的輸入輸出進行觀測和控制,以達到測試器件的內(nèi)部邏輯的目的。
INTEST指令是在IEEE 1149.1標準里面定義的一條很重要的指令:結(jié)合邊界掃描鏈,該指令允許對開發(fā)板上器件的系統(tǒng)邏輯進行內(nèi)部測試。在ARM JTAG調(diào)試當中,這是一條頻繁使用的測試指令。
我們前面說過,寄存器分為兩大類:指令寄存器和數(shù)據(jù)寄存器。在上面提到的Bypass寄存器、Device Identification寄存器和Boundary-scan寄存器(邊界掃描鏈),都屬于數(shù)據(jù)寄存器。在調(diào)試當中,邊界掃描寄存器(邊界掃描鏈)最重要,使用的也最為頻繁。
事實上,通過TAP接口,對數(shù)據(jù)寄存器(DR)進行訪問的一般過程是:
?通過指令寄存器(IR),選定一個需要訪問的數(shù)據(jù)寄存器(bypass,ID,Boundary-scan);
?把選定的數(shù)據(jù)寄存器連接到TDI和TDO之間;
?由TCK驅(qū)動,通過TDI,把需要的數(shù)據(jù)輸入到選定的數(shù)據(jù)寄存器當中去;同時把選定的數(shù)據(jù)寄存器中的數(shù)據(jù)通過TDO讀出來。
SIR->TDI->TDO
在這里插入圖片描述
3-TAP 控制器
JTAG接口在每個設備上增加了四個額外的引腳:
TAP 接口必須包括: TCK, TMS, TDI, TDO
? TCK (Test ClockInput):測試時鐘輸入線
? TMS (Test Mode Selecton) :測試方式選擇輸入線
? TDI ( Test Data Input ) :測試數(shù)據(jù)輸入線
? TDO ( Test Data Output ) :測試數(shù)據(jù)輸出線
? TRST ( Test Reset Input ) :測試復位輸入線,(可選)
在這里插入圖片描述
TAP控制器是邊界掃描測試的核心控制器。
在TCK和TMS的控制下,可以選擇使用指令寄存器掃描或數(shù)據(jù)寄存器掃描,以及控制邊界掃描測試的各個狀態(tài)。
TMS和TDI是在TCK的上升沿被采樣,TDO是在TCK的下降沿變化。
?TAP控制器是16-states的有限狀態(tài)機
?TAP控制器的狀態(tài)在TCK的上升沿變化
?TAP控制器在上電時進入邏輯復位狀態(tài)
?Shift-IR state掃描IR,TDO輸出有效
?Shift-DR state掃描DR,TDO輸出有效
?其它狀態(tài)下TDO輸出無效
1-TAP控制器口線功能和關系1
?TCK為低時Test logic的存儲單元保持不變,TCK在上升沿采樣TMS和TDI輸入值, 在TCK下降沿TDO輸出變化
?測試指令(test instruction)和測試數(shù)據(jù)(test data)從TDI輸入線輸入到指令寄存器 ( instruction register ) 和 各種數(shù)據(jù)寄存器 ( various test data registers )
2-TAP控制器口線功能和關系2
?只有在移位時 ( Shift-DR or shift-IR ) TDO輸出才有效
?測試操作受TMS輸入的序列“1”和 0” 控制
?TRST可以異步復位
?當TMS在連續(xù)五個TCK時鐘周期內(nèi)保持高時,TAP控制器 ( TAP controllen)也會自動進入測試邏輯復位狀態(tài) ( Test-Logic-Reset)
4-TAP狀態(tài)機
TAP控制器的狀態(tài)機如圖2所示。右邊是指令寄存器分支,左邊是數(shù)據(jù)寄存器分支。
在這里插入圖片描述
其中,TAP控制器的狀態(tài)機只有6個穩(wěn)定狀態(tài):
?測試邏輯復位(Test Logical Reset)、
?測試運行等待(RunTest Idle)、
?數(shù)據(jù)寄存器移位(Shift DR)、
?數(shù)據(jù)寄存器移位暫停(Pause DR)、
?指令寄存器移位(Shift IR)、
?指令寄存器暫停(Pause IR)
其他狀態(tài)都不是穩(wěn)態(tài),而只是暫態(tài)。
?在上電或IC正常運行時,必須使TMS最少持續(xù)5個TCK保持為高電平,則TAP進入測試邏輯復位態(tài)。這時,TAP發(fā)出復位信號使所有的測試邏輯不影響元件的正常運行。
?若需要進行邊界掃描測試??梢栽赥MS與TCK的配合控制下,退出復位,進入邊界掃描測試需要的各個狀態(tài)。
?需要測試時,在TMS和TCK的控制下,TAP控制器跳出TLR狀態(tài)(測試邏輯復位),從選擇數(shù)據(jù)寄存器掃描(Shift DRScan)或選擇指令寄存器掃描(Shift IR Scan)進入圖2所示的各個狀態(tài)。Shift DR Scan和Shift IR Scan兩個模塊的功能類似。
?進入每個模塊的第一步是捕捉數(shù)據(jù)(Capture),
?對于數(shù)據(jù)寄存器,在Capture DR狀態(tài)把數(shù)據(jù)并行加載到相應的串行數(shù)據(jù)通道中,
?對于指令寄存器,則是在Capture IR狀態(tài)把指令信息捕捉到指令寄存器中。
? TAP控制器從捕捉狀態(tài)進入移位(Shift)或跳出1(Exit1)狀態(tài)。通常,Shift狀態(tài)緊跟Capture狀態(tài),數(shù)據(jù)在寄存器中移位。
?在Shift狀態(tài)之后,TAP控制器通過Exit1狀態(tài)進入更新(Update)狀態(tài)或者暫停(Pause)狀態(tài)。
?在Pause狀態(tài),數(shù)據(jù)移位暫時終止,可以對數(shù)據(jù)寄存器或指令寄存器重新加載測試向量。
?從Pause狀態(tài)出來通過跳出2(Exit2)狀態(tài)可以再次進入Shift狀態(tài)或者經(jīng)過Update狀態(tài)回到Run Test Idle狀態(tài)。在Update狀態(tài),移入掃描通道的數(shù)據(jù)被輸出。
這個狀態(tài)機看似很復雜,其實理解以后會發(fā)現(xiàn)這個狀態(tài)機其實很直接、很簡單。觀察上圖,我們可以發(fā)現(xiàn),除了Test-Logic Reset和Test-Run/Idle狀態(tài)外,其他的狀態(tài)有些類似。例如Select-DR-Scan和Select-IR-Scan對應,Capture-DR和Capture-IR對應,Shift-DR和Shift-IR對應,等等。在這些對應的狀態(tài)中,DR表示Data Register,IR表示Instruction Register。記得我們前面說過嗎,寄存器分為兩大類,數(shù)據(jù)寄存器和指令寄存器。其實標識有DR的這些狀態(tài)是用來訪問數(shù)據(jù)寄存器的,而標識有IR的這些狀態(tài)是用來訪問指令寄存器的。
讓我們來看一個更直觀的例子?,F(xiàn)在假設,TAP Controller 現(xiàn)在處在 Run-Test/Idle 狀態(tài),指令寄存器當中已經(jīng)成功的寫入了一條新的指令,該指令選定的是一條長度為6的邊界掃描鏈。
下面讓我們來看看實際如何來訪問這條邊界掃描鏈。下圖所示的是測試芯片及其被當前指令選定的長度為6的邊界掃描鏈。由下圖可以看出,當前選擇的邊界掃描鏈由6個邊界掃描移位寄存器單元組成,并且被連接在TDI和TDO之間。
在這里插入圖片描述
TCK 時鐘信號與每個邊界掃描移位寄存器單元相連。每個時鐘周期可以驅(qū)動邊界掃描鏈的數(shù)據(jù)由TDI到TDO的方向移動一位,這樣,新的數(shù)據(jù)可以通過 TDI 輸入一位,邊界掃描鏈的數(shù)據(jù)可以通過 TDO 輸出一位。經(jīng)過6個時鐘周期,就可以完全更新邊界掃描鏈里的數(shù)據(jù),而且可以將邊界掃描鏈里捕獲的6位數(shù)據(jù)通過TDO全部移出來。
?圖(1)表示了芯片和邊界掃描鏈的初始化狀態(tài),在測試狀態(tài)下,芯片的外部輸入和輸出被隔離開了,芯片的輸入和輸出可以通過相應的邊界掃描鏈來觀察和控制。
?在圖(1)中,掃描鏈里的每個移位寄存器單元的數(shù)據(jù)是不確定的,所以在圖中用X表示,整個掃描鏈里的數(shù)據(jù)序列是XXXXXX。
?要從TDI輸入到測試芯片上的數(shù)據(jù)序列是:101010. 同時要從TDO得到芯片相應管腳上的狀態(tài)。
?現(xiàn)在TAP Controller從Run-Test/Idle狀態(tài)經(jīng)過Select-DR-Scan狀態(tài)進入到Capture-DR狀態(tài),在 Capture-DR 狀態(tài)當中,在一個TCK時鐘的驅(qū)動下,芯片管腳上的信號狀態(tài)全部被捕獲到相應的邊界掃描移位寄存器單元當中去,如圖(2)所示。
?從圖(2)中我們可以看出,在進入 Capture-DR 狀態(tài)后,經(jīng)過一個 TCK 時鐘周期,現(xiàn)在掃描鏈中的數(shù)據(jù)序列變成了:111000.
?在數(shù)據(jù)捕獲完成以后,從Capture-DR狀態(tài)進入到Shift-DR狀態(tài)。
?在Shift-DR狀態(tài)中,我們將通過6個TCK時鐘周期來把新的數(shù)據(jù)序列(101010)通過 TDI 輸入到邊界掃描鏈當中去;
?同時,將邊界掃描鏈中捕獲的數(shù)據(jù)序列(111000)通過 TDO 輸出來。
?在進入到 Shift-DR 狀態(tài)后,每經(jīng)過一個 TCK 時鐘驅(qū)動,邊界掃描鏈從 TDO 輸出一位數(shù)據(jù);同時,從 TDI 接收一位新的數(shù)據(jù)。
?圖(3)所示的是在 Shift-DR狀態(tài)下,1 個 TCK 時鐘周期后的掃描鏈的變化。圖(4)所示的是在Shift-DR狀態(tài)下,2個TCK時鐘周期后的掃描鏈的變化。此時,掃描鏈已經(jīng)從TDI串行得到了兩位新數(shù)據(jù),從TDO也串行輸出了兩位數(shù)據(jù)。在TCK時鐘的驅(qū)動下,這個過程一直繼續(xù)下去。圖(5)所示的是在經(jīng)過6 個 TCK 時鐘周期以后掃描鏈的情況。
?從圖(5)中我們可以看到:邊界掃描鏈當中已經(jīng)包含了新的數(shù)據(jù)序列:101010. 在TDO端,經(jīng)過6個TCK時鐘驅(qū)動以后,也接收到了在Capture-DR狀態(tài)下捕獲到的數(shù)據(jù)序列:111000.
?到目前為止,雖然掃描鏈當中包含了新的數(shù)據(jù)序列:101010,但測試芯片的管腳上的狀態(tài)還是保持為:111000.下一步,需要更新測試芯片相應管腳上的信號狀態(tài)。要實現(xiàn)更新,
?TAP Controller 從 Shift-DR 狀態(tài),經(jīng)過 Exit1-DR 狀態(tài),進入到 Update-DR 狀態(tài)。在 Update-DR 狀態(tài)中,經(jīng)過一個周期的 TCK 時鐘驅(qū)動,邊界掃描鏈中的新數(shù)據(jù)序列將被加載到測試芯片的相應管腳上去,如圖(6)所示。
?從圖(6)可以看出,測試芯片的狀態(tài)已經(jīng)被更新,相應管腳上的狀態(tài)序列已經(jīng)從111000變?yōu)?01010.最后從 Update-DR狀態(tài)回到 Run-Test/Idle 狀態(tài),完成對選定的邊界掃描鏈的訪問。
關于Pause-DR/Pause-IR狀態(tài)
這兩個狀態(tài)是暫停狀態(tài),比如說我們要通過32bit的總線從一個48長度的掃描鏈中讀出相應管腳的狀態(tài),我們需要讀兩次才能將48bit的掃描鏈狀態(tài)讀出來,先經(jīng)過32個TCK時鐘讀出高32bit的狀態(tài),然后轉(zhuǎn)到Pause-DR狀態(tài)等待總線讀響應,響應完成后再進入Shift-DR經(jīng)過16個TCK時鐘讀出低16bit數(shù)據(jù)。
5-BST寄存器單元
邊界掃描數(shù)據(jù)寄存器至少應該包括3種:邊界掃描寄存器、器件標識寄存器和旁路寄存器。
1-邊界掃描寄存器
(1)邊界掃描寄存器構(gòu)成邊界掃描路徑,他的每一個單元由存儲器、發(fā)送/接收器和緩沖器組成。邊界掃描單元置于集成電路的輸入/輸出端附近,并首尾相連構(gòu)成一個移位寄存器鏈,首端接TDI,末端接TDO。在測試時鐘TCK的作用下,從TDI加入的數(shù)據(jù)可以在移位寄存器鏈中移動進行掃描。
在這里插入圖片描述
邊界掃描單元(BSC)基本結(jié)構(gòu)如上圖所示。其主要作用是加載測試向量和捕捉測試響應。
D類型觸發(fā)器,它是在時鐘信號作用下,輸出結(jié)果根據(jù)D的狀態(tài)而改變。DFF是邊沿觸發(fā),DFF,即數(shù)據(jù)觸發(fā)型觸發(fā)器(Data Flip-Flop),是一種基于存儲單比特的數(shù)據(jù)的觸發(fā)器,常用于數(shù)字電路、計算機硬件和嵌入式系統(tǒng)等領域。(D觸發(fā)器)
MUX2由Mode信號控制,
?Mode信號為0時,可以使單元的數(shù)據(jù)輸出與數(shù)據(jù)輸入相連;
?為1時,數(shù)據(jù)輸出端的數(shù)據(jù)是DFF2的輸出信號,與數(shù)據(jù)輸入端的信號無關。
Shift信號控制MUX1,
?為0時,DFF1采樣數(shù)據(jù)輸入端的信號;
?為1時,進行移位。
BSC的工作按照以下4個步驟進行:
?MUX1在Shift DR模式,移入新的測試向量;
?MUX2在Update DR模式,加載測試向量到單元的數(shù)據(jù)輸出端;
?MUX1在Capture DR模式,捕捉單元并行輸入端的響應;
? MUX1在Shift DR模式,移出響應。
在這里插入圖片描述
2- 器件識別寄存器(ID)
器件識別寄存器(ID)有32位,
?其中31~28位是版本號,
?27~12位是器件序列號,
?11~1位是廠家標識,
?第0位為1。
借助他可以辨別板上元器件的生產(chǎn)商,還可以通過他來測試是否將正確的器件安裝在PCB板的正確位置。器件標識寄存器和邊界掃描寄存器可以使用相同的邊界掃描單元。
3-旁路寄存器(BR)
旁路寄存器(BR)只有1位,他提供了一條從TDI到TDO之間的最短通道,用來將不參加串行掃描的數(shù)據(jù)寄存器的數(shù)據(jù)旁路掉,以減少不必要的掃描時間。旁路寄存器的結(jié)構(gòu)如下圖4所示。在Shift DR模式下,數(shù)據(jù)直接從Data in到Data out,而不經(jīng)過任何邊界掃描寄存器。
在這里插入圖片描述
6-指令寄存器
指令寄存器由串移位級和并行鎖存級組成,進行指令的譯碼,兩位指令的指令寄存器的結(jié)構(gòu)如上圖圖圖5所示。
其位數(shù)由所選指令數(shù)決定,常用指令很多。DFF1和DFF2在Capture IR和Shift IR的控制下,進行兩位指令譯碼,在Update IR模式下指令數(shù)據(jù)加載到指令輸出端,高位在IR out1,低位在IR out2。
IEEE114911標準中定義了大量指令,有必須的,有可選的,而且也允許定義更多特定設計的指令來擴展測試邏輯的功能。(這里可能就是我們的SIR 6/SDR 6這種)
此外,除了上述數(shù)據(jù)寄存器以外,還可以包括用戶定義的數(shù)據(jù)寄存器。
7-JTAG指令
1-JTAG指令
必須提供的Public Instructions
?BYPASS, SAMPLE/PRELOAD,EXTEST
?如果有Device Identification Register 必須提供IDCODE ;如果是可編程IC,還要提供USERCODE??蛇x的Public Instructions
? INTEST,RUNBIST IC廠商可以自定義Public or Private Instructions,Public Instructions的資料必須公開。
2-JTAG電路指令碼
? BYPASS::全1 IC廠商可以再分配幾個其它的binary code
? EXTEST:全0 , IC廠商可以再分配幾個其它的binary code
SAMPLE/PRELOAD,INTEST,RUNTEST,IDCODE,USERCODE: IC廠商自行分配binary code。
未分配的binary code表示BYPASS,
3-BSDL簡單介紹
FPGA器件EP1C12F256的BSDL文件指令:
?"BYPASS (1111111111), "&
?"EXTEST (0000000000), "&
?"SAMPLE (0000000101), "&
?"IDCODE (0000000110), "&
?"USERCODE (0000000111), "&
?"CLAMP (0000001010), "&
?"HIGHZ (0000001011);
4-BYPASS指令的執(zhí)行
在這里插入圖片描述
5-EXTEST指令的執(zhí)行
6-INTEST指令的執(zhí)行
在這里插入圖片描述
3-Serial Vector Format File
為測試可編程邏輯器件(PLD)設計而創(chuàng)建的文件;
包含一個或多個測試用例的說明,如組合邏輯檢查;
用于調(diào)試印刷電路板(PCB)、集成電路(IC)和嵌入式系統(tǒng)。
.SVF 格式符合聯(lián)合測試操作(JTAG)標準,該標準也稱為標準測試訪問端口和邊界掃描架構(gòu)。.
SVF 文件以ASCII文本格式存儲,可以使用文本編輯器進行編輯。
.SVF自動測試設備(ATE)通常使用文件,這些設備連接到PLD(可編程邏輯器件)中的調(diào)試端口來執(zhí)行測試。沒有調(diào)試端口的pld通常提供其他機制來逐步進行邏輯測試。
注:串行矢量格式文件也可以二進制格式存儲在.XSVF 文件中。
4-邊界掃描測試方式
利用邊界掃描技術,可以對集成電路芯片的內(nèi)部故障、電路板的互連以及相互間影響有比較全面的了解,并通過加載相應指令到指令寄存器來選擇工作方式。不同的測試在不同的工作方式下進行。
1-外測試(EXTEST)
外測試測試IC與電路板上其他器件的連接關系。
此時邊界掃描寄存器把IC的內(nèi)部邏輯與被測板上其他元件隔離開來。
在EXTEST指令下,給每個IO端賦一個已知的值用于測試電路板上各集成電路芯片間連線以及板級互連的故障,包括斷路故障和短路故障。
圖6中的3塊芯片受相同的TCK和TMS總線控制,各芯片TDO的輸出端連接到下一器件TDI的輸入端,構(gòu)成了一條移位寄存器鏈。測試向量從IC1的TDI輸入,通過邊界掃描路徑加到每個芯片的輸出引腳寄存器,而輸入引腳寄存器則接收響應向量。
圖中IC2的B腳接收IC1的A腳寄存器的信號,正常情況下,B腳的值應該為1。但如果AB和CD線間出現(xiàn)了短路,則B腳寄存器接收到的值變成了0。IC3的F引腳寄存器接收IC1的E腳寄存器信號,正常情況下,F(xiàn)腳的值應該為1,但如果引線EF間出現(xiàn)了斷路,則從F腳得到的值不是1,而是0。
在電路板的測試中出現(xiàn)最頻繁的是斷路和短路故障,傳統(tǒng)的逐點檢查的方法既麻煩又費時,而通過邊界掃描技術的外部測試方式,把從TDO端輸出的邊界掃描寄存器的串行信號與正確的信號相比較,就可以方便有效地診斷出電路板引線及芯片引腳間的斷路和短路故障。這是邊界掃描技術一個非常顯著的優(yōu)點。
在這里插入圖片描述
2-內(nèi)測試 ( IN TEST )
內(nèi)測試測試IC本身的邏輯功能,即測試電路板上集成電路芯片的內(nèi)部故障。
測試向量通過TDI輸入,并通過邊界掃描通道將測試向量加到每個芯片的輸入引腳寄存器中,從輸出端TDO可以串行讀出存于輸出引腳寄存器中各芯片的響應結(jié)果。根據(jù)輸入向量和輸出響應,就可以對電路板上各芯片的內(nèi)部工作狀態(tài)做出測試分析。(輸出應該是有個預期值,或者預期的結(jié)果和現(xiàn)象)
3-采樣測試方式 (SAMPLE/PRELOAD )
采樣測試方式常用于對一個正在運行的系統(tǒng)進行實時監(jiān)控。取樣/預置(SAMPLE/PRELOAD),
?在捕捉階段從輸入端取樣,
?在更新階段預置BSC,為外測試做準備;
?移出器件標識(ID Code):選擇旁路寄存器,使數(shù)據(jù)在ASIC間快速移位。
4-邊界掃描連的主要應用
1-TAPIT
在這里插入圖片描述
2-BICT
3-VIT
4-VCCT
5-PPT
6-ILDP
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
5-JTAG硬件設計
在這里插入圖片描述
在這里插入圖片描述
6-小結(jié)
此外還有多種測試指令,他們的存在和不斷擴充,使邊界掃描技術的應用得以拓展和延伸,進行更有效的集成電路測試。
邊界掃描技術是一種新的測試技術,雖然他能夠測試集成電路芯片的輸入/輸出管腳的狀態(tài),也能測試芯片內(nèi)部工作情況以及引線級的斷路和短路故障,但是邊界掃描技術還處于不斷發(fā)展之中。
他的應用是建立在具有邊界掃描電路設計的集成電路芯片基礎上的。對于電路板上安裝的不帶邊界掃描電路的器件的測試,邊界掃描是無能為力的。今后也不可能將所有的數(shù)字集成電路芯片設計上邊界掃描電路,因此他也不可能完全代替其他的測試方法。這種方法的突出優(yōu)點是具有測試性,可以只通過運行計算機程序就能檢查出電路或連線的故障,這在可靠性要求高、排除故障要求時間短的場合非常適用。特別是在武器裝備的系統(tǒng)內(nèi)置測試和維護測試中具有很好的應用前景。
審核編輯:湯梓紅
-
集成電路
+關注
關注
5377文章
11314瀏覽量
360405 -
pcb
+關注
關注
4315文章
22941瀏覽量
395601 -
嵌入式
+關注
關注
5059文章
18974瀏覽量
302066 -
IC
+關注
關注
36文章
5881瀏覽量
175085 -
指令
+關注
關注
1文章
606瀏覽量
35617
原文標題:4-邊界掃描測試方式
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論