KR100337413B1 - 내부 집적 회로 버스를 포함하는 글로벌 직렬 버스에 제작시험 인터페이스를 연결하는 방법 및 장치 - Google Patents
내부 집적 회로 버스를 포함하는 글로벌 직렬 버스에 제작시험 인터페이스를 연결하는 방법 및 장치 Download PDFInfo
- Publication number
- KR100337413B1 KR100337413B1 KR1020000006160A KR20000006160A KR100337413B1 KR 100337413 B1 KR100337413 B1 KR 100337413B1 KR 1020000006160 A KR1020000006160 A KR 1020000006160A KR 20000006160 A KR20000006160 A KR 20000006160A KR 100337413 B1 KR100337413 B1 KR 100337413B1
- Authority
- KR
- South Korea
- Prior art keywords
- logic
- slave
- interface
- byte
- data
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4291—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0016—Inter-integrated circuit (I2C)
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Tests Of Electronic Circuits (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
내부 집적 회로 (I2C) 버스와 같은 글로벌 직렬 버스에 제작 시험 인터페이스를 연결하는 방법 및 장치가 제공된다. 입력/출력 버퍼 로직은 글로벌 직렬 버스로부터 그리고 글로벌 직렬 버스로 전송되는 데이터를 버퍼링한다. 입력/출력 버퍼 로직에 연결된 슬레이브 인터페이스 로직은 데이터를 수신하여 입력/출력 버퍼 로직에 전송한다. 입력/출력 버퍼 로직 및 슬레이브 인터페이스 로직에 연결된 슬레이브 제어기는 입력/출력 버퍼 로직에 대한 데이터 교환을 페이싱한다. 에러 검출 로직은 입력/출력 버퍼 및 글로벌 직렬 버스간에 연결되어 에러 상태를 검출한다.
Description
본 발명은 일반적으로 데이터 처리 분야에 관한 것으로서, 보다 상세하게는 내부 집적 회로 (I2C) 버스와 같은 글로벌 직렬 버스에 제작 시험 인터페이스를 연결하는 방법 및 장치에 관한 것이다.
I2C 버스는 한 개 이상의 마스터 및 슬레이브에 의해 다중 집적 회로를 상호접속하는데 전형적으로 사용되는 공업 규격인 직렬 양방향 2선식 버스이다. I2C 버스는 직렬 데이터 라인 (SDA) 및 직렬 클록 라인 (SCL) 인 2개의 버스 라인을 포함한다. I2C 버스는 네거티브 금속 산화 반도체 (NMOS), 상보 금속 산화 반도체 (CMOS), 및 바이폴러와 같은 어떠한 집적 회로 (IC) 제조 공정도 지원한다. 직렬 데이터 라인 (SDA) 및 직렬 클록 라인 (SCL) 정보는 I2C 버스에 연결된 다중 장치 간에 2개의 전선에 의해 전달된다.
IEEE 1149.1 명세의 조인트 테스트 액션 그룹 (JTAG) 인터페이스와 같은 제작 시험 인터페이스를 내부 집적 회로 (I2C) 버스를 포함하는 글로벌 직렬 버스에 연결하는 방법 및 효율적인 메카니즘에 대한 요구가 존재한다. 메모리 및 IO 서브시스템을 포함하는 직렬 버스에 접속된 다중 장치에서 VPD 정보를 문의하고 레지스터 액세스를 제공하며 시험을 수행하기위해, I2C 버스와 같은 글로벌 직렬 버스를 사용하는 것이 바람직하다.
본 발명의 주요 목적은 내부 집적 회로 (I2C) 버스를 포함하는 글로벌 직렬 버스에 제작 시험 인터페이스를 연결하는 방법 및 장치를 제공하는 것이다. 다른 목적은 실질적으로 부정적인 효과가 없는 방법 및 장치를 제공하며 종래 기술장치의 많은 단점을 극복하는 것이다.
간략히, 내부 집적 회로 (I2C) 버스와 같은 글로벌 직렬 버스에 제작 시험 인터페이스를 연결하는 방법 및 장치가 제공된다. 입력/출력 버퍼 로직은 글로벌 직렬 버스로 그리고 글로벌 직렬 버스로부터 전송되는 데이터를 버퍼링한다. 입력/출력 버퍼 로직에 연결된 슬레이브 인터페이스 로직은 입력/출력 버퍼 로직에 데이터를 송수신한다. 입력/출력 버퍼 로직 및 슬레이브 인터페이스 로직에 연결된 슬레이브 제어기는 입력/출력 버퍼 로직에 대한 데이터 교환을 페이싱한다.
본 발명의 특징에 따라, 에러 검출 로직은 에러를 검출하기 위하여 상기 입력/출력 버퍼 및 상기 글로벌 직렬 버스 간에 연결된다.
본 발명의 상기 목적 그리고 다른 목적 및 장점은 도면에 도시된 본 발명의 바람직한 실시예의 상세한 설명에서 최대로 이해될 수 있다.
도 1 은 바람직한 실시예에 따른 제작 시험 인터페이스 및 글로벌 내부 집적 회로 (I2C) 버스 상호접속 장치를 도시하는 블록도.
도 2 는 바람직한 실시예에 따른 도 1 의 제작 시험 인터페이스 및 글로벌 내부 집적 회로 (I2C) 버스 상호접속 장치의 I2C 슬레이브 상태 머신의 제어 레지스터 및 슬레이브 데이터를 도시하는 블록도.
도 3 은 바람직한 실시예에 따른 도 1 의 제작 시험 인터페이스 및 글로벌 내부 집적 회로 (I2C) 버스 상호접속 장치의 I2C 슬레이브 상태 머신의 슬레이브 IO 버퍼 로직을 도시하는 블록도.
도 4 는 바람직한 실시예에 따른 도 1 의 제작 시험 인터페이스 및 글로벌 내부 집적 회로 (I2C) 버스 상호접속 장치의 I2C 슬레이브 상태 머신의 슬레이브 시험 액세스 포트 (TAP) 인터페이스를 도시하는 블록도.
도 5 는 바람직한 실시예에 따른 도 1 의 제작 시험 인터페이스 및 글로벌 내부 집적 회로 (I2C) 버스 상호접속 장치의 I2C 슬레이브 상태 머신의 슬레이브 제어기를 도시하는 블록도.
도 6 은 바람직한 실시예에 따른 도 1 의 제작 시험 인터페이스 및 글로벌 내부 집적 회로 (I2C) 버스 상호접속 장치의 물리적 인터페이스와 I2C 슬레이브 상태 머신의 IO 버퍼 로직 간의 데이터 페이싱 (pacing) 을 도시하는 블록도.
도 7 은 바람직한 실시예에 따른 도 1 의 제작 시험 인터페이스 및 글로벌 내부 집적 회로 (I2C) 버스 상호접속 장치의 I2C 슬레이브 상태 머신의 슬레이브 시험 액세스 포트 (TAP) 인터페이스와 I2C 슬레이브 상태 머신의 IO 버퍼 로직 간의 데이터 페이싱을 도시하는 블록도.
도 8 은 바람직한 실시예에 따른 도 1 의 제작 시험 인터페이스 및 글로벌 내부 집적 회로 (I2C) 버스 상호접속 장치의 I2C 슬레이브 상태 머신의 슬레이브 에러 핸들링 로직을 도시하는 블록도.
도 9 는 바람직한 실시예에 따른 도 1 의 제작 시험 인터페이스 및 글로벌 내부 집적 회로 (I2C) 버스 상호접속 장치의 I2C 슬레이브 상태 머신의 다중 상태를 도시하는 블록도.
도 10a 및 도 10b 는 바람직한 실시예에 따른 도 1 의 제작 시험 인터페이스및 글로벌 내부 집적 회로 (I2C) 버스 상호접속 장치의 I2C 슬레이브 상태 머신의 원시 기록 제어 흐름 및 원시 판독 제어 흐름을 각각 도시하는 도.
도 10c 및 도 10d 는 바람직한 실시예에 따른 도 1 의 제작 시험 인터페이스 및 글로벌 내부 집적 회로 (I2C) 버스 상호접속 장치의 I2C 슬레이브 상태 머신의 레지스터 기록 제어 흐름 및 레지스터 판독 제어 흐름을 각각 도시하는 도.
도 10e 및 도 10f 는 바람직한 실시예에 따른 도 1 의 제작 시험 인터페이스 및 글로벌 내부 집적 회로 (I2C) 버스 상호접속 장치의 I2C 슬레이브 상태 머신의 제어 기록 제어 흐름 및 제어 판독 제어 흐름을 각각 도시하는 도.
도 11 은 바람직한 실시예에 따른 시험 액세스 포트 (TAP), 경계-스캔 아키텍쳐, 및 도 1 의 제작 시험 인터페이스 및 글로벌 내부 집적 회로 (I2C) 버스 상호접속 장치의 액세스를 도시하는 블록도.
도면에서, 도 1 은 본 발명에 따른 부재번호 100 으로 지정된 제작 시험 인터페이스 및 글로벌 내부 집적 회로 (I2C) 버스 상호접속 장치를 도시한다. 제작 시험 인터페이스 및 I2C 버스 상호접속 장치 (100) 는 I2C 물리적 인터페이스 (104) 를 통해 I2C 버스 (106) 에 연결된 슬레이브 I2C 상태 머신 및 번역기 (102) 를 포함한다. 제작 시험 인터페이스 및 I2C 버스 상호접속 장치 (100) 는 단일 집적회로 칩으로 형성될 수 있다. I2C 상태 머신 및 번역기 (102) 는 내부 JTAG 버스 (110) 를 통해 멀티플렉서 (MUX; 108) 에 연결된다. MUX (108) 는 외부 JTAG 버스 (112) 에 연결된다. 내부 JTAG 버스 (110) 및 외부 JTAG 버스 (112) 간에 선택하도록 제어 입력 (113) 이 MUX (108) 에 인가된다. 시험 액세스 포트 및 경계-스캔 아키텍쳐 액세스 (114) 또는 다른 구현된 JTAG 은, MUX (108), 및 클록제어, 내장 자기 진단 (BIST) 과 다른 기능 (118), 223개만큼 설계된 레지스터 (120), 및 JTAG 스캔가능한 레지스터 또는 시험 데이터 레지스터 (TDRs; 122) 간에 연결된다.
바람직한 실시예의 특징에 따라, 제작 시험 인터페이스 및 I2C 버스 상호접속 장치 (100) 는, 상호접속 장치가 고유의 I2C 레지스터 전송 프로토콜 및 풀 JTAG 기능성을 지원하는 독특한 방식으로 I2C 버스 (106) 와 JTAG 시험 액세스 포트 (TAP) 액세스 (114) 간의 간격을 연결한다. 제작 시험 인터페이스 및 I2C 버스 상호접속 장치 (100) 는 공업 규격 I2C 버스 프로토콜을 고수하며, JTAG 기능을 제한하지 않는다. 제작 시험 인터페이스 및 I2C 버스 상호접속 장치 (100) 는 상호접속 배선을 최소화하며, 칩-레벨 주소지정가능을 도입하고, 직접 메모리 사상 입력/출력 (MMIO) 판독 및 기록 레지스터 주소지정가능을 정의한다.
바람직한 실시예의 특징에 따라, 제작 시험 인터페이스 및 I2C 버스 상호접속 장치 (100) 는 내부 회로 데이터경로, 시험, 및 랩/필드 디버그 기능을 위한 제작 시험 하드웨어 사용을 가능하게 한다. 제작 시험 인터페이스 및 I2C 버스 상호접속 장치 (100) 는 새로운 스캔 제어기 지시, 스캔 통신 즉시-판독을 도입하여, I2C 버스 (106) 에서 레지스터 판독 응답 대기 시간을 감소시킨다. 제작 시험 인터페이스 및 I2C 버스 상호접속 장치 (100) 는 시스템 레벨 제작 시험을 위한 연결을 단순화 및 감소시킨다. 시스템 레벨 제작 시험은 시험 인터페이스를 위해 단일 I2C 연결을 사용할 수도 있어, 집적화 및 고온 기능 시험을 수행하는데 필요한 소프트웨어 및 시험 접속 프로시저를 간략히 한다.
I2C 상태 머신 및 번역기 (102) 는 I2C 버스 (106) 를 통해 전송된 데이터를 고유의 JTAG 명령으로 변환한다. I2C 상태 머신 및 번역기 (102) 는 I2C 버스 (106) 에 부착된 칩내의 레지스터를 판독, 기록 및 스캔하기위해 액세스 (114) 와 인터페이스하는 TAP 제어기로서 사용될 수 있다. I2C 상태 머신 및 번역기 (102) 는, 액세스 (114) 에 의해 실행되는 JTAG 버스 (112) 를 통해 개시될 수 있는 다른 어떠한 특징 뿐만 아니라 로직 내장 자기 진단 (LBIST) 또는 어레이 내장 자기 진단 (ABIST), 스캔 JTAG TDRs (122), 제어칩 클로킹을 개시할 수 있다. 제작 시험 인터페이스 및 I2C 버스 상호접속 장치 (100) 는 7비트 슬레이브 어드레싱 모드를 사용하여, 27개 슬레이브가 직접 어드레싱될 수 있게 한다. 프로토콜은, 어드레싱된 슬레이브가 특정한 슬레이브에 의해 정의되는 메모리에서 시작되는 연속 비트를 직렬로 어드레싱함으로써 판독/기록에 응답하는 것을 의미한다. 제작 시험 인터페이스 및 I2C 버스 상호접속 장치 (100) 는 직접 어드레싱을 223까지 연장하여, 8바이트로 정렬된 레지스터에서 동작한다. 또한, 액세스 (114) 에 의해 지원되는 레지스터 판독/기록이 아닌 동작도 이용가능하다.
직렬 I2C 버스 (106) 는 버스가 대기 휴지인 동안 1 을 유지하는 직렬 클록 라인 (SCL) 및 직렬 데이터 라인 (SDA) 을 위한 2개의 전선으로 구성된다. 어떠한 버스 마스터도 시작 비트를 갖는 메시지 전송을 개시할 수도 있다 (SCL=1 인 동안 SDA 는 1->0). I2C 버스 프로토콜은, 각각 폭 1바이트이며 애크 비트 (0 = 적합 애크 (good ack)) 가 뒤따르는 패킷으로 동작한다. 메시지가 시작될 때, 슬레이브는 애크 비트 타이밍동안 SDA 를 구동하며, 마스터는 다른 시간대에서 SCL 과 SDA 를 구동한다. 마스터 로직은 항상 클록을 소유한다. 슬레이브는 애크 비트를 제외한 판독시에 SDA 를 소유한다. SDA 가 SCL 상승 에지 보다 앞서 설정되고 SCL 클록 (0->1->0) 이 하강 에지 이후에 유지되며 SCL 이 로우인 동안 변환되는 것처럼 각 SDA 데이터/애크 비트는 안정된 1 또는 0 을 유지해야 한다.
패킷 비트중 최상위 비트 (비트 1) 가 우선 전송된다. 시작 바이트 비트(1:7) 는 특정 슬레이브 칩을 어드레싱한다. 시작 바이트의 8번째 비트는 판독/기록 비트이다. 기록은 바이트를 전송하는 마스터 및 애크하는 슬레이브와 함께 진행된다. 마스터가 시작 바이트를 기록할 때 판독이 시작되지만, 슬레이브가 시작 바이트를 애크한 후에 데이터흐름은 반전된다. 이제 슬레이브는 패킷을 전송하며 마스터는 애크한다. 슬레이브는 마스터 애크 = 1 일 때까지 계속 전송한다. 모든 전송은 정지 비트로 종료된다 (SDA 0 -> 1 인 동안 SCL = 1). 버스는 정지 비트 이후에 다시 대기 휴지로 된다.
IEEE 1149.1 은 5-전선 인터페이스로 불리는 경계-스캔 아키텍쳐와 통신하기 위한 시험 액세스 포트를 정의한다. 액세스 (114) 는 조인트 테스트 액션 그룹 (JTAG) 인터페이스 IEEE 1149.1 명세에서 특정 구현된 것이다. JTAG 시험 액세스 포트 (TAP) 5 전선은 JTAG 시험 클록 입력 (TCK), JTAG 시험 데이터 입력 (TDI), JTAG 시험 데이터 출력 (TDO), JTAG 시험 모드 선택 입력 (TMS), 및 JTAG 시험 로직 리셋 입력 (TRST) 을 포함한다. 시험 클록 입력 (TCK) 의 상승 에지로 인해 TMS 및 TDI 는 액세스 (114) 에 의해 샘플링된다.
TCK 의 상승 에지동안 JTAG 시험 모드 선택 입력 (TMS) 값으로 인해 액세스 (114) 의 TAP 제어기에서 상태 천이가 발생한다. 시험 데이터 입력 (TDI) 은 액세스 (114) 에 대한 직렬 데이터 입력이다. 시험 데이터 출력 (TDO) 은 액세스 (114) 로부터의 직렬 데이터 출력이다. JTAG 시험 로직 리셋 입력 (TRST) 으로 인해 액세스 (114) 를 복구하기위해 시험 로직의 비동기 리셋이 발생한다 (TAP -> TestLogicRst). ShiftIR 은 액세스 (114) 내의 TDI 및 TDO 간의 지시가 직렬로시프트된 상태이다. TMS 가 0 으로 유지되는 동안, 각 TCK 클록으로 인해 또다른 비트가 TDI 로부터 지시 레지스터로 시프트되고 IR 상태가 TDO 밖으로 시프트된다. 지시 레지스터의 내용은 수행될 비 레지스터 동작, 또는 어드레싱되는 특정 TDR 을 결정한다. ShiftDR 은 많은 데이터 레지스터 (TDRs) 중 한개가 TDI 및 TDO 간에 직렬로 연결되는 상태이다. TMS 가 0 으로 유지되는 동안, 각 TCK 클록으로 인해 또다른 비트는 TDI 로부터 레지스터내로 시프트되며 (이전의) 데이터가 TDO 밖으로 시프트된다.
도 2 는 바람직한 실시예에 따른 부재번호 200 으로 지정된, I2C 상태 머신 및 번역기 (102) 의 슬레이브 데이터 및 제어 레지스터를 도시한다. I2C 슬레이브 로직 (200) 은 데이터, 어드레스, 및 레지스터 판독/기록 (R/W) 버퍼링을 위한 입력/출력 버퍼 레지스터 (IOBUF; 201), 및 연관된 입력/출력 바이트 계수 레지스터 (IOCNT; 202) 를 포함한다. I2C 슬레이브 로직 (200) 은 물리적 인터페이스 (104) 및 슬레이브 JTAG 인터페이스 (204) 간에 연결된 에러 검출부 (203) 를 포함한다. I2C 슬레이브 로직 (200) 은 물리적 인터페이스 (104), 입력/출력 바이트 계수 레지스터 (IOCNT; 202), 및 슬레이브 JTAG 인터페이스 (204) 에 연결된 슬레이브 제어기 (206) 를 포함한다. 슬레이브 JTAG 인터페이스 (204) 는 직렬 시프트 레지스터 (SSR; 208) 및 직렬 시프트 레지스터 (SSR; 208) 와 연관된 비트 계수 레지스터 (BCR; 210) 를 포함한다. 슬레이브 JTAG 인터페이스 (204) 는 시험 모드 (TMS) 선택 레지스터 (TSR; 212) 및 TMS 단자 선택 레지스터 (TTSR; 214), 시험 클록 입력 (TCK) 을 제공하는 클록 발생기 (CG; 216), 및 JTAG 시험 모드 선택 입력 (TMS) 을 제공하는 MUX (218) 을 포함한다.
물리적 인터페이스 (104) 는 연관된 핸드셰이킹 신호를 따라서 폭 1바이트의 데이터 인터페이스를 제공하며, I2C 프로토콜 및 타이밍을 조정한다. SDA 는 I2C 에 의해 정의된 양방향 직렬 데이터 신호를 참조한다. SCL 은 I2C 에 의해 정의되는 직렬 클록 신호를 참조한다. 물리적 인터페이스 (104) 의 동작은 일반적으로 I2C 의 종래 구현예에 따른다.
IO 버퍼 (IOBUF; 210) 는 I2C 시작 바이트에 의해 슬레이브 칩으로서 어드레싱되는 칩으로 그리고 칩으로부터 전송되는 연속 바이트를 버퍼링한다. IOBUF (201) 내의 데이터는 한 번에 한 바이트씩 물리적 인터페이스 (104) 로 그리고 물리적 인터페이스 (104) 로부터 병렬로 전송된다. 전체 시작 바이트는 IOBUF (201) 에서 유지되지만, 판독/기록 비트만이 I2C 상태 머신 (102) 에 의해 더 사용된다. 기록 동작동안, 데이터는 I2C 버스 (106) 로부터 내부 JTAG 버스 (110) 의 TDI 또는 TMS 로 이동한다. 판독 동작동안, 데이터는 내부 JTAG 버스 (110) 의 TDO 로부터 I2C 버스 (106) 로 이동한다. 직렬 시프트 레지스터 (SSR; 208) 는 IOBUF (201) 로 그리고 IOBUF (201) 로부터 8 바이트까지 병렬로 수신 또는 지원할수 있다. 이후 데이터는 IEEE 1149.1 프로토콜에 따른 내부 JTAG 버스 (110) 로 그리고 내부 JTAG 버스 (110) 로부터 직렬로 시프트된다.
물리적 인터페이스 (104) 는 I2C 버스 (106) 를 감시하고 들어오고/나가는 바이트를 수신한다. 바이트가 시작 바이트이면, 물리적 인터페이스 (104) 는 7비트 슬레이브 어드레스를 칩 어드레스와 비교한다. 어드레스가 정합하지 않는다면 시작 바이트 및 나머지 메시지는 무시된다. 물리적 인터페이스 (104) 는 한 바이트가 수신되었음을 지시하는 신호를 슬레이브 제어기 (206) 에 표명한다.
슬레이브 제어기 (206) 는 IOBUF (201) 내에 데이터가 적절히 정렬되도록 유지하기위해 IO 계수 (IOCNT; 202) 를 감소시키는 IOBUF (201) 와의 데이터 교환을 페이싱한다. 메시지의 끝이 수신되거나 전송될 때, 또는 IOBUF 가 오버플로우나 언더플로우될 때, 슬레이브 제어기 (206) 는 한 개 이상의 JTAG 원시 동작을 수행하기 위해 SSR (208) 및 IOBUF (201) 간에 데이터를 전송하고 슬레이브 JTAG 인터페이스 (204) 를 트리거한다. 본 상세한 설명과 특허청구범위에서 사용되는 바와같이, 원시 동작은, 시험 모드 선택 (TMS), 제어, 또는 TDI/TDO, 지시 또는 데이터/상태를 내부 슬레이브 JTAG 인터페이스 (204) 로 및 내부 슬레이브 JTAG 인터페이스 (204) 로부터 향하도록 한 개 이상의 시험 클록 입력 (TCK) 펄스 시퀀스를 평균하는 것으로 정의된다.
도 3 은 IOBUF (201) 및 IOCNT (202) 를 구현하는 슬레이브 IO 버퍼 로직을 도시한다. 슬레이브 IO 버퍼 로직 (201) 및 IOCNT (202) 는 IO 계수 레지스터 (IOCNTL2; 302), 업/다운 계수기 (304), 비교기 (>'1011'; 306), AND 게이트(307), IO 버퍼 (IOBUFL2; 308), 및 한 쌍의 멀티플렉서 (MUX IOA, MUX IOB; 310, 312) 를 포함한다. IOCNT (202) 는 IO 계수 레지스터 (IOCNTL2; 302), 및 업/다운 계수기 (304) 와 동등하다.
대기 휴지일 때, IO 계수 레지스터 (IOCNTL2; 302) 에는 IO 버퍼 (201) 의 최하위 바이트를 지시하는 b'1011' 인 계수 데이터 (CNTDATA) 가 병렬 로드된다. I2C 상태 머신 (102) 은 IOCNTL2 (302) 에 인가되는 CNTDATA 가 LOADCNT 를 표명함으로써 유효하다는 것을 나타낸다. I2C 버스 (106) 를 통해 바이트가 전송될 때, 계수는 감소되며 그 다음 최상위 바이트를 연속적으로 지시한다. I2C 물리적 인터페이스 (104) 는 전송 비트 (우선 최상위 비트) 를 처리하고, IOBUF (201) 는 I2C 물리적 인터페이스 (104) 로 그리고 I2C 물리적 인터페이스 (104) 로부터 바이트를 (우선 최하위 바이트) 제시하고 수용한다.
시작 바이트가 I2C 버스 (106) 에서의 판독 동작을 지시한다면, I2C 상태 머신 (102) 은 I2C 버스 (106) 로 데이터를 복귀시키는 것에 대비하여 LOADCNT 를 액티브로 그리고 CNTDATA=b'0111' 를 표명함으로써 IO 버퍼 (201) 의 데이터 부분으로 IOCNT 를 점프한다.
레지스터 판독/기록 동작동안 원시 동작 스텝 계수기 (304) 로서 IOCNT 레지스터 IOCNTL2 (302) 가 재사용된다. 이 모드에서, 레지스터 판독/기록 시퀀스의그 다음 원시 명령 스텝이 수행될 때마다 스텝 계수기 (304) 에 인가된 CountUp 이 I2C 상태 머신 (102) 에 의해 활성화된다. IOBUF (201) 의 IOCNTL2 및 데이터 부 분만이 변경되고, IOBUF 어드레스 및 시작 바이트는 자신의 값을 그대로 유지한다.
12바이트 IO 버퍼 레지스터 (IOBUFL2; 308) 는 시작 바이트부터 시작하여 우측으로부터 좌측으로 한 번에 한 바이트씩 로드된다. I2C 물리적 인터페이스 (104) 로부터의 데이터는 신호 (IS_BYTE_O) 에 도착하고, I2C 상태 머신 (102) 으로부터의 신호 (COUNTBYTE) 에 의해 유효한 것으로 지시된다. MUX IOA (310) 는, IOCNT 에 의해 지정되며 IS_BYTE_O 에서의 데이터로 교체되는 바이트를 제외한 모든 바이트에 IOBUF 데이터를 피드백시킨다.
판독 정보는 신호 (IS_BYTE_I) 로 물리적 인터페이스 (104) 에 제공된다. MUX IOB (312) 는 IS_BYTE_I 에서 구동될 IOCNT 번째 바이트를 선택한다. I2C 상태 머신 (102) 에 의해 BUFLOAD 신호가 활성화될 때 SSR (208) 로부터의 데이터는 IOBUF (201) 의 데이터부에 병렬 로드된다. 이것은, 레지스터 판독 원시 시퀀스의 끝에서, 또는 I2C 명령의 요구시 한 스텝 JTAG 원시 명령이 수행된 후에 발생한다.
데이터, 명령/어드레스, 및 r/w 비트는 IOBUFL2 (0:95) 신호로 I2C 상태 머신 (102) 및 SSR (208) 에 제공된다. AND 게이트 (307) 에 의해 발생한 오버런(OVERRUN) 신호는 IOBUF 풀/엠티 (full/empty) 상태를 지시한다.
표 1 은 멀티플렉서 (MUX IOA, MUX 10B; 310, 312) 에서의 MUX 정의를 나타내며, 여기서 x 는 돈케어 (don't care) 를 나타낸다.
MUX IOA (310) 출력 | CountByte RW | IOcntL2 | BufLoad |
SSRL2 (0:63) &IOBUFL2 (64:95)IOBUFL2 (0:95)IS_BYTE_O (0:7) &IOBUFL2 (8:95)IOBUFL2 (0:7) &IS_BYTE_O (0:7) &IOBUFL2 (15:95)기타IOBUFL2 (0:87) &IS_BYTE_O (0:7)돈케어 (오버런 에러, 매우많은데이터 수신) | x x0 x1 01 001 x1 x1 x | xx000000010111etc10111011 | 1000000 |
MUX IOB (312) 출력 | |||
IOBUFL2 (0:7)IOBUFL2 (8:15)기타IOBUFL2 (56:63) | xxxx | x000x001etcx111 | xxxx |
MUX IOB (312) 는 IOcntL2 의 최상위 비트에 대하여 상관하지 않으며, 슬레이브 로직은 데이터를 복귀시키기만 하며, 정보를 어드레싱하지 않는다.
도 4 는 JTAG 인터페이스 (204) 를 구현하는 슬레이브 테스트 액세스 포트 (TAP) 인터페이스 로직을 도시한다. 슬레이브 TAP 인터페이스 로직 (204) 은, TAP 클록 상태 머신 (TAPCMSL2; 402), 복수의 멀티플렉서 (MUX A, MUX B, MUX C,MUX D, MUX E; 404, 406, 408, 410, 412), 복수의 레지스터 (SSRL2(0:63), TTSRL2, TSRL2, BCRL2(0:5); 414, 416, 418, 420), 다운 계수기 (421), 비교기 ('111111'; 422), 복수의 래치 (413, 424, 426), 및 한 쌍의 AND 게이트 (428, 430) 를 포함한다.
로드 명령 (LOADCMD) 신호가 활성화될 때, 테스트 액세스 포트 명령 (TAPCMD) 은 내부 JTAG 버스 (110) 에서 활동을 개시하기에 유효한 것으로 고려된다. TAPCMD 신호에 대한 정보는 하기된 같이 명령 레지스터내로 로드되고, 한 클록 (ONECLK2) 래치 (426) 는 한 개 이상의 TCK 펄스에서 해제되도록 1 로 설정된다. 다음에 따르는 표 2, 3, 및 4 에서 TAP 클록 상태 머신 (TAPCSM; 402), TAP 원시 명령 인터페이스, 및 MUX D (410) 에 대한 정의를 참조한다. MUX B (406) 는 피드백을 제공하며, LOADCMD 가 액티브가 아닌 동안 명령 레지스터의 현재 값을 유지한다. MUX A (404) 는 유사하게 SSR (데이터) 값을 유지한다.
TAP 클록 상태 머신 (TAPCMSL2; 402) 은 ONECLKL2 에 의해 활성화될 때까지 유휴 (idle) 상태로 유지된다. 상태 머신 (402) 은 IDLE 로 복귀되기 전에 상태 (TCKF1, TCKR0, TCKR1) 를 통해 순차적으로 진행된다. 머신 (402) 은 ONECLKL2 = 1 을 유지하는 동안 이러한 상태를 통해 계속 순환한다. TCK 는 TCK 상승 (TCKR0, TCKR1) 상태에서 1 로 구동되어, 베이스 슬레이브 클록 주파수를 4개 인자로 효율적으로 나누고 대략 50% 의 듀티 사이클을 제공한다. BCR 는 감소되며 SSR 데이터는 TCKR1 상태에서 한 비트 오른쪽으로 시프트된다. TCK 의 상승 에지에서 TDO 가 샘플링되어야 한다는 JTAG 요구사항은 TCKR0 상태에서 TDO 로부터TDOL2 래치 (413) 를 로드함으로써 달성된다. 표 4 에서 MUX E (412) 정의를 참조한다. 표 2 는 TAP 클록 상태 머신 (TAPCSML2; 402) 에 대한 것이다.
상태 (인코드) | 입력 | 다음상태 | 출력 |
IDLE (00) | ONECLKL2그 외 | TCKF1IDLE | |
TCKF1 (01) | TCKR0 | BCRL2 = 111111 이면 ONECLKL2 를리셋 | |
TCKR0 (11) | TCKR1 | TDO 로부터 TDOL1 을 로드, TCK=1 | |
TCKR1 (10) | IDLE | TCK = 1BCRCount = not(BCRL2 = '111111')SSRshfit = 1 |
상태 머신 (402) 의 상태는 상태 천이동안 TCK 에서의 글리치 (glitch) 를 방지하기 위해 그레이코드화된다. 출력은 상태 표에서 특별히 제시되지 않는 한 0 이다.
MUX A (404), MUX B (406), 및 BCRL2 (420) 에 인가된 탭 명령 (TAPCMD) 신호는 폭 9 바이트이다. 제 1 바이트는 JTAG 스캔 로직 (204) 에 의해 수행되는 원시 명령이다. TMS 선택 레지스터 (TSRL2:TAPCMD 비트 0) (418) 는 MUX C (408) 가 SSRL2 (0:63) (414) 으로부터 TMS 으로 시프트 아웃될 SSR 데이터, 또는 상수값을 선택할 것인지를 결정한다. 제로 (0) 는 SSRL2 (414) 내의 데이터가 TMS 제어 정보의 스트림인 것을 지시한다. 1 은 제 1 N-1 TCK 클록 펄스의 TMS 에서 구동된 정적 0 값을 MUX C 가 선택하도록 한다. 이후 TTSRL2 (416) 값은 N 번째 (단자) TCK 펄스동안 TMS 에서 구동된다.
단자 TMS 선택 레지스터 (TTSRL2 : TAPCMD 비트 1) (416) 는 N 번째 (단자)TCK 펄스동안 TMS 에 대한 값을 제공한다. TTSRL2 (416) 는 SSR 폭 64 비트가 스캔을 완료하기에 부족할 때 긴 스캔 동작을 위한 것이다. TTSRL2=0 은 원시 동작을 브리지 (bridge) 하여, 스캔이 또다른 원시 명령과 함께 계속되게 한다. TTSRL2=1 은 액세스 (114) 내부의 JTAG TAP 상태를 시프트-DR 또는 시프트-IR 상태 밖으로 이동시킴으로써 동작을 종료한다. 테스트 로직 리셋 (TRST) 은 원시 명령을 위해 다른 경우에 사용되지 않는 조합에서 TAPCMD 비트 (0:1) 를 게이트 논리에 의해 형성된다. AND 게이트 (428) 의 출력은 테스트 로직 리셋 TRST 신호의 글리치를 제거하기 위해 래치 (424) 에 의해 래치된다. 비트 계수 레지스터 (420) (BCRL2:TAPCMD 비트 2:7) 는 TMS 또는 TDI 에 대한 정보의 시퀀스와 함께 전송할 TCK 펄스 수를 한정한다. b'111110' 의 BCR 값은 64TCK 펄스가 전송되는 것을 지시한다 (전체 SSR 레지스터 (414) 는 TDI 또는 TMS 로부터 우측으로 시프트될 것이며, TDO 를 좌측에서 SSR 로 다시 시프트할 것이다). BCR= b'111111' 는 단자 계수이고, 한 개의 TCK 펄스가 해제되는 것을 지시한다.
TAPCMD 의 제 1 바이트의 정의는 표 3 에서 요약된다.
비트 | 신호 | 설명 |
0 | TSRL2418 | TMS 선택 레지스터0 : TMS<=(SSR(63), 우측 시프트) * (BCRL2 + 2)1 : TMS<=0 while BCRL2/=111111TTSRL2 when BCRL2=111111 |
1 | TTSRL2416 | TMS 단자 선택 레지스터TSRL2 = 1 일때 계수된 BCRL2 의 최종 비트동안 TMS 에서 얻어진값 |
TRST | TRST<=(TSRL2=0) and (TTSRL2=1)보다 많은 비트를 사용하지 않고 TRST 기능을 얻는 방법 | |
2:7 | BCRL2420(6 비트) | 비트 계수 레지스터시프트할 비트 수 - 2 를 로드b'111110' = 64 TCK 펄스 (64번 시프트된 SSR)b'111101' = 63 TCK 펄스 (62번 시프트된 SSR)등등b'111111' = 1 TCK 펄스 (SSR 시프트 안함)주의 : 0 펄스에 대한 인코딩 없음 |
8:71 | SSRL2(64 비트) | 심플 스캔 레지스터TDI 으로 시프트 아웃되는 데이터 (TSRL2= 1 이면 또한 TMS 로시프트 아웃)TDO=>(0)SSRL2(63)=>TDI/TMSTDO 는 TCK 의 상승 에지에서 캡쳐되고, TDI/TMS 는 TCK 의 하강에지에서 시작됨 (SSR 이 시프트됨) |
TAPCMD 신호의 나머지 비트는 TDI 또는 TMS 를 시프트 아웃하는 것에 대비하여 SSR (208) 으로 로드되는 데이터를 나타낸다.
BCR 가 b'111111' 에 도달할 때, 명령이 실행된다. ONECLKL2 래치 (426) 는 0 으로 복귀되고 TAPCMD 상태 머신 (402) 은 유휴 상태로 된다. 내부 JTAG 버스 (110) 는 인액티브이다. AND 게이트 (430) 의 CMDDONE 신호 출력은 새로운 원시 명령이 개시될 수도 있다는 표시로서 I2C 슬레이브 상태 머신 (102) 으로 다시 인가된다.
다음의 표 4 에서 멀티플렉서 (MUX A, MUX B, MUX C, MUX D, MUX E; 404, 406, 408, 410, 412) 의 정의를 표시하며, x 는 돈케어, 그리고 /= 는 동등하지 않다는 것을 나타낸다.
MUX A (0:63)(404) 출력 | LoadCmd | SSR 시프트 | TSRL2 | BCRL2 | TAPcmdSM |
SSRL2 (0:63)TDO &SSRL2 (0:62)TAPCMD (8:71) | 001 | 01x | xxx | xxx | xxx |
MUX B (0:1)406 출력 | |||||
TSRL2 & TTSRL2TAPCMD (0:1) | 01 | xx | xx | xx | xx |
MUX C 408 출력 | |||||
SSRL2 (63)0TTSRL2 | xxx | xxx | 011 | x/=111111=111111 | xxx |
MUX D 410 출력 | |||||
1ONECLKL2ONECLKL20 | 1000 | xxxx | xxxx | xx/=111111=111111 | x/=TCKF1TCKF1TCKF1 |
MUX E 412 출력 | |||||
TDOTDOL2 | xx | xx | xx | xx | TCKR0/=TCKR0 |
도 5 는 슬레이브 제어기를 구현하는 슬레이브 제어기 로직 (206) 을 도시한다. 슬레이브 제어기 로직 (206) 은, I2C 슬레이브 상태 머신 로직 (I2CSSML2(0:3); 502), 비교기 (=; 504), 및 TAP CMD 경로지정을 위한 MUX SMA (506), 데이터 경로지정을 위한 MUX SMB (508), 제어를 위한 MUX SMD (510) 인 복수의 멀티플렉서를 포함한다. 슬레이브 제어기 로직 (206) 은 레지스터 판독/기록 (REGRW) 버스 동기 로직 (512) 을 포함한다. REGRW 버스 동기 로직 (512) 은 한 쌍의 AND 게이트 (514, 516), SC 유휴 래치 (SCIDLE2; 520), NOT 게이트 (522) 및 멀티플렉서 (MUX SMB; 524) 를 포함한다. 슬레이브 제어기 로직 (206) 은 다음과 같이 기본적인 다중 기능을 수행한다. I2C 슬레이브 상태 머신 로직 (I2CSSML2(0:3); 502) 은 물리적 인터페이스 (106) 및 IO 버퍼 로직 (300) 간의 데이터 교환을 페이싱하고 IO 버퍼 로직 (300) 및 JTAG 스캔 로직 (204) 간의 데이터 교환을 페이싱한다. TAP CMD 경로지정을 위한 MUX SMA (506) 는 레지스터 판독/기록 동작을 위해 순서화된 명령 시퀀스를 제공한다. REGRW 버스 로직 (512) 은 JTAG 스캔 로직 (204) 과 액세스 (114) 간의 데이터 교환을 페이싱한다. 데이터 경로지정을 위한 MUX SMB (508) 는 데이터 경로지정을 위한 I2C 대역폭 요구사항을 최소화한다.
표 5, 6, 7, 및 8 은 슬레이브 제어기 (206) 의 MUX SMA (506), MUX SMB (524), MUX SMC (508), 및 MUX SMD (510) 에 대한 멀티플렉서 정의를 각각 나타낸다.
IOBUF (201) 및 SSR (208) 데이터는 바이트에 대하여 바이트를 항상 전송하지 않는다. IOBUF/SSR 레지스터 폭의 짝수배가 아니거나 보다 적은 TDR 을 어드레싱하기 위해 I2C 가 원시 명령 시퀀스를 사용한다면, I2C 버스 (106) 로부터의 데이터는 IOBUF (201) 내에서 좌측 정렬되고 이에따라 모든 유효 데이터가 수신되었을 때 오버플로우가 검출될 수 있다. IOBUF (201) 데이터는 SSR (208) 내로 로드될 때 우측 정렬된다. 타겟 TDR 로부터 스캔된 데이터는 SSR (208) 에서 좌측 정렬되고 IOBUF (201) 로 전송될 때 계속 좌측 정렬되어 있으며 이에따라 I2C 로 복귀된 데이터의 언더플로우가 적절한 때에 검출될 수 있다.
REGRW 버스 동기 로직 (512) 은 레지스터 판독/기록 버스 동기화를 위해 SCidle 신호를 사용한다. CHKADR 상태에서, SCidleL2 래치 (520) 는 1 로 설정된다 (액세스 (114) 로부터의 SCIDLE 신호가 액티브라 가정한다). 레지스터 R/W 동작이 개시될 때, SCIDLE 은 로우로 되어, ScidleL2 (520) 를 리셋한다. 레지스터 판독 동작이 완료될 때, SCIDLE 및 not SCidleL2 는 레지스터 판독 데이터가 액세스 (114) 내부에서 이용가능하다는 것을 지시한다. 표에서의 레지스터 판독 시퀀스는 이러한 로직을 사용하여 레지스터 판독 버스와 동기하기 위해 제 3 스텝을 완료한 후에 중지된다.
도 6 은 IOBUF (201) 및 물리적 인터페이스 (104) 간의 데이터 전송을 페이싱하기에 필요한 신호를 도시한다. 신호 정의는 상태 머신 설명을 참조하여 잘 이해될 수 있다.
도 7 은 JTAG 스캔 로직 (204) 데이터 페이싱에 대한 IO 버퍼 (201) 를 도시한다. 도 7 은 IOBUF (201) 및 JTAG 스캔 로직 (204) 간의 데이터 전송을 페이싱하는데 사용되는 신호를 도시한다. 신호 정의는 상태 머신 설명을 참조하여 잘 이해될 수 있다.
MUX SMA (506) 출력 | CmdMuxSel | 주석 |
IOBUFL2 (80:87) &TapDataBits (0:63) | 0000 | tap 명령 |
x08 00000000 000000DF'x'DE 00000000 14' &IOBUFL2 (64:87)x'00 00000000 00000001'x'01 00000000 00000001'x'FE00000000 00000000'x'00 00000000 00000001'x'00 00000000 00000000' | 0001001000110100010101100111 | 레지스터 판독 원시 Tap 명령 시퀀스 :1. TAP=home, shiftir2. IR =registerRDimmed,SSR=status, TAP=exit1ir3. TAP=RunTestIdle (RegisterRWDONE 을위해 여기서 일시중지)4. TAP=shiftdr5. SSR=scscan (0:63), TAP = exit1dr6. TMS=UpdateDR, Idle7. no-op (MTS=0, TCK=2 clks), Idle |
돈 케어 | 1000 | 비실행 |
x'08 00000000 000000DF'x'DE 00000000 0F000040'x'02 00000000 00000003x'FE' & IOBUFL2 (0:63)x'08 00000000 000000DF'x'DE 00000000 18' &IOBUFL2 (64:87)x'00 00000000 00000001' | 1001101010111100110111101111 | 레지스터 기록 원시 TAP 명령 시퀀스 :1. TAP = home, shiftir2. IR = scan, SSR = status, TAP = exit1ir3. TAP = shiftDR4. scscan (0:63) = SSR, TAP = exit1dr5. TAP = home, shiftir6. IR = registerwtm,SSR = status, TAP = exit1ir7. TAP = RunTestIdle (기록을 트리거) |
MUX SMB 출력 | I2CSSML2 | 주석 |
1 | = ChkAdr | |
Scidle and ScidleL2 | 그 외 |
MUX SMC 출력 | IOBUFL2 | 주석 |
if ValidBytes='0000' thenTapDataBits='00000000000000'X& IOBUFL2 (0:7)if ValidBytes='0001' thenTapDataBits='000000000000'X &IOBUFL2 (0:15) 등ValidBytes 출력 :b'0000' if 1<=(BCR+2)<=8b'0001' if 9<=(BCR+2)<=15 등b'0111' if 57<=(BCR+2)<=64 | 원시 어드레스 | TapDataBits 출력:다음과 같은 생성된 64비트 필드:(IOBUFL2(82:87) 에 의해 결정된)IOBUFL2 의 유효 데이터 바이트는우측 자리맞춤되고 64비트 필드(8 바이트) 를 만들기 위해 상수'00'X 로 좌측에 덧붙여진다.ValidBytes 출력:원시 명령의 전송 크기에 의존하여'000' 으로부터 '111' 으로의 값(즉, 포인터로서 사용되는 IOBUFL2(82:87) 로부터 IOBUFL2 내의 유효데이터의 LSByte 로의 값) |
TapDataBits :IOBUFL2 (0 내지 63)ValidBytes : '111' | 그 외 | 원시 명령이 아니라면, TapDataBits는 사용되지 않음. 비 원시 명령을위해, LSByte 는 항상 '111'(모든 8 바이트 IOBUF 데이터가사용됨) |
MUX SMD 출력 | I2CSSML2 | IOCNTL2 | IOBUFL2 | 주석 |
b'0001' | ChkAdr | x | x | 레지스터 판독/기록 시퀀스에서 스텝을 계수하기 위해이 때 업 계수기로서 IOCNTL2가 사용됨 |
ValidBytes | ChkStopWrtAck | xb'0111' | 원시 어드레스원시 어드레스 | IOBUFL2 에서 유효한 LSByte의 위치를 IOCNTL2 에 로드 |
b'1011' | 그 외 | 12C 어드레스 바이트를 채워넣기 위해 IOBUFL2 의 최대우측 바이트로 지정 |
도 8 에서, 에러 검출 (203) 을 구현하는 에러 핸들링 로직이 도시된다. 에러 핸들링 로직 (203) 은 I2C 버스 (106) 로 그리고 I2C 버스 (106) 로부터 전송된 데이터의 CRC 검사를 위한 순환 중복성 검사 (CRC) 로직 (802) 을 포함한다. 에러 핸들링 로직 (203) 은 입력, 즉, CRC_GOOD, Attention, IOCNTL2, read_or_write, 및 비교기 (808) 로부터의 원시 명령을 수신하는 ACK TYPE MUX (804) 를 포함한다.
I2C 상태 머신 (102) 및 에러 핸들링 로직 (203) 은 JTAG TAP 제어기 액세스 (114) 로부터 ATTENTION 입력을 수신한다. 액세스 (114) 로부터의 상기 ATTENTION 입력은 레지스터 판독/기록 버스 에러의 결과로 또는 다른 다수의 에러 시나리오로부터 활성화될 수도 있다. read_or_write 는 물리적 인터페이스 (104) 로부터 버퍼링된 I2C 상태 머신으로부터의 입력이다. IOBUFL2 는 IO 버퍼 로직 (201) 로부터 비교기 (808) 로의 입력이다. 비교기 (808) 에 인가된 TapCmdAdr 는 내부 상수로서 또는 칩 IO 핀을 통해 구성가능한 상수이다. IOCNTL2 는 IO 버퍼 로직 (201) 으로부터 MUX (804) 로의 입력이다. CRC_GOOD 는 CRC 바이트가 정확히 전송되었음을 지시하는 CRC 로직 (802) 으로부터의 신호이다. Is_slave_ack_type 는 에러 핸들링 로직 (800) 의 MUX (804) 로부터 물리적 인터페이스 (104) 로의 출력이다.
I2C 슬레이브는 애크 펄스를 갖는 에러를 취급한다. I2C 는 Ack 에서 또는 제 9 클록 사이클에서 및 슬레이브 어드레스의 제 9 비트에서 데이터의 모든 바이트의 애크를 요구한다. 슬레이브가 에러와 직면할 때, 슬레이브는 판독 시퀀스를 실행하려 할 때 에러의 어드레스 및 데이터를 더이상 애크하지 않을 것이다. 이러한 방식으로 소프트웨어는 에러 상태가 있는지를 결정할 수 있고 무엇이 에러를 발생시켰는지를 결정하기 위해 I2C 버스 (106) 를 사용하여 에러 상태로부터 복구될 수 있다.
슬레이브가 판독 또는 기록 시퀀스에서 애크하지 못하는 여러 상황이 있다. 예를 들어, CRC-검사가 인에이블되었다면, 소프트웨어가 데이터를 중복기재하지 않도록 슬레이브는 제 13 바이트를 애크하지 않을 것이다. 이러한 13개 바이트는, 슬레이브 어드레스, 3 바이트 레지스터 판독 어드레스, 8 데이터 바이트 및 CRC 바이트를 포함한다. CRC 가 계산되어 정확히 전송되었다면 기록만이 발생할 것이다. CRC 검사가 없을 때, 소프트웨어가 데이터의 8 바이트 이상을 기록한다면 데이터는 중복기재될 것이다. ATTENTION 신호가 액세스 (114) 내부에서 상승될 때 그리고 ATTENTION 이 내부에서 금지되지 않았을 때 상태 머신은 레지스터 판독 직접 시퀀스를 실행하려 할 때 No-Ack 를 발생시킬 것이다. 기록 시퀀스를 행하고 전송된 3 바이트 어드레스가 원시 어드레스가 아니었다면, 슬레이브는 I2C 버스 (106) 를 통해 전송되고 있는 데이터 바이트를 애크하지 않을 것이다. 일단 CRC 검사가 인에이블되었고 I2C 버스로 전송된 CRC 가 정확하지 않았다면, 슬레이브는 그 다음 판독 시도에서 애크하지 않을 것이다. 표 9 는 에러 핸들링 로직 애크 타입 MUX (804) 정의이다.
is_slave_ack_type | Attention,read_or_write,primitive Cmddisable_attention | 주석 |
0 | Primitive Cmd = 1Attention = xread_or_write = x | 내부 IOBUFL2 (64 내지 79) 가TapCmdAdr 를 지정할 때 항상파지티브 애크 |
0 | Primitive Cmd = 0read_or_write = 0and IOCNTL2 는 바이트 (11, 10,9) 를 지정, 또는disable_attention = 1 | 어드레스 바이트를 기록할 때또는 어텐션이 디스에이블될 때파지티브 애크 |
ATTENTION | Pirmitive Cmd = 0read_or_write = 1 또는read_or_write = 0 및IOCNTL2 는 바이트<=8 를 지정 | IOBUFL2 내의 비 원시 어드레스를 갖는 데이터 바이트를 판독또는 기록할 때 ATTENTION 입력에 의거한 네거티브/파지티브애크 |
도 9 , 10a, 10b, 10c, 10d, 10e, 10f 에 관하여, 도 9 에서 상태 머신 (102) 의 순차적 상태가 도시된다. 도 10a 및 도 10b 는 I2C 슬레이브 상태 머신 (102) 의 원시 기록 제어 흐름 및 원시 판독 제어 흐름을 각각 도시한다. 도 10c 및 10d 는 I2C 슬레이브 상태 머신 (102) 의 레지스터 기록 제어 흐름 및 레지스터 판독 제어 흐름을 각각 도시한다. 도 10e 및 도 10f 는 I2C 슬레이브 상태 머신 (102) 의 제어 기록 제어 흐름 및 제어 판독 제어 흐름을 각각 도시한다.
I2C 슬레이브 상태 머신 (102) 의 유휴 상태 (902) 에서, I2C 활동은 없다. IOcntL2 에는 b'1011' 이 로드되고, 시작 바이트를 수신하는 것에 대비하여 IOBUF2 의 LSByte 를 가리킨다. 복수의 상태는 AMATCH 상태 (904), WBYTE 상태 (906), CHKOVRFLW 상태 (908), 및 WRTACK 상태 (910) 를 포함하는 I2C 기록 상태이다. 기록 I2C 상태에서, I2C 마스터가 바이트를 슬레이브에 기록할 때, 제 1 바이트는항상 슬레이브를 어드레싱하는 시작 바이트이다. 시작 바이트의 제 8 비트는 판독/기록 비트이다. 그 다음 3개의 바이트는 레지스터 어드레스, 원시 TAP 명령, 또는 슬레이브 제어 명령으로 해석된다. 나머지 바이트는 데이터이다.
AMATCH 상태 (904) (어드레스 정합) 에서, 물리적 인터페이스 (104) 는 시작 비트를 인식하였으며 메시지의 (다음) 바이트를 어셈블한다. 반복되는 시작 또는 시작 바이트 어드레스가 정합하지 않을 때 AMATCH 상태 (904) 는 유휴 상태로 복귀되고, 슬레이브는 다시 유휴 상태로 된다. 제 1 4개 바이트 (시작 + 어드레스 바이트) 가 수신되기 전에 메시지가 종료하면, 슬레이브는 유휴 상태로 복귀된다. CRC 가 인에이블되고 CRC 에러가 검출되면, AMATCH 상태 (904) 는 유휴 상태 (902) 로 복구된다. 8개 이상의 비트가 물리적 인터페이스 (104) 에 의해 수신될 때 AMATCH 상태 (904) 는 WBYTE 상태 (906) 로 이동한다. 물리적 인터페이스 (104) 의 특정 구현예는 시작 바이트동안 IsStartDetected 에 앞서 Is8times 을 지시하여, Is8times 이 누락되지 않도록 래치 (Is8timesL2) 되는 것을 요구한다. 데이터의 한 개 이상의 바이트가 수신된 후 물리적 인터페이스 (104) 에 의해 정지 비트가 검출되었을 때 AMATCH 상태 (904) 는 CHKADR 상태 (912) 로 이동한다.
WBYTE 상태 (906) (기록 바이트) 에서, 물리적 인터페이스로부터의 Is_Byte_O 는 IOBUFL2 (IOcntL2thbyte) 에 기록되고, 이후 IOcntL2 가 감쇠된다. 이것이 I2C 기록 동작이라면 WBYTE 상태 (906) 는 CHKOVRFLW 상태 (908) 로 이동한다. 데이터흐름은 마스터/개시 프로그램으로부터 슬레이브로 계속 된다. 이것이 I2C 판독 동작이라면 WBYTE 상태 (906) 는 CHKADR 상태 (912) 로 이동한다. 데이터흐름은 시작 바이트 이후 반전된다. 마스터는 이제 슬레이브로부터 데이터를 수신할 것이다.
CHKOVRFLW 상태 (908) 에서는 (IO 버퍼에서 오버(언더) 플로우를 검사한다), 동작이 없다. 이것이 기록 동작이고 IOcntL2 가 b'0000' 으로부터 b'1111' 으로 겹쳐지지 않았을 때 CHKOVRFLW 상태 (908) 는 WRTACK 상태 (910) 로 이동하고, IOBUFL2 에서 보다 많은 바이트를 위한 공간이 있다. 레지스터 판독 또는 원시 명령이 IOBUFL2 를 이미 채우고 CHKOVRFLW 상태 (908) 가 I2C 판독 상태의 RBYTE 상태 (932) 로부터 입력되었을 경우에 CHKOVRFLW 상태 (908) 는 WAITREAD 상태 (930) 로 이동한다. 한 개 이상의 바이트가 이미 판독되었지만, IOBUF2 는 아직 언더플로우되지 않았다. CHKADR 로 이동한다. IOBUFL2 은 풀/엠티이고, 레지스터 기록/판독 또는 원시 동작을 트리거한다.
WRTACK 상태 (910) (슬레이브에 방금 기록된 I2C 바이트를 애크한다) 는 메시지의 제 1 4개 바이트 (시작 + 3 개 어드레스 바이트) 내에 있다면 적합 애크( Good Ack) 동작을 제공한다. WRTACK 상태 (910) 는 레지스터 판독 어드레스 및 ATTENTION 이 액세스 (114) 로부터 액티브라면 페일 애크 (fail ack) 를 제공한다. IsDoRead (IOBUF 는 I2C 마스터에 의해 기록된 바이트를 판독한다) 는 한 바이트가 IOBUF 를 위해 준비되어 있음을 지시하는 물리적 인터페이스 (104) 에 대하여 활성화된다. NeedAckL2 는 리셋된다. 만약 상기 바이트가 제 4 바이트 (IOBUF 에 방금 기록된 최종 어드레스 바이트; IOcntL2 = 7) 이고 어드레스가 원시 명령을 지시한다면, 데이터 버퍼에서 앞쪽으로 IOcntL2 를 점프하도록 원시의 BCR 필드로부터 디코드된 ValidBytes 를 참조한다. 예를 들어, BCR=b'000000' 에서, 2개 비트만이 액세스 (114) 에 전송될 것이고 따라서 데이터의 한 바이트만이 필요하다. IOcntL2 는 b'0000' 으로 전진되고 따라서 데이터의 제 1 바이트 이후 오버플로우가 즉시 발생할 것이다. 그렇지 않다면 I2C 는 또다른 무의미한 데이터의 7 바이트를 전송하는 시간을 낭비하게된다.
WRTACK 상태 (910) 는 NeedAckL2 로 AMATACH 상태 (904) 로 이동한다. 물리적 인터페이스 (104) 는 애크가 전송/수신된 이후 한 사이클동안 IsAckSent 를 활성화시킨다. 애크가 전송될 때까지 슬레이브 상태 머신이 대기하고 있는 경우를 NeedAckL2 는 기억한다.
CHKADR (check address) 상태 (912) 에서, IOBUFL2 어드레스 필드는 이 필드가 I2C 슬레이브 명령 포맷이 사용되는 제어 명령, 원시, 또는 레지스터 판독/기록인지를 결정하기 위해 조사된다. 원시 신호는 원시 및 제어 동작을 위해 액티브이다. SCidleL2 는 레지스터 판독/기록 동작인 경우에 설정된다. REGRW 버스 동기 로직 (512) 은 JTAG 명령 스텝이 레지스터 판독/기록 동작을 오버런하지 않도록 레지스터 판독/기록 (설계된 레지스터 r/w) 버스를 감시할 것이다. IOcntL2 레지스터는 레지스터 판독/기록 동작인 경우에 b'0001' 으로 설정된다. 이 때, IOCNT 는 레지스터 판독/기록 동작을 완료하기 위해 원시 TAP 명령의 정의된 시퀀스를 통해 진행된다.
CHKADR 상태 (912) 는 IDLE 상태 (902) 로 이동하고, 어텐션이 액티브이거나 CRC 가 인에이블되어 잘못 비교된다면 레지스터 판독은 페일 애크할 것이다. CHKADR 상태 (912) 는 IOBUFL2 어드레스가 원시 베이스 어드레스와 정합하지 않을 때 레지스터 판독/기록 명령 상태, REGRWGO 상태 (918) 중 한 상태로 이동한다. CHKADR 상태 (912) 는 IOBUFL2 어드레스가 원시 r/w 명령 어드레스와 정합할 때 LDTAPCMD 상태 (914), 원시 명령 상태중 하나로 이동한다. CHKADR 상태 (912) 는 IOBUFL2 어드레스가 제어 명령 어드레스중 한 개와 정합할 때 CHKSTOP 상태 (924) 로 이동한다. 이러한 명령은 어떤 JTAG 버스 활동없이 달성된다.
원시 명령 상태는 LDTAPCMD 상태 (914) 및 WAITTAPDONE 상태 (916) 를 포함한다. IOBUFL2 어드레스 바이트는 칩 내장 JTAG 인터페이스와 직접 통신하기 위해 예약된 어드레스와 정합한다. TMS 또는 TDI/TDO 활동이 발생하지만, 동시에 발생하지는 않는다. SSRL2 레지스터의 폭까지인 어떠한 개수의 비트도, IOBUFL2 10 바이트에 로드된 원시 TAP 명령에 따라 전송될 것이다.
LDTAPCMD (Load Tap Command) 상태 (914) 에서, TAP 명령은 IOBUFL2 (10 바이트) 로부터 JTAG 인터페이스 (204) 로 로드된다. LoadCmd 및 ValidBytes 신호는 유효 바이트로 정렬된 데이터를 SSRL2 의 최우측 바이트에 로드하기 위해 함께 실행된다. 이것은 데이터 필드내의 좌측 정렬된 I2C 에 의해 데이터가 전송되어야 하는 것을 의미한다. 예를 들어, BCR-b'000111' 이라면, 9 비트가 액세스 (114) 에 전송될 것이며, I2C 물리적 인터페이스 (104) 로부터의 데이터의 LSByte 는 8 개의 유효 비트를 포함해야 하고, I2C 물리적 인터페이스 (104) 로부터의 그 다음 바이트는 한 개의 유효 비트를 포함하며, 이것은 상기 바이트내의 최우측 비트로서 전송되어야 한다.
WAITTAPDONE (Wait for TAP Done) 상태 (916) 에서는, 활동이 없다. JTAG 인터페이스 (204) 는 원시 TAP 명령을 수행중이다. WAITTAPDONE 상태 (916) 는 하드웨어가 완성될 때 JTAG 인터페이스 (204) 시그널링으로부터의 CmdDone 에 의해 CHKSTOP 상태 (924) 로 이동한다.
CHKSTOP (check for I2C stop condition) 상태 (924) 에서, 레지스터 판독/기록 동작은 8 바이트를 항상 전송하지만 원시 명령은 SSRL2 내에서 유효한 데이터의 일부만으로 끝날 수도 있다. IOcntL2 (302) 에는 얼마나 많은 좌측 정렬된 바이트가 유효 데이터를 포함하는지를 지시하는 ValidByte 가 로드된다. 예를 들어, BCR (210) 는 b'000111' 으로 시작되었다 (9 비트 전송). SSRL2 (414) 는 초기에 우측 정렬된 9 비트를 유지하였기에, 바이트 6, 7 만이 유효하였다. 원시 명령이 완료된 후, TDO 데이터는 SSRL2 (414) 내에서 좌측 정렬되게 캡쳐되었고, 따라서 바이트 0, 1 만이 유효하다.
I2C 정지 비트가 검출되었을 때, CHKSTOP 상태 (924) 는 IDLE 상태 (902) 로되며, 더 이상의 활동은 필요하지 않다. 이것은, 레지스터 판독/기록 동작이 긴 타임 아웃으로 지연되지 않는 한 바람직하지 않은 경로이다. I2C 물리적 인터페이스 (104) 로 복귀될 필요가 있는 SSR (208) 에 판독 데이터가 있을 때 CHKSTOP 상태 (924) 는 LOADRESULTS 상태 (926) 로 이동한다. I2C 물리적 인터페이스 (104) 에 의해 요구되는 기록이 완료될 때 CHKSTOP 상태 (924) 는 WRTACK 상태 (910) 로 이동하고 I2C 물리적 인터페이스 (104) 는 슬레이브가 가장 최근에 전송된 바이트를 애크 (ACK) 하는 것을 예상할 것이다.
I2C 판독 상태는 LOADRESULTS 상태 (926), READACK 상태 (928), WAITREAD 상태 (930), 및 RBYTE 상태 (932) 를 포함한다.
I2C 판독 상태에서, I2C 물리적 인터페이스 (104) 는 슬레이브로부터 바이트를 판독하고 있다. LOADRESULTS 상태 (926) 및 READACK 상태 (928) 에 의하여 뒤따르는 레지스터 판독, 원시, 또는 제어 판독은 IO 버퍼 (201) 에 데이터가 비워질 때마다 수행된다. 마스터는 슬레이브로부터의 모든 타이밍을 다시 소유한다. 마스터는 ACK = 1 일 때 I2C 전송을 종료시키는 한 개 이상의 바이트를 판독할 수도 있다. WAITREAD 상태 (930), RBYTE 상태 (932), 및 CHKOVRFLW 상태 (908) 에 의해 형성된 루프는 모든 바이트가 전송될 때마다 한번씩 수행된다.
LOADRESULTS (SSR 로부터 IOBUF 로 데이터를 로드) 상태 (926) 에서, 방금수행된 JTAG 동작이 원시적이었다면, 데이터는 여전히 SSRL2 (414) 내에 있으며 IOBUFL2 (308) 내로 복사되어야 한다. 그렇지 않다면 이러한 동작은 아래 설명되는 바와같이 레지스터 판독/기록 동작의 스텝 6 에서 이미 행해졌고, SSR 은 불필요 정보이다.
READACK (슬레이브로부터 방금 판독된 I2C 바이트의 애크를 대기) 상태 (928) 에서, 물리적 인터페이스 (104) 는 애크 비트에 대한 대기를 포함하여 판독 타이밍을 주의한다. 도 6 에서, 물리적 인터페이스 (104) 가 애크를 수신한 후에, 물리적 인터페이스 (104) 는 NeedAckL2 래치를 설정하는 IAckReady 를 활성화시킴으로써 IOBUF (201) 로부터 또다른 바이트를 필요로 하는 것을 지시한다. 그 다음 바이트가 IOBUF (201) 로부터 Is_Byte_I 에 기록될 준비가 되어 있음을 지시하기 위해 IsWrtReady 는 물리적 인터페이스 (104) 에 대하여 다시 활성화된다. 동시에, NeedAckL2 가 리셋된다.
물리적 인터페이스 (104) 가 또다른 데이터 바이트를 마스터로 다시 전송중이거나 Ack = 1 일 때 판독의 종료시 I2C 프로토콜에 의해 유일하게 발생가능한 상태인 정지 비트를 대기중이라면, READACK 상태 (928) 는 WAITREAD 상태 (930) 로 이동한다.
WAITREAD (슬레이브로부터 한 바이트를 판독하기 위해 I2C 를 대기) 상태 (930) 에서는, 활동이 없다. 물리적 인터페이스 (104) 는 또다른 데이터 바이트를 마스터에 다시 전송중이거나, Ack = 1 일 때 정지 비트를 대기중이다.
마스터에 의해 판독된 제 1 데이터 바이트가 1 로 애크되었을 때 WAITREAD 상태 (930) 는 IDLE 상태 (902) 로 이동하고, 이후 물리적 인터페이스 (104) 에 의해 정지 비트가 검출된 후 즉시 IDLE 상태로 된다. 그렇지 않다면, NeedAckL2 는, IDLE 상태 (902) 로 될 때 물리적 인터페이스 (104) 가 또다른 바이트를 마스터로 전송을 완료하고 Ack = 1 을 수신한 때를 지시한다. IDLE 상태 (902) 는 물리적 인터페이스 (104) 가 정지 비트를 검색하고 NeedAckL2 를 리셋하며 정지 비트를 소모하도록 IsWrtReady 를 활성화시킬 것이다. 물리적 인터페이스 (104) 가 또다른 데이터 바이트가 필요하다는 것을 지시하는 Ack = 0 을 수신했을 때, WAITREAD 상태 (930) 는 RBYTE 상태 (9332) 로 이동한다.
RBYTE (또다른 데이터 바이트를 판독하도록 설정) 상태 (932) 에서, IOcntL2 (302) 는 감소되며, IOBUFL2 (308) 에서의 그 다음 데이터 바이트를 가리킨다.
레지스터 판독/기록 (REGRW) 명령 상태는 REGRWGO 상태 (918), WAITCMDDONE 상태 (920), 및 CMDSTEP 상태 (922) 를 포함한다. IOBUFL2 어드레스 바이트는 원시 또는 제어 명령을 위해 예약된 어떠한 어드레스와도 정합하지 않는다. 어드레스는 레지스터 판독/기록 어드레스로서 직접 해석된다. 레지스터 판독/기록 동작을 달성하기 위해 한정된 스텝 시퀀스에서 TMS 및 TDI/TDO 활동이 발생할 것이다. SSRL2 레지스터 (414) 의 폭인 정확히 64 비트가 전송될 것이다.
REGRWGO (레지스터 명령 시퀀스의 (다음) 스텝을 시작) 상태 (918) 에서, 레지스터 시퀀스의 (다음) 스텝은 JTAG 인터페이스 (204) 를 기동하도록 활성화된 LoadCmd 및 TapCmd 버스에 적용된다. IOcntL2 = step 6 이라면, 레지스터 판독에 의해 판독된 데이터는 SSRL2 (414) 내에 있으며, 액세스 (114) TAP 제어기를 RunTestIdle 로 복귀시키는 정정 (cleanup) 스텝 전에 IOBUFL2 (308) 에 저장될 필요가 있고, 그렇지 않다면 최종 명령 스텝은 SSR 내의 데이터를 파괴할 것이다. 이것은 BufLoad 를 활성화시킴으로써 달성된다.
WAITCMDDONE (TAP 및/또는 레지스터 판독 완료를 대기) 상태 (920) 에서는, 활동이 없다. JTAG 스캔 로직이 원시 TAP 명령을 수행중이거나 레지스터 판독 동작이 개시되었지만 아직 완료되지 않았다.
JTAG 스캔 로직으로부터의 CmdDone 신호가, 가장 최근의 명령 스텝이 완료되고 액세스로부터의 SCIDLE 신호가 액티브로의 복귀 이후에 따르는 인액티브로 된 이후에 RegisterRWdone 신호가 액티브인 것을 지시할 때, WAITCMDDONE 상태 (920) 는 CMDSTEP 상태 (922) 로 이동한다. RegisterRWdone 신호는 레지스터 판독의 스텝 3 동안에만 유효하고, 이후에 즉시 레지스터 판독 동작이 발생해야 한다.
CMDSTEP (그 다음 명령 스텝으로 전진) 상태 (922) 에서, IOcntL2 는 증가되고, IOcntL2 는 레지스터 판독/기록 명령 스텝을 통해 색인화하기 위하여 CmdMuxSel 에서 사용된다.
CMDSTEP 상태 (922) 는 SCOMGO 로 이동한다. 레지스터 판독 및 기록 명령 시퀀스는 정확히 길이 7 스텝이다. 7 스텝이 아직 완료되지 않았다면, 다음 스텝을 개시하기 위하여 다시 순환 작업이 제공된다. 제 7 스텝이 막 완료되었을 때 CMDSTEP 상태 (922) 는 CHKSTOP 상태 (924) 로 이동한다.
도 11 은 제작 시험 인터페이스 및 글로벌 내부 집적 회로 (I2C) 버스 상호접속 장치 (100) 의 액세스 (114), 경계-스캔 아키텍쳐 및 시험 액세스 포트 (TAP) 의 원시 기능을 도시한다. 액세스는 JTAG 스캔 기능 (1102) 및 스캔 통신 기능 (1104) 을 제공한다. JTAG 스캔 기능 (1102) 으로 인해 I2C 슬레이브 상태 머신 (102) 은 라인 TAP/SP 에서 지시된 시험 액세스 포트 (TAP) 인터페이스 (IEEE 1149.1) 를 통해 칩 링을 스캔할 수 있다. 어텐션 출력 및 파워온 리셋 (POR) 출력이 또한 라인 TAP/SP 에서 지시되어 제공된다. 어텐션 출력은 I2C 슬레이브 상태 머신 (102) 에게 알리기 위해 관측 또는 개입/복구를 요구하는 상태에 제공된다.
스캔 통신 기능 (1104) 은 칩의 기능 로직 및 스캔 기능간의 병렬 데이터 경로를 제공한다. 칩 클록이 실행되고 시스템에 동작하는 동안 액세스 동작이 수행될 수 있다. 스캔 통신 기능 (1104) 은 이러한 이점을 이용하여 동작하는 칩 또는 시스템과의 통신을 가능하게 한다.
클록 트리 (1114) 는 액세스 (114) 로부터 TCK 스캔 클록 입력을 수신한다. 클록 트리 (1114) 는 칩 클록을 또한 출력한다. 칩 스캔 링을 레벨 감지성 스캔 설계 (LSSD) 링, 및 BIST 채널과 같은 기능 그룹으로 편성하기 위해 세미커스텀 LBIST/SCAN 인터페이스 (1116) 가 임의로 사용된다. 인터페이스 (1116) 는 액세스 (114) 의 JTAG 스캔 (1102) 및 기능 칩 로직 (1118) 간에 연결된다.
바람직한 실시예의 새로운 지시이며 액세스 (114) JTAG 스캔 제어기의 설계에 추가되는 스캔 통신 즉시 판독은, 새로운 I2C - JTAG 인터페이스 기능의 설계를용이하게 한다.
새로운 지시 설계에 앞서, 칩 레지스터를 판독하는 스캔 통신 즉시 판독은 2가지 스텝을 요구한다. 즉, 스텝 1 은, 타겟 칩 레지스터의 내용을 추출하고 상기 내용을 액세스 스캔 통신 데이터 레지스터 (1104) 에 로드하기 위해 액세스 스캔 제어기 명령 '스캔 통신 판독' (Scan Communications Read, 16진수 코드 '17') 을 실행한다. 스텝 2 는, 액세스 스캔 통신 데이터 레지스터 (1104) 의 내용을 판독하기 위해 액세스 스캔 제어기 명령 '스캔 아웃' (Scan-out; 16진수 코드 '12') 을 실행한다. 이러한 2개 스텝 프로세스는 기존의 소프트웨어 및 하드웨어를 수용하도록 설계된다.
새로운 스캔 통신 즉시 판독 명령으로, 스텝 (1 및 2) 은 하나의 스텝으로 결합된다. 즉, 타겟 칩 레지스터 (1120) 의 내용을 추출하고 상기 내용을 액세스 스캔 통신 데이터 레지스터 (1104) 에 로드하며 이후 액세스 스캔 통신 데이터 레지스터 (1104) 의 내용을 즉시 판독하기 위해 액세스 스캔 제어기 명령 '스캔 통신 즉시 판독' (Scan Communications Read-Immediate; 16진수 코드 '14') 을 수행한다.
I2C - JTAG 인터페이스 기능이 강제로 원래의 2 스텝 프로세스를 이용하게 된다면, 상기 2 스텝 프로세스를 한 클록 사이클 (즉, 자신의 I2C 클록 사이클중 한 사이클) 에서 실행하는 것이 필요할 것이다. I2C 클록 사이클은 다른 시스템 클록에 관하여 변경될 수 있기에, 2 개 스텝이 성공적으로 완료되는 것을 보장할 수없다. 상기 프로세스를 한 개의 스텝으로 줄임으로써, 동작이 하나의 클록 사이클에서 완료되는 것을 보장할 수 있다.
상호접속 장치 (100) 및 I2C 상태 머신 (102) 의 동작은 다음에 따르는 예로부터 이해될 수도 있다.
64 비트 레지스터 판독/기록 동작은 시작 바이트 어드레스 (I2C 슬레이브 베이스 어드레스) 로 시작되며, 3바이트까지의 레지스터 판독/기록 어드레스 (LSByte, 상위 비트 우선) 가 임의로 뒤따르게 된다. 8 바이트 정렬된 레지스터 판독/기록 어드레스가 한 예로서 정의된다. 기록은 레지스터 판독/기록 어드레스의 모든 3 바이트와 함께 시작되어야 한다. 판독은 이전에 기록된 어드레스를 사용할 수도 있고 또는 재시작/판독 바이트 이전에 어드레스의 (CRC 검사가 인에이블되지 않는다면) 한 개, 두 개, 혹은 모든 3개 바이트를 수정할 수도 있다. I2C 슬레이브는 24 비트 레지스터 판독/기록 어드레스 (23 으로부터 0 으로, 0 = LSB) 를 구현한다. 액세스/JTAG 은 LSB 를 패러티 비트로서 정의한다. 나머지 23 비트 (23 으로부터 1 로) 는 바이트 정렬된 어드레스를 나타낸다. 레지스터 판독/기록 전송은 항상 폭 8 바이트이지만, 각 칩은 반드시 8 바이트 경계로 정렬될 필요가 없는 다양한 폭을 갖는 레지스터로 흔히 설계된다. I2C 레지스터 판독/기록 데이터 필드내에서 데이터의 특정 정렬은 구현되는 칩에 의존한다. 이 때 정지 비트가 수신된다면, 기록된 어드레스의 일부만이 변경될 것이며, 다른 어떠한활동도 개시되지 않는다.
기록 동작을 위해, 상기 기록 동작을 위한 데이터가 뒤따르며, 제 4 바이트 (LSByte, 상위 비트 우선) 로 시작한다. 한 개 이상의 데이터 바이트를 뒤따르는 정지 또는 오버플로우 상태는 레지스터 판독/기록 동작을 중지시키고, 레지스터 판독/기록 어드레스는 자동 증분되지 않는다. 8 바이트 이상의 데이터가 기록/판독될 때 오버플로우/언더플로우가 발생한다. 이러한 설계에 대하여 선택사항으로서, 8 바이트 이상의 기록/판독을 위한 연속적인 레지스터 판독/기록 어드레스를 기록/판독하기위해 레지스터 판독/기록 어드레스는 자동 증분될 수 있다. 8 바이트 이상의 데이터를 기록함으로써 동일한 레지스터 판독/기록 어드레스에서의 데이터가 중복기재되는 결과가 발생한다. 8 바이트 이하의 데이터를 기록함으로써 레지스터 판독/기록 어드레스에는 전체 8 바이트가 기록되는 결과가 발생하며, 데이터의 최상위 바이트는 이전의 동작으로부터 레지스터 판독/기록 데이터 IO 버퍼에 남아있는 것과 함께 기록될 것이다. CRC 검사가 인에이블됨으로써, 양호한 데이터 전송을 중복기재하는 것을 방지하기 위해 기록동안 슬레이브는 제 9 (CRC) 바이트를 애크하지 않을 것이다.
판독 동작을 위해, I2C 인터페이스에서 R/W 비트 = '1' 로 재시작 (정지 이후의 시작) 이 발생된다. 이것은 I2C 하드웨어의 내부를 중지하는 것으로 판독된 레지스터를 트리거한다. 이후 데이터 흐름은 반전되고 슬레이브는 각 애크를 위해 한 개 데이터 바이트 (LSByte 우선) 를 복귀시킨다. 레지스터 판독/기록 어드레스는 자동 증분되지 않는다. 8 바이트 이상이 판독된다면, 데이터는 LSByte 로 시작하며 반독될 것이다.
비 레지스터 TAP 명령 포맷은 예약된 레지스터 판독/기록 어드레스 (23:12) = x'524' (상기 어드레스는 재배치 가능함) 에 의해 식별된다. Tap Cmd 비트 (10:8) 값에 의해 선택되는 8 개 모드 동작이 있다. 비트 11 은 미래에 사용하기 위해 예약된다. 원시 TAP 명령 (TapCmd Addr(11:8) = '0000') 포맷에서, 레지스터 판독/기록 어드레스의 LSByte 는 비트를 TMS 또는 TDI 의 TAP 포트로 시트프 아웃시키고 TDO 를 캡쳐시키는 TAP 명령으로서 해석된다. 이것은 JTAG 로직에 의해 지원되는 어떠한 활동을 I2C 인터페이스가 수행하는 것을 가능하게 한다. 정지 또는 오버플로우 상태는 기록 동작 및 오버플로우 상태를 위해 자신의 현재 값으로 BCR 를 정지시킨다. 1 로 설정된 R/W 어드레스 비트를 갖는 정지 또는 시작은 판독 동작을 위해 자신의 현재 값으로 BCR 를 정지시킨다. 'BCR_value mod 8' (나머지가 0 이 아니라면 + 1) 이상의 데이터 바이트를 판독 또는 기록하는 것은 BCR 리로드 (reload) 가 데이터 스트림 (즉, 스캔 링에서의 기록/판독 연속 바이트) 을 계속하게 한다. 인에이블된 CRC 검사로서, CRC 바이트가 정확히 전송되지 않는한 모든 판독/기록 원시 및 레지스터 판독/기록이 억제된다.
Tap 명령 예 : 64 비트 + 비트 링 레지스터 판독/기록 아웃 : (CRC 디스에이블)
다음에 따르는 것은 1 비트 스캔 아웃이 뒤따르는 내부 스캔 링의 원시 64비트 스캔 아웃을 수행하는데 필요한 I2C 명령 시퀀스를 설명한다.
1. 원시 명령을 로드 : 슬레이브가 Tap 상태 머신을 우선 테스트 로직 리셋되게 하고 이후 한 지시를 스캔 인 하기 위해 시프트-IR 되도록 지시한다.
I2C 기록 시작 w/R/W 비트 = 0, 길이 = 5 바이트, 정지
바이트 1:08x : 10 TCK 펄스 (Addr/Cmd 바이트 이후의 데이터는 TMS 시퀀스)
바이트 2:40x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
바이트 4:DFx : (최우측 LSB 로부터 MSB 로 얻어진) 값의 TMS 시퀀스
바이트 5:00x : 연속되는 값의 TMS 시퀀스 (TaP SM 이 시프트-IR 되게 함)
2. 원시 명령 및 지시 데이터를 로드 : 슬레이브가 다음에 따르는 것을 Tap 제어기 지시 레지스터 (OF 80 00 41) 에 스캔하도록 지시한다. 이것은 내부 링의 스캔 아웃이며, 이후 Tap S/M 을 Exit1-IR 되게 한다.
I2C 기록 시작 w/R/W 비트 = 0, 길이 = 7 바이트, 정지
바이트 1:DEx : 32 TCK 펄스
바이트 2:40x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
바이트 4:41x : 지시의 LSB
바이트 5:00x : 지시의 다음 바이트
바이트 6:80x : 지시의 다음 바이트
바이트 7:0Fx : 지시의 MSB (내부 스캔 링의 스캔 아웃)
3. 원시 명령을 로드 : 슬레이브가 Tap 상태 머신을 (Exit1-IR 로부터) 시프트-DR 으로 시퀀스하도록 지시한다.
I2C 기록 시작 w/R/W 비트 = 0, 길이 = 4 바이트, 정지
바이트 1:02x : 4 TCK 펄스
바이트 2:40x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
바이트 4:03x : (Tap S/M 이 시프트-DR 되도록 최우측 LSB 로부터 MSB 로 얻어진) 값의 TMS 시퀀스
4. 원시 Cmd 를 로드 : 슬레이브가 전체를 위해 TMS = 0 을 갖는 64 개 TCK 펄스를 개시하고 시프트-DR 에서 Tap S/M 을 유지하도록 지시한다.
I2C 기록 시작 Cmd : 슬레이브가 전체를 위해 TMS = 0 을 갖는 64 개 TCK 펄스를 개시하고 시프트-DR 에서 Tap S/M 을 유지하도록 지시한다.
바이트 1:BEx : 64 TCK 펄스
바이트 2:40x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
5. 스캔 아웃 명령을 위한 복귀 데이터를 얻음 : TMS 는 0 이고, Tap S/M 을 시프트-DR 에 남겨둔다.
I2C 판독 재시작 w/R/W 비트 = 1, 길이 = 8 바이트, 정지
바이트 1:FEx : 데이터의 LSB
바이트 2:0Fx : 데이터의 다음 바이트
바이트 3:DCx : 데이터의 다음 바이트
바이트 4:BAx : 데이터의 다음 바이트
바이트 5:EFx : 데이터의 다음 바이트
바이트 6:BEx : 데이터의 다음 바이트
바이트 7:ADx : 데이터의 다음 바이트
바이트 8:DEx : 데이터의 MSB 바이트
6. 다음 원시 명령을 로드 : Tap S/M 이 1 비트 스캔 이후에 exit1-DR 로 되도록 슬레이브가 TMS = 1 을 갖는 1 개 TCK 펄스를 개시하도록 지시한다.
I2C 기록 시작 w/R/W 비트 = 0, 길이 = 3 바이트, 정지
바이트 1:FFx : 1 TCK 펄스
바이트 2:40x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
7. 스캔 아웃 명령을 위해 복귀 데이터를 얻음 (1 비트) : Tap S/M 을 Exit1-DR 으로 이동시킨다.
I2C 판독 재시작 w/R/W 비트 = 1, 길이 = 1 바이트, 정지
바이트 1:FEx : 데이터의 LSB (최우측 비트만이 유효)
8. 다음 원시 명령을 로드 : 슬레이브가 Tap 상태 머신을 테스트 로직 리셋 상태가 되게 지시한다.
I2C 기록 시작 w/R/W 비트 = 0, 길이 = 4 바이트, 정지
바이트 1:03x : 5 TCK 펄스
바이트 2:40x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
바이트 4:1Fx : 최우측 비트로부터 최좌측 비트로의 TMS 값의 시퀀스 (Tap 상태 머신을 리셋으로 복귀시키는데 5 비트만이 사용된다)
Tap 명령 예 : 2.5 바이트 레지스터 기록 :
다음에 따르는 것은 데이터의 2.5 바이트 (20 비트) 를 내부 스캔 링에 스캔 인 하는데 필요한 I2C 명령의 시퀀스를 설명한다 (주의 : 이러한 결과로 나타나는 스캔 인 데이터는 16 진수로 A EF BA 일 것이다).
1. 원시 명령을 로드 : 슬레이브가 Tap 상태 머신을 우선 테스트 로직 리셋되게 하고 이후 한 지시를 스캔 인 하기 위해 시프트-IR 되도록 지시한다.
I2C 기록 시작 w/R/W 비트 = 0, 길이 = 5 바이트, 정지
바이트 1:08x : 10 TCK 펄스 (Addr/Cmd 이후의 데이터는 TMS 시퀀스)
바이트 2:40x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
바이트 4:Dfx : (최우측 LSB 로부터 MSB 로 얻어진) 값의 TMS 시퀀스
바이트 5:00x : 연속되는 값의 TMS 시퀀스 (Tap SM 이 시프트-IR 되게 함)
2. 원시 명령 및 지시 데이터를 로드 : 슬레이브가 다음에 따르는 것을 Tap 제어기 지시 레지스터 (OF 80 00 41) 에 스캔하도록 지시한다. 이것은 내부 링의 스캔 아웃이며, 이후 Tap S/M 을 Exit1-IR 으로 되게 한다.
I2C 기록 시작 w/R/W 비트 = 0, 길이 = 7 바이트, 정지
바이트 1:DEx : 32 TCK 펄스
바이트 2:40x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
바이트 4:41x : 지시의 LSB
바이트 5:00x : 지시의 다음 바이트
바이트 6:80x : 지시의 다음 바이트
바이트 7:0Fx : 지시의 MSB (내부 스캔 링의 스캔 아웃)
3. 원시 명령을 로드 : 슬레이브가 Tap 상태 머신을 (Exit1-IR 로부터) 시프트-DR 으로 시퀀스하도록 지시한다.
I2C 기록 시작 w/R/W 비트 = 0, 길이 = 4 바이트, 정지
바이트 1:02x : 4 TCK 펄스
바이트 2:40x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
바이트 4:03x : (Tap S/M 이 시프트-IR 되도록 최우측 LSB 로부터 MSB 로얻어진) 값의 TMS 시퀀스
4. 원시 Cmd 를 로드 : 슬레이브가 전체를 위해 TMS = 0 을 갖는 8 TCK 펄스의 2개 시리즈로 구성되는 2 바이트 스캔 인을 개시하고 S/M 을 시프트-DR 에 남기도록 지시한다.
I2C 기록 시작 w/R/W 비트 = 0, 길이 = 5 바이트, 정지
바이트 1:06x : TCK 펄스 (전체에 대하여 TMS = 0 ; 2 바이트의 데이터가 있기 때문에, 16 TCK 펄스가 필요하며 따라서 내부 슬레이브 로직은 2 개의 개별적인 8 비트 스캔을 중지할 것이다)
바이트 2:40x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
바이트 4:BAx : 데이터의 제 1 바이트 (LSB)
바이트 5:EFx : 데이터의 다음 바이트
5. 원시 Cmd 를 로드 : 마지막 4 비트를 스캔 인함으로써 2.5 바이트 SCAN-IN 을 종료한다. 이것은 마지막 TCK 를 제외하고 전체를 위한 TMS = 0 을 갖는 4 TCK 펄스일 것이다. TMS = 1 을 갖는 마지막 TCK 은 TAP S/M 을 Exit1-DR 으로 되게 할 것이다.
I2C 기록 시작 w/R/W 비트 = 0, 길이 = 4 바이트, 정지
바이트 1:C2x : 4 TCK 펄스 (마지막 TCK 를 제외한 전체에서 TMS = 0)
바이트 2:40x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
바이트 4:BAx : 스캔 인 데이터의 최상위 4 비트 (최우측 비트)
6. 다음 원시 명령을 로드 : 슬레이브가 Tap 상태 머신을 테스트 로직 리셋 상태가 되도록 지시한다.
I2C 기록 시작 w/R/W 비트 = 0, 길이 = 4 바이트, 정지
바이트 1:03x : 5 TCK 펄스
바이트 2:40x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
바이트 4:1Fx : 최우측 비트로부터 최좌측으로인 TMS 값의 시퀀스 (Tap 상태 머신을 리셋으로 복귀시키는데 5 비트만이 사용된다)
공백 TAP 명령 (TapCmd 어드레스 (11:8) = '0001')
TCK/TMS/TDI 에서의 JTAG 활동이 억제된다. 예를 들어, 이 모드는 IR 으로의 새로운 명령을 스캔하는 TapCmd 시퀀스를 따르는 IR 상태 정보를 즉시 역판독하는 것이다.
SSR 데이터 (IO 버퍼) 에 I2C 기록하는 것은 효과가 없다. SSR 데이터의 I2C 판독은 가장 최근의 스캔 아웃된 JTAG/TDO 데이터를 복귀시킬 것이다.
Tap 명령 예 : 지시를 스캔 인 한후에 즉시 IR 상태를 판독
1. 원시 명령을 로드 : 슬레이브가 Tap 상태 머신을 우선 테스트 로직 리셋되게 하고 이후 한 지시를 스캔 인 하기 위해 시프트-IR 되도록 지시한다.
I2C 기록 시작 w/R/W 비트 = 0, 길이 = 5 바이트, 정지
바이트 1:08x : 10 TCK 펄스 (Addr/Cmd 바이트 이후의 데이터는 TMS 시퀀스)
바이트 2:40x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
바이트 4:Dfx : (최우측 LSB 로부터 MSB 로 얻어진) 값의 TMS 시퀀스
바이트 5:00x : 연속되는 값의 TMS 시퀀스 (TaP SM 이 시프트-IR 되게 함)
2. 원시 명령 및 지시 데이터를 로드 : 슬레이브가 다음에 따르는 것을 Tap 제어기 지시 레지스터 (OF 80 00 41) 에 스캔하도록 지시한다. 이것은 내부 링의 스캔 아웃이며, 이후 Tap S/M 을 Exit1-IR 으로 되게 한다.
I2C 기록 시작 w/R/W 비트 = 0, 길이 = 7 바이트, 정지
바이트 1:Dex : 32 TCK 펄스
바이트 2:40x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
바이트 4:41x : 지시의 LSB
바이트 5:00x : 지시의 다음 바이트
바이트 6:80x : 지시의 다음 바이트
바이트 7:0Fx : 지시의 MSB (내부 스캔 링의 스캔 아웃)
3. 원시 명령을 로드 : 슬레이브가 무엇이 스캔 제어기에서 마지막으로 스캔아웃되었는지를 판독하도록 지시한다 (이것은 지시 레지스터 스캔이 마지막 동작이었기에 IR-상태일 것이다).
I2C 기록 시작 w/R/W 비트 = 0, 길이 = 3 바이트, 정지
바이트 1:--x : 이 바이트는 이 명령에 대한 돈케어이다.
바이트 2:41x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
4. 원시 판독 명령을 위한 복귀 데이터를 얻음 ; (아래에서 점선으로 표시된) 스캔 아웃된 복귀 데이터
I2C 판독 재시작 w/R/W 비트 = 1, 길이 = 4 바이트, 정지
바이트 1:--x : IR 상태의 LSB
바이트 2:--x : IR 상태의 다음 바이트
바이트 3:--x : IR 상태의 다음 바이트
바이트 4:--x : IR 상태의 MSB
5. 다음 원시 명령을 로드 : 슬레이브가 Tap 상태 머신을 테스트 로직 리셋 상태가 되도록 지시한다.
I2C 기록 시작 w/R/W 비트 = 0, 길이 = 4 바이트, 정지
바이트 1:03x : 5 TCK 펄스
바이트 2:40x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
바이트 4:1Fx : 최우측 비트로부터 최좌측으로인 TMS 값의 시퀀스 (Tap 상태 머신을 리셋으로 복귀시키는데 5 비트만이 사용된다)
I2C 정지 시퀀스 발생
인에이블 어텐션 명령 (TapCmd 어드레스(11:8) = '0010') : 어텐션을 인에이블하는 I2C 방법이 액세스로부터 발생된다.
SSR 데이터로의 I2C 기록 (IO 버퍼) 은 I2C 슬레이브에 의해 어텐션 검사를 인에이블시킨다. JTAG 활동은 억제된다.
상기 시퀀스가 기록될 때, 어텐션이 액티브하지 않을 때에만 슬레이브는 레지스터 판독/기록 동작을 애크하는 것을 주의한다. 어텐션이 액티브일 때, 원시 Tap 명령만이 표준 I2C 애크 펄스로 애크될 것이다.
Tap 명령 예 : 어텐션 검사를 내부적으로 다시 인에이블시킴
1. I2C 기록 시작 w/R/W 비트 = 0, 길이 = 4 바이트, 정지
2. 바이트 1:--x :
바이트 2:42x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
3. I2C 정지 시퀀스 발생
어텐션 명령을 디스에이블 (TapCmd 어드레스(11:8) = '0011'). 액세스로부터 발생한 어텐션을 디스에이블하는 I2C 방법
SSR 데이터로의 I2C 기록 (IO 버퍼) 은 I2C 슬레이브에 의한 어텐션 검사를 디스에이블한다.
상기 시퀀스가 기록될 때, 슬레이브는 어텐션이 액티브 일지라도 레지스터 판독/기록 시퀀스 뿐만 아니라 원시 명령을 애크하는 것을 주의한다. 이 방법은 이후에 어텐션이 발생되게 하는 액티브인 머신 검사와 같은 이슈를 무효로 하는데 사용된다. 이것은 레지스터 판독/기록 에러로부터 발생되는 어텐션을 정정하지 못하며 레지스터 판독/기록 에러 이후에 수신된 데이터는 무시되어야 한다. 내정값으로 어텐션은 마스크 오프된다.
Tap 명령 예 : 내부적으로 어텐션을 마스킹
1. I2C 기록 시작 w/R/W 비트 = 0, 길이 = 4 바이트, 정지
2. 바이트 1:--x :
바이트 2:43x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
3. I2C 정지 시퀀스 발생
원시 명령 예 : CRC 검사를 내부적으로 인에이블한다. 바이트 시퀀스는 CRC 검사를 턴 온한다.
1. I2C 기록 시작 w/R/W 비트 = 0, 길이 = 3 바이트, 정지
2. 바이트 1:--x :
바이트 2:45x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
3. I2C 정지 시퀀스 발생
주의 : 바이트 (2:45x) 및 바이트 (3:52x) 가 슬레이브에 전송될 때까지 CRC 검사가 인에이블될 것이다.
예 : CRC 를 사용하여 레지스터 판독을 수행
CRC 를 사용하는 상기 예에 대한 구현예로는, 8 비트 CRC 누산기용으로 x8+ x4+ x3+ x2+ 1 이 있다.
CRC 검사를 시작하기 위해 원시 디코드를 기록
1. I2C 기록 시작 w/R/W 비트 = 0, 길이 = 3 바이트, 정지
2. 바이트 1:--x :
바이트 2:45x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
3. I2C 정지 시퀀스 발생
(CRC_CHECKING 이 이제 인에이블됨)
슬레이브 어드레스 및 3 바이트 어드레스 (이 예에서는 59x) 를 위한 CRC 바이트 및 판독될 어드레스를 전송한다.
1. I2C 기록 시작 w/R/W 비트 = 0, 길이 = 4 바이트, 정지
2. 바이트 1:03x : 레지스터 판독/기록 어드레스의 -LSB
바이트 2:00x : 레지스터 판독/기록 어드레스의 -Mid 바이트
바이트 3:80x : 레지스터 판독/기록 어드레스의 -MSB
바이트 4:59x : 8 개의 0 이 시프트 인된 후의 -CRC 바이트
3. I2C 정지 시퀀스 발생
(레지스터 판독/기록 어드레스 (800003) 가 슬레이브에 저장된다)
이루어질 때까지 원하는 만큼의 바이트를 판독하고, CRC 바이트는 I2C 버스에서 다시 전송되는 데이터에 대해서만 계산된다.
1. I2C 기록/ 시작 w/R/W 비트 = 1, 길이 = 8 바이트, 정지
이 예에서 1 내지 8 (가변 길이) 바이트를 판독
2. I2C 정지 시퀀스 발생
최종 판독 동작에서 계산된 CRC 바이트를 얻기 위해, (명령의 돈케어 부분에 '03'x 가 전송된다면) '11'x 와 함께 원시 디코드 '5247'x 를 CRC 바이트로서 전송할 필요가 있다.
1. I2C 기록/ 시작 w/R/W 비트 = 0, 길이 = 4 바이트, 정지
2. 바이트 1:--x : CRC 판독을 위한 돈케어 (이 경우에는 03x 가 사용됨)
바이트 2:47x : CRC 디코드 어드레스를 판독
바이트 3:52x : 원시 어드레스의 - MSB
바이트 4:11x : 8 개의 0 이 시프트 인된 후의 - CRC 바이트
3. I2C 정지 시퀀스 발생
(레지스터 판독/기록 어드레스 (800003) 가 슬레이브에 저장된다)
CRC 판독을 위한 원시 디코드를 전송한 후에, 수행된 레지스터 판독을 위한 CRC 를 얻기 위해 판독 시퀀스가 수행될 수 있다. 한 바이트만이 유효하기에 한 바이트만을 판독해야 하고 또는 그 나머지를 무시해야 한다. 버스 에러를 발생시키지 않고 상기 동작을 수행하기 위해 마스터는 상기 바이트 ('1'b) 를 애크하지 않아야 한다.
1. I2C 기록/ 시작 w/R/W 비트 = 1, 길이 = 1 바이트, 정지
이 예를 위해서 바이트 (#1) 를 판독 (한 바이트만이 유효하다)
2. I2C 정지 시퀀스 발생
CRC 바이트는 레지스터를 0 으로 출력하기 위해 이전에 계산된 바이트를 통해 전송되어야 하는 것을 주의한다.
이러한 바이트 시퀀스는 CRC 검사를 턴오프한다.
1. I2C 기록/ 시작 w/R/W 비트 = 0, 길이 = 3 바이트, 정지
2. 바이트 1:--x : -TCK 펄스
바이트 2:46x : 원시 Cmd 어드레스의 LSB
바이트 3:52x : 원시 Cmd 어드레스의 MSB
3. I2C 정지 시퀀스 발생
CRC 검사는 다음 프로그래머를 위해 이제 디스에이블된다.
본 발명이 도면에 도시된 본 발명의 바람직한 실시예의 상세한 설명과 함께 설명되었지만, 이러한 상세한 설명은 첨부된 청구범위에서 청구하는 바와같이 본 발명의 범위를 제한하려 하는 것이 아니다.
바람직한 실시예의 특징에 따라, 제작 시험 인터페이스 및 I2C 버스 상호접속 장치 (100) 는 내부 회로 데이터경로, 시험, 및 랩/필드 디버그 기능을 위한 제작 시험 하드웨어 사용을 가능하게 한다. 제작 시험 인터페이스 및 I2C 버스 상호접속 장치 (100) 는 새로운 스캔 제어기 지시, 스캔 통신 즉시-판독을 도입하여, I2C 버스 (106) 에서 레지스터 판독 응답 대기 시간을 감소시킨다. 제작 시험 인터페이스 및 I2C 버스 상호접속 장치 (100) 는 시스템 레벨 제작 시험을 위한 연결을 단순화 및 감소시킨다. 시스템 레벨 제작 시험은 시험 인터페이스를 위해 단일 I2C 연결을 사용할 수도 있어, 집적화 및 고온 기능 시험을 수행하는데 필요한 소프트웨어 및 시험 접속 프로시저를 간략히 한다.
바람직한 실시예의 새로운 지시이며 액세스 (114) JTAG 스캔 제어기의 설계에 추가되는 스캔 통신 즉시 판독은, 새로운 I2C - JTAG 인터페이스 기능의 설계를 용이하게 한다.
새로운 스캔 통신 즉시 판독 명령으로, 스텝 (1 및 2) 은 하나의 스텝으로 결합된다. 즉, 타겟 칩 레지스터 (1120) 의 내용을 추출하고 상기 내용을 액세스 스캔 통신 데이터 레지스터 (1104) 에 로드하며 이후 액세스 스캔 통신 데이터 레지스터 (1104) 의 내용을 즉시 판독하기 위해 액세스 스캔 제어기 명령 '스캔 통신 즉시 판독' (Scan Communications Read-Immediate; 16진수 코드 '14') 을 수행한다.
I2C - JTAG 인터페이스 기능이 강제로 원래의 2 스텝 프로세스를 이용하게 된다면, 상기 2 스텝 프로세스를 한 클록 사이클 (즉, 자신의 I2C 클록 사이클중 한 사이클) 에서 실행하는 것이 필요할 것이다. I2C 클록 사이클은 다른 시스템 클록에 관하여 변경될 수 있기에, 2 개 스텝이 성공적으로 완료되는 것을 보장할 수 없다. 상기 프로세스를 한 개의 스텝으로 줄임으로써, 동작이 하나의 클록 사이클에서 완료되는 것을 보장할 수 있다.
Claims (27)
- 제작 시험 인터페이스를 글로벌 직렬 버스에 연결하는 장치에 있어서,상기 글로벌 직렬 버스로 그리고 상기 글로벌 직렬 버스로부터 전송되는 데이터를 버퍼링하는 입력/출력 버퍼 로직;상기 입력/출력 버퍼 로직에 연결되며, 상기 입력/출력 버퍼 로직에 데이터를 송수신하는 슬레이브 인터페이스 로직; 및상기 입력/출력 버퍼 로직 및 상기 슬레이브 인터페이스 로직에 접속되고, 상기 입력/출력 버퍼 로직과의 데이터 교환을 페이싱하는 슬레이브 제어기를 포함하는 장치.
- 제 1 항에 있어서, 상기 입력/출력 버퍼 및 상기 글로벌 직렬 버스 간에 접속되고, 에러 상태를 처리하는 에러 핸들링 로직을 더 포함하는 장치.
- 제 2 항에 있어서, 상기 에러 핸들링 로직은 순환 중복 검사 (CRC) 계산 로직을 포함하는 장치.
- 제 1 항에 있어서, 상기 글로벌 직렬 버스는 내부 집적 회로 (I2C) 버스를 포함하는 장치.
- 제 1 항에 있어서, 상기 제작 시험 인터페이스는 조인트 테스트 액션 그룹 (JTAG) 인터페이스를 포함하며, 상기 슬레이브 인터페이스 로직은 상기 JTAG 인터페이스에 송수신되는 JTAG 형식 명령을 처리하는 장치.
- 제 5 항에 있어서, 상기 입력/출력 버퍼 및 상기 글로벌 직렬 버스 간에 접속되며 에러 상태를 처리하는 에러 핸들링 로직을 더 포함하며, 상기 JTAG 인터페이스는 에러를 지시하는 어텐션 신호를 상기 에러 핸들링 로직에 공급하는 장치.
- 제 5 항에 있어서, 상기 슬레이브 제어기는 상기 슬레이브 인터페이스 로직 및 상기 JTAG 인터페이스 간의 데이터 교환을 페이싱하는 장치.
- 제 5 항에 있어서, 상기 슬레이브 제어기는 상기 슬레이브 인터페이스 로직 및 상기 JTAG 인터페이스 간의 데이터 교환을 위해 경로 지정 및 조종하는 데이터를 제공하는 것을 특징으로 하는 장치.
- 제 5 항에 있어서, 상기 슬레이브 제어기는 레지스터 판독 및 기록 동작을 위해 상기 슬레이브 인터페이스 로직에 순서화된 명령 시퀀스를 제공하는 장치.
- 제 5 항에 있어서, 상기 슬레이브 인터페이스 로직은 JTAG 판독 및 기록 동작을 동시에 처리하고, 상기 슬레이브 제어기는 JTAG 지시 레지스터 (IR) 상태 판독 동작을 위한 판독 동작이 뒤따르는 기록 동작을 제공하는 장치.
- 제 5 항에 있어서, 상기 슬레이브 제어기는 레지스터 판독 및 기록 동작을 위한 레지스터 판독/기록 어드레스가 뒤따르는 시작 바이트 어드레스를 제공하는 장치.
- 제 5 항에 있어서, 상기 슬레이브 제어기는 스캔 통신 레지스터 판독 및 기록 동작을 위해 상기 슬레이브 인터페이스 로직에 순서화된 명령 시퀀스를 제공하는 장치.
- 제 5 항에 있어서, 상기 글로벌 직렬 버스는 내부 집적 회로 (I2C) 버스, 및 상기 I2C 버스와 상기 입력/출력 버퍼 로직간에 접속된 물리적 인터페이스를 포함하고, 상기 슬레이브 제어기는 상기 물리적 인터페이스와 상기 입력/출력 버퍼 로직간의 데이터 교환을 페이싱하는 장치.
- 제 13 항에 있어서, 상기 슬레이브 제어기는 상기 물리적 인터페이스와 상기 입력/출력 버퍼 로직간의 데이터 교환을 위해 조종하는 데이터를 제공하는 장치.
- 제 5 항에 있어서, 상기 슬레이브 제어기는 레지스터 판독 동작을 위해 상기슬레이브 인터페이스 로직에 명령을 제공하는 장치.
- 제 5 항에 있어서, 상기 슬레이브 제어기는 레지스터 기록 동작을 위해 상기 슬레이브 인터페이스 로직에 명령을 제공하는 장치.
- 제 5 항에 있어서, 상기 슬레이브 인터페이스 로직은 시험 클록 (TCK) 발생 로직을 포함하는 장치.
- 제 5 항에 있어서, 상기 슬레이브 인터페이스 로직은 상기 JTAG 인터페이스로부터 로드 명령 신호를 수신하는 장치.
- 제 18 항에 있어서, 상기 JTAG 인터페이스 및 상기 슬레이브 인터페이스 로직은 내부 JTAG 버스에 의해 연결되고 상기 로드 명령 신호는 상기 내부 JTAG 버스에서 활동을 개시하도록 활성화되는 장치.
- 제 5 항에 있어서, 상기 글로벌 직렬 버스는 내부 집적 회로 (I2C) 버스를 포함하고 애크 신호는 에러 핸들링용으로 사용되는 장치.
- 제 5 항에 있어서, 상기 슬레이브 제어기는 한 개 이상의 원시 동작을 수행하도록 상기 슬레이브 인터페이스 로직에 명령을 제공하는 장치.
- 제 5 항에 있어서, 상기 원시 동작은 상기 JTAG 인터페이스에 대한 제어, 지시, 데이터 및 상태 교환중 한 개 이상을 선택하는 장치.
- 제 5 항에 있어서, 상기 JTAG 인터페이스는 스캔 통신 즉시 판독 로직을 포함하는 장치.
- 제 5 항에 있어서, 상기 스캔 통신 즉시 판독 로직은 타겟 레지스터 내용을 추출하여 스캔 통신 데이터 레지스터에 로드하며 상기 스캔 통신 데이터 레지스터의 상기 내용을 즉시 판독하는 하나의 스텝을 수행하는 장치.
- 제 1 항에 있어서, 상기 슬레이브 제어기는 상기 입력/출력 버퍼 로직에 데이터 교환을 위해 경로 지정하고 조종하는 데이터를 제공하는 장치.
- 제작 시험 인터페이스를 글로벌 직렬 버스에 연결하는 방법에 있어서,상기 글로벌 직렬 버스에 연결된 물리적 인터페이스 및 상기 제작 시험 인터페이스에 연결된 내부 버스 간에 슬레이브 상태 머신을 제공하는 단계; 및상기 글로벌 직렬 버스로 및 상기 글로벌 직렬 버스로부터 전송되는 데이터를 버퍼링하는 단계와,상기 제작 시험 인터페이스 및 상기 글로벌 직렬 버스 간의 데이터 교환을 페이싱하는 단계를 수행하기위해 상기 슬레이브 상태 머신을 이용하는 단계를 포함하는 방법.
- 제작 시험 인터페이스를 글로벌 직렬 버스에 연결하는 집적 회로 장치에 있어서,상기 글로벌 직렬 버스로 및 상기 글로벌 직렬 버스로부터 전송되는 데이터를 버퍼링하는 입력/출력 버퍼 로직;상기 입력/출력 버퍼 로직에 연결되고, 상기 입력/출력 버퍼 로직에 데이터를 송수신하는 슬레이브 인터페이스 로직; 및상기 입력/출력 버퍼 로직 및 상기 슬레이브 인터페이스 로직에 접속되고, 상기 입력/출력 버퍼 로직과의 데이터 교환을 페이싱하는 슬레이브 제어기를 포함하는 장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/251,032 | 1999-02-18 | ||
US9/251,032 | 1999-02-18 | ||
US09/251,032 US6684362B1 (en) | 1999-02-18 | 1999-02-18 | Method and apparatus for connecting manufacturing test interface to a global serial bus including an I2 c bus |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20000071338A KR20000071338A (ko) | 2000-11-25 |
KR100337413B1 true KR100337413B1 (ko) | 2002-05-22 |
Family
ID=22950201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020000006160A KR100337413B1 (ko) | 1999-02-18 | 2000-02-10 | 내부 집적 회로 버스를 포함하는 글로벌 직렬 버스에 제작시험 인터페이스를 연결하는 방법 및 장치 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6684362B1 (ko) |
JP (1) | JP4056191B2 (ko) |
KR (1) | KR100337413B1 (ko) |
CN (1) | CN1240005C (ko) |
CA (1) | CA2290174A1 (ko) |
TW (1) | TW463094B (ko) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6799233B1 (en) * | 2001-06-29 | 2004-09-28 | Koninklijke Philips Electronics N.V. | Generalized I2C slave transmitter/receiver state machine |
US6954929B2 (en) * | 2001-07-30 | 2005-10-11 | Hewlett-Packard Development Company, L.P. | Method for just-in-time updating of programming parts |
US20040225783A1 (en) * | 2001-07-30 | 2004-11-11 | Erickson Michael John | Bus to multiple jtag bus bridge |
US20040187049A1 (en) * | 2003-02-27 | 2004-09-23 | Nptest, Inc. | Very small pin count IC tester |
US20050204222A1 (en) * | 2004-03-15 | 2005-09-15 | Swoboda Gary L. | Apparatus and method for eliminating the TMS connection in a JTAG procedure |
TWI275932B (en) * | 2005-08-19 | 2007-03-11 | Wistron Corp | Methods and devices for detecting and isolating serial bus faults |
US7627800B2 (en) * | 2006-05-22 | 2009-12-01 | International Business Machines Corporation | Communicating with error checking to a device capable of operating according to an address prefix serial bus protocol |
US7818641B2 (en) | 2006-10-18 | 2010-10-19 | Texas Instruments Incorporated | Interface to full and reduce pin JTAG devices |
US7802036B2 (en) | 2007-02-06 | 2010-09-21 | Seiko Epson Corporation | Serial communication system using an I2C bus as a serial bus |
US8478917B2 (en) | 2010-09-22 | 2013-07-02 | Microsoft Corporation | Automatic addressing protocol for a shared bus |
US20120324302A1 (en) * | 2011-06-17 | 2012-12-20 | Qualcomm Incorporated | Integrated circuit for testing using a high-speed input/output interface |
CN102262572B (zh) * | 2011-07-19 | 2013-05-08 | 浙江大学 | 一种带crc校验功能的iic总线接口控制器 |
JP5622878B2 (ja) * | 2012-04-05 | 2014-11-12 | 株式会社東芝 | 画像形成装置及び画像形成装置の制御方法 |
TWI493401B (zh) * | 2013-01-07 | 2015-07-21 | Quanta Comp Inc | 電腦系統及其觸控及顯示資料傳輸裝置與方法 |
CN104239169A (zh) * | 2013-06-14 | 2014-12-24 | 鸿富锦精密工业(深圳)有限公司 | 信号测试卡及方法 |
TWI493206B (zh) * | 2013-07-30 | 2015-07-21 | Ind Tech Res Inst | 積體電路裝置及串列式壓縮掃描訊號產生裝置之測試存取埠狀態機的控制方法 |
US20160306006A1 (en) * | 2015-04-16 | 2016-10-20 | HGST, Inc. | Self-testing a storage device via system management bus interface |
US10156606B2 (en) * | 2016-01-05 | 2018-12-18 | Test Research, Inc. | Multi-chassis test device and test signal transmission apparatus of the same |
JP6828271B2 (ja) * | 2016-05-18 | 2021-02-10 | ソニー株式会社 | 通信装置、通信方法、プログラム、および、通信システム |
TWI606394B (zh) * | 2016-05-26 | 2017-11-21 | 鴻海精密工業股份有限公司 | 燒錄系統及燒錄方法 |
IT201800005506A1 (it) * | 2018-05-18 | 2019-11-18 | Sistema di elaborazione, relativo circuito integrato e procedimento | |
EP3912048B1 (en) * | 2019-01-15 | 2023-07-19 | Heldeis, Christoph | Method for implicit addressing of electronic units and corresponding units |
CN110096399B (zh) * | 2019-04-25 | 2023-07-07 | 湖南品腾电子科技有限公司 | 一种硬件接口的调试方法 |
CN112463662B (zh) * | 2020-12-16 | 2024-04-05 | 福州创实讯联信息技术有限公司 | 一种用户态控制i2c设备的方法与终端 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0728750A (ja) | 1993-07-13 | 1995-01-31 | Mitsubishi Electric Corp | インターフェース変換装置 |
US5933614A (en) * | 1996-12-31 | 1999-08-03 | Compaq Computer Corporation | Isolation of PCI and EISA masters by masking control and interrupt lines |
US6185641B1 (en) | 1997-05-01 | 2001-02-06 | Standard Microsystems Corp. | Dynamically allocating space in RAM shared between multiple USB endpoints and USB host |
US6188381B1 (en) * | 1997-09-08 | 2001-02-13 | Sarnoff Corporation | Modular parallel-pipelined vision system for real-time video processing |
US6553439B1 (en) * | 1999-08-30 | 2003-04-22 | Intel Corporation | Remote configuration access for integrated circuit devices |
-
1999
- 1999-02-18 US US09/251,032 patent/US6684362B1/en not_active Expired - Lifetime
- 1999-11-22 CA CA002290174A patent/CA2290174A1/en not_active Abandoned
- 1999-12-23 TW TW088122703A patent/TW463094B/zh not_active IP Right Cessation
- 1999-12-30 CN CNB991274415A patent/CN1240005C/zh not_active Expired - Lifetime
-
2000
- 2000-02-10 KR KR1020000006160A patent/KR100337413B1/ko not_active IP Right Cessation
- 2000-02-17 JP JP2000039822A patent/JP4056191B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
TW463094B (en) | 2001-11-11 |
KR20000071338A (ko) | 2000-11-25 |
CN1264081A (zh) | 2000-08-23 |
JP4056191B2 (ja) | 2008-03-05 |
JP2000242573A (ja) | 2000-09-08 |
CA2290174A1 (en) | 2000-08-18 |
US6684362B1 (en) | 2004-01-27 |
CN1240005C (zh) | 2006-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100337413B1 (ko) | 내부 집적 회로 버스를 포함하는 글로벌 직렬 버스에 제작시험 인터페이스를 연결하는 방법 및 장치 | |
US6675284B1 (en) | Integrated circuit with multiple processing cores | |
US5056093A (en) | System scan path architecture | |
US7082481B2 (en) | Serial peripheral interface (SPI) apparatus with write buffer for improving data throughput | |
US7900106B2 (en) | Accessing sequential data in a microcontroller | |
US6430727B1 (en) | Diagnostic procedures in an integrated circuit device | |
JP4493739B2 (ja) | 集積回路装置の診断手順 | |
US20030035473A1 (en) | Self test circuit for evaluating a high-speed serial interface | |
JP4426655B2 (ja) | トリガシーケンシングコントローラ | |
JPH10253719A (ja) | Tapコントローラを有する集積回路 | |
US5357613A (en) | Time-domain boundary buffer method and apparatus | |
US5581564A (en) | Diagnostic circuit | |
EP0957429B1 (en) | Detecting communication errors across a chip boundary | |
JP4806747B2 (ja) | シリアライザ/デシリアライザ・バスコントローラ・インターフェース | |
US20030068000A1 (en) | System and method for connecting a host and a target | |
CN113010344B (zh) | 联合测试工作组存取接口装置、主机端以及目标系统 | |
US20050028059A1 (en) | Processor interface for test access port | |
Poirier | IEEE P1149. 5 to 1149.1 data and protocol conversion | |
CN114546866A (zh) | 一种jtag读指令延时处理方法 | |
TW202121184A (zh) | 聯合測試工作群組傳輸系統 | |
JPS6093855A (ja) | デ−タ伝送装置 | |
KR20000060284A (ko) | 통신 기능을 갖는 탭(Test Access Port) 및 그를 이용한 통신방법 | |
Young et al. | Interfacing IEEE 1149.5 to IEEE 1149.1 | |
JPH0399337A (ja) | データ処理ユニットの診断方法、データ処理ユニット、データ処理システム | |
US20050204222A1 (en) | Apparatus and method for eliminating the TMS connection in a JTAG procedure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130405 Year of fee payment: 12 |
|
FPAY | Annual fee payment |
Payment date: 20140425 Year of fee payment: 13 |
|
FPAY | Annual fee payment |
Payment date: 20150427 Year of fee payment: 14 |
|
LAPS | Lapse due to unpaid annual fee |