1. 서론
I²C는 소비자 전자기기의 요구를 지원하기 위해 프로세서를 장치 세트에 연결하는 저비용 방법을 제공하기 위해 수년 전에 도입되었습니다. 다양한 형태의 I²C는 여러 산업에서 장치 세트를 연결할 수 있는 저비용 기능 덕분에 널리 사용되고 있습니다 (소위 멀티드롭 방식). I²C는 종종 사이드 밴드 핀을 필요로 하고 상호 운용성 문제를 겪지만, 비교적 잘 작동해왔습니다.
모바일 무선 장치에서도 I²C 전통은 계속 이어졌지만, 변화하는 요구사항으로 인해 I²C는 점점 더 문제가 되었습니다. 센서 사용의 증가와 함께 I²C, SPI, UART 등 버스 선택의 단편화가 생기면서 대역폭 및 기타 문제를 해결해야 했습니다. 하지만 이러한 버스 중 어느 것도 복잡한 엔드 장치에서 핀 수 문제를 해결하지 못했습니다. 특히 인터럽트(컨트롤러에 알리는 타겟 장치), 슬립 및 리셋 신호 등을 위해 장치별 GPIO를 버스와 병렬로 추가해야 했습니다. 게다가, 전송/수신해야 하는 데이터 양이 증가함에 따라 버스 대역폭과 대기 시간에 대한 부담이 가중되었습니다. 더 많은 버스를 추가하면 더 많은 핀, 회로, 전력이 요구됩니다.
MIPI I3C 인터페이스는 이러한 센서 통합 문제를 해결하기 위해 개발되었으며, 또한 I²C, SPI, UART를 사용하는 동안 발생했던 여러 문제를 해결합니다. 이는 빠르고 저비용의 저전력, 관리되는 양방향 디지털 인터페이스를 제공합니다. MIPI는 성능, 전력, 여분의 핀(예: 타겟이 인터럽트 및 리셋 제어를 수행), 상호 운용성, 버스 관리 및 오류 처리(버스 정지 보호 포함)와 같은 주요 문제를 해결하는 데 중점을 두었습니다. MIPI I3C는 이러한 모든 문제를 해결하면서도 레거시 I²C와의 하위 호환성을 유지하여 전환과 발전을 돕기로 결정했습니다.
1.2 I3C 목적
I3C 인터페이스는 I²C 인터페이스의 기능을 개선하면서 하위 호환성을 유지하기 위해 고안되었습니다. 이 사양은 호스트 프로세서와 주변 장치(예: 센서) 간의 표준 멀티드롭 인터페이스를 정의합니다.
I3C 사양을 구현하면 시스템 설계자가 기존 인터페이스(I²C, SPI, UART 등)를 대체할 수 있는 유연성이 크게 향상되며, 시스템(예: 센서 하위 시스템) 내에서 증가하는 복잡성과 다양성을 가진 다양한 장치를 가능한 한 저렴한 비용으로 지원할 수 있습니다.
1.3 I3C 주요 기능
I3C 인터페이스의 두 가지 주요 관심사는 데이터를 전송하고 제어할 때 가능한 한 적은 에너지를 사용하는 것과 인터페이스에 사용되는 물리적 핀 수를 줄이는 것입니다.
따라서, I3C 인터페이스의 기능은 다음과 같습니다:
- 푸시-풀(Push-Pull)을 사용하여 최대 12.5MHz까지 지원하는 2-와이어 직렬 인터페이스
- 동일 버스에서 레거시 I²C 장치와의 공존(일부 제한 사항 존재)
- 레거시 I²C 장치에 대한 정적 주소 지정을 지원하면서 동적 주소 지정 지원
- 레거시 I²C 메시징
- I²C와 유사한 단일 데이터 속도 메시징(SDR)
- 선택적 고속 데이터 전송 메시징 모드(HDR):
- HDR-DDR을 통한 2배 데이터 전송률
- I3C BASIC에 포함되지 않음: HDR-TSL(삼진 기호 레거시 포함 버스용)
- I3C BASIC에 포함되지 않음: HDR-TSP(삼진 기호 순수 버스용, I²C 장치 없음)
- HDR-BT를 통한 대량 전송
- 물리적 및 가상으로 연결된 여러 장치의 멀티드롭 지원
- 멀티 컨트롤러 기능
- 인밴드 인터럽트 지원
- 핫 조인(Hot-Join) 지원
- I3C BASIC에 포함되지 않음: 동기 타이밍 지원
- 비동기 타임 스탬프(모드 0 전용)
- 그룹 주소 지정
- 추가 와이어 없이 타겟 리셋
- I3C BASIC에 포함되지 않음: 장치 조기 종료 모니터링
- I3C BASIC에 포함되지 않음: 장치 간 터널링(Device to Device(s) Tunneling)
- 일부 HDR 모드에 대한 멀티레인 데이터 전송이 I3C Basic에 포함됨
참고: SDR 모드 및 HDR-DDR 모드에 대한 멀티레인 데이터 전송은 I3C Basic에 포함되지 않음
I3C 인터페이스는 I²C에 비해 상당한 속도 향상을 제공하면서 버스 전력 효율성을 크게 향상시킵니다. Figure 2에서 Figure 5까지는 성능/전력 대비 타겟 장치 복잡성에 대한 절충을 제공하는 다양한 버스 모드 옵션을 보여줍니다. 모든 계산을 위해 다음 조건이 가정되었습니다:
- 장치들이 가까운 위치에 있음:
- 타겟들이 컨트롤러 가까이에 클러스터링됨
- 와이어에 지연 없음
- 각 와이어의 총 누설 전류: 4 μA
- 드라이버의 내부 저항: 90 Ω
- 총 버스 커패시턴스: 50 pF
- 버스 메인 클럭: 12.5 MHz
- V<sub>DD</sub> = 1.8V
- 오픈 드레인에서 풀업 저항기: 2833 Ω
- 데이터 전송 시 1과 0의 전송 확률이 동일함
2.2 정의
- 1-Wire: 통신 버스 프로토콜.
- ACK: '승인(acknowledge)'의 약어. NACK도 참조.
- Active Controller: 현재 I3C 버스의 제어권(즉, 컨트롤러 역할)을 가진 I3C 장치.
- Address Arbitration: 주소 중재를 통해 충돌을 해결하기 위한 과정.
- Address: 장치나 레지스터의 위치를 지정하는 비트 집합.
- Arbitrable: 중재에 따라 결정될 수 있는.
- Arbitration: 두 장치가 동시에 전송을 시작하는 경우, 버스 제어권을 결정하기 위해 중재가 필요함. 중재는 컨트롤러가 여러 타겟을 주소 지정할 때 타겟 전송 중에도 필요할 수 있음.
- Bit Banged: 프로토콜을 따르기 위해 GPIO가 소프트웨어에 의해 수동으로 변경되는 경우. 예를 들어, 소프트웨어는 SCL 핀을 읽고 쓰고 SDA 핀을 읽고 쓰는 방식으로 I²C 컨트롤러 모드를 쉽게 구현할 수 있음.
- Bridge Device: 네이티브 I3C 버스 프로토콜에서 다른 프로토콜(SPI, UART 등)로 변환을 허용하는 I3C 버스의 장치.
- Broadcast: 브로드캐스트 주소 7’h7E를 사용하여 여러 타겟 장치를 대상으로 하는 명령.
- Bus: SCL 및 SDA 라인의 물리적 및 논리적 구현.
- Bus Available Condition: STOP 이후 및 START 이전에, 버스 유휴 조건이 지속적으로 유지되는 기간(T<sub>AVAL</sub> 이상 지속됨)
- Bus Free Condition: STOP 후 및 START 이전에 순수 버스에서는 최소 T<sub>CAS</sub> 이상, 혼합 버스에서는 최소 t<sub>BUF</sub> 이상 지속되는 기간(표 85, 표 86, 섹션 5.1.3.2 참조).
- Bus Idle Condition: STOP 후 및 START 이전에 버스 유휴 상태가 최소 t<sub>IDLE</sub> 이상 지속되는 기간(표 86 및 섹션 5.1.3.2.3 참조).
- Bus Turnaround: 전송 장치가 명령을 보내고 수신 장치가 응답하기 위해 I3C 버스를 인계받는 과정.
- Characteristics: 장치의 사용 가능한 기능과 성능의 정량화.
- Clock to Data Turnaround Time: SCL 에지 수신과 SDA 변경 시작 사이의 시간. 표 87의 t<sub>SCO</sub> 참조.
- Coding: 데이터 전송 코딩 참조.
- Controller: I3C 버스를 제어할 수 있는 I3C 장치.
- 참고:
이전 I3C 및 I3C Basic 사양에서 컨트롤러 장치는 "마스터 장치"로 불렸습니다. 최신 I3C Basic 사양(및 I3C v1.1.1 사양)은 "마스터"라는 용어를 사용하지 않으며 "컨트롤러"라는 새로운 용어를 사용합니다. I3C 버스에서 이러한 장치와 역할의 기술적 정의는 변경되지 않았습니다. - Controller Role: I3C 버스의 제어 권한. Active Controller 참조.
- Controller Role Request: 컨트롤러 역할을 할 수 있는 장치(즉, 보조 컨트롤러)가 인밴드 인터럽트 요청 형식을 사용하여 버스의 다음 활성 컨트롤러가 되기를 요청하는 방법.
- CRC-5: 다섯 번째 차수 다항식 길이를 가진 순환 중복 검사: X⁵ + X² + X⁰.
- CRC-16: ANSI에서 정의한 16번째 차수 다항식 길이를 가진 순환 중복 검사, USB에 사용됨(일명 CRC-16-IBM): X¹⁶ + X¹⁵ + X² + 1.
- CRC-32: 32번째 차수 다항식 길이를 가진 순환 중복 검사: X³² + X²⁶ + X²³ + X²² + X¹⁶ + X¹² + X¹¹ + X¹⁰ + X⁸ + X⁷ + X⁵ + X⁴ + X² + X + 1.
- Data Transfer Coding: I3C 모드를 확장하여 추가 데이터 레인(즉, 멀티 레인)을 사용하는 데 필요한 특정 계약. 계약에는 프레임, 흐름, 데이터 비트/바이트 패킹 등의 구조화된 프로토콜 요소에 대한 변경이 포함될 수 있습니다. 이 사양의 일부 섹션에서는 멀티 레인과 관련하여 데이터 전송 코딩을 단순히 "코딩"이라고 할 수도 있습니다.
- Device: 컨트롤러 또는 타겟.
- Device ID: 센서 시스템 내에서 장치의 특성 또는 기능을 정의합니다.
- Dynamic Address: 버스 초기화 중에 할당되거나 지정되는 장치 주소. 일반적으로 전원이 켜진 후 발생합니다.
- Failsafe: I3C 장치의 버스 패드가 장치가 비활성 상태일 때 누설 전류가 증가하지 않는 경우 이를 Failsafe로 간주합니다. 패드는 장치가 비활성화되었거나 IO 레일이 비활성화되었거나 클램프된 경우 또는 둘 다의 이유로 인해 비활성화될 수 있습니다. Failsafe는 일부 핫 조인 장치에서만 중요합니다.
- Flow Element: 단어 또는 블록과 같은 구조화된 프로토콜 요소로, 프레임의 일부로 사용되어 데이터 전송의 다양한 단계를 나타내고, 버스 전환과 같은 다른 필요한 조건을 정의합니다.
- Frame: 프레임은 START로 시작하여 타겟의 주소, 데이터, 마지막으로 STOP으로 끝납니다.
- High: 논리적 '1'로 정의된 신호 레벨.
- High Data Rate (HDR): 두 클록 에지에서 데이터를 전송하여 더 높은 속도를 달성하는 고속 데이터 전송 모드.
- High-Keeper: SDA 및 때때로 SCL이 모든 장치에 대해 High-Z 상태일 때 약한 풀업 유형 장치가 사용됩니다.
- Host: 모바일 장치의 핵심 기능을 제공하는 하드웨어 및 소프트웨어.
- Hot-Join: 이전에 전원이 공급되지 않았거나 물리적으로 버스에 삽입된 장치가 이미 시작된 후 버스에 연결되는 경우, 핫 조인 메커니즘은 타겟이 동적 주소를 받을 준비가 되었음을 컨트롤러에 알리도록 허용합니다.
- Hot-Join Request: 타겟이 버스에 연결하고 컨트롤러에서 동적 주소를 요청하는 특별한 인터럽트 요청을 사용하는 방법입니다.
- Hot-Joining Device: 핫 조인 요청을 사용하여 버스에 연결하려는 장치(타겟 또는 보조 컨트롤러).
- In-Band Interrupt (IBI): 타겟 장치가 주소를 I3C 버스에서 중재된 주소 헤더로 보내 인터럽트를 알리기 위한 방법.
- I²C Device: I²C 사양을 충족하는 컨트롤러 또는 타겟 장치 [NXP01].
- I3C Basic Device: 이 I3C Basic 사양(전체 I3C 사양 [MIPI08]이 아님)의 요구 사항을 충족하는 컨트롤러 또는 타겟 장치. I3C Basic 장치는 이 I3C Basic 사양에서 정의된 코어 기능 및 선택적 기능만 지원하며 전체 I3C 사양에서 정의된 선택적 기능은 지원하지 않습니다.
- 참고:
I3C Basic 장치는 I3C 및 I3C Basic 사양의 핵심 기능과 호환되도록 정의되었습니다. I3C Basic의 선택적 기능 및 기능과 관련하여 I3C v1.1.1의 개요 및 이 사양의 기타 섹션에서 자세히 설명되어 있습니다. - I3C Basic Controller: 컨트롤러 역할을 수행할 수 있는 I3C Basic 장치로, 버스의 컨트롤러 역할을 담당할 수 있습니다.
- I3C Controller: 컨트롤러 참조.
- I3C Basic Device: 이 I3C Basic 사양(전체 I3C 사양 [MIPI08]이 아님)의 요구 사항을 충족하는 컨트롤러 또는 타겟 장치. 즉, I3C Basic 장치는 이 I3C Basic 사양에서 정의된 코어 기능 및 선택적 기능만 지원하며, 전체 I3C 사양에서 정의된 선택적 기능은 지원하지 않습니다.
- 참고:
I3C Basic 장치는 I3C 및 I3C Basic이 공유하는 핵심 기능과 호환되도록 정의되었습니다. I3C v1.1.1의 개요 및 I3C Basic에 포함되지 않은 기능과 I3C v1.x 장치와의 호환성 문제에 대해서는 서문을 참조하십시오. 이 사양의 다른 섹션에서도 특정 기능을 정의합니다. - I3C Basic Controller: 컨트롤러 역할을 할 수 있는 I3C Basic 장치로, 버스의 컨트롤러 역할을 수행할 수 있습니다.
- I3C Controller: Controller를 참조하십시오.
- I3C Device: 이 I3C Basic 사양 또는 I3C Basic과 호환 가능한 전체 I3C 사양(예: I3C v1.1.1 [MIPI08])의 버전을 충족하는 컨트롤러 또는 타겟.
- 참고:
이 사양에서 I3C 장치는 일반적으로 I3C와의 호환성을 설명합니다. I3C 장치가 항상 I3C Basic 장치를 의미하는 것은 아니며, 기술적으로 중요한 구분이 아닙니다. 그러나 I3C Basic 장치와 전체 I3C 사양을 모두 지원하는 장치가 공존하는 경우에는 I3C Basic과 호환되지 않는 기능을 사용할 때 제한이 있을 수 있습니다. 이러한 호환성 문제에 대한 개요는 서문을 참조하십시오. - I3C Master: 더 이상 사용되지 않는 용어로, Controller를 참조하십시오.
- I3C Slave: 더 이상 사용되지 않는 용어로, Target을 참조하십시오.
- I3C Target: Target을 참조하십시오.
- Legacy I²C: I²C의 산업 표준 아키텍처를 유지하며 기존 I²C 타겟 장치를 지원합니다. I3C는 I²C 버스 컨트롤러를 지원하지 않습니다.
- Low: 논리적 '0'로 정의된 신호 레벨.
- Master: 더 이상 사용되지 않는 용어로, Controller를 참조하십시오.
- Message: 장치 간의 패킷화된 통신.
- Minimal Bus: 하나의 컨트롤러 장치(기능이 축소될 수 있음)와 고정되고 예약된 타겟 주소 값 7'h01을 가진 하나의 활성 타겟 장치가 있는 I3C 버스. 읽기 전용 타겟 장치가 최소 버스에 추가될 수 있지만, 추가적인 읽기-쓰기 타겟 장치는 허용되지 않습니다.
- MIPI Manufacturer ID: MIPI 호환 장치의 벤더를 위한 2바이트/16비트 고유 식별자 [MIPI01].
- Mixed Bus: I²C 및 I3C 장치가 I3C 버스에 모두 존재하는 I3C 버스 토폴로지. 혼합 고속 버스 또는 혼합 저속/제한 버스일 수 있습니다.
- Mixed Fast Bus: I²C 장치가 SCL 라인에 진정한 I²C 50 ns 스파이크 필터를 가지고 있는 I3C 버스에서 I²C 및 I3C 장치가 모두 존재하는 버스 토폴로지.
- Mixed Slow/Limited Bus: I²C 장치가 SCL 라인에 I²C 50 ns 스파이크 필터를 가지고 있지 않은 I3C 버스에서 I²C 및 I3C 장치가 모두 존재하는 버스 토폴로지.
- Mode: I3C 및 I3C Basic에서 사용되는 서로 다른 데이터 전송 방법을 구별하며, 레거시 I²C 모드, 단일 데이터 속도 모드(SDR), 고속 데이터 속도 모드(HDR), 듀얼 데이터 속도 모드(HDR-DDR), 및 HDR 벌크 전송 모드(HDR-BT)를 포함합니다. I3C Basic은 HDR-TSL 및 HDR-TSP와 같은 HDR 3진법 모드에 대한 지원을 포함하지 않습니다.
- Multi-Controller: 버스에 존재하는 여러 버스 컨트롤러. 버스의 여러 노드가 전송을 시작해야 할 때 사용됩니다.
- Multi-Drop: 중재 과정을 통해 어떤 장치가 어느 시점에서 데이터를 전송할지 결정하여 데이터를 전송하는 버스.
- Multi-Lane: 다양한 I3C 모드에서 더 빠른 데이터 전송을 달성하기 위해 물리적 배선(예: SDA 라인과 함께 추가 데이터 레인)을 사용하는 경우.
- NACK: '확인하지 않음'을 의미하며, ACK가 설정되지 않았음을 의미합니다. ACK 참조.
- Offline Capable: 오프라인 기능을 갖춘 장치는 물리적 I3C 버스에서 연결을 끊거나 I3C 버스에서의 I3C 트래픽을 무시할 수 있는 장치입니다. 장치의 오프라인 기능은 버스 특성화 레지스터에 반영된 기능 중 하나입니다.
- Open Drain: 활성 풀다운과 함께 High-Z 상태. 일반적으로 수동 풀업과 함께 사용됩니다.
- Park: 컨트롤러(또는 읽기 시 타겟)에 의해 설정된 논리적 High 레벨로, 버스를 전환하기 전에 논리적 Low로 드라이브하거나 그렇지 않으면 약한 풀업에 의해 High 상태로 유지됩니다.
- Peripheral: 장치의 논리 부분으로, 일반적으로 FIFO 또는 기타 버퍼와 같은 요소 및 프로세서에 대한 내부 버스와의 인터페이스를 포함하여 I3C 버스 프로토콜을 구현하는 부분입니다.
- Preamble: HDR-DDR에서 데이터 워드 앞에 오는 비트들.
- Primary Controller: I3C 버스를 초기화하고 모든 타겟 장치의 구성을 수행하는 컨트롤러 기능을 가진 I3C 장치입니다. 버스의 초기 상태에서 권한을 가지며, 버스가 구성되면 첫 번째 활성 컨트롤러가 됩니다.
- Pull-Down: 버스를 논리적 Low 상태로 끌어내리는 데 사용되는 활성 메커니즘입니다.
- Pull-Up: 버스를 논리적 High 상태로 끌어올리는 메커니즘으로, 활성적일 수도 있고 수동적일 수도 있습니다.
- Pure Bus: I3C 장치만 존재하는 버스 토폴로지. I²C 장치는 Pure Bus에서 허용되지 않습니다.
- Push-Pull: 출력 드라이버에 활성 풀다운 및 활성 풀업이 적용됩니다.
- Read Segment: 타겟을 주소 지정하는 읽기 트랜잭션으로 구성된 일련의 흐름 요소로, 주어진 HDR 모드의 직접 SET CCC 흐름 내에서 사용됩니다.
- Repeated START: 연속된 STOP 없이 연달아 발생하는 두 번 이상의 START. 컨트롤러가 I3C 버스에서 첫 번째 STOP을 생성하지 않고 통신을 계속하고자 할 때 사용됩니다. 이 사양에서는 Repeated START를 'Sr'로 약어합니다. 이는 I²C에서 Repeated START와 동등합니다 [NXP01].
- Route: 두 개의 다른 I3C 버스를 연결하는 장치 내 경로. 하나의 장치가 하나 이상의 경로를 포함할 수 있습니다.
- Routing Device: I3C 버스에서 두 개 이상의 다른 I3C 버스 간의 대화를 허용하는 장치. 트랜잭션을 버퍼/큐에 저장하여 장치가 투명하지 않게 작동하도록 합니다.
- SDR-Only: SDR 모드만 지원하는 I3C 장치로, HDR 모드를 지원하지 않습니다.
- Secondary Controller: 처음에는 타겟 역할을 하지만, 필요시 다른 컨트롤러(주 컨트롤러 포함)로부터 컨트롤러 역할을 수락할 수 있는 컨트롤러 기능이 있는 I3C 장치.
- Segment: 타겟이나 그룹을 주소 지정하는 읽기 또는 쓰기 트랜잭션으로 구성된 일련의 흐름 요소로, HDR 모드 내에서 직접 CCC 흐름의 일부로 사용됩니다.
- Single Data Rate (SDR): 클록의 한쪽 가장자리에만 데이터를 전송하는 단일 데이터 속도.
- Slave: 더 이상 사용되지 않는 용어로, Target을 참조하십시오.
- Spike Filter: 50ns보다 짧은 SCL(SDA) 스파이크를 제거하는 필터. I²C 사양의 입력 필터로 알려져 있습니다.
- Stall: 특정 일시적인 조건에서 SCL 라인을 낮은 상태로 유지하는 I3C 컨트롤러의 동작.
- START: SDA 라인이 High에서 Low로 전환되고 SCL 라인이 High 상태를 유지할 때의 I3C 버스 상태. 이 사양에서는 START를 'S'로 약어합니다.
- START Request: 컨트롤러가 유휴 상태의 I3C 버스에서 START를 요청하기 위한 타겟의 방법.
- Static Address: 고정되어 있으며 변경할 수 없는 장치 주소.
- STOP: SDA 라인이 Low에서 High로 전환되고 SCL 라인이 High 상태를 유지할 때의 I3C 버스 상태. 이 사양에서는 STOP을 'P'로 약어합니다.
- Swizzle: 비트를 교환하거나 혼합하는 것.
- T-Bit: ACK/NACK 메커니즘의 대안으로, 비트를 전환하는 것
- 타겟: 타겟 장치는 컨트롤러의 공통 또는 개별 명령에만 응답할 수 있습니다.
참고: 이전 버전의 I3C Basic 사양(및 일부 이전의 전체 I3C 사양)에서는 타겟 장치를 "Slave" 장치라고 불렀습니다. 이번 I3C Basic 사양 버전에서는 "Slave"라는 용어를 더 이상 사용하지 않고, 대신 "Target"이라는 새로운 표준 용어를 사용합니다. 이 장치의 기술적 정의와 I3C 버스에서의 역할은 변경되지 않았습니다. 별도로 지정하지 않는 한, 타겟이라는 용어는 I3C Basic 및 I3C 간의 일반 용어입니다. 이러한 장치는 I3C Basic 사양이나 전체 I3C 사양의 호환 버전([MIPI08])을 준수할 수 있습니다.
- Target Reset: 타겟 리셋 메커니즘을 통해 컨트롤러는 특정 타겟 장치의 리셋을 요청할 수 있습니다. 여기에는 I3C 주변 장치의 리셋, 장치 전체의 리셋, 깊은 수면 상태에서의 깨우기가 포함됩니다. 타겟 리셋은 I3C 프로토콜의 다른 어떤 방식으로도 발생할 수 없는 특수한 버스 활동 패턴(특히 HDR 종료 패턴의 확장)을 사용합니다.
- Termination Marker: 특정 흐름 요소의 끝, 세그먼트, 또는 컨트롤러가 브로드캐스트 CCC 흐름의 일부로 보낸 데이터 메시지를 나타내는 흐름 요소 또는 다른 고유한 HDR 패턴입니다.
- Ternary Mode: 이러한 모드는 전체 I3C 사양에 정의되어 있으며, I3C Basic에서는 HDR-TSP(순수 버스용 삼진 기호) 모드와 HDR-TSL(레거시 포함 버스용 삼진 기호) 모드에 대한 지원을 포함하지 않습니다.
- Timestamping: 이벤트가 발생한 시간에 대한 타임스탬프를 부여하는 작업입니다.
- Timing Control: I3C 버스 장치 및 이벤트를 동기화하고/또는 타임스탬프화하는 목적으로 시간 정보를 교환하고 제어하는 방법입니다. 자세한 내용은 섹션 5.1.8을 참조하십시오.
- Virtual Target: 공통 세트의 I3C 패드를 공유하는 여러 타겟 장치를 나타내는 물리적 장치입니다. 일반적으로 여러 가상 타겟이 단일 장치 내에 구현되며, 버스 연결을 관리하는 브리지/허브가 포함될 수 있습니다. 자세한 내용은 표 5, 섹션 5.1.2.1.2 및 섹션 5.1.9.3.19를 참조하십시오.
- Virtual Target Detect Operation: 특정 I3C 장치 내에서 동일한 주변 논리를 공유하는 가상 타겟을 결정하는 방법입니다.
- Word: 16개의 페이로드 비트와 두 개의 패리티 비트를 포함한 전송입니다.
- Write Segment: HDR 모드의 특정 프레임 내에서 타겟 또는 그룹을 대상으로 하는 쓰기 트랜잭션으로 구성된 흐름 요소의 시리즈입니다. 일반적으로 직접 설정 CCC 흐름의 일부입니다.
2.3 약어
- ACK: Acknowledge(승인)
- e.g.: For example (예를 들어, 라틴어: exempli gratia)
- High-Z: 출력 드라이버가 고임피던스 모드로 설정됨 (전류 소스 또는 싱크가 불가)
- i.e.: That is (즉, 라틴어: id est)
- NACK: Not Acknowledge (승인 안 함)
- P: STOP (정지)
- PHY: Physical Layer (물리 계층)
- S: START (시작)
- Sr: Repeated START (반복 시작)
- T: Transition Bit (전환 비트)
2.4 두문자어
- AXI: 고급 확장 인터페이스 (Advanced eXtensible Interface)
- BCR: 버스 특성 레지스터 (Bus Characteristics Register)
- CCC: 공통 명령 코드 (Common Command Code)
- CRC: 순환 중복 검사 (Cyclic Redundancy Check)
- CRR: 컨트롤러 역할 요청 (Controller Role Request)
- D2DT: 장치 간 터널링 (Device to Device(s) Tunneling)
- DCR: 장치 특성 레지스터 (Device Characteristics Register)
- DDR: 더블 데이터 속도 (Double Data Rate)
- ESD: 정전기 방전 (Electro Static Discharge)
- FSM: 유한 상태 기계 (Finite State Machine)
- HDR: 고속 데이터 속도 (High Data Rate)
- HDR-DDR: HDR 더블 데이터 속도 모드 (HDR Double Data Rate Mode)
- IBI: 인밴드 인터럽트 (In-Band Interrupt)
- IMU: 관성 측정 장치 (Inertial Measurement Unit)
- LCR: 레거시 특성 레지스터 (Legacy Characteristics Register)
- LIN: 로컬 인터커넥트 네트워크 (Local Interconnect Network)
- LSB: 최소 중요 바이트 (Least Significant Byte)
- LSb: 최소 중요 비트 (Least Significant Bit)
- Mbps: 초당 메가비트 (Megabits per second)
- MHz: 메가 헤르츠 (Mega Hertz)
- MID: MIPI 제조업체 식별 [MIPI01]
- MSB: 최대 중요 바이트 (Most Significant Byte)
- MSb: 최대 중요 비트 (Most Significant Bit)
- NVMEM: 비휘발성 메모리 (Non-Volatile Memory)
- OCP: 오픈 코어 프로토콜 (Open Core Protocol)
- OD: 오픈 드레인 (Open Drain)
- SCL: 직렬 클럭 (Serial Clock)
- SDA: 직렬 데이터 (Serial Data)
- SDR: 단일 데이터 속도 (Single Data Rate)
- SPI: 직렬 주변 장치 인터페이스 (Serial Peripheral Interface)
- SRFF: 상태 유지 플립플롭 (State Retention Flip-Flop)
- TSL: 삼진 기호 레거시 (Ternary Symbol Legacy)
- TSP: 순수 버스를 위한 삼진 기호 (I²C 장치 없음) (Ternary Symbol for Pure Bus (no I²C Devices))
- UART: 범용 비동기 수신 송신기 (Universal Asynchronous Receiver Transmitter)
4 기술 개요 (참고용)
이 섹션은 I3C 버스, I3C 인터페이스, 그리고 I3C 컨트롤러 및 타겟 장치를 전반적으로 설명합니다.
I3C는 양방향 시리얼 버스이며, 여러 타겟 장치(예: 센서)를 위해 최적화되었고, 한 번에 하나의 I3C 컨트롤러 장치에 의해 제어됩니다. I3C는 많은 레거시 I²C 장치와 하위 호환되지만, I3C 장치는 훨씬 높은 속도, 새로운 통신 모드, 장치 역할 변경 기능을 지원합니다. 예를 들어, 초기 컨트롤러가 협력적으로 버스에서 컨트롤러 역할을 다른 I3C 장치(즉, 보조 컨트롤러)로 전달할 수 있는 기능을 포함합니다(두 번째 I3C 장치가 해당 기능을 지원할 경우).
I3C Basic은 I3C의 하위 집합으로 I3C와 상호 운용될 수 있도록 정의되었습니다. 이 I3C Basic 사양에서 I3C 정의에는 다음이 포함됩니다:
- 많은 레거시 I²C 타겟 장치 및 메시지 지원
- I3C 단일 데이터 속도 모드 (SDR 모드): I²C 프로토콜의 새로운 I3C 강화 버전으로, 프라이빗 메시지를 지원하고 두 가지 유형의 기본 내장 메시지를 추가합니다:
- 브로드캐스트 메시지: 버스에 있는 모든 I3C 타겟에 전송됨
- 다이렉트 메시지: 특정 타겟에 주소가 지정됨
- I3C 고속 데이터 속도 모드 (HDR 모드): 추가 기능을 제공하는 추가 옵션 모드:
- 이중 데이터 속도 (HDR-DDR) 모드: I²C 프로토콜과 크게 다르지 않은 SDR 모드와 동일한 신호를 사용하지만, SDR의 약 2배 속도로 동작
- 대량 전송 (HDR-BT) 모드: 단일, 이중 또는 쿼드 레인 구성에서 가능한 최대 처리량을 제공하는 클럭 및 데이터 전송 모드
각 I3C 모드의 작동에 대해 세부적이고 저수준의 도입을 원하는 독자는 부록 C의 참고 예시 웨이브폼을 연구하고 비교할 것을 권장합니다.
4.1 I3C의 기본 원칙
I3C는 여러 통신 형식을 지원하며, 모두 2선 인터페이스를 공유합니다.
두 선은 SDA와 SCL로 지정됩니다:
- SDA (Serial Data): 양방향 데이터 핀
- SCL (Serial Clock): 클럭 핀이거나 특정 HDR 모드에서 양방향 데이터 핀이 될 수 있음
I3C 버스는 다양한 메시지 유형의 혼합을 지원합니다:
- I²C와 유사한 SDR 메시지, SCL 클럭 속도는 최대 12.5 MHz
- 버스의 모든 타겟 또는 특정 타겟과 각각 통신할 수 있도록 컨트롤러가 사용하는 브로드캐스트 및 다이렉트 공통 명령 코드(CCC) 메시지
- HDR 모드 메시지, 동등한 클럭 주기당 더 높은 데이터 속도를 달성
- 레거시 I²C 타겟에 대한 I²C 메시지
- 타겟이 컨트롤러에게 보내는 START 요청, 예를 들어 In-Band Interrupt를 보내거나 컨트롤러 역할을 요청하기 위해
I3C 버스의 예제 트래픽 패턴은 그림 6에 나와 있습니다.
그림 7은 I3C 통신이 어떻게 시작되는지 보여줍니다:
- 모든 I3C 통신은 프레임 내에서 발생합니다. 프레임은 START로 시작하여 하나 이상의 전송과 STOP으로 끝납니다.
- I3C Basic에서 지원되거나 I3C Basic 디바이스에서 허용되는 HDR 모드의 경우:
- 먼저, 모든 I3C 버스 타겟에 전송되는 전용 브로드캐스트 I3C 주소(7'h7E)가 발행됩니다.
- 그런 다음, HDR 모드로 들어감을 알리기 위해 하나의 Enter HDR CCC가 발행됩니다. 각 HDR 모드는 고유한 EnterHDR CCC를 가지고 있습니다.
- 그 후 하나 이상의 HDR 전송이 이어집니다.
- HDR 모드는 HDR Exit 패턴 프로토콜을 사용하여 종료됩니다.
I3C는 프레임 캡슐화 방식을 기반으로 합니다. 프레임은 데이터 페이로드를 포함하며, 데이터 페이로드의 전송 프로토콜은 SDR 또는 HDR입니다. 프레임은 I²C와 유사한 버스 관리에 의해 경계가 설정됩니다.
I3C 프레임에는 최소한 START, 헤더, 데이터, 그리고 STOP이 항상 포함됩니다.
START 이후의 헤더는 버스 중재를 허용합니다. 컨트롤러는 이 헤더를 사용하여 타겟 디바이스에 주소를 지정합니다. I3C 타겟 디바이스는 헤더 중재를 여러 목적으로 사용할 수 있습니다: In-Band Interrupt, Hot-Join, 그리고 Secondary Controller 기능을 위해서입니다.
공통 명령 코드(CCC)는 High Data Rate (HDR) 모드로 들어가는 데 사용됩니다. HDR 메시지의 I3C 버스 활동이 레거시 I²C 형식을 따르지 않는다는 점을 이해하는 것이 중요합니다. 지원되는 HDR 프로토콜은 SDA 라인과 SCL 라인을 사용하여 명령, 데이터 및 기타 제어 정보를 전송하며, 섹션 5.2에 명시된 대체 형식을 사용합니다.
I3C는 한 번에 하나의 컨트롤러만이 I3C 버스의 제어를 갖도록 허용합니다. 디바이스 간에 컨트롤러 역할을 넘겨주는 메커니즘이 제공됩니다.
4.2 I3C 컨트롤러와 타겟 디바이스
주어진 I3C 버스에는 항상 하나의 컨트롤러와 하나 이상의 타겟이 있습니다. 이 섹션에서는 일반적으로 I3C 컨트롤러 디바이스와 I3C 타겟 디바이스를 설명합니다.
주어진 I3C 디바이스는 I3C 컨트롤러로서만, I3C 타겟으로서만, 혹은 I3C 컨트롤러와 I3C 타겟 기능을 모두 가지고 작동하도록 설계될 수 있습니다.
I3C 컨트롤러와 I3C 타겟 기능을 모두 갖춘 I3C 디바이스는 동시에 컨트롤러와 타겟으로서 작동할 수 없기 때문에 I3C 타겟 디바이스나 I3C 컨트롤러 디바이스 중 하나로 설정되어야 합니다. 이러한 I3C 디바이스는 I3C 버스에서 컨트롤러 또는 타겟으로 초기 구성(초기화)될 수 있습니다. 하지만 I3C 버스가 제대로 작동하기 위해서는 버스에 있는 여러 I3C 디바이스 중 오직 하나만이 I3C 컨트롤러 디바이스로 초기 구성(초기화)될 수 있습니다. 이 I3C 디바이스는 "Primary Controller" 디바이스 역할을 하며, 버스에서 첫 번째 I3C 디바이스로서 Active Controller로 작동합니다. 다른 모든 I3C 디바이스와 레거시 I²C 디바이스는 타겟으로 초기 구성됩니다.
I3C는 현재 버스를 제어하는 컨트롤러(즉, 버스를 제어하는 디바이스)로서 작동하는 I3C 컨트롤러 디바이스로 정의된 Active Controller의 개념을 도입합니다. 한 번에 하나의 I3C 디바이스만이 Active Controller로 작동할 수 있습니다. 하지만 초기 버스 구성이 완료된 후 Active Controller 기능은 특정 CCC(Common Command Codes)를 통해 I3C 컨트롤러 기능을 지원하는 다른 I3C 디바이스로 능동적으로 전달될 수 있습니다.
I3C는 다양한 컨트롤러와 타겟 역할(Table 1 및 Table 2 참고)을 정의하여 주어진 I3C 컨트롤러 또는 타겟 디바이스의 기능을 반영합니다. 주어진 I3C 디바이스는 최소한 하나의 디바이스 역할을 지원해야 하며, 여러 디바이스 역할을 지원하도록 설계될 수 있습니다. 모든 I3C 디바이스는 Bus Characteristics Register(BCR)을 통해 지원하는 디바이스 역할을 공개합니다 (섹션 5.1.1.2.1 참고).
표 1 I3C 호환 디바이스의 역할
디바이스 유형디바이스 역할설명
I3C 컨트롤러¹ | I3C Primary Controller | I3C 버스를 초기 구성하며, HDR 지원을 가짐 |
SDR-Only Primary Controller | I3C 버스를 초기 구성하며, HDR 지원 없음 | |
I3C Secondary Controller | 버스를 제어할 수 있지만 현재는 타겟으로 작동 중 | |
SDR-Only Secondary Controller | 버스를 제어할 수 있지만 현재는 타겟으로 작동 중이며 HDR 지원 없음 | |
I3C 타겟² | I3C Target | 일반적인 I3C 타겟, 컨트롤러 기능 없음 |
SDR-Only Target | 일반적인 I3C 타겟, 컨트롤러 기능 없으며 HDR 지원 없음 | |
I²C Target | I3C 컨트롤러 또는 I3C 타겟 기능 없음 |
참고:
- 컨트롤러 전용 디바이스에 적용됩니다. 다중 컨트롤러 환경에서는, 컨트롤러 디바이스가 타겟 역할로 버스에 합류하는 기능을 구현할 수 있습니다.
- 타겟 전용 디바이스에 적용됩니다.
4.2.1 I3C 컨트롤러 디바이스
I3C 버스에는 특정 시점에 I3C 컨트롤러 디바이스로 기능하는 I3C 디바이스가 정확히 하나만 있어야 합니다. I3C 용어로, 이 I3C 컨트롤러 디바이스가 해당 시점에 활성 컨트롤러(Active Controller)입니다. 일반적인 애플리케이션에서, 활성 컨트롤러는 I3C 명령어(CCC)를 보내는 I3C 디바이스로, 모든 타겟(브로드캐스트 CCC)이나 특정 개별 타겟(지정된 CCC)을 대상으로 합니다. 활성 컨트롤러는 또한 I3C 버스에서 I²C 메시지를 전송할 수 있는 유일한 디바이스입니다.
I3C 명령어와 I²C 메시지를 전송하는 것 외에도, I3C 컨트롤러 디바이스는 다음과 같은 기능을 수행합니다:
- SDR 모드, HDR-DDR 모드, HDR-BT 모드에서 버스 클럭을 생성합니다.
- I3C 타겟은 읽기 전송 시 HDR-BT 모드에서 버스 클럭을 생성할 수 있습니다.
- HDR-Ternary 모드에는 전통적인 클럭이 없습니다.
- 풀업 구조를 관리합니다.
- 활성 컨트롤러로서 동작할 때 동적 주소 할당을 관리합니다.
- SETDASA, SETAASA, ENTDAA(핫 조인 이벤트 포함) 기반의 방법이 있습니다.
- 버스상의 I3C 타겟 디바이스에서 오는 START 요청과 주소 할당 요청을 관리합니다.
- 인-밴드 인터럽트 생성
- 핫 조인 이벤트 관리
- 활성 컨트롤러가 되기 위해
- I²C 레거시 타겟 디바이스를 지원합니다.
- I3C SDR 모드를 지원합니다.
또한, I3C 컨트롤러 디바이스는 필요에 따라 I3C의 정의된 HDR 모드 조합을 선택적으로 지원할 수 있습니다.
Figure 8은 일반적인 I3C 컨트롤러 디바이스의 블록 다이어그램을 보여줍니다.
4.2.1.1 I3C 컨트롤러 디바이스 역할
모든 I3C 컨트롤러 디바이스는 두 개의 주요 컨트롤러 디바이스 역할 중 하나를 지원하며, 두 개의 보조 컨트롤러 디바이스 역할 중 하나를 지원할 수 있습니다.
주요 컨트롤러 디바이스 역할:
- 주요 컨트롤러: I3C 버스에서 I3C 컨트롤러 디바이스가 버스를 초기 설정하고 첫 번째 활성 컨트롤러 역할을 수행합니다. 주어진 I3C 버스에서 단 하나의 I3C 디바이스만 주요 컨트롤러 역할을 가질 수 있으며, 이 역할은 다른 I3C 디바이스에 전달될 수 없습니다. SDR 모드와 최소한 하나의 HDR 모드를 지원합니다.
- SDR 전용 주요 컨트롤러: I3C의 SDR 모드만 지원하는 주요 컨트롤러로, HDR 모드는 지원하지 않습니다.
보조 컨트롤러 디바이스 역할:
- I3C 보조 컨트롤러: 활성 컨트롤러 이외의 I3C 버스 상의 모든 I3C 디바이스로, 컨트롤러 기능을 가질 수 있습니다. I3C 버스에는 동시에 여러 보조 컨트롤러가 있을 수 있습니다. 기본적으로 보조 컨트롤러는 I3C 타겟 디바이스로 기능하며, 활성 컨트롤러가 될 때까지는 타겟으로 남습니다. SDR 모드와 최소한 하나의 HDR 모드를 지원합니다.
- SDR 전용 보조 컨트롤러: I3C의 SDR 모드만 지원하는 보조 컨트롤러로, HDR 모드는 지원하지 않습니다.
참고:
활성 컨트롤러는 공식적으로 I3C 디바이스 역할로 정의되지 않으며, I3C 디바이스의 버스 특성 레지스터(BCR)에 노출되지 않습니다.
4.2.2 I3C 타겟 디바이스
I3C 버스가 지원할 수 있는 디바이스의 최대 수는 트레이스 길이, 디바이스당 용량 부하, 버스에 연결된 디바이스의 유형(I2C vs. I3C)에 따라 달라집니다. 이는 이러한 요소들이 클록 주파수 요구사항에 영향을 미치기 때문입니다.
참고: 이전 I3C 기본 사양 버전(그리고 전체 I3C 사양의 몇몇 이전 버전)은 최대 11개의 I3C 타겟 디바이스로 제한했습니다. 이 제한은 일반적인 전기적 매개변수에 따라 계산되었습니다(섹션 6 참조).
I3C 타겟 디바이스는 액티브 컨트롤러가 전송한 모든 방송 명령(CCC) 및 해당 I3C 타겟 디바이스가 지원하는 특정 명령(CCC)을 포함하여, 관련 I3C 명령(CCC)에 대해 응답합니다. 또한 I3C 명령에 응답하는 것 외에도, I3C 타겟 디바이스는 항상 I3C SDR 모드에서 작동합니다.
I3C 타겟 디바이스는 버스 클록을 생성하지 않으며, 항상 액티브 컨트롤러가 생성한 버스 클록을 따릅니다. 다음을 제외하고:
- HDR-BT 모드에서의 읽기 전송(구현자 재량에 따라 선택 가능).
주소 지정의 경우, I3C 타겟 디바이스는 SETDASA, SETAASA 또는 ENTTDAA와 같은 동적 주소 할당 방법 중 적어도 하나를 지원합니다.
또한, I3C 타겟 디바이스는 다음을 선택적으로 지원할 수 있습니다:
- 인밴드 인터럽트
- 핫 조인 이벤트 생성
- I3C 컨트롤러 디바이스로 전환하여 액티브 컨트롤러가 될 수 있는 기능(I3C 보조 컨트롤러 디바이스로서의 기능)
- I3C가 정의한 HDR 모드 중 임의의 조합
타겟으로서 작동하는 동안, I3C 타겟 디바이스는 섹션 4.2.2.1에 자세히 설명된 타겟 디바이스 역할 중 하나로 기능합니다.
도표 9는 일반적인 I3C 타겟 디바이스의 블록 다이어그램을 보여줍니다.
'Other Protocols' 카테고리의 다른 글
Common Command Codes (CCC) (0) | 2024.11.26 |
---|---|
(3) I3C - Bus Initialization Sequence with Dynamic Address Assignment (1) | 2024.11.21 |
Open drain 방식과 Push pull 방식 (0) | 2024.11.12 |
(2) MIPI I3C Basic Specification - I3C Protocol (1) | 2024.11.12 |
I3C (Improved Inter-Integrated Circuit) Protocol (1) | 2024.11.08 |