MIPI란?
MIPI(Mobile Industry Processor Interface)는 ARM, Intel, Qualcomm 등 주요 반도체 기업들이 주도하여 결성한 모바일 인터페이스 표준화 단체이다. 이 단체는 디스플레이, 카메라, 오디오, 전력 관리 등 모바일 및 모바일 유사 기기에서 사용되는 고속·저전력 인터페이스의 표준을 정의하는 것을 목적으로 한다. 이 단체 이름인 MIPI Alliance를 줄여서 MIPI라고 부르는 경우가 많고, 이 단체가 만든 각종 인터페이스 사양(MIPI CSI, MIPI DSI 등)도 흔히 MIPI라고 부른다.
MIPI가 제정한 대표적인 프로토콜
- CSI (Camera Serial Interface) : 카메라 센서와 프로세서 간 고속 영상 데이터 전송을 위한 인터페이스
- DSI (Display Serial Interface) : 디스플레이 패널과 프로세서 간 영상 데이터 전송을 위한 인터페이스
- C-PHY / D-PHY : MIPI CSI/DSI 같은 고속 인터페이스의 물리 계층(PHY) 사양
- C-PHY는 3-wire per lane 기반 전송
- D-PHY는 Diferential Pair 기반 전송
- I3C (Improved Inter-Integrated Circuit) : 기존 I2C를 대체하는 차세대 센서 인터페이스
- 그 외 SoundWire, UniPro, UFS, RFFE 등
CSI (Camera Serial Interface)란?
MIPI CSI는 카메라 모듈과 애플리케이션 프로세서(AP) 사이에 고속 이미지/비디오 데이터를 전송하기 위한 직렬 인터페이스이다. 주요 특징은 다음과 같다.
- 인터페이스 방식 : 고속 직렬 데이터 전송 방식(수 Gbps 수준의 전송 속도 지원), 디퍼런셜 페어 또는 트리오 기반 전송
- 전송 데이터 구조 : 패킷 기반(Header + Payload + CRC)
- 제어 방식 : 별도의 I2C 인터페이스를 통해 센서 설정
- 물리 계층 : D-PHY 또는 C-PHY 사용
- 데이터 레인 구성 (D-PHY 기준) : 1 Lane, 2 Lane, 4 Lane 구성 존재 (각 Lane은 직렬 전송 방식이며, 데이터를 병렬로 나눠서 동시에 보내는 구조), 별도의 클럭 Lane 필요
- 전송 데이터 포맷 : RAW8/10/12/14, YUV422/420, RGB565/888 등 다양한 포맷 지원
- 동기화 방식 : Frame Start/End, Line Start/End 패킷과 패킷 간 간격인 Line Blanking, Frame Blanking으로 Vsync/Hsync 대체
- 핀 수 : 병렬 대비 대폭 절감 (최소 4핀 부터 구현 가능 : 1 클럭 + 1 데이터 레인)
- 주요 장점 : 저전력, 고속, 저간섭, 멀티채널 지원, 다양한 해상도/프레임레이트 지원
CSI 버전별 차이
- CSI-1 : 가장 초기 버전, 현재는 거의 사용되지 않음. 병렬 데이터 전송 기반 느린 속도(수십 Mbps 수준) 지원
- CSI-2 : 현재 가장 널리 사용되는 표준, D-PHY 또는 C-PHY 기반의 직렬 전송 방식 사용. 최대 수 Gbps 수준의 속도 지원
- CSI-3 : CSI-2의 후속, 차세대 고성능용이지만 아직 대중화되지 않음. MIPI UniPro 기반의 프로토콜 사용
CSI-2 주요 구성 요소
CSI-2는 데이터 전송 채널과 제어 채널로 구성됨
- 데이터 전송 채널 (Data Link)
- 이미지 센서 → 수신기로 실제 영상 데이터 전송
- 물리 계층은 보통 D-PHY 또는 C-PHY를 사용
- 데이터는 패킷 단위로 전송
- 제어 채널 (CCI, Camera Control Interface)
- I2C 버스를 통해 센서 제어 (SCL, SDA 2개의 신호선으로 구성)
- 이미지 센서의 레지스터에 값을 써서 센서의 설정값 (해상도, FPS, 노출 등)을 초기화하고 관리
- 마스터는 SoC, 슬레이브는 센서
DPHY 2 Lane 구성 예시
- Clock : Clock+ / Clock
- Data : Data0+ / Data0-, Data1+ / Data1-
- 제어 채널 : SCL, SDA
- → 총 8핀 필요
물리 계층 (DPHY vs CPHY)
- DPHY
- 1쌍의 클럭 레인 + N 쌍의 데이터 레인으로 구성 (N= 1, 2, 4)
- 각 레인은 차동 신호로 구성되어 전송 안정성 확보
- 에너지 절약용 LP 모드와 고속 데이터 전송용 HS 모드 존재
- 최대 전송 속도 : ~ 2.5 Gbps/lane
- CPHY
- 3개의 와어어가 하나의 데이터 채널을 구성 (3-wire per lane)
- 세 개의 와이어 간의 상대적인 위상차를 이용해, 총 7개의 유효한 심볼로 데이터를 인코딩하여 정보 전송
- 동일한 핀 수로 더 많은 데이터 전송 가능
- 최대 전송 속도 : ~5.7 Gbps/lane
MIPI CSI-2의 계층 구조
- Application Layer
- TX : 센서로부터 픽셀 데이터 및 제어 정보를 받아 처리 시작
- RX : 수신된 데이터를 다시 픽셀 데이터로 변환하여 상위 애플리케이션으로 전달
- Pixel to Byte Packing / Byte to Pixel Unpacking Layer
- TX : 다양한 비트 수(6, 7, 8, 10, ..., 24 bits)로 표현되는 픽셀 데이터를 바이트 단위로 패킹
- RX : 수신된 바이트 데이터를 원래의 픽셀 포맷으로 복원
- Low Level Protocol Layer
- Packet 기반 프로토콜 (아래에서 구체적으로 기술함)
- Lane Management Layer
- TX : 데이터를 여러 Lane으로 분산 전송
- RX : 여러 Lane으로 수신된 데이터를 하나로 병합
- PHY Layer
- D-PHY 또는 C-PHY 물리 계층을 통해 물리적 신호 전송
- Start/Stop 신호 생성 및 감지
- 송신 측은 타이밍 기준 제공을 위해 클럭 생성, 수신측은 수신 신호로 부터 타이밍을 재생성하는 클럭 리커버리 담당
- 송신 측은 직렬화, 수신측은 역직렬화 (D-PHY의 경우 8-bit, C-PHY의 경우 16-bit)
커넥터 규격과 전송 거리
1. 주요 커넥터 및 케이블 타입
- FPC (Flexible Printed Circuit) 케이블 사용
- 15핀 : 2 Lane까지 지원, 보급형 카메라에 사용
- 22핀 : 4 Lane까지 지원, 멀티 채널/고해상도 카메라에 사용
2. 전송 거리
- 보통 20~40cm 이내가 권장
- 장거리 전송 시 신호 감쇠 노이즈 문제가 있을 수 있음
CSI-2 패킷 종류
- Short Packet
- 4 bytes 고정 길이
- 동기화용 이벤트 표시 등에 사용
- 예: Frame Start (FS), Frame End (FE), Line Start (LS), Line End (LE), 오류 상태 등
- Long Packet
- 가변 길이
- 픽셀 데이터가 포함된 주요 전송 단위
- 헤더 + 페이로드 + CRC 구조
- LPS (Low Power State) : 전력 절약을 위한 기본 대기 상태
- ST(Start of Transmission), ET(End of Transmission) : 고속 전송 시장/종료 신호로 물리 계층에서 LP ↔ HS 모드 전환을 담당
- 일반적으로 Long Packet 하나는 한 줄의 비디오 라인 픽셀 데이터를 담고 있으며, 한 프레임은 세로 픽셀 수 만큼의 Long Packet으로 구성된다.
Short Packet 구성 (DPHY 기준)
필드 | 길이 | 설명 |
Data ID (DI) | 1 byte | 2비트 Virtual Channel + 6비트 Data Type |
Short Packet Data Field | 2 bytes | 의미는 Data Type에 따라 다름 (예: Frame ID, Line # 등) |
ECC | 1 byte | Header 오류 검출용 8-bit ECC (Hamming 코드) |
- Short Packet은 4 Bytes 고정길이를 가진다.
Short Packet으로 전송되는 Data Type은 다음과 같다.
- 필수적인 동기 신호는 Frame Start(0x00)와 Frame End(0x01)뿐이고, Line 단위의 동기화를 위해 Line Start / End를 사용할 수도 있고, 생략할 수도 있다.
- Frame Start(0x00), Frame End(0x01) 패킷일 경우 Short Packet Data Field는 16-bit Frame Number이다. 즉, 같은 프레임 안에서는 FS, FE 둘 다 동일한 frame number를 사용한다.
Long Packet 구성 (DPHY 기준)
1. Packet Header (PH) - 4 Bytes
필드 | 길이 | 설명 |
Data ID (DI) | 1 byte | 2비트 Virtual Channel + 6비트 Data Type |
Word Count (WC) | 2 bytes | Payload 데이터 길이 (byte 단위) |
ECC | 1 byte | Header 오류 검출용 8-bit ECC (Hamming 코드) |
- 수신 측은 Header를 읽고 데이터 타입이 뭔지 몇 바이트를 읽으면 되는지 파악할수 있음
- Virtual Channel (VC) : 소스 카메라 구분용
- Data Type (DT) : 픽셀 데이터 포맷 식별 코드
2. Packet Data
필드 | 길이 | 설명 |
Data 0 ~ Data N-1 | Word Count(WC) 바이트 | 픽셀 또는 기타 사용자 정의 데이터 |
- 데이터는 동기화 비트 없으며 순수 바이트 스트림으로 구성됨
- 픽셀 데이터는 포맷에 따라 패킹 규칙이 있음 (예. RGB888이면 1픽셀 = 3바이트, RAW10이면 4픽셀 = 5바이트)
3. Packet Footer (PF)
필드 | 길이 | 설명 |
Checksum (CRC) | 2 bytes | Payload 전체에 대한 CRC-16 계산 결과 |
- Polynomial : x^16 + x^12 + x^5 + 1
- 수신 측은 CRC로 데이터 무결성 검증
픽셀/바이트 패킹
CSI-2 전송에서는 이미지 데이터의 픽셀당 비트 수(bpp)가 8의 배수가 아닌 경우, 여러 픽셀 단위로 패킹해 바이트 정렬을 맞춘다. 아래 표는 각 데이터 포맷별로 몇 픽셀이 한 묶음으로 패킹되어 패킷에 들어가는지와, 그때의 바이트 길이를 나타낸다.
데이터 형식 | 픽셀당 비트(bpp) | 패킷당 픽셀(최소) | 패킷 길이(바이트) |
YUV420 8-bit(Legacy) | 12 | 2 | 3 |
YUV420 8-bit | 12 | 2 | 2, 4 |
YUV420 10-bit | 15 | 4 | 5, 10 |
YUV422 8-bit | 16 | 2 | 4 |
YUV422 10-bit | 20 | 2 | 5 |
RGB888 | 24 | 1 | 3 |
RGB666 | 18 | 4 | 9 |
RGB565 | 16 | 1 | 2 |
RGB555 | 15 | 1 | 2 |
RGB444 | 12 | 1 | 2 |
RAW6 | 6 | 4 | 3 |
RAW7 | 7 | 8 | 7 |
RAW8 | 8 | 1 | 1 |
RAW10 | 10 | 4 | 5 |
RAW12 | 12 | 2 | 3 |
RAW14 | 14 | 4 | 7 |
RGB888 데이터 포맷
Long Packat에서 RGB888 포맷의 DT 값은 0x24에 해당한다.
RGB888은 픽셀 당 24비트로 구성된다. (R, G, B 각각 8비트)
전송 시 BGR순서로 전송된다. B, G, R 각각은 LSB First로 전송되며 이는 CSI-2 전체에 적용되는 규칙이다.
'임베디드 개발 > 펌웨어' 카테고리의 다른 글
USB 플래시 드라이브와 SD카드의 동작 방식 (0) | 2025.07.21 |
---|---|
88E1512 (1G Ethernet PHY) (0) | 2025.06.27 |
ADS1015 데이터시트 분석 및 Tested on Raspberry Pi (0) | 2025.06.09 |
VPX, OpenVPX, SOSA 정의 및 주요 표준 신호 (0) | 2025.06.04 |
HDMI (Hot Plug, DDC, EDID) (0) | 2025.05.20 |