직렬 프로토콜 이해하기

더 자세한 내용을 확인하세요!

R&S®Essentials | Digital oscilloscope and probe fundamentals

직렬 프로토콜 이해하기

디지털 데이터 전송: 병렬 전송 vs. 직렬 전송

디지털 시스템은 두 개의 컴포넌트 또는 장치 간에 전송되는 비트를 기반으로 합니다. 비트를 전송하는 방법은 여러 가지가 있지만, 크게 병렬 전송 및 직렬 전송이라는 두 가지 카테고리로 분류할 수 있습니다.

병렬 전송

병렬 전송은 일반적으로 비트 1개당 하나의 도선을 사용하여 송신기와 수신기 간에 여러 개의 비트를 동시에 전송하는 방식입니다. 병렬 연결은 근거리및/또는 점대점 연결에 적합합니다. 이 방식은 타이밍이 간단하고 상대적으로 분석이 쉽다는 장점이 있습니다. 한때는 병렬 전송이 주로 사용되었지만 이제는 점차 직렬 전송으로 대체되고 있습니다.

직렬 전송

이름에서 알 수 있듯이, 직렬 전송은 한 번에 한 개의 비트만을 전송하며, 모든 비트는 동일한 도선을 사용하여 전송됩니다. 직렬 전송은 장거리애플리케이션, 높은 처리량이 필요한 애플리케이션, 복수 노드가 있는 애플리케이션에 적합합니다. 하지만 비용이 발생하며 분석이 복잡하고 어렵다는 단점이 있습니다. 직렬 전송에서는 데이터 비트가 단일 도선 또는 "와이어"를 통해 전송되지만, 대부분의 직렬 프로토콜은 다중 도선을 사용합니다.

데이터 비트에 사용되는 배선 외에도, 많은 프로토콜이 클럭 신호, 일부 제어 기능 또는 다중 노드주소 부여 기능을 추가합니다.

병렬 전송

직렬 전송

직렬 프로토콜 예시

직렬 프로토콜은 다양한 애플리케이션에 사용됩니다. 일반 애플리케이션에서 사용하는 세 가지 주요 직렬 프로토콜은 UAR, I²C, SPI가 있습니다.

직렬 프로토콜에는 특히 CAN, LINFlexRay와 같이 자동차 산업에서 사용하는 특수 카테고리가 있습니다. 이러한 프로토콜은 저속과 고속의 혼합 환경이나 소음이 심한 환경에서의 안정적 작동과 같이 차량의 까다로운 요구사항에 대응하도록 설계되었습니다.

일반 애플리케이션

UART(Universal Asynchronous Receiver/Transmitter, 범용 비동기 송수신기)

  • 대표적인 직렬 프로토콜
  • 구현이 용이함
  • 수십 년 동안 PC 직렬 및 COM 포트에서 사용됨

I²C(Inter-IC)

  • 집적 회로(및 기타) 간의 통신

SPI(Serial Peripheral Interface, 직렬 주변기기 인터페이스)

  • I²C 대비 빠른 전송 속도
  • 더 많은 와이어를 사용하며 일반적으로 복잡성이 높음

자동차 애플리케이션

CAN(Controller Area Network)

  • 고속
  • 주로 센서와 함께 사용

LIN(Local Interconnect Network)

  • 저속
  • 창문, 거울 등 액세서리와 함께 사용

FlexRay

  • 중복성을 통한 고속 보장

직렬 프로토콜 특징

프로토콜을 구현하는 방법은 개별 프로토콜에 따라 상이하지만, 모든 직렬 프로토콜은 네 가지 주요 기본적인 특징을 가지고 있으며 이는 직렬 데이터 분석 및 디코딩에도 중요합니다.

  • 레벨: 전압을 사용하여 0 또는 1을 나타내는 방식
  • 타이밍: 비트를 전송하는 빈도(Bit Time)
  • 프레이밍: 비트가 그룹으로 구성되는 방식, 개별 비트 또는 비트 그룹의 역할
  • 프로토콜: 교환되는 메시지와 교환 시 상황

레벨

모든 유형의 디지털 디코딩을 실행하기 전, 먼저 1과 0을 구분해야 합니다. 즉, 전압 레벨에서 비트 값을 어떻게 결정할 수 있을까요? 이를 간단하게 정의하는 방식은 "낮은" 전압은 0, "높은" 전압은 1로 간주하는 것입니다. 실제로 이는 일부 직렬 프로토콜이 작동하는 방식이기도 합니다.
자동차처럼 까다로운 환경에서 사용되는 직렬 프로토콜은 주로 차동 전압을 사용합니다. 차동 신호가 잡음에 더 강한 경향이 있기 때문입니다. 차동은 접지가 아닌 두 전압 간에 차이를 바탕으로 0 또는 1을 정의하는 것을 의미합니다.

참고: 차동 프로브는 이러한 측정에 사용하기에 이상적입니다.

타이밍

전압 레벨을 "0" 및 "1"로 정의하는 것만으로는 수신받는 비트를 결정하기 어렵습니다. 따라서 비트가 생성되는 속도, 즉, "비트 타임" 또는 "비트 레이트"를 이해하는 것이 중요합니다.
직렬 데이터를 디코딩하려면 수신기 또는 계측기가 송신기와 동일한 비트 레이트를 사용해야 합니다.

프레이밍

직렬 프로토콜은 일반적으로 비트를 소위 말하는 프레임으로 구성합니다. 프레임으로 구성된 개별 비트 또는 비트 그룹에는 의미가 정의됩니다. 따라서 프레임을 정확하게 디코딩하려면 이러한 구조에 대한 약간의 지식이 필요합니다.
예를 들면, UART 직렬 프로토콜을 디코딩할 때는 라인의 유휴 상태가 고전압 레벨을 의미한다는 사실을 인지하는 것이 중요합니다. 프레임의 시작을 표시하는 "시작 비트"로 높음에서 낮음으로 레벨이 전환됩니다. 또한, 읽을 데이터 비트 수와 더불어 프레임을 종료하는 고전압 레벨 정지 비트 뒤에 유휴 상태가 이어진다는 사실 또한 인지하고 있어야 합니다. 프레임 구조를 이해한다면 직렬 비트 스트림에서 사용자 데이터를 추출할 수 있을 뿐만 아니라 전송과 관련된 다른 정보도 도출할 수 있습니다.

비트는 일반적으로 "프레임"으로 구성됩니다. 프레임으로 구성된 비트 또는 비트 그룹은 각각의 의미가 정해져 있습니다.

프로토콜

마지막으로 고려해야 할 사항은 "프로토콜"입니다. 프로토콜의 일반적인 정의는 정보를 인코딩하고 교환하는 일련의 규칙입니다. 데이터 전송 방식 및 시점, 종단 간 교환되는 메시지의 유형 및 의미와 관련하여 규칙이 있을 수 있습니다.
간단한 프로토콜에서는 수신기가 데이터를 수신할 준비가 되었는지 여부와 관계없이 가능한 시점에 데이터를 즉시 전송합니다. 그러나 보다 정교한 프로토콜은 특정 메커니즘을 사용하여 데이터를 전송하기 전 권한을 요청합니다. 그보다 더 정교한 프로토콜의 경우에는 데이터가 올바르게 전송되었다는 확인 메시지를 송신기가 확인한 후 추가 데이터를 전송하거나 누락 또는 오류가 발생한 데이터를 다시 전송하는 과정이 포함됩니다.

직렬 프로토콜 디코딩

과거에는 일반적으로 전용 프로토콜 테스터를 사용하여 직렬 프로토콜을 디코딩하였습니다. 오늘날 가장 일반적으로 사용되는 방법은 한 개 이상의 채널을 갖는 최신 디지털 스토리지 오실로스코프를 사용하는 것입니다. 해당하는 직렬 프로토콜을 선택한 후, 분석된 직렬 신호와 일치하도록 레벨, 타이밍 및 프레이밍을 구성합니다. 오실로스코프는 이러한 정보를 사용하여 원시 전압 레벨 , 감지된 비트, 2진, 16진 또는 ASCII 코드로 콘텐츠를 표시하는 프레임 형태로 구성된 결과를 생성합니다. 오실로스코프의 직렬 디코딩에는 종종 프레임 내 특정 신호에 대한 트리거링, 사용자 정의 패턴에 사람이 읽을 수 있는 라벨 지정, 데이터 내보내기 등 추가 기능이 포함됩니다.

요약

직렬 프로토콜은 컴포넌트나 개별 장치 간에 비트를 순차적으로 또는 한 번에 하나씩 전송하는 방식입니다.

직렬 통신은 거의 모든 디지털 기기에서 사용되고 있습니다.

직렬 프로토콜은 아래와 같이 분류할 수 있습니다.

  • UART, I²C, SPI와 같은 일반 표준 프로토콜
  • CAN, LIN, FlexRay(주로 자동차에서 사용)와 같은 특정 애플리케이션에서 사용되는 프로토콜

모든 직렬 프로토콜은 아래와 같은 특징을 갖습니다.

  • 전압이 비트로 매핑되는 방법
  • 타이밍 또는 비트 레이트
  • 비트가 메시지 단위 또는 프레임으로 구성되는 방법
  • 교환되는 프레임 유형 및 개발 프레임이 전송되는 시기에 관한 규칙

직렬 데이터를 분석하고 디코딩하는 데 최신 디지털 오실로스코프만큼 적합한 도구는 없습니다.

직렬 프로토콜 또는 직렬 프로토콜 디코딩과 관련한 문의 사항이 있다면, 언제든 로데슈바르즈에 문의하세요!

다양한 측정의 기초를 확인하세요!

뉴스레터 구독