젯슨 나노 USB3.0 영상 끊김, 아이다이어그램으로 잡은 이야기
영상이 갑자기 끊기는데 원인을 못 찾겠다, 이게 가장 답답한 상황입니다. 소프트웨어 로그에는 별다른 에러가 없고 케이블을 바꿔도 증상이 그대로였습니다.
엔비디아 젯슨 나노(NVIDIA Jetson Nano) 보드에 USB3.0 카메라 모듈을 물려 영상을 받는 프로젝트를 하다가 딱 이 상황에 빠졌습니다. 결국 오실로스코프로 아이다이어그램을 찍어보고서야 원인이 보이기 시작했습니다.
USB3.0 카메라 영상이 끊긴 진짜 이유
처음엔 당연히 소프트웨어 문제라고 생각했습니다. 드라이버 로그, 커널 메시지, V4L2 버퍼 설정까지 다 뒤졌는데 눈에 띄는 에러가 없었습니다.
이런 증상은 저만 겪은 게 아니었습니다. 젯슨 나노로 USB3.0 카메라를 물린 사용자들 사이에서도 영상이 랜덤하게 끊기거나 장치가 사라지는 문제가 꾸준히 보고되고 있습니다 (참고: NVIDIA Developer Forums, Random USB drop on Jetson Nano).
소프트웨어팀은 드라이버 쪽을 의심했지만, 저는 하드웨어 설계자라 신호 쪽을 먼저 의심했습니다. 원단이 아니라 데이터를 실어 나르는 케이블과 커넥터, 그 물리 계층의 신호 자체가 문제일 수 있다고 본 거죠. 그래서 카메라 모듈과 젯슨 나노 보드 사이 USB3.0 라인에 직접 오실로스코프를 물려서 아이다이어그램부터 확인해보기로 했습니다.
영상 끊김을 소프트웨어 문제로만 접근하면 원인을 못 찾을 수 있습니다. 물리 계층 신호 품질부터 아이다이어그램으로 확인하는 게 순서입니다.
아이다이어그램이란 무엇인가
아이다이어그램(Eye Diagram)이란 디지털 신호의 여러 비트 구간을 오실로스코프 화면 위에 겹쳐서 보여주는 파형을 말합니다. 잔상이 남는 모드로 수천, 수만 번의 비트 파형을 겹치면 모양이 사람 눈과 비슷하게 보인다고 해서 이런 이름이 붙었습니다.
이 눈 모양이 얼마나 크고 선명하게 열려 있느냐로 신호 품질을 직관적으로 판단할 수 있습니다. 눈이 뚜렷하게 열려 있으면 신호가 깨끗하다는 뜻이고, 눈이 흐릿하게 감겨 있으면 노이즈나 타이밍 오차가 심하다는 뜻입니다 (출처: 정보통신기술용어해설, 아이패턴).
저는 회로 설계 25년 하면서 이 아이다이어그램만큼 문제 원인을 빨리 좁혀주는 도구를 별로 못 봤습니다. 소프트웨어 로그로는 며칠을 헤매도 못 찾을 걸, 눈 모양 한 번 보면 감이 옵니다.
아이다이어그램은 여러 비트를 겹쳐서 신호 품질을 한눈에 보여주는 파형입니다. 눈이 크고 뚜렷할수록 신호가 깨끗하다는 의미입니다.
눈 높이와 눈 너비로 읽는 신호 품질
| [eye diagram] |
아이다이어그램을 볼 때 제가 가장 먼저 보는 두 가지가 눈 높이(Eye Height)와 눈 너비(Eye Width)입니다.
눈 높이는 위아래 신호 레벨 사이의 전압 여유, 즉 노이즈 마진을 나타냅니다. 눈 너비는 신호를 안정적으로 읽을 수 있는 시간 구간, 즉 타이밍 마진을 나타냅니다.
눈 높이가 낮으면 노이즈에 취약해지고, 눈 너비가 좁으면 조금만 타이밍이 틀어져도 데이터를 잘못 읽습니다. 두 값이 동시에 줄어들면 눈이 아예 감긴 모양이 되고, 이 상태에서는 수신단이 비트를 제대로 구분하지 못해 프레임이 통째로 날아갑니다.
| 구분 | 정상적인 아이 | 문제 있는 아이 |
|---|---|---|
| 눈 모양 | 뚜렷하고 넓게 열림 | 흐릿하고 좁게 감김 |
| 주요 원인 | 임피던스 정합, 짧은 배선 | 임피던스 불일치, 긴 케이블, 커넥터 반사 |
| 증상 | 영상 안정적 | 프레임 드롭, 연결 끊김 |
지터와 임피던스 불일치, 눈이 감기는 이유
실제로 젯슨 나노 라인을 찍어보니 눈이 확실히 좁고 흐릿하게 감겨 있었습니다. 원인을 좁히려면 눈이 감기는 두 가지 대표 요인, 지터와 임피던스 불일치를 따로 봐야 합니다.
지터란 신호가 이상적인 타이밍보다 앞서거나 늦게 도착하며 흔들리는 현상을 말합니다. 클럭 소스가 불안정하거나 전원 노이즈가 유입되면 지터가 커지고, 그만큼 아이다이어그램의 좌우 폭이 좁아집니다.
임피던스란 교류 신호가 흐를 때 저항처럼 작용하는 값을 말하는데, USB3.0 SuperSpeed 차동 신호는 이 값을 90옴으로 맞추도록 설계되어 있습니다. 커넥터 전환부나 케이블 연결부에서 이 값이 어긋나면 신호 일부가 반사되어 되돌아오고, 이게 뒤따라오는 비트와 겹치면서 눈을 위아래로 짓누릅니다.
USB-IF에서 공식적으로 발행한 백서에도 채널 손실이 큰 경로에서는 수신단의 데이터 아이가 닫힐 수 있다고 명시하고 있고, 이를 보완하기 위한 등화(Equalization) 기법까지 규정해두고 있습니다 (출처: USB 3.0 Electrical Compliance Methodology White Paper, USB-IF).
제가 실제로 확인해보니 문제는 두 가지가 겹쳐 있었습니다. 카메라 모듈까지 연결한 USB3.0 케이블이 필요 이상으로 길었고, 중간에 끼운 커넥터 하나가 차동 임피던스 스펙을 못 맞추고 있었습니다. 케이블이 길어질수록 감쇄가 커지는 건 알고 있었지만, 커넥터 하나 때문에 반사가 이렇게 크게 생길 줄은 저도 예상 못 했던 부분이었습니다.
Jetson Nano 케이블 재설계로 해결한 과정
원인을 찾은 다음부터는 순서대로 하나씩 걷어냈습니다. 먼저 케이블 길이를 규격에서 권장하는 수준으로 줄였고, 문제가 됐던 중계 커넥터를 걷어내고 카메라 모듈과 보드를 최대한 직결에 가깝게 배선했습니다.
차동쌍 배선도 다시 봤습니다. 두 선의 길이 차이(스큐)가 조금이라도 벌어지면 그것도 지터로 작용하거든요. 페어 간 길이를 맞추고, 페라이트 비드로 전원 라인의 고주파 노이즈도 한 번 걸러줬습니다.
다시 아이다이어그램을 찍었을 때 눈이 확실히 넓어진 걸 눈으로 확인했고, 그 이후로 영상 끊김 증상이 재현되지 않았습니다. 소프트웨어 쪽은 손댄 게 하나도 없었는데도 말이죠. 이 경험 이후로 저는 통신 관련 이슈가 생기면 소프트웨어 로그보다 아이다이어그램부터 먼저 확인하는 습관이 생겼습니다.
자주 묻는 질문 (Q&A)
Q1. 아이다이어그램은 어떤 장비로 찍나요?
A1. 고속 신호는 대역폭이 넉넉한 오실로스코프가 필요합니다. 저는 USB3.0 신호를 볼 때 최소 수 GHz 대역폭의 스코프를 썼습니다. 일반 저가형 스코프로는 눈 모양 자체가 제대로 안 잡힙니다.
Q2. 소프트웨어 문제인지 하드웨어 문제인지 어떻게 먼저 구분하나요?
A2. 저는 증상이 특정 케이블이나 특정 보드에서만 재현되는지부터 봅니다. 같은 소프트웨어인데 케이블만 바꿔도 증상이 사라지면 하드웨어, 즉 신호 쪽 문제일 가능성이 큽니다.
Q3. 눈이 어느 정도 열려 있으면 정상이라고 볼 수 있나요?
A3. 규격마다 정해진 마스크(Mask) 기준이 있어서, 그 마스크 영역을 신호가 침범하지 않으면 정상으로 봅니다. USB3.0은 USB-IF가 정한 컴플라이언스 마스크가 별도로 있습니다.
Q4. 케이블만 짧게 하면 항상 해결되나요?
A4. 케이블 길이는 감쇄에 큰 영향을 주지만, 저처럼 커넥터 임피던스 문제가 같이 있으면 케이블만 줄여서는 부족합니다. 저도 두 원인을 같이 잡고 나서야 확실히 해결됐습니다.
Q5. 젯슨 나노 말고 다른 보드에도 같은 방법이 통하나요?
A5. 네, USB3.0뿐 아니라 고속 직렬 통신을 쓰는 보드라면 원리는 동일합니다. 라즈베리파이든 다른 임베디드 보드든 영상이나 데이터가 불안정하면 저는 일단 아이다이어그램부터 찍어봅니다.
마무리하며
돌이켜보면 소프트웨어 로그만 붙잡고 있었으면 원인을 찾는 데 훨씬 오래 걸렸을 겁니다. 눈에 안 보이는 신호를 눈에 보이는 모양으로 바꿔주는 게 아이다이어그램의 가장 큰 힘인 것 같습니다.
영상이 불안정한데 원인을 못 찾고 계신 분이라면, 소프트웨어 쪽을 다 뒤지기 전에 신호 라인부터 한 번 찍어보시길 권합니다. 생각보다 답이 거기 있는 경우가 많습니다.
※ 본 글은 필자의 실무 개발 경험을 바탕으로 작성한 후기이며, 특정 장비나 업체에 대한 광고·협찬과 무관합니다. 측정 수치와 원인은 실제 프로젝트 환경에 따라 달라질 수 있으니 참고용으로만 봐주시기 바랍니다.