圖一
圖1 中“TAP Controller”其實質上是一個狀態機,它根據不同的操作指令能產生16 個不同的狀態,具體狀態邏輯參考圖2。從一個狀態切換成另一個狀態總是發生在TCK 的上升沿,由TMS從兩個狀態選擇其中一個狀態。在測試向量寄存器中,既有指令寄存器(IR),又有數據寄存器(DR),爲了區分是指令還是數據,掃描鏈路中的狀態圖有兩個獨立的完全類似的結構(Scan DR / Scan IR)。
測試操作的最重要步驟是移入和同步移出測試數據(DR SHIFT),新的數據進入移位鏈,測試數據傳送到測試單元(DR-update)的輸出鎖存器中,對於指令寄存器(IR-shift,IR-capture,IR-update)同樣如此。除了邊界掃描寄存器(Boundary Scan Register),IEEE 1149.1標準還定義了在數據寄存器附近至少存在一個旁路寄存器,用來將TDI 到TDO 的可以直連接。數據寄存器根據指令寄存器的指令尋址,然後在TDI 和TDO 的引腳之間,各個數據寄存器結合成移位路徑。正如圖2 所示,從一個狀態轉換成另一個狀態由信號TMS 的邏輯電平決定。“TAP ”是一個時鐘系統,它的時鐘是由信號TCK 提供。信號TMS 和信號TCK共同作用,使得數據一位一位從TDI 移入,最後由TDO 移出。
各種邊界掃描單元是否有效取決於是否實行測試或者得到激勵。
圖3 就是一個最普通的邊界掃描單元的結構圖。第一個鎖存器鎖存數據由移位寄存器(SHIFT DR)決定從前一個掃描單元移出的數據(SCAN IN)或者是掃描輸入的數據(DATA IN),並且由CLOCK DR控制鎖存輸出。在第一個鎖存器移出數據穩定後,第二個鎖存器由UPDATE DR 控制鎖存輸出第一個鎖存器移出的數據。MODE 信號的電平決定是測試模式還是工作模式。邊界掃描單元既有輸入又有輸出。一般來說,在每一個物理引腳不論輸入還是輸出,都有一個獨立的邊界掃描單元,但區別是輸入在每一個物理引腳的後面,而對於所有的輸出是在每一個物理引腳的前面。
MODE, SHIFT DR, UPDATE DR 以及CLOCK DR 這些全局信號線與所有掃描單元都相連接,而且同一個時間狀態都一樣。這樣,TAP 狀態在CAPTURE DR 時,所有的掃描單元都能在CLOCK DR 的上升沿取樣輸入數據。測試數據的輸出也相類似,它是在TAP 狀態在UPDATE DR 的下降沿時將掃描輸入端鎖存並輸出。所有的掃描單元都能完成以上功能。所有的掃描單元運行在工作模式還是在測試模式,由MODE 信號控制選擇其一,同時運行在兩個模式是不可能的。而MODE 信號是由掃描指令控制的。
九大指令
指令(必須/可選) | 操作碼 | 模式 | 選擇數據寄存器 |
EXTEST | 0...0* | 測試 | Boundary |
SAMPLE/PRELOAD | 用戶定義 | 一般 | Boundary |
BYPASS | 1...1 | 一般 | Bypass |
INTEST | 用戶定義 | 測試 | Boundary |
RUNBIST | 用戶定義 | 測試 | 用戶定義 |
INCODE | 用戶定義 | 一般 | 器件ID |
USERCODE | 用戶定義 | 一般 | 器件ID |
CLAMP | 用戶定義 | 測試 | Bypass |
HIGHZ | 用戶定義 | 測試 | Bypss |
用戶定義 | 用戶定義 | 用戶定義 | 用戶定義 |
Extest指令--強制指令
原先EXTEST指令時強制爲全“0”的,在IEEE 1149.1--2001中,這條強制取消了。選擇EXTEST指令時,IC工作在邊界掃描外部測試模式(external boundary-test mode),也就是說對IC的操作影響芯片的正常工作。選擇邊界掃描寄存器連通TDI和TDO。在這種指令下,可以通過邊界掃描輸出單元來驅動測試信號至其他邊界掃描芯片,以及通過邊界掃描輸入單元來從其他邊界掃描芯片接收測試信號。EXTEST指令是IEEE 1149.1標準的核心所在,在邊界掃描測試中的互連測試(interconnect test)就是基於這個指令的。
Sample/Preload指令--強制指令
Bypass指令--強制指令
INTEST指令 ---可選指令
選擇INTEST指令時,IC工作在邊界掃描內部測試模式(internal boundary-test mode),選擇邊界掃描寄存器連通TDI和TDO。在這種指令下,可以通過邊界掃描輸出單元來驅動測試信號至其內部邏輯,以及通過邊界掃描輸入單元來從 其內部邏輯接受測試信號。
RUNBIST指令 ---可選指令
選擇RUNBIST指令時,IC工作在自測試模式(self-test mode),對IC的內部邏輯進行全面的自測試,通過選擇用戶自定義的數據寄存器連通TDI和TDO。在這種指令下,邊界掃描單元的輸出被內部邏輯控制了,所以外部信號不能干擾其相鄰IC。
IDCODE指令 ---可選指令
選擇IDCODE指令時,IC工作在正常工作模式,選擇數據識別寄存器(data identification register)連通TDI和TDO。數據識別寄存器是一個32位的寄存器,內容包括IC的生產廠商,芯片類型,版本等。訪問數據識別寄存器不會影響 IC的正常工作。由於IDCODE指令是可選的,不是每個芯片都有的,所以當對一個邊界掃描鏈(scan chain)執行IDCODE指令來輸出所有IDCODE時,有IDCODE指令的芯片就選擇IDCODE寄存器,輸出輸出IDCODE,沒有 IDCODE指令的芯片會自動選擇BYPASS寄存器,輸出一個“0”。 (讀取CPU ID號指令。在設計中存在device identification register時,TAP強制定義。該指令將處理器的ID號寄存器連接到TDI和TDO之間。)
USERCODE指令 ---可選指令
選擇USERCODE指令時,IC工作在正常工作模式,選擇用戶自定義數據寄存器(user defined test data register)連通TDI和TDO。USERCODE指令一般是在進行芯片內部測試時用的。
CLAMP指令 ---可選指令
CLAMP指令使IC的輸出置於由邊界掃描寄存器的當前內容決定的邏輯電平上,選擇BYPASS寄存器連通 TDI和TDO。在加載這個指令之前,邊界掃描寄存器的內容可以由SAMPLE/PRELOAD指令來預置。在CLAMP指令下,數據通過BYPASS寄 存器從TDI傳遞至TDO,不會影響此IC的輸出。
HIGHZ指令 ---可選指令
HIGHZ指令使IC的所有輸出置於高阻狀態,選擇BYPASS寄存器連通TDI和TDO。在HIGHZ指令下,數據通過BYPASS寄存器從TDI傳遞至TDO,不會影響此IC的輸出。