센서 인터페이스와 타이밍
컬럼 ADC를 빠져나온 숫자는 아직 센서 칩 안에 있다. 12 MP 영상을 초당 30장 보내려면 수 Gbps가 몇 cm의 FPC를 지나 프로세서(AP)에 닿아야 하고, 프로세서는 그 비트열에서 프레임과 라인의 경계, 픽셀 형식, 오류 여부를 읽어 내야 한다. 거꾸로 프로세서는 느린 제어 버스로 노출과 게인을 바꾸고, 그 변경이 정확히 어느 프레임부터 적용되는지 알아야 한다. 이 장은 센서와 프로세서 사이의 링크를 아래층부터 쌓아 올린다. 전기 신호(D-PHY, C-PHY)와 신호 무결성, 바이트에 의미를 붙이는 CSI-2 패킷, 라인·프레임 타이밍과 클록, 레지스터 제어와 다중 카메라 동기를 차례로 다루고, 차량과 산업용 장거리 링크로 넓힌다.
- 해상도·비트 수·프레임 레이트에서 필요한 링크 대역폭과 레인 수를, 평균이 아니라 라인당 버스트 기준으로 계산한다.
- D-PHY의 HS/LP 모드와 레인 상태 천이, C-PHY의 3선 3레벨 부호화와 내장 클록을 설명하고 오버헤드를 정량화한다.
- 채널 손실·지터·노이즈가 아이 다이어그램과 BER을 어떻게 바꾸는지, CTLE와 디엠퍼시스가 무엇을 되돌리는지 안다.
- CSI-2 짧은/긴 패킷, DI(VC + DT), WC, ECC, CRC-16, RAW10/12 패킹을 바이트 단위로 구성하고 검증한다.
- HTS·VTS·적분 시간으로 프레임 레이트와 노출을 계산하고, PLL 분주비·레지스터 래치·그룹 홀드·다중 카메라 동기의 함정을 안다.
데이터 경로와 대역폭 산수
센서와 프로세서 사이에는 성격이 전혀 다른 두 갈래 길이 있다. 하나는 영상이 흐르는 고속 단방향 링크다. 스마트폰과 대부분의 임베디드 카메라에서는 MIPI CSI-2 프로토콜을 D-PHY 또는 C-PHY라는 물리층 위에 얹어 쓴다. 다른 하나는 프로세서가 센서 레지스터를 읽고 쓰는 저속 양방향 제어 버스로, I²C와 호환되는 CCI(Camera Control Interface)나 그 후속인 I3C를 쓴다. 여기에 기준 클록 입력(EXTCLK), 리셋·셧다운 핀, 프레임 동기 핀, 전원 몇 가닥이 더해지면 카메라 모듈 커넥터의 신호가 거의 다 나온다.
링크가 실어야 하는 평균 데이터율은 단순한 곱이다. 그러나 링크 설계에서 실제로 문제가 되는 것은 평균이 아니라 한 라인을 라인 시간 안에 보낼 수 있느냐다. 센서는 행 하나를 읽자마자 내보내고 다음 행을 읽기 때문에, 라인 버퍼가 작으면 한 라인 분량을 라인 시간 안에 비워야 한다. 그 시간에는 패킷 헤더와 CRC, 그리고 물리층이 저전력 상태와 고속 상태를 오가는 시간이 함께 들어간다.
계산 예. 50 MP(8160×6144), 10비트, 30 fps면 평균 Gbps다. 블랭킹 40행을 더하면 이고, 한 라인은 10,200 + 6 = 10,206바이트다. 2.5 Gbps D-PHY 4레인이면 레인당 2,552바이트를 8.2 µs에 보내야 하므로 라인 시간을 넘는다(점유율 약 160 %). D-PHY를 4.5 Gbps로 올리면 점유율이 약 91 %로 10 % 여유선을 살짝 넘고, C-PHY 3트리오를 6 Gsps로 쓰면 약 44 %로 넉넉하다. 대형 센서가 C-PHY를 쓰는 이유가 여기에 있다(17장의 설계 예와 같은 결론이다). 이 장의 레인 계획 시뮬레이터(5절)가 이 계산을 그대로 한다.
차동 신호와 MIPI D-PHY
수 Gbps를 몇 cm에서 수십 cm 보내는 표준 해법은 차동 신호(Differential signaling)다. 두 선에 반대 위상의 신호를 실어 두 선의 차이만 읽으면, 두 선에 똑같이 들어오는 잡음(공통 모드 잡음)과 접지 흔들림이 빠지고, 두 선의 전류가 서로 반대라 방사 잡음도 줄어든다. 차이만 읽으므로 스윙을 수백 mV로 낮춰도 되고, 그만큼 빨리 바꿀 수 있고 전력도 적다. 수신단은 100 Ω 차동 종단으로 반사를 막는다.
D-PHY는 한 쌍의 선(레인)에 두 가지 전혀 다른 모드를 겹쳐 놓은 물리층이다. HS 모드(High-Speed)는 공통 모드 약 200 mV, 차동 진폭 약 200 mV의 저전압 차동 신호(SLVS 계열)로 데이터를 보낸다. LP 모드(Low-Power)는 두 선을 각각 1.2 V CMOS 단일 종단 신호로 쓴다. LP에서는 두 선의 조합(LP-11, LP-01, LP-10, LP-00)이 곧 "상태"이고, 블랭킹 동안 쉬거나 HS 버스트의 시작과 끝을 알리는 데 쓴다. LP 모드는 종단을 끄므로 정지 전류가 거의 없다.
D-PHY는 클록을 데이터와 함께 보내는 소스 동기 방식이다. 레인 하나는 클록 전용이고 데이터 레인은 1–4개다. 클록은 DDR로 동작해 클록의 상승과 하강 에지마다 한 비트씩 샘플링하므로, 2.5 Gbps 레인의 클록은 1.25 GHz다. 레인당 속도는 규격 판마다 올라 왔다. v1.2가 2.5 Gbps, v2.x가 4.5 Gbps, v3.0이 표준 채널에서 약 9 Gbps를 정의한다. 높은 속도에서는 클록과 데이터 사이의 스큐를 맞추는 디스큐 보정 시퀀스와 수신기 등화가 필요해진다.
HS 버스트의 시작과 끝
데이터 레인은 블랭킹 동안 LP-11(정지)에 머물다가, 라인 하나를 보낼 때만 HS로 들어간다. 진입 순서는 LP-01(HS 요청) → LP-00(준비, 수신 종단 켜짐) → HS-ZERO(차동 0 유지) → 동기 바이트 B8h(LSB부터 00011101)이다. 수신기는 이 동기 패턴으로 바이트 경계를 찾는다. 끝에서는 마지막 비트를 반전해 일정 시간 유지하는 HS-TRAIL 뒤에 LP-11로 돌아간다. 각 단계의 최소 시간은 규격이 정한다.
이 조건들의 대부분은 ns 단위 고정값이고 UI 항은 작다. 그래서 오버헤드는 비트율과 거의 무관하게 버스트마다 수백 ns가 든다. 비트율을 올리면 페이로드 시간은 줄지만 이 고정 비용은 그대로이므로, 고속일수록, 그리고 패킷이 짧을수록 상대 오버헤드가 커진다. 클록 레인을 계속 켜 두는 연속 클록 모드는 이 비용을 줄이지만 블랭킹 동안에도 전력과 전자파를 낸다.
D-PHY 레인 상태 기계: LP ↔ HS 파형과 블랭킹 비용
LP 상태 조합으로 수 Mbps의 느린 양방향 통신(이스케이프 모드, LPDT)도 할 수 있다. 디스플레이용 DSI는 이것으로 명령을 보내지만, 카메라 CSI-2는 레지스터 제어를 별도 I²C/I3C로 하므로 LP는 주로 블랭킹 중 대기와 버스트 경계 표시, 초저전력 상태(ULPS) 진입에 쓴다. 영상을 멈추지 않고 블랭킹마다 LP로 내려가는 것은 레인당 수 mA의 HS 종단 전류를 아끼기 위해서다.
C-PHY: 세 선, 세 레벨, 내장 클록
D-PHY는 데이터 레인마다 선 두 개, 그리고 클록 레인 두 개가 더 든다. 레인을 늘리면 커넥터 핀과 FPC 배선이 늘고, 레인 사이 스큐도 맞춰야 한다. C-PHY는 선 세 개(A, B, C)를 한 묶음(트리오)으로 쓰고, 클록을 따로 보내지 않는다. 매 순간 세 선 중 하나는 높은 레벨(약 3/4), 하나는 낮은 레벨(1/4), 나머지 하나는 가운데(1/2)에 있다. 어느 선이 높고 어느 선이 낮은지의 조합은 3 × 2 = 6가지이며, 이것을 와이어 상태라 부르고 +x, −x, +y, −y, +z, −z로 쓴다.
핵심 규칙은 매 심벌마다 반드시 상태를 바꾼다는 것이다. 지금 상태를 빼면 갈 수 있는 상태가 다섯 개이므로, 한 심벌은 다섯 갈래 중 하나, 즉 비트를 나른다. 상태가 매번 바뀌므로 수신기의 차동 비교기 세 개(A−B, B−C, C−A) 가운데 적어도 하나는 매 심벌 부호가 뒤집히고, 수신기는 이 전이에서 심벌 클록을 직접 복원한다. 클록 레인이 필요 없는 이유다.
실제 C-PHY는 16비트 워드를 심벌 7개로 바꾼다. 가 보다 크므로 가능하고, 심벌당 비트로 이론 상한 2.32비트의 98.5 %를 쓴다. 남는 조합은 동기 워드 같은 제어 용도로 돌린다. C-PHY v2.x는 표준 채널에서 6 Gsps(트리오당 약 13.7 Gbps), 짧은 채널에서 8 Gsps를 정의하고, 2025년의 v3.0은 상태 수를 늘린 18-와이어스테이트 부호화를 선택 기능으로 더했다. 선 9개로 비교하면 D-PHY는 4데이터 레인 + 클록(10선) 4.5 Gbps급에서 18 Gbps, C-PHY 3트리오(9선)는 6 Gsps에서 41 Gbps다. 많은 AP의 수신기는 같은 핀을 D-PHY와 C-PHY로 바꿔 쓰는 콤보 PHY다.
C-PHY 부호기: 16비트 → 7심벌 → 와이어 상태 → 수신기 출력
신호 무결성: 손실, 지터, 아이
센서 패드에서 AP 패드까지 신호는 패키지 리드, 모듈 기판, FPC, 커넥터, 메인보드 배선을 지난다. 이 경로는 주파수가 높을수록 신호를 더 깎는다. 도체 표면으로 전류가 몰리는 표피 효과 손실은 대략 에, 유전체 손실은 에 비례한다. 고주파가 더 깎이면 펄스가 퍼지고, 앞 비트의 꼬리가 다음 비트에 겹쳐 심벌 간 간섭(ISI)이 된다. 여기에 비트 타이밍의 흔들림인 지터(Jitter)와 열잡음·누화 같은 전압 잡음이 더해진다.
이 모든 효과를 한 그림에 모은 것이 아이 다이어그램(Eye diagram)이다. 긴 의사 난수(PRBS) 비트열을 보내고 받은 파형을 2 UI 길이로 잘라 겹쳐 그리면, 가운데에 눈 모양의 빈 공간이 생긴다. 눈이 세로로 열린 정도(아이 높이)는 전압 여유, 가로로 열린 정도(아이 폭)는 타이밍 여유다. 수신기는 눈 한가운데에서 샘플링해야 오류가 가장 적다.
비트 오류율은 판정점에서 신호가 잡음에 밀려 문턱을 넘을 확률이다. 잡음이 가우시안이면 Q 인자 하나로 쓴다. 지터는 한정된 크기의 결정성 지터(DJ: ISI, 듀티 왜곡, 주기성 잡음)와 가우시안 랜덤 지터(RJ)로 나누고, 목표 BER에서의 총 지터를 이중 디랙 모델로 어림한다.
손실을 되돌리는 것이 등화(Equalization)다. 수신단의 CTLE(Continuous-Time Linear Equalizer)는 영점 하나와 극점 둘로 저주파를 깎고 나이퀴스트 근처를 상대적으로 올려 채널의 기울기를 상쇄한다. 송신단의 디엠퍼시스는 같은 값이 이어지는 비트의 진폭을 줄이고 전이 비트만 크게 보내는 FIR 필터다. 둘 다 ISI를 줄이는 대신 잡음(CTLE)이나 신호 진폭(디엠퍼시스)을 희생한다. 지나치게 걸면 오히려 과보상 ISI가 생긴다.
아이 다이어그램: PRBS → 손실 채널 → 지터·잡음 → CTLE, 통계적 BER과 배스텁
CSI-2 패킷: 바이트에 의미 붙이기
물리층은 바이트를 나를 뿐이다. 그 바이트가 프레임의 시작인지, 몇 번째 라인인지, RAW10인지 YUV인지, 어느 카메라(가상 채널)의 것인지는 CSI-2의 패킷이 정한다. 송신기는 픽셀을 바이트로 패킹하고(픽셀–바이트 변환), 패킷 헤더와 오류 검출 코드를 붙이고(저수준 프로토콜), 바이트를 레인에 나눠 담는다(레인 관리). 수신기는 이 순서를 거꾸로 밟는다.
패킷은 두 종류다. 짧은 패킷은 4바이트로, 데이터 식별자 DI, 16비트 값, ECC로 이루어진다. 프레임 시작(FS)과 끝(FE)에는 프레임 번호를, 선택 사항인 라인 시작(LS)과 끝(LE)에는 라인 번호를 싣는다. 긴 패킷은 4바이트 헤더(DI, 워드 수 WC 2바이트, ECC), WC바이트의 페이로드, 2바이트 CRC로 이루어진다. 한 라인의 픽셀이 긴 패킷 하나에 들어가는 것이 보통이다.
헤더 ECC는 DI와 WC 24비트에서 해밍 부호 방식으로 만든 6비트다. 각 패리티 비트는 정해진 데이터 비트들의 XOR이고, 수신기가 다시 계산한 ECC와 받은 ECC를 XOR한 신드롬이 0이면 정상, 데이터 비트 하나에 대응하는 값이면 그 비트를 뒤집어 고치고, 어느 쪽도 아니면 2비트 이상 오류로 버린다. 헤더를 고칠 수 있게 한 이유는, WC가 틀리면 수신기가 패킷 끝을 잘못 잡아 뒤따르는 모든 데이터가 엉키기 때문이다. 반면 페이로드 오류는 그 라인 하나만 망가지므로 CRC로 검출해 알리기만 한다.
픽셀 패킹과 레인 분배
10비트 픽셀을 바이트 경계에 맞추려면 묶어야 한다. RAW10은 4픽셀을 5바이트로, 각 픽셀의 상위 8비트를 차례로 4바이트에 넣고 하위 2비트 네 개를 다섯째 바이트에 모은다. RAW12는 2픽셀을 3바이트로 묶는다. 상위 비트를 앞에 모아 두면 하위 비트를 버리고 8비트로만 읽는 빠른 미리보기가 쉽다. 한 라인의 픽셀 수는 묶음 단위(RAW10은 4)의 배수여야 한다. 패킷 바이트는 레인에 돌아가며 배분되어 바이트 은 레인 으로 간다. 각 레인은 따로 SoT/EoT를 갖고, 패킷 길이가 의 배수가 아니면 레인마다 끝나는 시점이 한 바이트씩 다를 수 있다.
CSI-2 패킷 빌더: 패킹 → 헤더·ECC·CRC → 레인 분배 → 오류 주입과 복구
레인 계획: 평균이 아니라 버스트로
이제 1절의 식을 실제 숫자로 돌려 보자. 한 라인 시간 안에 픽셀 페이로드, 헤더·CRC, LP↔HS 전환이 모두 들어가야 한다. HDR 센서가 노출 두세 개를 가상 채널로 섞어 보내면(DOL·스태거드 HDR, 7장) 라인 시간마다 패킷이 그만큼 늘어난다. 블랭킹 시간은 평균 데이터율을 낮춰 주지만 라인 버스트 자체를 줄여 주지는 않는다는 점이 핵심이다.
대역폭·레인 계획기: D-PHY vs C-PHY, HDR 가상 채널, 라인 버스트 여유
한 프레임은 FS 짧은 패킷 → (임베디드 데이터 라인, DT 12h) → 라인마다 긴 패킷(선택적으로 LS/LE로 감쌈) → FE 순서로 나간다. 패킷 사이와 프레임 사이에는 레인이 LP-11로 내려간다. 수신기는 FS의 프레임 번호와 LS의 라인 번호로 누락을 검출하고, VC와 DT를 보고 패킷을 서로 다른 버퍼(예: 긴 노출, 짧은 노출, 위상차 AF 데이터)로 보낸다.
라인·프레임 타이밍
센서 안의 타이밍 발생기는 두 개의 카운터로 돈다. 가로 카운터는 픽셀 클록을 세어 한 라인의 길이 HTS(line_length_pck)에서 0으로 돌아가고, 세로 카운터는 라인을 세어 한 프레임의 길이 VTS(frame_length_lines)에서 돌아간다. HTS는 실제 픽셀 수보다 크고 그 차이가 수평 블랭킹이며, VTS는 실제 행 수보다 크고 그 차이가 수직 블랭킹이다. 이 두 숫자와 픽셀 클록이 프레임 레이트를 정한다.
롤링 셔터에서 행 의 읽기는 프레임 시작에서 뒤에 일어나고, 리셋은 그보다 앞서 일어난다. 그러므로 노출은 에서 작은 여유(보통 수 행)를 뺀 값보다 길 수 없다. 더 긴 노출을 요청하면 센서는 둘 중 하나를 한다. 노출을 최대값으로 자르거나, VTS를 자동으로 늘려 프레임을 늘린다. 야간에 스마트폰 미리보기의 프레임 레이트가 30에서 15 fps로 떨어지는 것이 후자다. 프레임 레이트를 바꾸고 싶을 때 픽셀 클록을 건드리지 않고 VTS만 바꾸는 것도 같은 원리다.
계산 예. 12 MP 센서의 타이밍 픽셀 클록이 600 MHz이고 HTS = 4400이면 다. 30 fps를 원하면 행이다. 유효 행 3000을 읽는 데 22.0 ms가 걸리고 나머지 11.3 ms가 수직 블랭킹이다. 50 Hz 전원 지역의 조명은 100 Hz로 깜빡이므로, 노출을 10 ms(1364행)의 정수배로 맞추면 깜빡임 줄무늬가 사라진다. 같은 10 ms가 60 Hz 지역(120 Hz 깜빡임)에서는 진폭 16 % 정도의 줄무늬를 남긴다.
프레임 타이밍 다이어그램: 롤링 노출을 끌어서 바꾸기
클록과 PLL
센서에 들어오는 클록은 보통 19.2, 24, 27 MHz 같은 낮은 기준 클록 하나다. 센서 안의 PLL(Phase-Locked Loop)이 이것을 수 GHz로 올리고, 분주기로 나눠 타이밍용 픽셀 클록, 컬럼 ADC 카운터 클록, MIPI 비트 클록을 만든다. 기준 클록을 먼저 나눠 위상 비교기(PFD)에 넣고, VCO 출력을 으로 나눈 것과 비교해 위상이 맞도록 VCO를 조정하므로, 락이 걸리면 VCO 주파수는 기준의 배가 된다.
분주비를 고르는 것은 제약 충족 문제다. 기준 클록은 보드가 정하고, 픽셀 클록은 원하는 프레임 레이트와 HTS·VTS가 정하고, 레인 비트율은 AP 수신기가 지원하는 값과 전자파 간섭이 정한다. 휴대폰에서는 MIPI 비트율의 고조파가 셀룰러·GNSS 수신 대역에 떨어지지 않도록 몇 가지 비트율 중에서 고르기도 한다. 한 VCO에서 두 클록을 나누려면 두 목표의 비가 정수 분주비로 맞아야 하고, 맞지 않으면 PLL을 둘로 나눠야 한다.
PLL은 되먹임 제어 루프이기도 하다. 전하 펌프와 루프 필터를 쓰는 2형 PLL의 닫힌 루프 전달 함수는 고유 주파수 과 감쇠비 를 갖는 2차 시스템이다. 루프 대역이 넓으면 빨리 락하고 VCO 자체 위상 잡음을 잘 누르지만, 기준 클록의 지터와 PFD 스퍼를 더 통과시킨다. 이산 시간 비교의 영향을 무시하려면 루프 대역을 PFD 주파수의 약 1/10 아래로 둔다. PLL 지터는 그대로 MIPI 아이의 RJ가 된다.
PLL 구성기: 분주비 제약 검사, 자동 해 찾기, 락 과도 응답
레지스터 제어: CCI, 그룹 홀드, 스트리밍
센서의 동작은 수백에서 수천 개의 레지스터로 정해진다. 프로세서는 이것을 CCI로 읽고 쓴다. CCI는 I²C와 호환되는 2선 버스로, 7비트 슬레이브 주소 뒤에 16비트 레지스터 주소와 8비트 데이터를 보내고, 연속 주소는 자동 증가로 이어 쓴다. 표준 모드 100 kHz, 고속 모드 400 kHz, 고속 모드 플러스 1 MHz가 흔하다. 최근 센서는 같은 레지스터 맵을 MIPI I3C(SDR 12.5 MHz, 대역 내 인터럽트)로도 접근하게 한다. MIPI의 CCS(Camera Command Set)는 SMIA에서 이어진 표준 레지스터 맵으로, 예를 들어 0x0100(mode_select), 0x0104(grouped_parameter_hold), 0x0202(coarse_integration_time), 0x0340(frame_length_lines), 0x0342(line_length_pck)를 정의한다. 그러나 많은 상용 센서는 제조사 고유의 맵을 쓴다.
문제는 언제 적용되느냐다. 센서는 레지스터를 바로 쓰지 않고 그림자 레지스터에 받아 두었다가 프레임 경계에서 한꺼번에 래치한다. 노출은 다음 프레임의 리셋 포인터가 이미 지나가고 있기 때문에 대개 두 프레임 뒤에, 게인은 읽을 때 적용되므로 한 프레임 뒤에 반영된다. 노출을 반으로 줄이고 게인을 두 배로 올려 밝기를 유지하려 했는데 두 값이 서로 다른 프레임에 반영되면, 그 사이 한 프레임이 절반 밝기로 튄다. 또 16비트 노출 값을 바이트 두 개로 나눠 쓰는 도중에 프레임 경계가 지나가면, 상위 바이트만 새 값인 엉뚱한 노출이 한 프레임 동안 적용된다.
그룹 홀드(Grouped parameter hold)는 이 둘째 문제를 막는다. 홀드를 켜고 여러 레지스터를 쓴 뒤 홀드를 풀면, 그 묶음 전체가 같은 프레임 경계에서 래치된다. 첫째 문제(노출과 게인의 지연 차이)는 그룹 홀드로 해결되지 않는다. 센서의 게인 지연 보정 기능을 켜거나, 드라이버가 게인을 한 프레임 늦게 쓰는 식으로 맞춰야 한다. ISP가 어느 프레임에 어떤 설정이 적용됐는지 알도록, 많은 센서는 프레임마다 노출·게인·프레임 번호를 담은 임베디드 데이터 라인(DT 12h)을 FS 직후에 보낸다.
| 단계 | 하는 일 | 주의 |
|---|---|---|
| 1. 전원 | 데이터시트 순서대로 아날로그·I/O·코어 전원 인가 | 순서·상승 시간 위반은 래치업이나 OTP 손상 위험 |
| 2. 클록·리셋 | EXTCLK 공급 후 XSHUTDOWN(XCLR) 해제, 수 ms 대기 | 클록 없이 리셋 해제하면 내부 상태 불확정 |
| 3. 초기화 | 소프트 리셋, 칩 ID 확인, 초기화 표(PLL·아날로그 바이어스) 쓰기 | 쓰기 수천 개 → 부팅 지연의 주원인 |
| 4. 모드 설정 | 해상도·HTS/VTS·노출·게인·레인 수·비트율 | 그룹 홀드로 묶어 쓰기 |
| 5. 스트리밍 시작 | mode_select = 1, 레인 LP-11에서 첫 FS | 처음 1–2 프레임은 AE 미수렴·불안정 → 버림 |
| 6. 정지 | mode_select = 0, 프레임 경계에서 멈춤 | 프레임 중간 정지 시 수신기 FIFO 잔여 정리 |
레지스터 갱신 위험: 래치 경계, 바이트 찢김, 그룹 홀드와 지연 보정
다중 카메라 동기
스마트폰 후면의 카메라 서너 개, 차량의 서라운드 뷰 카메라, 스테레오 깊이 카메라는 서로 같은 순간을 찍어야 한다. 각 센서가 자기 수정 발진기(또는 서로 다른 PLL 설정)로 돌면, 공칭 프레임 레이트가 같아도 실제 주파수는 수십 ppm씩 다르다. 100 ppm 차이면 30 fps에서 프레임마다 3.3 µs씩 어긋나 1초에 0.1 ms, 1분에 6 ms가 벌어지고, 약 5.6분 뒤에는 한 프레임 전체가 미끄러진다.
동기 방법은 세 단계다. 가장 약한 것은 소프트웨어 동기로, 프레임 타임스탬프를 비교해 한쪽의 VTS를 잠깐 늘리거나 줄여 위상을 당긴다. I²C 지연과 OS 지터 때문에 잔차가 수백 µs에서 ms 수준이고, 보정 사이에는 다시 드리프트한다. 하드웨어 동기는 주 센서가 프레임 시작마다 내는 XVS(수직 동기) 펄스를 종 센서의 입력 핀에 넣어 종 센서가 매 프레임 그 펄스에 맞춰 시작하게 하거나, 외부 트리거 하나로 모든 센서를 동시에 시작시킨다. 잔차는 라인 시간 이하로 줄어든다. 여기에 같은 기준 클록을 나눠 주면 드리프트 자체가 사라진다. 네트워크로 연결된 차량·산업용 카메라는 IEEE 1588(PTP) 같은 시간 동기 프로토콜로 타임스탬프를 맞춘다.
다중 카메라 드리프트와 스테레오 롤링 스큐 → 깊이 오차
차량·산업용 확장
CSI-2와 D-PHY/C-PHY는 수십 cm 안쪽을 위한 링크다. 차에서는 범퍼나 사이드미러의 카메라에서 중앙 제어기까지 수 m에서 15 m를 가야 하고, 진동·온도·전자파 조건도 훨씬 가혹하다(15장). 그래서 카메라 모듈 안에 SerDes(Serializer/Deserializer)를 둔다. 직렬화기는 센서의 CSI-2를 받아 동축 케이블 한 가닥(또는 차폐 연선)에 수 Gbps로 싣고, 같은 케이블로 전원(PoC, Power over Coax)과 수십–수백 Mbps의 역방향 채널을 함께 보낸다. 역방향 채널은 I²C 터널링과 프레임 동기 신호, GPIO를 나른다. 역직렬화기는 이것을 다시 CSI-2로 풀어 SoC에 넘기며, 여러 카메라를 가상 채널로 합치기도 한다.
오래 쓰인 방식은 업체 고유 규격이다(예: GMSL 계열, FPD-Link 계열). 표준으로는 MIPI A-PHY가 있다. v1.0(2020)이 최대 16 Gbps, v1.1이 이중 차동 쌍(스타 쿼드) 케이블로 32 Gbps까지 정의하며, 그 위에 CSI-2를 얹는 프로토콜 어댑터를 둔다. 자동차 업계의 다른 표준으로 ASA Motion Link도 있다. 기능 안전 관점에서는 CSI-2 위에 프레임 카운터·CRC·보안 정보를 덧붙이는 MIPI CSE(Camera Service Extensions) 같은 확장이 쓰인다.
고해상도·고속 산업용과 방송용 센서는 MIPI 대신 SLVS-EC(Scalable Low Voltage Signaling with Embedded Clock) 같은 내장 클록 직렬 링크를 쓰기도 한다. 8b/10b 부호로 클록을 데이터에 넣어 레인 사이 스큐 제약이 없고, 레인을 많이 묶어 큰 대역을 얻는다. 카메라와 PC 사이에는 다시 다른 층이 있다. USB3 Vision, GigE Vision(1–10 GbE, 100 m), CoaXPress(동축 1가닥당 최대 12.5 Gbps급) 같은 머신 비전 규격과 공통 제어 표준 GenICam이다. 이때 센서의 MIPI/SLVS-EC 출력은 카메라 안의 FPGA가 받아 바꿔 준다.
| 링크 | 매체 · 거리 | 클록 | 레인당 속도 (대략) | 주 용도 |
|---|---|---|---|---|
| MIPI D-PHY | 차동 쌍 · 수십 cm | 별도 클록 레인 (DDR) | 2.5 (v1.2) / 4.5 (v2.x) / ~9 Gbps (v3.0) | 폰·임베디드 카메라 |
| MIPI C-PHY | 3선 트리오 · 수십 cm | 심벌 전이에 내장 | 6 Gsps ≈ 13.7 Gbps (v2.x 표준 채널) | 고해상도 폰 카메라 |
| SLVS-EC | 차동 쌍 · 짧은 거리 | 8b/10b 내장 | 수 Gbps급, 레인 다수 | 산업·방송용 대형 센서 |
| 차량용 SerDes · A-PHY | 동축/STP · ~15 m | 내장 + 역방향 채널 | 수–16 Gbps (A-PHY v1.1 이중 쌍 32 Gbps) | ADAS·서라운드 카메라 |
| USB3 / GigE Vision · CoaXPress | USB · 이더넷 100 m · 동축 | 내장 | 5–10 Gbps · 1–10 GbE · 12.5 Gbps/동축 | 머신 비전 카메라 → PC |
계산 예. 15장의 8 MP(3840×2160) 30 fps 차량 카메라가 화소당 24비트 HDR을 그대로 보내면 약 6.0 Gbps(블랭킹 포함 버스트로는 더)가 필요하다. 센서 안에서 12비트로 구간 선형 압축하면 3.0 Gbps가 되어, 이 장의 레인 계획기로 D-PHY 2.5 Gbps 2레인(점유 약 64 %)에 들어가고 직렬화기 링크 하나로 충분하다. 압축 곡선의 무릎점은 임베디드 데이터에 실어 보내 ISP가 되펴도록 한다.
핵심 정리
- 센서–프로세서 링크는 고속 단방향 영상(CSI-2 over D-PHY/C-PHY)과 저속 양방향 제어(I²C/I3C CCI), 기준 클록·리셋·동기 핀으로 이루어진다.
- 링크 용량은 평균 데이터율 가 아니라 라인 버스트로 따진다. 한 라인의 픽셀 + 헤더·CRC 6 B + LP↔HS 전환이 라인 시간(여유 포함) 안에 들어가야 하고, HDR 가상 채널은 라인당 패킷 수를 곱으로 늘린다.
- D-PHY는 HS(약 200 mV 차동, DDR 소스 동기 클록)와 LP(1.2 V 단일 종단 상태) 모드를 오간다. LP-11 → LP-01 → LP-00 → HS-ZERO → B8h → 데이터 → TRAIL → LP-11의 전환에 버스트당 수백 ns가 들며 대부분 ns 고정값이라 고속·짧은 패킷일수록 상대 오버헤드가 크다. 비연속 클록은 그 비용을 두 배 넘게 늘린다.
- C-PHY는 3선 3레벨 6상태를 매 심벌 바꿔 클록을 내장하고, 16비트를 7심벌(5⁷ ≥ 2¹⁶)로 보내 심벌당 2.286비트를 나른다. v2.x 표준 채널 6 Gsps는 트리오당 약 13.7 Gbps다.
- 채널 손실(표피 , 유전체 )은 ISI를, 지터와 잡음은 아이를 좁힌다. 10⁻¹²에서 RJ는 RMS의 약 14배를 먹는다. CTLE와 디엠퍼시스는 ISI를 되돌리지만 잡음·진폭을 희생하며, ISI가 비가우시안이므로 Q 인자 BER은 틀릴 수 있다.
- CSI-2 짧은 패킷은 DI + 16비트 + ECC, 긴 패킷은 DI + WC + ECC + 페이로드 + CRC-16이다. DI = VC[7:6] + DT[5:0]. 헤더 ECC는 1비트 정정·2비트 검출, CRC(x¹⁶+x¹²+x⁵+1)는 검출만 한다. RAW10은 4픽셀 → 5바이트, RAW12는 2픽셀 → 3바이트이며 바이트는 레인에 돌아가며 분배된다.
- . 노출은 VTS − 여유를 넘을 수 없어 더 길면 프레임이 늘거나 노출이 잘린다. 깜빡임 줄무늬는 노출을 조명 주기(10 ms 또는 8.33 ms)의 정수배로 맞춰 없앤다.
- PLL은 기준 클록을 배 해 VCO를 만들고 분주해 픽셀·ADC·MIPI 클록을 낸다. PFD·VCO 범위와 정수 분주비가 해를 제한하며, 루프 대역과 감쇠비는 락 시간과 지터의 절충이다.
- 레지스터는 그림자에 받아 프레임 경계에서 래치되고, 노출은 보통 2프레임, 게인은 1프레임 뒤 반영된다. 그룹 홀드는 묶음의 동시 래치와 바이트 찢김을 막고, 노출·게인 지연 차이는 별도 보정이 필요하다. 임베디드 데이터가 어떤 설정이 어느 프레임에 적용됐는지 알려 준다.
- 독립 클록 카메라는 ppm 차이로 드리프트한다(100 ppm, 30 fps → 프레임당 3.3 µs). HW XVS 동기나 공통 클록으로 묶어야 하고, 스테레오는 롤링 방향까지 맞춰야 깊이가 틀어지지 않는다. 장거리 차량 링크는 SerDes·A-PHY가 CSI-2를 감싸 전원·역방향 제어와 함께 나른다.
확인 퀴즈
Q1. 12 MP, 10비트, 30 fps의 평균 데이터율은 3.6 Gbps다. 2.5 Gbps D-PHY 2레인(5 Gbps)이면 충분한지 판단할 때 가장 중요한 추가 고려는?
Q2. D-PHY 데이터 레인이 블랭킹에서 HS 버스트로 들어가는 올바른 순서는?
Q3. C-PHY가 별도 클록 선 없이 수신기 클록을 복원할 수 있는 이유는?
Q4. C-PHY가 16비트 워드를 7심벌에 담을 수 있는 근거와 심벌당 비트 수가 맞게 짝지어진 것은?
Q5. 링크의 랜덤 지터가 RMS 0.02 UI, 결정성 지터가 0.10 UI(이중 디랙)이다. BER 10⁻¹²에서의 총 지터에 가장 가까운 값은?
Q6. CSI-2 긴 패킷 헤더 24비트 중 1비트가 뒤집혔다. 수신기의 동작으로 맞는 것은?
Q7. RAW10 라인 4000픽셀의 긴 패킷은 몇 바이트이고, DI의 DT 값은?
Q8. 픽셀 클록 600 MHz, HTS 4400, VTS 4545로 30 fps인 센서에 노출 6000행을 요청했다. "프레임 연장" 모드(여유 8행)에서 일어나는 일은?
Q9. 드라이버가 노출을 절반으로 줄이고 아날로그 게인을 두 배로 올려 같은 프레임에 그룹 홀드로 함께 썼는데도 밝기가 한 프레임 튄다. 가장 그럴듯한 원인은?
Q10. 같은 공칭 30 fps로 자유 동작하는 두 카메라의 클록 차이가 50 ppm이다. 한 프레임(33.3 ms) 전체가 미끄러지는 데 걸리는 시간은 대략?