본문 바로가기

Job Notes/Embedded System & RTOS

JTAG의 소개 및 원리 2편

JTAG 소개 원리 2

등록: 2001-07-25 15:01:03

1 탄에서 소개한대로 JTAG 만들어 이유는 조금 아셨을 겁니다.

자자 이전 편에서 Boundary-Scan Cell 이라는 것이 생겼습니다. 하지만 이것은 아직 완전한 모습이 아니죠... 3탄에서 그린 그림에는 문제가 있습니다. 만약 LSI 단자가 10 짜리가 있는데 단자에 Boundary-Scan Cell 하나씩 단다면.. 새로 생긴 핀이 2개씩 생기죠... 그러면 30개의 측정 핀이 생깁니다. 이걸 이용해서 디버깅을 한다? 한번 최악의 그림을 볼까요?

....

아이구 도저히 그림을 그릴수 없네요.... 그정도로 귀찮아 진다는 이야기입니다. 그러면 180 핀이 달린 칩에 하나씩 붙이면? ... 상상하기 싫군요.... 이걸 해결하는 방법은? 디버깅용 핀은 최소한이 좋지 않겠습니까? 그래서 JTAG아저씨들은 기가 막힌 방법을 생각해 냅니다. 그것이 무엇이냐... Boundary-Scan Cell 시프트 레지스터 형식으로 만드는 겁니다. 혹시 시프트 레지스터가 뭐냐고 물으시는 분들은 잠깐 강좌를 읽는 것을 중지하시고... 하드웨어 로직에 관련된 개론책을 잠깐 읽고 오실래요... 정중한 부탁입니다.

Boundary-Scan 기본 아키텍처는 다음과 같습니다. 물론 이것은 원리적인 것입니다.

 
     *=====■==■==■==■==■==■======*
     !                     !
     ! +---□←□←□←□←□←□←--- ■ Test Data In     (TDI)
     ! |                   !
     ! |  +-----------------------+    !
     ! |  |                       |    ■ Test Clock       (TCK)
     ! |  | 특정 디지탈 코어 로직 |    !
     ! |  |                       |    ■ Test Mode Select (TMS)
     ! |  +-----------------------+    !
     ! |                   !
     ! +--→□→□→□→□→□→□---→■ Test Data Out    (TDO)
     !                     !
     *======■==■==■==■==■==■=====*

우후 정말 그리기 힘들다....

 
    
  →□→
    

그림상 이것이 바로 Boundary-Scan Cell 이라는 것을 알겠죠? 만약 그렇게 보이지 않는다면 텍스트 표현의 한계라고 밖에 이야기 할수 없군요.... ( ^^; )

이렇게 Cell들이 직렬로 연결되게 하면 테스트 핀들에 대한 문제가 해결되지요... 역시 양놈들 머리 좋습니다. 우리나라 개발자라면 금방 만들었겠지만요... 당연히 쉬프트 레지스터라면 쉬프트를 하기 위한 클락이 필요하지요..

자자.. 일단 오른쪽에 있는 놈들의 정체가 밝혀질려고 합니다. 이전에 Cell 모습을 좀더 확대하여 알아 봅시다. Cell 약간 확대 하면 이런 문구들을 볼수 있읍니다.

 
                  PI
                  
              +--------+
              |        |
         SI→ | 메모리 |→SO
              |        |
              +--------+      CELL의 기본 개념적인 구성
                  
                  PO

여기서,

  • PI 말은 Parallel Input 약자로 외부 신호 입력 또는 디지탈 로직에서 나오는 출력을 Cell입장에서는 입력으로 볼수 있는 겁니다.
  • PO 말은 Parallel Output 약자로 외부 신호 출력 또는 디지탈 로직에 인가되는 입력을 Cell입장에서는 출력으로 볼수 있는 겁니다.
  • SI 라는 것은 Scan Input으로 직렬 입력 단자입니다.
  • SO 라는 것은 Scan Output 직렬 출력 단자 입니다.

CELL 어떤 기능을 가지고 있을까요?

  • PI 신호를 캡쳐하는 기능이 있읍니다. PI 들어 오는 신호를 메모리에 기억시키는 기능이 있습니다.
  • 메모리에 있는 내용을 PO 인가하는 기능이 있습니다.
  • PI 신호를 PO 바로 넘기는 기능이 있읍니다. 이때는 PI 신호가 바로 PO 전달됩니다. 보통 디지탈 로직이 사용될때 이용되겠죠?
  • SI 입력을 메모리에 기억시키고 메모리의 내용을 SO 옮겨오는 기능이 있읍니다. 기능을 이용하여 CELL 내용을 외부에서 읽어 볼수 있고 특정 상태를 내부에 인가를 할수 있는 것입니다.

이런 기능은 CELL외부에 있는 레지스터에 의해 제어를 받게 되고 이것에 대해서는 이후에 설명할 것입니다. 내용이 난해하거든요... 개념은 쉬운데 말이죠...

그럼 CELL 좀더 확대하여 볼까요?

....... 엄두가 안나는 군요... 복잡한것을 어떻게 그리죠? 내참..... (고민고민)

 
                    ShiftDR           SO (Scan Out)    Mode
                     |                 ^                |
          ┏━━━━ |━━━━━━━━ |━━━━━━━━| ━━━┓
                   |                 |                |       
                   |                 |               +V+-+    
   PI--------→*-----|-----------------|-------------→| M |--------→PO
(Data In) ┃   |     |                 |               | U |        (Data Out)
             |     V  Sift Register  |            +→| X |    
             |   +-+-+     +------+  |  +------+  |  +---+    
             +-→| M |---→|1D  Q |--+→|1D  Q |--+           
                 | U |     |      |     |      |              
             +-→| X |  +→|>C1   |  +→|>C1   |              
             |   +---+  |  +------+  |  +------+              
             |          |            |    Sift Register       
             |          |            |                        
             |          |            |                        
             |          |            |                        
          ┗━ |━━━━━| ━━━━━ |━━━━━━━━━━━━┛
               |          |            |
          SI (Scan In) ClockDR       UpdateDR

그림 인간 승리죠?

확대해 보니, 원래 보던 단자보다 많이 생겼죠? 모두 무엇에 쓰는 것일까요? 우리모두 알아 맞춰 봅시다. 일단 PI PO SO SI 빼면, SiftDR, ClockDR, UpateDR, Mode 남죠? 일단 위의 회로를 보고 위에서 논의되었던 CELL 기능에 대하여 알아 봅시다.

문제와 답식으로 볼까요?

 
  문제 1) PI의 신호를 캡쳐하는 기능이 있읍니다. PI에 들어 오는 신호를 메모리에
          기억시키는 기능이 있읍니다.
 
     1) 이것은 ShiftDR을 0으로 하고
          ClockDR에 한 클럭을 주면 됩니다.
          물론 이 값은 SO에 인가된 상태가 되겠죠..
 
  문제 2) 메모리에 있는 내용을 PO에 인가하는 기능이 있읍니다.
     2) Mode 가 1이고
          UpdateDR에 한 클럭을 주면 됩니다.
 
  문제 3) PI의 신호를 PO에 바로 넘기는 기능이 있읍니다.
          이때는 PI의 신호가 바로 PO에 전달됩니다.
          보통 디지탈 로직이 사용될때 이용되겠죠?
 
     3) Mode가 0이면 됩니다.
          이것이 정상적인 동작입니다.
 
  문제 4) SI의 입력을 메모리에 기억시키고 메모리의 내용을 SO에 옮겨오는 기능이
          있읍니다.
          이 기능을 이용하여 각 CELL의 내용을 외부에서 읽어 볼수 있고
          특정 상태를 내부에 인가를 할수 있는 것입니다.
 
     4) 문제 1번 동작을 하고
          CELL의 갯수 만큼 ClockDR을 인가하고
          이때 원하는 입력 상태를 CELL 갯수만큼 ClockDR인가시에 공급하고
          문제 2번을 수행하면 되겠죠...

자자 .. 여기까지가 Boundary-Scan Cell 동작 방식입니다.

여기까지 이해하셨다면 한가지 의문이 생길겁니다. 그것이 무엇일까요? 외부 단자에는 SiftDR, ClockDR, UpateDR, Mode 없거든요? 이게 무척 궁금하실겁니다. 아님 할수 없고 ^^;

그림을 그리는데 내공을 너무 심하게 낭비해서 잠시 쉬어야 겠네요....

항상 이야기하는 데요. 글의 지적 소유권 관계는 GPL 따릅니다. 물론 상업적인 용도로는 사용할수 없죠.... 그럼..