집적 회로의 진단 회로용 통신 인터페이스{COMMUNICATION INTERFACE FOR DIAGNOSTIC CIRCUITS OF AN INTEGRATED CIRCUIT}
본 발명은 집적 회로 분야에 관한 것이다. 보다 구체적으로, 본 발명은 진단 인터페이스를 매개로 통신하고자 하는 온보드 진단 회로(on-board diagnostic circuitry)를 갖는 집적 회로에 관한 것이다.
집적 회로에 온보드 진단 시스템을 제공하는 것이 공지되어 있다. 그러한 시스템의 예로서, 온칩 메모리(on-chip memories), 영역 스캔 셀 체인(boundary scan cell chains) 및 보다 범용의 스캔 셀 체인을 테스트하기 위한 BIST 제어기가 있다. 전용 진단 회로 인터페이스, 예컨대, IEEE 표준 1149에 따라 구축된 JTAG 진단 시스템의 TAP 제어기에 의해 활용되는 것과 같은 인터페이스를 집적 회로에 제공하는 것이 공지되어 있다. JTAG 인터페이스는 통상, 상기 집적 회로 패키지 상에 이러한 용도 전용의 4~6개의 외부 핀을 필요로 한다.
집적 회로의 복잡성, 크기 및 성능이 증가함에 따라, 그 기능적 동작(비-진단적 동작)을 지원하도록 집적 회로에 구비될 수 있는 외부 핀 접속의 수를 증가시킬 것이 전반적으로 요구된다. 집적 회로의 온보드 진단 시스템은 집적 회로의 기능적 거동 및 동작에 적은 영향을 미치는 것이 바람직하다.
본 발명의 일측면의 관점에서, 본 발명은 데이터 처리용 집적 회로를 제공하며, 이 집적 회로는:
데이터 처리 동작을 수행하도록 동작 가능한 기능 회로;
상기 기능 회로에 대해 진단 동작을 수행하도록 동작 가능한 진단 회로; 및
상기 진단 회로와 외부 진단 장치 간의 통신을 행하도록 동작 가능한 인터페이스 회로를 포함하며;
상기 인터페이스 회로는
(i) 상기 외부 진단 장치로부터 상기 진단 회로로 전송되어 상기 진단 회로의 상기 진단 동작을 제어하는 제어 신호; 및
(ii) 상기 외부 진단 장치와 상기 진단 회로 사이에서 전송되는 진단 데이터;
를 전송하기 위해 양방향 직렬 신호를 사용하는 것을 특징으로 한다.
본 발명은 온보드 진단 시스템에 전용인 다중 외부 핀이 상기와 같은 온보드 진단 시스템 설비에 불리한 오버헤드라는 점을 인지하고 있다. 본 발명의 기법은 온보드 진단 시스템과, 인터페이스 카드를 갖는 컴퓨터와 같은 외부 진단 장치 사이에 필요에 따라 제어 신호 및 진단 데이터 양자를 전송하기 위해 양방향 직렬 신호를 사용한다. 이는 진단 기능성을 지원하기 위해 필요한 핀의 수를 감소시키는 유리한 효과가 있고, 실시예에 따라서는 단일 외부 핀으로 감소될 수도 있다.
상기 진단 회로는 디버깅 동작 및 제조 테스트 동작과 같은 다양한 진단 역 할을 수행할 수 있다. 상기 진단 회로는 또한, 통상적으로는 진단 동작으로서 간주되지 않지만 진단 분야 이외에서 사용할 수 있도록 해주는 방식으로 진단 회로에 의해 지원될 수 있는 제조 프로그래밍 또는 제조 구성(manufacturing configuration)과 같은 기능성을 제공하도록 재사용될 수 있다.
양방향 직렬 신호가 통과하는 상기 제어 신호는 다양한 다른 형태를 취할 수 있다. 제어 신호의 바람직한 한 가지 형태는 진단 회로를 리셋시키도록 동작하는 리셋 신호이다. 유리하게도, 상기 리셋 신호는 양방향 직렬 신호를 소정의 리셋 기간 동안 소정의 리셋 레벨로 유지하는 형태로 제공될 수 있다.
제어 신호의 다른 매우 유익한 형태는 진단 회로로부터 외부 진단 장치로의 페이싱 신호(pacing signal)이다. 상기 진단 회로는 진단 회로가 보다 많은 데이터를 수용할 준비가 될 때와 장기간의 복합 동작과 같은 진단 동작을 완료했을 때 이를 외부 진단 장치에 나타낼 수 있다는 점에서 상기 방식으로 자기-조절(self-pacing)할 수 있다.
상기 페이싱 신호는 시간 슬롯을 페이싱 신호 전용인 직렬 신호 프로토콜 내에 전용케 함으로써 유리하게 제공될 수 있으며, 상기 시간 내에 진단 회로는 외부 진단 장치에 의해 감지되고 페이싱 정보를 통신하는 데 사용될 수 있는 방법으로, 양방향 직렬 신호에 신호 레벨을 부여할 수 있다.
또 다른 형태의 제어 신호는 외부 진단 장치에 의해 생성되는 시작 신호로서, 직렬 데이터의 프레임의 시작을 나타내는 데 사용될 수 있다.
직렬 신호의 프레임의 말단에 프레임 또는 동작의 중지를 시그널링하는 데 사용될 수 있는 중지 신호 역시 제공될 수 있다. 상기 중지 신호가 소정의 레벨로 유지된다면 이로써 아이들 상태(idle state)가 강제된다.
본 발명의 바람직한 실시예에서, 집적 회로에 의해 양방향 직렬 신호를 샘플링하는 데 사용되는 샘플링 포인트의 타이밍은, 외부 진단 장치로부터 트레이닝 신호(training signal)가 전송되고 집적 회로가 상기 수신 신호를 샘플링하는 트레이닝 모드(training mode)를 이용함으로써 양방향 직렬 신호 자체로부터 이끌어낼 수 있다. 상기 집적 회로는 클록비(clock ratio)(트레이닝 클록 펄스에 대한 집적 회로 클록수)를 찾아낼 수 있고 또는 외부 진단 회로는 올바른 트레이닝 신호가 안정적으로 수신될 때까지 타이밍을 다운 조절할 수 있다. 이러한 방식으로, 집적 회로는 외부 진단 장치와 "동기화"될 수 있고, 이 동기화는 동기화의 소실을 방지하도록 현재 진행중인 것을 기초로 직렬 데이터에서 신호 엣지(signal edge) 등을 검출하는 것에 의해 유지되어야 한다.
상기 집적 회로는 인터페이스 회로의 리셋에 후속하는 것과 같은 트레이닝 모드로 초기화되는 것이 유리하다. 상기 집적 회로가 트레이닝 신호를 성공적으로 수신하고 그 자체가 동기화된 것을 나타내는 데 상기 페이싱 신호가 이용될 수 있다.
인터페이스 회로와 양방향 직렬 신호를 매개로 통신이 행해지는 진단 회로는 매우 다양한 다른 형태를 취할 수 있다는 것을 인식할 수 있을 것이다. 바람직한 예로서, 기능 회로로부터 데이터를 수집하거나 기능 회로에 데이터를 적용하기 위한 하나 이상의 스캔 체인 및 기능 회로의 버스와의 통신을 제공하도록 작동 가능 한 하나 이상의 디버깅 버스 액세스 회로가 있다. 다른 형태의 진단 회로도 가능하다.
상기 인터페이스 회로는 전술한 비-클록식 모드(non-clocked mode)에서 동작하는 것은 물론, 집적 회로에 의해 역시 사용되는 별개의 클록 신호에 의해 통신이 클록되는 클록식 모드에서도 동작 가능한 것이 또한 유리하다. 집적 회로에 의해 발생되거나, 집적 회로에 적용되거나, 그렇지 않으면 이들 가능성 중 어떤 것으로부터 파생될 수 있는 별개 클록 신호를 이러한 방식으로 사용하는 것은 상기 동기화가 나중에 체킹되는 샘플링 포인트에 의존하는 것보다 더 확실하기 때문에 보다 고속의 데이터율을 얻을 수 있도록 해준다.
상기 집적 회로는 클록식 모드와 비-클록식 모드 사이에서 스위칭 가능한 것이 바람직하지만 비클록식 모드에서 초기화되는데, 이는 일반적으로, 지원되는 상기 모드들에 대한 보다 느린 최소의 요구이다.
본 발명의 다른 측면에서, 본 발명은 집적 회로에 대한 진단 동작을 수행하기 위한 진단 장치를 제공하며, 이 진단 장치는:
상기 집적 회로 내의 진단 회로와 진단 장치와의 사이에 통신을 제공하도록 동작 가능한 인터페이스 회로를 포함하고;
상기 인터페이스 회로는
(i) 상기 진단 장치로부터 상기 집적 회로로 전송되어 상기 집적 회로에 의해 수행된 진단 동작을 제어하는 제어 신호; 및
(ii) 상기 진단 장치와 상기 집적 회로 사이에서 전송되는 진단 데이터;
를 전송하기 위해 양방향 직렬 신호를 사용하는 것을 특징으로 한다.
본 발명의 또 다른 측면에서, 본 발명은 집적 회로 내의 기능 회로에 대한 진단 동작을 수행하도록 동작 가능한 진단 회로와의 통신 방법을 제공하며, 이 방법은:
(i) 외부 진단 장치로부터 상기 진단 회로로 전송되어 상기 진단 회로의 상기 진단 동작을 제어하는 제어 신호; 및
(ii) 상기 외부 진단 장치와 상기 진단 회로 사이에서 전송되는 진단 데이터;
를 전송하기 위해 양방향 직렬 신호를 사용하는 단계를 포함하는 것을 특징으로 한다.
이하에서는, 본 발명의 실시예들을 첨부 도면을 참조하여 예시의 목적만으로 설명한다.
도 1은 외부 진단 장치에 접속된 내장형 진단 시스템을 포함하는 집적 회로를 개략적으로 도시한 도면;
도 2는 외부 진단 장치와 집적 회로의 인터페이스 회로 사이의 통신에 사용되는 직렬 데이터 프레임을 도시한 도면;
도 3은 인터페이스 회로의 인터페이스 트레이닝 동작을 개략적으로 나타낸 흐름도;
도 4는 집적 회로의 데이터 수집 동작을 개략적으로 나타낸 흐름도;
도 5는 집적 회로에 대해 진단 동작을 실행하는 버스 트랜스액션을 부여하기 위해 비클록식 모드에 진단 버스-마스터 회로를 합체한 집적 회로를 개략적으로 도시한 도면;
도 6은 집적 회로에 대해 진단 동작을 실행하는 버스 트랜스액션을 부여하기 위해 클록식 모드에 진단 버스-마스터 회로를 합체한 집적 회로를 개략적으로 도시한 도면; 및
도 7 및 도 8은 외부 진단 장치와 집적 회로 사이에 사용하기 위한 통신 기법의 양태를 보여주는 도면이다.
도 1은 외부 진단 장치(4)에 연결된 집적 회로(2)를 보여주는 도면이다. 상기 외부 진단 장치(4)와 집적 회로(2) 사이의 연결은 SWJ와 같은 양방향 직렬 인터페이를 매개로 한다. 집적 회로(2) 내부에서, 인터페이스 회로(6)가 상기 양방향 신호를 수신한다. 상기 직렬 신호로부터 디코딩된 데이터 및 상기 직렬 신호로부터 디코딩된 제어 신호는 이들 제어 신호 및 데이터에 따라 집적 회로(2)의 다른 요소들에 대해 진단 동작을 수행하는 진단 회로(8)로 보내진다. 데이터 및 제어 신호는 또한 집적 회로(2)로부터 양방향 직렬 신호를 거쳐 외부 진단 장치(4)까지 다시 보내질 수도 있다. 집적 회로(2)는 통상적으로 시스템-온-칩(SoC) 집적 회로이다.
집적 회로(2) 내부의 기능 회로는 프로세서 코어(10), 코프로세서(12), 메모리(14) 및 직렬 UART 장치(16)를 포함한다. 이들 기능 회로는 기능 버스(18)(예컨대, AMBA 또는 기능 회로를 연결하기 위한 다른 버스)에 의해 연결된다. 진단 회 로(8)는 집적 회로(2) 내부에 블록의 형태로 개략적으로 도시되어 있다. 상기 진단 회로는 다양한 다른 형태를 취할 수 있고, 예컨대 필요에 따라 집적 회로(2)의 주변, 어떤 기능 요소의 둘레 또는 어떤 기능 요소 내부에서 연장되는 직렬 스캔 체인을 포함할 수 있다는 것을 이해할 것이다. 진단 회로(8)는 BIST 장치 등과 같은 다른 형태를 가질 수도 있다.
사용 시에, 상기 외부 진단 장치를 이용하는 엔지니어는 상기 양방향 직렬 인터페이스를 따라 그리고 인터페이스 회로(6)를 거쳐 집적 회로(2)로 보내진 제어 신호 및 데이터에 응답하여 집적 회로(2)에 대해 수행될 소정의 진단 동작을 명령한다. 결과 데이터는 다시 인터페이스 회로를 통해 상기 양방향 인터페이스를 따라 외부 진단 장치(4)로 보내진다.
도 2는 직렬 데이터의 프레임을 보여준다. 상기 프레임은 시작 비트와, 이에 후속하는 8개의 데이터 비트, 정지 비트 및 지속 비트(continue bit)를 포함한다. 상기 정지 비트와 지속 비트는 상기 직렬 프레임을 종료시키는 정지 신호의 일부로 고려될 수 있다. 순수 데이터 값 또는 소정의 내장된 제어 명령일 수 있는 8-비트 데이터 값을 상기 직렬 데이터 프레임 프로토콜을 사용하여 진단 회로(8)에 보내는 것, 상기 시작 비트, 정지 비트 및 지속 비트 자체에 의해 제공되는 제어 기능은 이하에서 설명한다. 여러 실시예들에 있어서, 데이터, 시작 및/또는 정지 비트의 수가 상이한 것을 비롯하여, 프레임 내의 비트 수가 상이할 수 있다는 것을 이해할 것이다.
도 3은 인터페이스 회로(6)의 트레이닝을 보여주는 흐름도이다. 인터페이스 회로(6)는 상기 직렬 데이터 신호 자체로부터, 사용될 샘플링 포인트로 타이밍 정보를 추출하는 비클록식 모드에서 동작 가능하다. 이는 인터페이스 회로(6)를 트레이닝 함으로써 이루어진다. 상기 트레이닝은 알려진 직렬 데이터 스트림(예컨대, 0 및 1의 교호값)을 전송하는 외부 진단 장치(4)의 형태를 취하는데, 상기 인터페이스 회로는 올바른 시퀀스가 적절히 수신되는 방식으로 상기 트레이닝 패턴을 샘플링하려고 한다. 인터페이스 회로(6)는 파워업(powerup) 시에 또는 상기 트레이닝 패턴을 찾는 트레이닝 모드로의 리셋에 이어 초기화된다. 상기 트레이닝 패턴을 수신하면, 상기 인터페이스 회로는 지속 신호를 발행하는데, 상기 외부 진단 회로는 상기 트레이닝 회로가 성공적으로 수신되었고 따라서 인터페이스 회로(6)가 이제 상기 직렬 데이터 프레임에 적당한 샘플링 포인트를 이용하고 있다는 것을 의미하는 것으로 상기 지속 신호를 해석할 수 있다. 상기 외부 진단 장치는 인터페이스 회로(6)가 상기 직렬 데이터를 올바르게 수신하여 그것이 트레이닝되었다는 것을 나타내는 적절한 표시를 발행할 때까지 상기 직렬 데이터의 데이터 속도를 변경할 수 있다(예컨대, 낮출 수 있다).
도 3은 단계(20)에서 리셋을 빠져나갈 때까지 대기하는 인터페이스 회로(6)를 보여준다. 단계(22)에서, 트레이닝 모드가 시작된다. 단계(24)에서, 인터페이스 회로(6)는 0 및 1의 교호값의 트레이닝 패턴을 식별하고자 하는 포인트 시퀀스에서 양방향 직렬 신호를 샘플링한다. 상기 샘플링 포인트들은 보통, 집적 회로(2) 내부에서 사용되는 클록 신호에 의해 규정되는데, 보통 상기 클록 주파수의 고정된 다중 또는 다른 유도체이다.
단계(26)에서, 인터페이스 회로(6)가 직렬 데이터의 전체 프레임이라고 믿는 것을 샘플링한 후에, 인터페이스 회로는 수신된 패턴이 상기 트레이닝 데이터 패턴과 일치되는 지를 알아보기 위하여 상기 수신된 패턴을 테스트한다. 일치가 발견되지 않으면, 처리 과정은 단계(24)로 돌아가고 샘플링이 계속된다. 이 실시예에서, 양방향 직렬 신호가 집적 회로(2)에 의해 적절히 수신될 수 있을 때까지 양방향 직렬 신호의 데이터 속도를 변화시키는 것이 외부 진단 장치(6)의 역할이라는 점을 이해할 것이다. 이는 일반적으로, 집적 회로(2) 내에 진단 작업의 복잡성을 제공하기 보다는 그 복잡성을 외부 장치(4)에 오프로드(offloading)하는 원리와 일치한다.
단계(26)에서 트레이닝 패턴이 성공적으로 수신되었다는 것이 확인되면, 단계(28)가 이어지는데, 상기 단계(28)는 상기 지속 비트 주기 동안 직렬 데이터 값을 제로 레벨로 풀다운(pull down)하는 역할을 한다. 상기 지속 비트는 보통, 집적 회로(2) 그 자체에 의해 능동적으로 풀다운되지 않는다면 1에 대응하는 레벨에서 부유(float)한다. 트레이닝 모드 중에, 즉 초기화 후 상기 지속 비트의 풀다운은 집적 회로(2)가 외부 장치(4)의 양방향 직렬 신호 데이터 속도에 성공적으로 트레이닝 되었고 이제 인터페이스 회로(6)를 매개로 통신 가능하다는 것을 외부 진단 장치(4)에 시그널링한다. 단계(30)에서, 상기 트레이닝 모드를 빠져나가고, 단계(32)에서 데이터 모드로 들어간다.
도 4는 정상의 데이터 수집 모드 중에 인터페이스 회로(6)의 동작을 개략적으로 보여주는 흐름도이다. 단계(34)에서, 인터페이스 회로(6)는 직렬 데이터 프 레임의 처음에 시작 비트의 수신을 위해 인터페이스-대기한다. 본 실시예에서, 시작 비트는 항상 제로의 값이다. 따라서, 외부 진단 장치(4)가 1에서 양방향 직렬 신호 레벨을 유지한다면, 인터페이스 회로(6)는 시작 비트를 계속 대기하고 아이들 상태로 효과적으로 유지된다.
상기 시작 비트가 일단 검출되면, 과정은 단계(36)로 진행되는데, 상기 단계에서는, 도 3과 관련하여 설명한 트레이닝 모드에서 설정된 샘플 타이밍을 이용하여 8개의 데이터 비트가 샘플링된다. 상기 단계에 후속하여, 단계(38)가 이어지는데, 상기 단계(38)는 본 실시예에서 항상 1의 값인 정지 비트가 존재하는 지를 검출한다. 정지 비트의 존재는 적절히 수신되는 프레임에 대한 체크 값으로서 이용될 수 있고, 또한 정지 비트에 선행하는 직렬 데이터를 효과적으로 취소하기 위하여 상기 외부 진단 장치에 의해 이용될 수 있다.
상기 정지 비트가 성공적으로 검출되면, 단계(40)는 상기 8개의 데이터 비트를 진단 회로(8)로 보내는 역할을 한다. 이들 8개의 데이터 비트는 자극으로서, 또는 진단 회로(8)가 그 작용을 구성하도록 하는 제어 명령으로서 집적 회로(2)에 공급되는 데이터 값일 수 있고, 또는 다른 용도를 갖고 있을 수 있다. 진단 회로(8)의 상태가, 필요한 진단 동작이 집적 회로(2)로부터 외부 진단 장치(4)로 데이터를 보내는 그러한 상태라면, 단계(36)에서 8개의 데이터 비트 값을 샘플링하는 대신에, 상기 인터페이스 회로는, 외부 진단 장치(4) 쪽으로 보내고자 하고 또 그 외부 진단 장치(4)에 의해 검출 및 기록될 적절한 데이터 비트 값을 단정할 수 있다.
단계(40)에 이어지는 단계(42)는 상기 인터페이스 회로가 계속될 준비가 되어 있는지 여부를 결정한다. 상기 진단 회로는, 복잡한 동작일 수 있고 완결되는 데에 비교적 긴 시간을 필요로 하는 진단 동작을 수행하는 데에 바쁠 수가 있고, 그 동작이 완료될 때까지 추가의 데이터가 상기 외부 진단 장치로부터 전송되는 것은 부적절할 수 있다. 상기 외부 진단 장치(4)로부터의 추가의 데이터는 후속하는 진단 동작을 위한 명령일 수 있고, 상기 선행 동작이 정지할 때까지 이것을 시작하는 것은 가능하지 않다. 인터페이스 회로(6)가 계속 준비 상태에 있지 않다면, 처리 과정은 단계(44)로 이어지는데, 상기 단계(44)에서 인터페이스 회로(6)는 상기 직렬 신호 레벨을 상기 지속 비트 기간 동안 제로의 값으로 강제한다. 이는 상기 직렬 통신이 계속되어서는 안된다는 것을 외부 진단 장치(4)에 알려준다. 다음에, 과정은 인터페이스 회로(6)가 계속될 준비가 될 때까지 단계(42)로 복귀한다.
단계(38)에서 상기 정지 비트가 적절히 검출되지 않았다고 결정되었다면, 과정은 단계(46)로 진행한다. 단계(46)는 즉각적으로 선행하는 7개의 연속한 중지(정지 비트에 대한 단정이 없다)가 발생하였는지 여부를 결정하는데, 이 경우 이는 8번째가 되고, 리셋은 단계(50)에서 시작된다. 단계(46)에서의 테스트가 충족되지 않으면, 단계(48)는 어보트(abort)를 외부 진단 장치로 보낸다.
상기 직렬 데이터 프로토콜의 특별한 의미 및 다른 특징을 갖고 있는 상기 트레이닝 패턴 신호 레벨은 모두 본 기법을 구현하면서 변화될 수 있다는 것을 이해할 것이다.
이하에서는, 상기한 양방향 직렬 통신에 대하여 추가적으로 설명한다.
용어 및 약자
이하의 설명에서 다음과 같은 용어 및 약자를 사용한다.
SWO: Single Wire Output. 애플리케이션 특정 추적(trace) 성분(프로세서에 특징적인 일반적인 추적과 혼동하여서는 안된다).
DBT: 이는 시스템 버스에 액세스하기 위한 AMBA(AHB 또는 AHB-Lite)로서 작용하는 TAP 블록이다.
AMBA: 칩 내부의 ARM 버스 표준.
JTAG: 직렬 인터페이스를 스캔 체인에 제어하는 4-6-와이어 인터페이스에 대한 IEEE Joint Test Access Group 사양. JTAG는 테스트뿐만 아니라 디버그를 위해 사용된다. SWJ는 하부의 디버그 JTAG 모델에 기초한다. 스캔 TAP는 JTAG의 테스트 부분에 기초한다.
Emulator: 디버그를 위해 칩에 부착된 런 제어 박스(HW의 일부)를 지칭하는 데 사용되는 틀린 명칭. 보통의 에뮬레이터는 JTAG를 기반으로 한다. SWJ 인터페이스에 연결된 박스 역시 역사적인 이유 때문에 에뮬레이터라 지칭된다.
OCRC: SWK의 On-Chip Run-Control 성분. 이는 DBT 및 스캔 체인에 실제 프로토콜 핸들링 및 인터페이스를 제공한다.
서언
이는 소형의 단일 와이어 JTAG 성분을 위한 제안이다. SWJ 성분은 전형적인 4-6 와이어 JTAG 인터페이스 대신에 단일 와이어 인터페이스를 이용하여 (멀티 코어를 포함하는) ARM 기반 프로세서를 디버그 및 테스트하는 데 사용된다. 상기 단일 와이어 인터페이스는 문자 그대로 양방향의 통신을 위해 하나의 와이어를 이용한다. 고속 SWJ 지원은 클록(그러나, SWJ에 전용인 클록일 필요는 없다)을 담고 있는 추가의 신호/핀에 대해 가시도(visibility)를 요구한다. (분할될 수 있는) 상기 클록은 샘플링을 위해 선명한 엣지를 제공함으로써 고속을 가능하게 한다.
상기 비클록식 모드는 최대 약 3 MHz의 속도(데이터 속도는 그 속도의 8/11th이다)를 허용한다. 클록식 모드는 최대 약 40 MHz의 속도(데이터 속도는 그 속도의 8/11th이다)를 허용한다. 일반적인 와이어 프로토콜은 각각의 8개의 데이터 비트 각각에 대하여 하나의 시작 비트, 하나의 정지 비트, 하나의 지속 비트가 연속하도록 프레임화된다. 유지된 정지 비트는 제한 없는 아이들 시간을 허용한다. 유지된 0은 버스 리셋이다. 에뮬레이터는 상기 인터페이스를 구동하는데, 상기 지속 비트는 리턴 데이터가 타겟에 의해 제공되는 때를 나타낸다. 이는 타겟이 동작의 완료를 나타낼 때까지 에뮬레이터가 펜딩(pend)될 수 있도록 해준다. 따라서, JTAG와 달리, 에뮬레이터는 적절히 페이싱될 수 있다..
SWJ의 다른 부분은 OCRC(On-Chip Run-Control)이다. OCRC는 DBT 액세스, JTAG 액세스, 선택적으로 (DBT를 매개로 하는) 직접 스캔 체인 액세스에 사용되는 프로토콜을 지원한다. OCRC는 특정 ROM 상수 스트링이 시스템(코어, 장치 등) 내의 임의의 TAP의 성능을 향상시킬 수 있도록 한다. 일반적으로, OCRC의 프로토콜 은 SWJ에 대하여 상당히 최적화되어 있어 가능한 최고의 속도를 보장한다. 일반적으로, 이는 보통, SWJ가 동일한 속도급에서 직선 JTAG보다 훨씬 더 빠르다는 것을 의미한다.
SWJ 전기 인터페이스를 고려할 때, 타겟에 대한 비용을 최소화하고 매우 저렴한 에뮬레이터가 가능하게 주의 깊게 설계를 선택해야 한다는 것은 중요하다. 일반적으로, SWJ는 에뮬레이터 부류의 선택을 통해 속도에 대한 비용을 균형 맞출 수 있도록 해준다. 따라서, 로우-엔드 핀감소(low-end pin-starved) MCU는 매우 저렴한 에뮬레이터를 이용할 수 있고, 하이-엔드 고속부(high-end fast part)는 훨씬 더 강력한 에뮬레이터를 이용할 수 있다. 그러나, 상기 인터페이스는 저속 및 고속 형태(비클록식 및 클록식 모드)를 지원하도록 설계되어 있어, 두 부분에 대해 어느 에뮬레이터든 사용할 수 있다.
SWJ
전기 설계(
electrical
design
)
도 5는 비클록식 연결의 블록도이다. 도 6은 클록식 연결의 블록도이다. 모든 에뮬레이터는 비클록식 모드를 지원해야 하지만, 클록식 모드는 선택이다. 이는, SWJ가 (리셋으로부터) 비클록식 모드에서 항상 나타나기 때문이다. 회로들은 에뮬레이터 및 타겟 양자에 대해 상기 2개의 작은 모드 사이에서 스위칭되도록 설계된다.
타겟측의 200K 풀다운 레지스터는 칩 내부에 또는 보드 상에 있을 수 있다는 것에 유의하여야 한다.
비클록
모드의
전기적 세부 사항
에뮬레이터 내부의 비클록식 모드 신호 컨디셔너는 LOW부터 HIGH까지 신호를 재빨리 스내핑(snap)하는 데 사용된다. 10K 레지스터는 단지 신호를 HIGH로 부유시키지만, 상기 신호 컨디셔너(버스 홀드 스타일 피드백 회로)는 전류 변화를 검출하고, RMS를 통과할 때까지 신호를 HIGH로 구동시킨다. 이 시점에서, 컨디셔너는 탈퇴되고 10K 레지스터가 상기 신호를 HIGH 상태로 유지할 수 있도록 해준다. 엣지의 형태는 비클록식 모드의 저속(3MHz 이하)에 대해 충분히 선명하다.
매우 낮은 로우-엔드 부분에 대하여, 그 부분의 SWJ 디버그 단부에 전원을 공급하기 위해 비클록식 풀업 모델을 이용할 수 있다. 이는 보통의 모델이 아니고 커패시턴스 드레인을 이용하여 실현 가능하다.
클록
모드의
전기적 세부 사항
타겟은 보통 클록식 모드에 클록을 공급한다. 상기 클록은 칩으로부터의 클록일 수 있고(출력) 또는 타겟 보드로부터 칩 내부로의 클록일 수 있다(입력). 또한, 크리스털 또는 PLL을 매개로 클록을 생성하는 포드(에뮬레이터 접속)를 구성할 수 있지만, 에뮬레이터는 클록을 직접 생성하지 않는다. 어느 경우이든지, 클록은 SWJ에 대해 전용 클록일 필요는 없고(다른 용도를 위해 공유될 수 있다) 선명하기만 하면 된다.
상기 클록은 대부분의 경우에 분할될 것이라고 가정한다. 즉, 클록을 10MHz 내지 100MHz 범위에 유지할 것이 제안된다. 어떤 분할이든지, 명령 프로토콜을 이용하여 여전히 비클록식 모드에 있는 동안에 동의되고 결정된다. 분할기를 이용하는 이유는 보다 빠른 클록 소스를 원하는 고속 SWO(또는 다른 목적)에 대해 동일한 클록이 사용될 수 있기 때문이다. SWJ의 프로토콜은 분할된 클록을 사용하는 방법을 명확하게 규정한다. SWJ는 상기 클록을 그 클록 소스로서 사용하여야 한다는 것에 유의하여야 한다(그러나, 이는 클록식 모드와 비클록식 모드 사이에서 진행할 때 스위칭될 수 있다). 이와 같은 모델(대 샘플링)의 이유는 상기 클록 엣지가 단일 핀 상에서 양방향 인터페이스를 지원하는 데 사용되기 때문이다.
SWJ
에 대한
와이어
프로토콜
SWJ 와이어 인터페이스는 느슨하게, RS-232 모델(클록식인지 아닌지)에 기초하고 있다. 각각의 8비트 데이터 패킷은 하나의 시작 비트와 2개의 정지 비트를 갖도록 프레임화되어 있다. 그러나, 두 번째 정지 비트는 실제 이하에서 설명하는 바와 같이 특정의 응답 마커(special reply marker)이다. 상기 포맷은 다음과 같다.
0 = 시작 |
(어느 방향으로) 8비트 데이터 |
1 = 정지 |
1 = 지속, 0 = 비(非)지속 |
중요한 차이는 두 번째 정지 비트이다. 이 두 번째 비트는 상기 패킷이 받아들여지고 에뮬레이터가 지속되어야 하는 경우 좌측의 하이이다. 상기 패킷이 재전송되어야 하는 경우 그 비트는 로우로 된다. 이러한 메커니즘에 의해 상기 타겟은 핸들링할 수 있는 속도로 상기 에뮬레이터와 보조를 맞출 수 있게 된다. 이러 한 페이싱은 (SWJ 클록 속도가 (32 KHz에서) 코어보다 더 빠른 경우와 같이) 바이트-바이-바이트 관리, (DBT 메모리 트랜스액션과 같은) 동작 완료에 대해 이용될 수 있다.
비클록식 모드에 대하여, 상기 타겟은 CONTINUE라면 단지 상기 라인을 하이(액티브 풀업) 상태로 남겨 두고, 그렇지 않으면 로우 상태로 한다는 것에 유의하여야 한다. 클록식 모드에 대하여, 상기 타겟은 CONTINUE에 대하여 하이 상태를 유지하여야 하고, 그렇지 않으면 로우 상태로 하여야 한다.
와이어
프로토콜
모드
및 상태
일반적으로, 4개의 와이어 프로토콜 모드 또는 상태가 있다.
1. 리셋. 이는 와이어가 8개 이상의 패킷에 대하여 로우로 유지되는 경우에 발생한다. 타겟은 상기 정지 비트가 없기 때문에 이를 검출한다. 이는 경보(alert)라고 부른다. 9개 이상의 경보가 검출되면, 타겟은 상기 인터페이스의 리셋이 단정되었음을 가정할 수 있다(이는 SWJ 외에는 아무 것에도 영향을 미치지 않는다). SWJ 인터페이스는 비클록식 모드로 복귀한다. 에뮬레이터에 연결되지 않으면 풀다운 레지스터로 인해 리셋이 야기된다는 것에 유의하여야 한다.
2. 트레이닝-비클록식 모드에서만. 리셋 후에, 에뮬레이터는 0×55(0b01010101)를 갖고 있는 데이터 패킷을 전송한다. 타겟은 이를 비클록식 시퀀스 상의 오토-보드(auto-baud)에 이용하거나 클록식 시스템 상의 분할기를 확인하는 데 이용한다. 트레이닝 패킷은 두 번째 정지 비트가 CONTINUE(1)으로 설정되어 있는 경우 계속 전송된다. 두 번째 정지 비트가 NOT CONTINUE(0)으로 설정되는 경우 트레이닝 모드를 빠져나가게 된다. 9개 이상의 CONTINUE 비트가 에뮬레이터에 의해 검출되면, 리셋을 다시 시도하고 이어서 트레이닝 모드에 대하여 더 느린 속도를 구동하는 것을 선택할 수 있다. 이는 (3 MHz 비클록식 모드에서 충분히 오버 샘플링할 수 없는) 매우 느린 칩의 경우를 수용할 수 있다.
3. 데이터. 데이터 모드는 보통의 패킷 모드이다. 이 모드는 트레이닝 모드를 떠난 후에 들어가게 되는 모드이다. (1 클록보다 길게 정지가 지속된다면) 데이터 패킷 사이에 아이들 상태가 있을 수 있다. 따라서, 정지 비트의 도입을 통해 보통의 데이터 모드 및 데이터 상태로 항상 복귀하게 된다.
4. 아이들. 아이들 상태는 라인이 정지 상태(어떠한 시작 비트도 전송되지 않음)로 유지되는 것이다. 이러한 아이들 상태는 요구되는 한 유지될 수 있다. 정지 비트의 도입을 통해 상기 아이들 상태를 빠져나가게 된다. 비클록식 모드에서, 상기 시작 비트는 다음의 자연 내부 클록 포인트에서 (에뮬레이터에) 나타난다. 클록식 모드에서, 상기 시작 비트는 클록 엣지 상에 나타난다.
리셋
모드
리셋 모드는 단정되지 않은(deasserted) 정지 비트(정지는 1 대신에 0이다)를 갖고 있는 8개 이상의 패킷이다. 즉, 8개 패킷 가치의 어보트는 리셋을 일으킨다.
리셋 시에 어떤 동작을 취해야 할지에 대한 규정은 SWJ 및 OCRC 블록에 고유 하다. 주된 의향은 라인만을 클리어하는 것이고, 따라서 SWJ의 임의의 내부 상태를 클리어하는 것 뿐만 아니라 임의의 펜딩 중인 OCRC 모드/명령을 취소하는 것이 주 목적이다.
트레이닝
모드
트레이닝 모드는 단지 리셋 후에 들어가게 되는 모드이다. 트레이닝 명령은 데이터로서 0×55이다. 타겟이 두 번째 정지 비트를 로우로 되게 한 후에 트레이닝 모드를 빠져나간다. 이는 타겟이 데이터 상에 트레인될 수 있도록 해줄 뿐만 아니라, 타겟 시간이 보드율(비클록식 모드에서의 데이터 클록 속도)을 자동 검출할 수 있도록 해준다. 데이터 클록이 너무 빠르면, 두 번째 정지 비트는 부유의 하이 상태에서 남겨지며, 이는 타겟이 트레인될 수 없다(따라서 더 낮은 속도를 시도할 수 있다)는 것을 에뮬레이터가 검출할 수 있도록 해준다.
시작=0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
정지 |
CONTINUE(1/ |
데이터
모드
데이터 모드는 NOT CONTINUE 비트(0)을 매개로 트레이닝 모드를 빠져나간 후 바로 이어진다. 데이터 모드는 클록식인지 또는 비클록식인지 SWJ에 대한 정상 작동 모드이다. 데이터 모드는 SWJ 와이어 프로토콜 상위의 레벨에서 명령 발행을 가능하게 한다. 데이터 모드 명령은 SWJ 인터페이스를 겨냥한 명령, OCRC 블록의 부분들로 라우팅되는 명령을 포함한다. 주요 SWJ 데이터 모드 명령은 다음과 같 다.
■ Get ID - SWJ 모듈의 ID를 읽어낸다. 이는 OCRC 명령으로 바뀔 수도 있다. 이 명령은 또한 클록 모드가 가능한지를 나타내기도 한다.
■ Set clock mode divide counter - 이 명령은 카운터를 셋팅할 수 있도록 해준 다음에, 스위치를 클록 모드하에 놓게 한다. 클록 모드로의 스위치에 이어서, 8개 패킷 가치의 아이들 상태(후술) 및 클록식 모드의 GetID 명령이 후속한다. GetID 명령이 실패하면, 에뮬레이터는 비클록식 모드로의 복귀를 위해 리셋을 이용할 수 있다.
■ Abort OCRC current action. 데이터 명령 상의 SWJ 인터페이스로부터 연속한 NOT CONTINUIE 응답이 있는 경우에, 에뮬레이터는 OCRC가 현재의 작용을 취소하고(가능하다면) 알려진 상태로 돌아가도록 요청하기 위해 Abort 명령을 사용할 수 있다. Abort는 SWJ에서와 같이 모든 서브시스템에서 동일한 명령이다.
주요 OCRC 명령은 다음과 같다.
■ Get ID - SWJ 및 OCRC ID 정보를 읽어낸다. 이 정보는 시스템 설계 파라미터에 대한 정보뿐만 아니라(클록식 모드가 지원되는 지, DBT 스캔 TAP가 지원되는지, JTAG 액세스가 지원되는지, DBT MemTAP가 지원되는지를 포함), 블록의 버전도 포함한다.
■ Select DBT MemTAP. 이는 명령 공급을 위해 MemTAP를 선택한다. (MemTAP 퇴거 요청 또는 Abort를 매개로) 빠져나갈 때까지, 후속하는 명령들은 MemTAP 요소에 공급된다. Abort는 SWJ에서와 같이 모든 서브시스템에서 동일한 명 령이다. 그 후, 34 비트 데이터 및 최적화 명령(예컨대, 동일한 2 비트 익스텐션, 리피트 등을 갖고 있는 멀티플 32 비트 데이터)을 공급한다.
■ Select DBT ScanTAP. 이는 명령 공급을 위해 ScanTAP를 선택한다. 이는 MemTAP 명령 공급에서와 동일한 방식으로 동작한다.
■ Select JTAG command. 이는 OCRC 내부의 JTAG 래퍼(wrapper)를 선택한다. 이는 사용시 JTAG 체인이 있는 시스템에 대하여 JTAG 동작의 공급을 가능하게 한다. 이 유닛으로 전송되는 명령은 (시스템 설계자에 의해 제어되는 것과 같이) 시스템 내의 TAP에 적용 가능한 공통의 동작을 위한 ROM-상수 공급, 최적화된 Shifts, 드라이빙 TCK 시퀀스를 비롯하여, JTAG 트래픽을 최적화하도록 설계되어 있다.
■ Select Other command. 이는 다른 OCRC 명령 피드-거꾸로 한 것을 선택한다.
데이터 모드 명령의 한 가지 예는 다음과 같다.
시작=0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
정지=1 |
CONTINUE(1/0) |
상기의 것은 0×23의 값을 갖고 있다. CONTINUE 비트는, 상기 바이트가 받아들여지고, 반복되는 것이 필요할 경우 로우로 된다면 1에 남아 있을 것이다. 즉, NOT CONTINUE 비트 상태는 상기 바이트(0×23)가 타겟에 의해 받아들여지지 않고 다시 전송되어야 한다(그리고, 여전히 받아들여지지 않는다면 다시 전송된다)는 것을 나타낸다. 이는 상기 페이싱 메커니즘을 형성한다.
CONTINUE 또는 NOT CONTINUE 인디케이터는 다음의 세 가지 이유 중 임의의 이유로 인해 발생할 수 있다는 것에 유의하여야 한다.
■ OCRC 클록 속도는 일반적으로 뒤따르는 바이트를 받아들이기에는 너무 느리다(OCRC의 클록 속도는 시스템과 동일하고, 반면에 SWJ의 클록 속도는 상이할 수있다).
■ OCRC 또는 서브-시스템은 이전의 바이트를 (TCK, 버스 동작 또는 스캔을 구동시키는 것과 같이) 여전히 처리하고 있다.
■ OCRC는 (스캔 체인을 판독하고 예상값에 대하여 비교하는 것과 같이) 반복된 테스트를 하고 있다.
이들 세 가지 이유는 원데이터 속도(에뮬레이터가 일반적으로 얼마나 빨리 바이트를 공급할 수 있는가), 명령 완료 속도(서브-시스템이 얼마나 빨라 명령 자체를 실행할 수 있는가), 복합 동작 속도의 페이싱을 가능하게 한다. 상기 페이싱은 동작 형태의 변화(예컨대, 몇몇 메모리 형태는 다른 것보다 더 느릴 수 있다)뿐만 아니라, 내부 클록 속도의 변화에 기초하여 급격하게 변화될 수 있다. 이는 SWJ 전략의 강력한 부분을 형성하고, SWJ가 많은 경우(폴링 및 페이싱 이슈가 많은 문제를 만들어내는 경우)에 있어서 직선 JTAG보다 훨씬 더 빠르도록 해주는 것을 도와준다.
아이들 상태
아이들 상태는 데이터 모드 내부의 상태이다. 아이들 상태는 데이터 패킷 사이에 갭 또는 필러를 형성한다. 에뮬레이터는 단지, (로우 상태의 시작 비트가 나타내는 바와 같이) 뒤따르는 패킷을 도입하기 전에 요구되는 한 정지 상태(하이)를 유지한다.
... |
정지=1 |
1 |
1 |
1 |
1 |
... |
1 |
1 |
1 |
시작=0 |
Command.... |
시스템 내에
SWJ
및
OCRC
설치
도 7 및 도 8은 SWJ 및 OCRC가 시스템 내에 어떻게 설치되는 지를 보여준다. 도 7은 (ARM EICE를 비롯하여) JTAG TAP이 구비된 시스템에 대한 표준 SWJ 모델을 보여준다. 도 8은 신규의 하이브리드형 SWJ 모델을 보여주는데, 이 모델은 기존의 JTAG 시스템이 동일한 칩과 함께 동작할 수 있도록 해준다. SWJ 에뮬레이터는 고정 시퀀스를 이용하여 타겟을 JTAG로부터 SWJ로 스위칭할 수 있다.
도 7의 구조는 DBT(MemTAP 및 가능하게는 ScanTAP) 및 (다른 장치뿐만 아니라 ARM EICE 블록용과 같은) JTAG 스캔 체인을 액세스하는 데 SWJ를 사용한다.
도 8의 구조는 레거시 JTAG 지원을 갖추고 있어야 하는 벤더에 대한 하이브리드 접근법을 이용한다. 제3자 벤더는 평상시처럼, JTAG 에뮬레이터를 계속 플러그인하고 TAP을 지원할 수 있다. 신세대 에뮬레이터는 특별한 JTAG 시퀀스(하나의 TAP에 미사용 IR)를 전송하여 SWJ로 스위칭한다. 이는 (문제를 방지하는) 미사용 TCK 및 (혹시 연결되어 있다면) 미사용 nTRST가 구비된 동일한 핀(핀 중 세 개)을 재사용한다. 이를 위한 모델은 TMS가 SWJ 데이터 신호이고, TDO는 사용된다면 SWO 신호이며, TDI는 클록식 모드가 지원된다면 클록 소스인 모델이다. SWJ 에뮬레이터는 TCK를 로우 상태로 유지하고 리셋을 통해 TMS를 구동하여 JTAG 또는 SWJ 모드 에 있는지를 검출하고 이어서 트레이닝 모드에 있는지를 검출할 수 있다. 두 번째 정지 비트가 8개의 패킷 후에 로우 상태로 되지 않으면, 에뮬레이터는 어떻게든 JTAG 모드에 있다고 가정할 수 있다(왜냐하면, TCK는 로우 상태로 유지되고, JTAG는 사용자가 TMS를 변경하였는지에 대해 상관하지 않기 때문이다). 에뮬레이터가 JTAG 모드에 있는 경우에, 에뮬레이터는 1-기반 패턴을 구동하여 IR 길이를 검출한 다음에, 미사용 ARM EICE IR 시퀀스가 구비된 스캔 체인 내의 첫 번째 TAP에 고정 패턴을 전송한다. 이것은 다음에 타겟을 SWK 모드로 스위칭한다. 비클록식 SWJ에 있은 후에, 에뮬레이터는 지원된다면 클록식 SWK 모드로 스위칭될 수 있다. 에뮬레이터는 또한 TDO 상의 SWO 출력을 지원할 수 있다. 에뮬레이터는 이 최소한의 동작 셋트를 수행하기 위해 완전한 JTAG 에뮬레이터일 필요는 없다는 것에 유의하여야 한다.