이글은 장형기님께서 올리신 FALINUX 강좌의 글을 편집한 것입니다.

JTAG의 원리

JTAG란? Joint Test Access Group의 약자이며, 이것은 표준 1149.1-1990, IEEE Standard Test Access Port and Boundary-Scan Architecture( 표준 시험 엑세스 포트와 경계-검사 구조 )와 그의 보완판으로서 발표된 시험능력 표준을 개발한 IEEE 기술 분과위원회를 말합니다.


1. 칩 아키텍쳐



1) 아래의 5개의 전용 핀들을 총칭하여 TAP( Test Access Port)라 하며, 이들 핀 구성은 다음과 같습니다.

● 4개의 전용 TEST 핀


① Test Clock (TCK)
  시험 클럭 입력입니다.
② Test Data In (TDI)
  시험 데이터 입력으로 시험 명령과 데이터를 위한 직렬 입력이며,
  TCK의 상승 에지에서 샘플링됩니다.
③ Test Data Out (TDO)
  시험 데이터 출력으로 시험 명령과 데이터를 위한 직렬 출력이며,
  TCK의 하강 에지에서 명령 레지스터(IR)
  또는 데이터 레지스터(DR)의 내용을 이동시킨다.
④ Test Mode Select (TMS)
  시험 모드 선택 입력이며, TAP의 상태 시퀀스를 제어하며, TCK의 상승 에지에서 샘플링됩니다.



● 1개의 옵션 TEST 핀


① Test Reset (TRST)
  전원 인가시 TAP를 초기화한다.

2) 각각의 디바이스는 주요 입력과 주요 출력 핀마다 1개의 boundary-scan cell이 위치하며,
     직렬 boundary-sacn 레지스터 (Boundary Scan)가 내부적으로 연결되어있습니다.

3) 각각의 디바이스는 주요 입력과 주요 출력 핀마다 1개의 boundary-scan cell이 위치하며,
     직렬 boundary-sacn 레지스터 (Boundary Scan)가 내부적으로 연결되어있습니다.

4) TAP Controller(제어기)는 TCK, TMS 그리고 TRST*를 갖는 유한-상태 machine 입니다.

     현재 명령(instruction)을 저장하는 n 비트 (n >= 2) 명령 레지스터 (IR)

5) 1 비트 bypass 레지스터 (Bypass)

6) 영구적인 장치 식별 코드를 저장하는, 32 비트 Idenificatio 옵션 레지스터



언제라도 오직 한 개의 레지스터만이 TDI와 TDO사이에 연결될 수 있습니다 .

즉, 위의 그림에서 Instruction Register, Bypass, Boundary-Scan, Identification 또는 코어 내부의 적절한 레지스터( Internal Register)의 연결 상태를 보시면 알 수 있습니다.

선택된 데이터 레지스터(DR)는 명령 레지스터(IR)의 디코드된 병렬 출력 값에 의해 식별됩니다.

즉, 명령 레지스터(IR)의 값에 따라 데이터 레지스터(DR)의 출력 값이 선택되어집니다.

Boundary-Scan Register를 선택하는 EXTEST와 같은 어떤 명령은 필수적이지만, Identification Register 를 선택하는 IDCODE 명령과 같은 것들은 옵션입니다.

149.1-2001이후 표준의 최근 버전은 필수 명령이 4개입니다.


[ EXTEST, BYPASS, SAMPLE, PRELOAD ] ==> < 다음 강좌에서 할 내용입니다. >

비동기 리셋 신호, TRST는 옵션입니다. 사용할 경우, 신호는 active low, 사용하지 않을 경우,

항상 TAP Controller 내부에 사용할 수 있는 Snychronous Reset입니다.

즉, TMS가 1로 유지되는 동안, 연속적으로 최대 5번 TCK를 인가하면 TAP Controller는 항상 리셋 상태가 됩니다..

이것을 TMS = 1, 5 * TCK Snychronous Reset이라 합니다.




2. Boundary Scan의 원리

1)

각 Boundary-scan cell의 기능

PI에서 들어오는 신호(데이타)를 메모리에 기억하는 Capture 기능
메모리에 기억된 내용을 PO에 인가하는 Updata 기능
PI의 신호(데이타)를 PO에 바로 전달하는 기능
SI의 입력을 메모리에 기억시키고, 메모리의 내용을 SO에 옮겨오는 기능
이 기능을 이용하여 각 CELL의 내용을 외부에서 읽어 볼 수 있고,
특정 상태 를 내부에 인가를 할 수 있는 것입니다.
이런 기능들은 CELL외부에 있는 레지스터에 의해 제어를 받게 됩니다.

3.1. 하나의 Boundary-scan cell을 확대하여 보면 다음과 같습니다.



cell은 전단 및 후단 멀티플렉서를 갖는 두 개의 D-타입 플립-플롭으로 구성됩니다.



1) Normal Mode 일때, Data In(PI)는 Data Out(PO)로 바로 전달됩니다.
    즉, Mode가 0이면 PI신호가 PO에 바로 전달이 됩니다.

2) Update Mode 일때, Update Hold Cell의 내용이 Data Out( PO)로 전달됩니다.
    즉, Mode가 1이고, UpdateDR에 한 클럭을 주면, 메모리에 있는 내용을 PO에 인가합니다.

3) Capture Mode 일때, Data In 신호는 Capture Scan cell의 입력으로 전달되고,
    그 값은 다음 ClockDR에 의해 Capture 됩니다
    즉, Data In( PI)신호는 ShiftDR을 0으로 하고, ClockDR에 한 클럭을 주면
    Scan Out(SO)로 인가된 상태로 PI신호를 Capture 합니다.

4) Shift Mode 일때, 하나의 Capture Scan Cell의 Scan Out은 배선의 경로를 통하여
    다음 Capture Scan Cell의 Scan In으로 전달됩니다.


    즉, SI의 입력을 메모리에 기억시키고, 메모리의 내용을 SO에 옮겨놓는다.


capture와 shift 동작은 병렬 입력 단자에서 병렬 출력 단자로의 데이터 전달을 간섭하지 않는다는 점을 유의해야 합니다..

따라서, 동작 중인 값들을 capture하고, 검사의 목적으로 이러한 값들을 간섭 없이 shift 시킬 수 있습니다.


태그: *초보 *임베디드