-
MIPI-DSI/CSIElectron/Etc. 2020. 7. 22. 14:42
출처: https://m.blog.naver.com/prnbada7/221194846455
MIPI-DSI/CSI
prnbada7 2018. 1. 27. 17:05
### "초연결사회의 탄생 (모든 것은 어떻게 연결되었나)(위키미디어)"가 출간되었습니다.
1. 기술의 탄생
지금까지 살펴 본 대부분의 커넥티비티 기술들, 그리고 2편에서 살펴보게 될 PCI/PCIe, SATA 기술, 3편에서 살펴볼 AV 컨텐츠 전송을 위한 기술들, 그리고 4편에서 살펴볼 데이터 전송을 위한 기술들은 대부분 컴퓨터를 위해 발명된 기술들이다. 그동안 40년 가까이 발전해 온 컴퓨터의 역사는 CPU, 메모리를 비롯한 개별 부품들의 발전과 함께 커넥티비티의 발전의 역사라고 할 수 있겠다. 한편, 컴퓨터를 위해 탄생한 많은 커넥티비티 기술들은 다른 전자 제품들에도 다양하게 활용됐다. 전자제품 내부의 디지털 신호 전송기술은 별다른 수정없이 셋톱박스, DVD 재생기, 게임기, 스마트 TV 를 비롯한 많은 가정용 멀티미디어 기기에 적용됐다.
그런데, 모바일기기라는 새로운 부류의 제품들이 생겨났다. MP3재생기를 비롯하여 동영상 재생기가 보급되기 시작하였고, 셀룰러 폰은 점점 고성능화와 함께 다양한 기능들의 집합체로 발전에 발전을 거듭하게 됐다. 이와 같은 모바일 기기가 등장하면서 커넥티비티에 대한 새로운 접근을 요구하게 됐다. 모바일 기기들은 앞에서 예를 든 가전제품들과 달리 배터리로 동작한다. 한정된 전원의 효율적인 사용을 위해서 모바일 기기에 사용되는 부품들은 저전력으로 설계가 돼야 했고, 커넥티비티 기술들도 최소한의 전력을 사용할 수 있도록 설계가 돼야 했다. 제품의 크기도 소형으로 제작돼야 했고, 커넥티비티를 위한 부품들의 크기도 최소한으로 조정돼야 했다. 이와 같은 노력과 활동들은 개별적으로 진행되기보다, 관련 기업들과 연구소가 표준화를 통해서 모바일 기기 제조의 복잡성을 낮추고, 제조 단가도 낮출 필요가 있었다. 기술과 부품의 표준화는 제품 제조의 유연성 및 호환성을 가져다 줄 수 있었다.
위와 같은 목적으로 2003년에 ARM, 인텔, 노키아, 삼성, STMicroelectronics 와 텍사스 인스투루먼트가 모여서 MIPI(Mobile Industry Processor Interface) 얼라이언스를 설립하게 된다. MIPI는 모바일 및 사물인터넷 기기에서 재사용 및 호환성을 강화하기 위해 AP(Application Processor)를 비롯한 프로세서와 주변 기기들에 대한 인터페이스 사양을 개발한다. 최근에는 MIPI의 활동 영역이 넓어져서 자동차 부품 관련 표준도 만들고 있다.
MIPI 얼라이언스에서는 다양한 워킹 그룹이 결성되어서 표준을 만들고 있는데, 그중에는 물리 계층(PHY)에 대한 표준을 정하는 그룹을 비롯해서, 카메라, 디스플레이와 관련된 표준을 정하는 곳이 있고, I3C 표준을 정하는 곳도 있다.
MIPI에서 만든 대표적인 인터페이스가 바로 DSI와 CSI 이다. DSI(Display Serial Interface)는 AP와 LCD와 같은 디스플레이를 연결하는 인터페이스에 관한 표준이고 CSI(Camera Serial interface)는 AP와 카메라를 연결하는 인터페이스에 관한 표준이다.
[그림 1] MIPI 시스템 구성도
[그림1-1]
2. 기술의 내용
1) D-PHY, M-PHY, C-PHY
MIPI에서는 30개가 넘는 사양서를 정의하고 있는데, 그중에 물리 계층에 대한 사양서가 3개가 존재한다. 카메라와 디스플레이와의 인터페이스를 위해 2009년에 소개됐었던 D-PHY, RF모듈이나 스토리지, 혹은 멀티미디어 데이터 관련 부품들과의 인터페이스를 위해 2011년에 소개됐던 M-PHY, 그리고 카메라, 디스플레이와의 인터페이스를 개선하여 2014년에 소개된 C-PHY가 있다.
D-PHY와 C-PHY는 영어 머리글자와 연결되어 혼동이 있을 수 있다. 즉, D-PHY는 디스플레이, C-PHY는 카메라로 잘못 인식할 수 있으므로 유의해야 한다. 혼동을 부추기는 요소로 DSI와 CSI도 있다. 이들은 각각 디스플레이와 카메라의 머리 글자와 일치하기 때문이다. 그러나, C-PHY도 디스플레이에 사용될 수 있고, D-PHY도 카메라에 사용될 수 있다. D-PHY의 D는 로마숫자로 500을 의미하는데, 이는 D-PHY의 데이터 전송 속도(500-1000 Mbit/s)를 의미한다. C-PHY의 C는 로마숫자로 100을 의미한다.
D-PHY
D-PHY는 디스플레이와 카메라를 위해 사용되고, 고속 통신이 가능하며, 비용 효율을 고려하고 있다.
D-PHY는 일반적인 물리 계층(PHY)이 담당하는 기본적인 역할을 수행한다. 실제 데이터의 시작과 끝을 알리는 SoT(Start of packet)/EoT(End of packet)을 추가하고 송신을 위해 병렬데이터를 직렬로 변환하거나, 수신된 직렬 데이터를 병렬로 변환하는 작업을 수행한다. 또한 고속 영상 데이터 전송을 위한 클럭 신호를 전송하기 위해 클럭 시스템을 관리한다.
D-PHY는 고속 모드, 또는 저전력모드 둘 중 하나로 동작할 수 있다. 고속(HS, High-speed) 모드는 고속 영상 데이터를 전송하기 사용되는데, SLVS(Scalable low voltage signaling) 방식으로 0.2V의 공통모드 전압과 0.2V의 스윙을 갖는 80Mb/s~1Gb/s 전송률의 차분신호로 2개의 전송선을 통해 전송된다. 데이터의 전송 속도는 버전이 높아 가면서 같이 향상되었는데, 버전 1.0(2009년) 에서는 레인 당 1 Gb/s 가 가능했으며, 버전 1.1(2011년) 에서는 1.5 Gb/s, 버전 1.2(2014) 에서는 2.5 Gb/s가 가능해졌다. 최신 버전으로 4개의 레인을 사용한다면 10 Gb/s가 가능하다. 고속 모드에서는 별도의 클럭 레인을 통해서 클럭 신호를 보낸다. D-PHY는 하나의 클럭 레인과 하나 또는 최대 4개까지의 데이터 레인으로 구성된다.
연속해서 전송을 해야 하는 영상 데이터가 아니라, 단발성의 명령어를 전송하는 저전력(LP, Low-power) 모드에서는 기존의 병렬 전송 방식과 마찬가지로 LVCMOS(Low-voltage CMOS) 전송 방식을 사용하여 1.2V 스윙을 갖는 최대 10Mbps의 단일 출력 신호로 2개의 라인을 통해 각각 전송된다. 즉, 고속 모드보다 데이터를 전송할 수 있는 라인이 하나 더 늘어난 셈이다. 2개의 라인을 이용하는 차분 신호 방식으로 전송할 때에는 한 번에 0, 또는 1을 전송할 수 있지만, 단일 종단 전송(Single Ended Transmission)방식을 사용하게 되면, 각각의 라인으로 0, 또는 1을 전송하므로, 쌍(pair)으로 구성되어 있는 경우에는 한번에 두 비트의 정보인 00, 01, 10, 11 중의 하나를 전송하게 된다. 저전력 모드에서는 데이터에 클럭을 포함시켜 보내는 임베디드 클럭 방식이다.
D-PHY의 사용
D-PHY보다 개선된 C-PHY가 존재하지만, 오늘날에도 여전히 D-PHY나 많이 사용되고 있다. 아래 그림은 퀄컴의 스냅드래곤 820E의 내부 구조이다(820은 삼성의 캘럭시 S7, LG의 V20에서 사용됐다). 카메라와의 연결에 D-PHY1.2를 지원하고 있음이 그림에 나타나 있다. 비록 디스플레이 연결에 표시는 되어 있지 않지만, 카메라 연결과 같이 D-PHY 1.2를 지원한다. 퀄컴의 스냅드래곤외에도 삼성의 엑시노스, 애플의 아이폰용 AP에서도 디스플레이와 카메라와의 인터페이스를 위해 MIPI D-PHY가 사용된다.
한편, 모바일 기기의 범주를 넘어서는 제품들에 사용되는 경우 System-On-Chip들과 주변부품들이 MIPI 인터페이스로만 연결되는 경우는 드물다. 예를 들어 디스플레이와의 연결을 위해 많은 경우 MIPI신호를 LVDS신호로 변경해서 사용하기도 하며, 간혹 HDMI 신호나 DisplayPort신호로 변경해서 사용하기도 한다. 이러한 용도를 위한 컨버터 IC, 또는 브릿지 IC들도 다양한 제품들이 시중에 소개돼 있다. 아래는 Texas Instrument사의 제품 사양서 중 일부이다.
(출처:http://www.ti.com/lit/ds/sllseh2b/sllseh2b.pdf?ts=1588298597158)
M-PHY
M-PHY는 스토리지나 RF부품을 위해서 사용되며, 멀티미디어 데이터 전송이나 집적 회로간 고속 데이터 전송을 지원한다. 이전까지 D-PHY가 성공적으로 사용되고 있었지만, 당시 최신버전으로도 레인 당 최대 전송 속도 1Gb/s의 한계가 있었다. 전송 속도를 더 높이기 위해서는 모바일 기기의 특성상 소형 폼 팩터에서 EMI의 영향이 커지기 쉬워 이에 대한 대응책이 필요하며, 저전력으로도 고속의 신호 전송을 지원할 수 있어야 했다.
M-PHY에서 클럭은 데이터에 포함시켜서 전송되는 임베디드 방식을 취한다. 따라서 수신단에서는 데이터에서 클럭을 읽어 내기 위한 CDR(clock data recovery)이 필요하다. 그리고, 일반적인 데이터는 0과 1이 무작위적으로 나타날 수 있는데, 0만 계속해서 전송이되거나, 또는 1만 계속해서 전송이 되면, 수신단에서 클럭을 읽어 내기 어려워지게 된다. 따라서, 원본의 데이터를 변조하여 0과 1이 일정한 회수로 반복될 수 있도록 조정해 줄 필요가 있는데, M-PHY에서는 8b/10b 인코딩 방식을 사용한다.
M-PHY의 고속 모드에서는 레인 당 최대 5.8Gb/s까지 전송이 가능하며, 저전력 모드에서는 10k~600Mb/s로 전송이 가능하다. M-PHY에서는 동시에 양방향 송수신이 가능하며(전이중모드), 송신용 레인들이 모여서 송신용 서브 링크(Sub-Link)를 구성하고, 수신용 레인들이 모여서 수신용 서브 링크를 구성한다. 각각의 서브 링크는 총 4개까지의 레인을 가질 수 있다. 아래 그림에서 송신용 서브링크는 2개의 레인을, 수신용 서브링크는 1개의 레인을 갖고 있다
[그림 2] M-PHY 구성
M-PHY는 발전된 성능을 바탕으로 다양한 프로토콜에 사용이 된다. 카메라와 디스플레이를 위한 새로운 프로토콜이 DSI-2, CSI-3를 포함해서, 스토리지 장치와의 연결을 위한 프로토콜인 UFS, USB 를 집적 회로간 연결에 적용한 SSIC(Super Speed Inter-chip)에서도 M-PHY를 기반으로 하고 있다.
[그림 3] M-PHY를 사용하는 규격
USB IF(USB Implementers Forum)에서 정의한 USB규격서에는 USB통신을 위한 전용 물리 계층에 대한 내용이 있다. 그러나, 이 규격은 외부로부터 전원이 무한정 공급되는 컴퓨터와 같은 환경을 고려한 것이다. 따라서 이를 모바일 기기에 그대로 적용할 경우에는 배터리의 전원이 금방 고갈이 될 것이다. 이러한 문제를 해결하기 위해서, USB IF에서는 USB 2.0의 일부로 HSIC(Hi-Speed Inter-Chip)라는 규격을 만들었다. 이는 기존의 PHY 대비 크기도 3분의 1로 줄어 들었으며, 전기 소모도 3분의 1로 줄었다.
2008년 USB IF는 USB 3.0을 발표하였는데, HSIC를 SSIC(SuperSpeed Inter-Chip)로 업그레이드하면서 PHY는 MIPI의 규격인 M-PHY를 사용하는 것으로 교체하였다. 이로써, USB 3.0의 1.25Gbps 까지 지원이 가능하면서도, 전류 소모량은 과거와 대비 늘지 않게 되었다.
[표] USB PHY 전류 소모량
USB 2.0 PHY사용시 전류소모량
USB 3.0 PHY(M-PHY)사용시 전류소모량
USB 2.0 PHY
100%
70%
USB 2.0 HSIC PHY
28%
20%
USB 3.0 PHY
142%
100%
USB 3.0 SSIC M-PHY
28%
20%
아래 그림은 M-PHY를 사용하는 SSIC의 연결도이다. USB 3.0 기기들은 PIPE(PHY Interface for PCI Express)를 통해서 M-PHY와 연결이 된다.
[그림 4] SSIC 구성도
C-PHY
C-PHY는 D-PHY를 개선했다. 따라서, C-PHY도 D-PHY와 마찬가지로 카메라와 디스플레이를 어플리케이션 프로세서와 연결하기 위해서 사용이 된다. 앞에 잠깐 언급했지만 얼핏 보아 C-PHY가 카메라를 위한 PHY처럼 보이나 그렇지 않다. 그럼에도 이 새로운 규격은 디스플레이보다는 카메라 연결을 위해 더 빈번히 사용될 것으로 보인다. 위에서 D-PHY의 예로 든 스냅드래곤 820E의 사양서를 들여다 보면 C-PHY는 카메라 연결용으로만 제공되고, 디스플레이용으로는 제공되지 않고 있다.
D-PHY와 C-PHY의 가장 큰 차이점은 연결 방식이다. 전자는 1개의 클럭 레인과 최대 4개의 데이터 레인으로 구성되어 있으며 레인 당 2개의 핀(라인)이 필요하여 총 필요한 핀(라인)의 수는 10개이다. 그러나, 후자는 최대 3개의 데이터 레인만이 있으며 D-PHY와 다르게 1개 레인당 3개의 핀(라인)이 사용된다. 클럭은 별도의 레인이 없고 전송되는 데이터에 임베디드시키게 된다. 따라서, 데이터를 받는 쪽에서 임베디드된 클럭을 찾아 내는 모듈(CDR, Clock Data Recovery)가 사용된다.
C-PHY에서 하나의 레인은 3개의 라인으로 구성되고, 각각의 라인은 High, Middle, Low의 신호를 전송한다. 따라서, 하나의 레인으로 총 27 종류(3x3x3)의 신호를 보낼 수 있다. 이 중에서 차분 신호로의 특성을 살릴 수 있는 6가지만 경우만 선별하여 사용한다.
[표] C-PHY의 신호
C-PHY에서는 데이터 전송 속도의 단위를 Gsym/s로 표현한다. 즉, 초당 심볼수로 전송 속도를 나타내며, 심볼당 데이터의 수는 2.28비트이다. C-PHY의 레인당 최대 속도는 2.5 Gsym/s이므로, 이를 비트로 환산을 하면 2.5 x 2.28 = 5.7 Gbps가 된다. 결국, 3개의 레인을 사용할 경우 17.1 Gbps의 최대 데이터 전송 속도가 나오며, 4개의 레인을 사용하는 D-PHY의 경우 2.5 Gbps x 4 = 10 Gbps 보다 훨씬 빠른 데이터 전송이 가능하다.
끝으로 M-PHY, D-PHY, C-PHY를 비교하면 다음 표와 같다.
[표] D-PHY, M-PHY, C-PHY 비교 표
M-PHY v3.1
D-PHY v1.2
C-PHY v1.0
주된 용도
성능 위주, 양방향, 패킷을 사용한 네트워크 지원
비용 절감, 스트리밍, 단방향, 저속
비용 절감, 스트리밍, 단방향, 저속
고속신호 전송시 클럭
전송 데이터에 클럭을 임베디드함
별도의 클럭 라인(DDR Source-Sync 클럭)
전송 데이터에 클럭을 임베디드함
채널 보상
이퀄라이제이션
클럭 대비 데이터 스큐(skew) 조정
데이터 신호의 토글(toggle) 빈도 줄이는 부호화
최소 구성과 최소 핀수
송신용 레인 하나와 수신용 레인 하나. 4핀
하나의 데이터 레인과 하나의 클럭 레인,4 핀
하나의 레인(trio), 3 핀
송신기의 최대 스윙 진폭(swing amplitude)
작은 진폭(Small Amplitude: 250mV (최고치) 큰 진폭(Large Amplitude: 500mV (최고치)
저전력 모드: 1300mV (최고치) 고속모드: 360mV (최고치)
저전력모드: 1300mV (최고치) 고속모드: 425mV (최고치)
레인당 데이터 전송 속도(고속 모드)
HS-G1: 1.25, 1.45 Gb/s HS-G2: 2.5, 2.9 Gb/s HS-G3: 5.0, 5.8 Gb/s (8B10B 라인 부호화 사용됨)
80 Mbps to ~2.5 Gbps (레인 묶음 방식)
80 Msym/s to 2.5 Gsym/s x 2.28 bits/sym, or max 5.7 Gbps (레인 묶음 방식)
레인당 데이터 전송 속도 (저전력 모드)
10kbps – 600 Mbps
< 10 Mbps
< 10 Mbps
포트 당 대역폭 (3 or 4 레인)
~ 4.0 – 18.6 Gb/s (레인 묶음)
4 레인 포트 당 최대 ~10 Gbps
3 레인 포트 당 최대 ~ 17.1 Gbps
포트 당 핀수(3 or 4 레인)
10 (송신 용 4 레인, 수신용 1 레인)
10 (4 레인, 클럭용 1 레인)
9 (3 레인)
실제 사용
MIPI 인터페이스는 집적회로(IC, 칩)간의 연결을 규정하기 때문에 HDMI나 DP와 같은 케이블이나 커넥터에 대한 내용이 없다. 개발자들은 필요에 따라 다양한 형태의 케이블이나 커넥터를 선택해서 사용할 수 있다. 따라서 외관만으로 연결선이 어떤 종류의 인터페이스 규격을 사용했는지 알 수 없다. 아래 그림은 MIPI 를 사용한 카메라 모듈과 디스플레이 모듈이다.
아래 사이트에서 갤럭시 S7의 내부를 볼 수 있는데, 그중 디스플레이와 카메라 연결용 MIPI 케이블과 커넥터를 확인할 수 있다.
https://news.samsung.com/global/in-depth-look-whats-inside-the-galaxy-s7-and-s7-edge
[In-Depth Look] What’s Inside the Galaxy S7 and S7 edge
It takes the most cutting-edge engineering to get all of the innovations and functionality of the Galaxy S7 and S7 edge into their streamlined,
news.samsung.com
이와 같이, MIPI 인터페이스를 위한 커넥터와 케이블이 통일되어 있지 않기 때문에 MIPI 인터페이스를 사용하는 두 개의 부품을 연결하기 위해 별도의 전용 커넥터를 개발하기도 한다. 실제로 필자의 경우 애플리케이션 프로세서의 평가용 보드와 범용 MIPI 카메라 모듈을 연결하기 위해 전용 커넥터를 개발했다. MIPI규격을 잘 모르고 덤벼들었던
1차 시도에서 HDMI케이블처럼 양쪽 끝에 커넥터를 두고 중간을 케이블로 연결한 후, 이를 갖고 두 개의 MIPI 기기를 연결하고자 했으나 실패했다. 기본적으로 MIPI 인터페이스는 인접한 부품을 연결하기 위한 용도이므로 케이블의 길이가 길어지면 안 된다. 그래서 2차 시도에서는 아예 중간에 케이블을 사용하지 않고, 하나의 PCB 보드 위에 양쪽 커넥터를 실장하고 두 커넥터의 연결은 PCB 회로로 구현하였다. 아래 그림과 같이 전용 커넥터 보드를 제작한 후에야 두 MIPI 기기는 통신이 가능해졌다. 위쪽의 하얀 색 커넥터는 Amphenol FCI사의 40핀 제품이며 아래쪽 검은 색 커넥터는 SAMTEC사의 60핀 제품이다. 만약 두 MIPI 기기가 동일한 종류의 커넥터를 사용했더라면 굳이 아래와 같은 전용 커넥터를 필요하지 않지만, 앞서 언급한 것과 같이 MIPI에는 커넥터에 대한 규정이 없다. 한편으로 필자가 진행한 프로젝트처럼 MIPI인터페이스가 이미 구현된 두 제품을 연결하는 경우도 이례적이다.
2) DSI와 CSI
D-PHY, M-PHY, C-PHY는 MIPI기기간 물리적 연결을 가능하게 해 준다. 그런데, 실제 데이터, 예를 들어 디스플레이 영상 데이터나 카메라 입력 데이터의 전송을 위해서는 추가적인 프로토콜이 필요하다. DSI(Display Serial Interface)와 CSI(Camera Serial Interface)이가 그 역할을 담당한다. 인터넷 프로토콜과 비교해 보면, Ethernet은 인터넷 기기들의 물리적 연결을 가능해 주고, TCP/IP 및 HTTP가 실제 데이터 전송을 가능하게 해주는 프로토콜임과 같다.
DSI
DSI(Display Serial Interface)는 디스플레이를 위한 규격이다. MIPI 물리 계층인 D-PHY를 사용하며, MIPI Display Command Set (MIPI DCS)를 사용한다. 최근에는 4K와 같은 고해상도 영상을 지원하기 위해서 VESA(Video Electronics Standards Association)의 DSC(Display Stream Compression) 를 채용하였다. 한편, DSI-2 는 D-PHY뿐만 아니라, C-PHY를 사용하기 위해서 만들어진 프로토콜이다.
[그림 5] DSI 구성도
DSI는 명령어 모드와 비디오 모드가 있다. 명령어 모드는 디스플레이 모듈에 별도의 메모리가 있어서 버퍼 역할을 할 수 있고, 디스플레이 모듈 자체적으로 화면을 리프레쉬할 수 있는 경우이다. 여기에서 명령어란 DSI 규격에 정의되어 있는 Display Command Set (MIPI DCS)를 의미한다. 비디오 모드는 디스플레이 모듈에 별도의 메모리가 없고, 호스트 프로세서가 직접적으로 화면을 제어하는 경우이다.
CSI
CSI(Camera Serial Interface)는 카메라 모듈을 어플리케이션 프로세서에 연결하기 위한 프로토콜이다. 최초의 CSI인 CSI-1은 D-PHY를 기반으로 동작하였으나, 이후 C-PHY가 나오면서 이를 지원하기 위해서 CSI-2가 나왔다. 이후, M-PHY를 지원하기 위해서 CSI-3가 나왔다.
I2C 프로토콜을 사용하는 CCI(Camera Control Interface)에서 카메라는 슬레이브로서 동작하며, 호스트 프로세서는 마스터로 동작한다. 호스트(AP)는 I2C 버스를 사용하여 카메라의 제어하며 카메라에서 촬영한 이미지는 데이터 레인을 통하여 전송받는다.
CSI-2와 CSI-3가 각각 D-PHY, C-PHY, M-PHY를 기반으로 구성되는 모습을 그림으로 나타내면 다음과 같다.
[그림 6] CSI-2와 CSI-3 구성도
실제 개발 사례
필자는 하드웨어가 포함되는 패스트 프로토타이핑을 위해 시중에서 기성품을 구매하여 MIPI 연결을 시도한 적이 있다. 기성품들은 외부기기와 MIPI 연결을 지원하지만, 매우 제한적이다. 오히려 제한적이라기 보다 특정한 외부 기기와의 연결만을 염두해둔다. 따라서 조건에 맞지 않는 외부기기는 비록 MIPI인터페이스를 지원한다고 하더라도 연결이 될 수 없다. 조건이란 전송하려는 데이터의 해상도, 리프레쉬 빈도, 데이터의 표시 방법(RGB, YUV) 등이다. 이들이 일치할 때에만 두 개의 MIPI 기기는 통신이 가능하다. 이러한 특성은 HDMI와 같은 DisplayPort와는 다른데, 이들은 호환성을 크게 고려하고 있어서 연결하려는 기기들간에 통신을 통해서 서로의 조건을 맞추어 과정이 있다. 디스플레이 케이블이 이와 같은 유연성을 갖는 이유는 멀티미디어 기기와 디스플레이의 연결조합은 소비자가 선택하는 것이기 때문이다. 컴퓨터에 어떠한 모니터가 연결되지 아무도 모르기 때문에, 사전에 특정한 조건으로 고정해 두기 보다는 서로의 조건을 파악하고 조정하는 과정을 표준으로 정하고 있다. 기본적으로 모니터가 지원 가능한 해상도 정보를 컴퓨터에게 전달하고, 컴퓨터는 이에 맞추어 출력 영상정보를 조정한다. 다시 말하자면 MIPI는 이러한 과정이 없다. MIPI는 소비자가 디스플레이를 고르는 과정이 없다. MIPI는 하나의 제품 내 부품들 간의 연결 프로토콜이기 때문에 제조사에 의해 모든 조건이 사전에 결정된다.
필자의 고민은 완제품이 아닌 부품단계의 MIPI 기기들을 연결하는데 있었다. 이들은 MIPI 인터페이스를 지원하는 커넥터를 제공한다. 그러나 특정한 조건에 맞는 외부의 MIPI기기와만 연결이 가능하다. 필자의 역할은 이 조건을 맞추는 것이다. 만약 외부의 MIPI기기가 디스플레이라면 애플리케이션 프로세서에서 생성하는 출력 영상 데이터를 조정해야 하고, 카메라라면 입력 받는 조건을 조정해야 한다. 이 조건을 맞추지 못하면 디스플레에서 영상을 보여주지 못하고, 카메라의 경우에는 애플리케이션 프로세서 쪽에서 에러를 출력하게 된다. 간단해 보일 수 있어도 실제에서는 다양한 외부 변수들과 결합되어 쉽사리 해결되지 않는 경우도 많다. 필자도 몇 개월을 고생하기도 했다. 오실로스코프로 MIPI 신호를 추적해 가며 실수한 부분을 찾고자 했다. 결국 문제는 해결됐는데, 조건을 충분히 일치시키지 못했거나, 신호의 극성을 맞추지 못했기 때문이었다.
퀄컴의 스냅드래곤을 외부의 MIPI 디스플레이와 연결하기 위해서, 앞서 설명한 바와 같이 출력 영상의 특성값들을 System-on-Chip의 레지스터에 기입해 주어야 한다. 어떤 값을 사용할 것인가는 디스플레이가 지원하는 해상도에 달려 있다. 디스플레이 제조사는 아래 그림과 같은 관련 정보을 제공한다. 그림 속의 수치들이 레지스터에 직접 사용되는 것은 아니고, 퀄컴에서 제공하는 수식을 통해 변환된 값을 사용한다.
퀄컴의 스냅드래곤으로 MIPI 카메라의 영상을 입력하는 것은 디스플레이 출력에 비해 설정해 주어야 하는 레지스터의 종류가 적다. 카메라는 디스플레이와 달리 블랭킹에 대한 정보가 필요없기 때문이다. 설정해 주어야 할 레지스터 수가 적다고 카메라의 연결이 간단하다는 의미는 아니다. 카메라의 동작을 직접 제어하지 않는 경우라면 모를까, 카메라의 특성값들, 예를 들어 밝기, 색상 등을 조정해야 하는 경우라면 MIPI의 CCI 규격을 사용해야 한다.
SOF, Start of Frame
필자가 MIPI 관련 개발업무를 수행하면서 가장 많이 접한 단어가 바로 SOF(Start of Frame)이었다. 뭔가 비정상적으로 동작하는 상황이 발생하면 어김없이 SOF가 디버깅용 모니터에 나타난다. 대표적으로 "SOF를 찾을 수 없다"는 에러 메시지가 나오거나, 또는 "이전 프레임을 처리하지 못했는데 새로운 SOF가 도착했다"는 에러 메시지이다. 즉 SOF는 불행이 다가오는 전조이다. 영상이 나와야 할 디스플레이는 무심하게 아무런 변화조차 없다. 야근과 주말 근무가 눈에 보인다.
SOF는 프레임의 시작을 알리는 패킷이다. 프레임은 하나의 화면을 가리킨다. 연결돼 보이는 영상도 사실은 한장 한장의 사진들이 연속으로 보인 결과라는 사실은 영화가 탄생한 이후 삼척동자도 아는 사실이 됐다. 그 한장 한장의 사진, 또는 화면을 프레임이라고 한다. 영상 데이터 처리를 전문으로 하는 기술자들이 붙인 이름이다. 프레임은 라인으로 구성된다. 디스플레이에서 한줄에 해당하는 정보다. 그리고 라인은 픽셀(화소)들도 이루어진다. 따라서 SOF는 하나의 화면을 구성하는 픽셀들이 전송을 시작한다는 신호를 반대편 MIPI기기에 보내는 것이다. EOF(End of Frame)은 마지막으로 전송된다. 다음올 두번째 화면을 전송하기 위해 SOF가 다시 전송된다.
SOF를 찾을 수 없다는 MIPI 수신기의 불만은 SOF 신호가 잘못 만들어졌다기 보다는 도착해야 할 타이밍에 엉뚱한 정보가 수신된 경우를 나타낸다. 이래서는 MIPI 송신단에서 전송한 영상 데이터를 수신단에서 복원해 낼 수 없다. 또 다른 에러 메시지도 기본적으로 동일한 통신 설정의 잘못, 즉 타이밍 정보가 맞지 않기 때문이며 이는 영상 정보에 대한 이해가 양쪽에서 다르기 때문이다. 예를 들어 보내는 쪽은 1920x1080@60Hz의 데이터를 전송하고 있는데, 받는 쪽은 600x480@30Hz의 데이터를 기대하고 있는 상황이다.
송신단과 수신단의 신호의 극성을 맞추어 주는 것도 중요하다. 무심코 놓치는 경우도 있는데, 이 경우에도 SOF 실종 소식을 듣게 된다.
1. Physical Layers: M-PHY®, D-PHY, C-PHY - MIPI Alliance
3. Keysight Technologies MIPI Design & Test
'Electron > Etc.' 카테고리의 다른 글