스마트폰의 멀티미디어에 사용되는
MIPI (Mobile Industry Processor Interface) Interface는
크게 Camera에서 사용하는 CSI (Camera Serial Interface)와
Display장치에서 사용하는 DSI (Display Serial Interface) 입니다.
현재까지 사용되는 CSI와 DSI 는 대부분 MIPI D-Phy 규격을 사용하고 있으며
Bandwidth가 늘어나면서 C-Phy가 새롭게 추가 되었습니다.
D-Phy와 C-Phy의 가장 큰 차이점은 연결 방식 입니다.
기존의 D-Phy는 1개의 Clock lane과 최대 4개의 Data lane으로 구성되어 있으며
Lane 당 2 Pin이 필요하여 총 필요한 Pin의 수는 10개 입니다.
C-Phy는 최대 3개의 Data Lane만이 있으며
D-Phy와 다르게 1개 Lane당 3개의 Pin이 사용 됩니다.
Clock은 Clock lane이 없이 Data에 Embedded Clock을 사용하며
Data 수신단에서 Clock Recovery를 수행하여 사용합니다.
C-Phy는 3개의 wire가 High, Low로만 신호를 구분하는 것이 아니라
아래 그림과 같이 Middle point까지 포함하여 3가지 Level을 이용하고 있습니다.
3개의 Wire의 상태로 Data를 추출하는데 Wire 상태는 아래와 같은 조건을 따라야 합니다.
-
3개의 Wire(A,B,C)는 3가지 상태(High, Middle, Low)를 모두 포함하고 있어야 합니다.
-
3개의 wire 상태는 연속하여 동일한 값이 올 수 없습니다.
3개의 Wire로 3가지 Level은
총 27가지의 상태를 나타낼 수 있지만
C-Phy에서는 6개의 상태를 사용합니다.
그 이유는 위에서 설명한 조건처럼 3개의 Wire가
3가지 상태를 모두 포함할 수 있는 상태가 6가지 이기 때문 입니다.
신호를 보내는 쪽에서는 이 6가지 상태에 맞도록 신호를 보내게 되고
신호를 받는 쪽에서는 이 신호를 다른 Wire와 같이
Differential 신호로 인식하도록 되어 있습니다.
아래 그림과 같이 각 wire는 다른 두 wire와 비교하여
AB, BC, CA 3bit의 신호로 바뀌게 됩니다.
6개의 Wire 상태가 differential 신호로 바뀌는 값을 정리하면 아래 표와 같으며
이 6가지 differential 값은 +x, -x, +y, -y, +z, -z라는 이름으로 표현합니다.
아래 그림은 3 wire의 상태의 Differential 신호에서
최종 Data까지 추출하는 방식을 설명한 그림 입니다.
1. Wire differential
- 각 wire의 상태와 다른 wire상태를 비교한 differential 신호 값입니다.
- 비교 조건은 A>B, B>C, C>A 3가지 입니다.
2. Wire States (3bit)
- Wire differential 값을 3bit로 표현한 값입니다.
- A>B가 상위 bit, B>C가 중간 bit, C>A가 하위 bit 값 입니다.
- 이 값은 Wire state name (+x, -x, +y, -y, +z, -z)으로도 표현 됩니다.
- 위 그림의 Wire State 656346536값은 Wire state name 표현 방식으로
–z-y-z-x+x-z-y-x-z 으로 표시 됩니다.
3. Symbols (3bit)
- Symbol은 현재 Wire State에서 다음 Wire State로 변하는 값으로 추출되는 Data입니다.
- Wire State는 총 6가지 State가 있으며 연속된 State가 올 수 없으므로 자기 자신을
제외한 5가지의 State로 값이 변하게 되며 이때 Wire state name이 바뀌는 조건에
따라서 Symbol값이 정해지며 Symbol값을 정하는 조건은 아래와 같습니다.
1. Flip
같은 문자에서 부호만 바뀌는 경우 1.
예) +x → -x
2. Rotate
문자가 다음 문자로 증가하는 경우 1.
예) ±x → ±y, ±y → ±z, ±z → ±x
3. Polarity
문자가 바뀌면서 부호도 바뀌는 경우
예) +x → -y, +x → -z, -y → +z, +y → -z,
- Wire State 값 656346536 (–z-y-z-x+x-z-y-x-z)을 Symbol값으로 변환하면
02241000 이라는 7자리 Symbol값으로 변환이 됩니다.
4. Integers (16bit)
- 7자리의 Symbol 값은 16bit integer 값으로 mapping 됩니다.
- Symbol값은 0 ~ 4의 값으로 7자리 이므로 최대 78125가지의 값이 있을 수 있습니다.
이중 65536 값은 16bit integer 값과 1대1 mapping 값으로 사용되며
나머지 12589 값은 marker값 등으로 사용 됩니다.
MIPI C-Phy의 전송속도는 보통 Gsym/s로 표현 됩니다.
즉 초당 symbol수로 속도를 나타내며
Symbol당 Data크기는 2.28bit 입니다.
Symbol의 Data 크기가 2.28bit 이유는 7자리 symbol data가
16bit integer값과 mapping되기 때문입니다.
1 symbol = 16bit / 7 symbol = 2.28 bit.
C-Phy의 Lane당 최대 속도는 2.5Gsym/s이며
이를 Gbps로 변환하면 5.7Gbps가 됩니다..
2.5Gsym = 2.5 * 2.28 bit = 5.7Gbps
D-Phy와 C-Phy의 총 Bandwidth를 비교하면 아래와 같습니다.
D-Phy : 2.5Gbps/lane * 4 Lane = 총 10Gbps
C-Phy : 5.7Gbps/lane * 3 Lane = 17.1Gbps
위와 같은 조건일 경우 C-Phy가 D-Phy보다 약 7.1Gbps의 Data를 더 받을 수 있으며
이렇게 Bandwidth를 늘리기 위한 목적으로 C-Phy가 추가 되었습니다.
참조 : https://blog.naver.com/laonple/220876151247