UART 이해하기

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

R&S®Essentials | Digital oscilloscope and probe fundamentals

UART 이해하기

UART란 무엇입니까?

UART는 UART(Universal Asynchronous Receiver/Transmitter, 범용 비동기 송수신기)의 약자이며 두 장치 사이에서 직렬 데이터를 교환할 때 적용되는 프로토콜(규칙 세트)을 정의합니다. UART는 매우 간단하며 양방향으로 데이터를 송신 및 수신하기 위해 송신기와 수신기 사이에 두 개의 와이어만 사용합니다. 또한 와이어 양 끝단은 접지 연결이 되어 있습니다. UART를 이용한 통신은 Simplex(단방향 통신)(데이터가 한 방향으로만 전송됨), Half-duplex(반이중)(한 번에 한 쪽만 전송 가능) 또는 Full-duplex(전이중)(양쪽이 동시에 전송 가능) 방식이 있습니다. UART에서 데이터는 프레임 형태로 전송됩니다. 아래에서 이러한 프레임의 형식 및 콘텐츠에 관한 설명을 제공합니다.

UART에서 데이터는 프레임 형태로 전송됩니다.

UART는 어디에 사용됩니까?

UART는 가장 초기에 사용되던 직렬 프로토콜입니다. 한때는 범용 직렬 포트가 대부분 UART 기반이었으며, RS-232 인터페이스, 외부 모뎀 등을 사용하는 장치에서 UART가 일반적으로 사용되었습니다.
하지만 최근 몇 년 사이 UART의 인기가 감소하였습니다. 그리고 이제 SPI 및 I2C와 같은 프로토콜이 칩과 컴포넌트 사이에서 UART를 대체하고 있습니다. 현재 대부분의 최신 컴퓨터와 주변기기들은 직렬 포트를 사용하여 통신하는 대신 이더넷, USB 등의 기술을 사용합니다. 그럼에도 불구하고 UART는 단순하고, 비용이 저렴하며, 구현이 간편하기 때문에 속도와 처리량이 낮은 애플리케이션에서 여전히 사용되고 있습니다.

UART 프로토콜의 타이밍 및 동기화

UART가 제공하는 가장 큰 장점 중 하나는 비동기화로 송신기와 수신기가 공통 클럭 신호를 공유하지 않는다는 점입니다. 이 때문에 프로토콜이 크게 단순화되지만, UART는 송신기와 수신기에 특정 요건을 적용합니다. 송신기와 수신기가 클럭을 공유하지 않기 때문에 양 끝단에서 동일한 비트 타이밍을 보장하기 위해 사전에 정의된 속도로 통신해야 합니다. 오늘날 가장 일반적으로 사용되는 UART 보 레이트(baud rates)는 4800, 9600, 19.2K, 57.6K, 115.2K입니다. 동일한 보오율을 적용하는 것과 동시에 UART 통신은 양방향에서 동일한 프레임 구조 및 매개변수를 사용해야 합니다. UART 프레임을 살펴보면 이를 쉽게 이해할 수 있습니다.

UART 프레임 형식

UART 프레임은 시작 및 정지 비트, 데이터 비트, 패리티 비트(선택)를 포함합니다. 아래에서 이와 관련한 설명을 확인하실 수 있습니다.

대부분의 디지털 시스템이 그러하듯, "높은" 전압 레벨은 논리 레벨 "1"을 나타내고 "낮은" 전압 레벨은 논리 레벨 "0"을 나타내기 위해 사용됩니다. 이러한 레벨에 대하여 UART 프로토콜이 특정 전압 또는 전압 범위를 정의하지 않기 때문에 높은 전압 레벨을 "마크", 낮은 전압 레벨을 "스페이스"라고 표시하기도 합니다. 데이터가 전송되지 않는 유휴 상태에서는 라인이 H(High) 상태로 유지된다는 점을 명심하십시오. 이를 통해 손상된 라인 또는 송신기를 쉽게 감지할 수 있습니다.

시작 및 정지 비트

UART는 비동기식이므로 송신기에서 데이터 비트가 들어오고 있다는 신호를 보내야 합니다. 이 작업은 시작 비트를 통해 수행됩니다. 시작 비트는 H(High 상태)에서 L(Low 상태)로의 전환을 의미하며, 시작 비트 다음에 사용자 데이터 비트가 전송됩니다.
데이터 비트 전송이 완료되면 중지 비트가 사용자 데이터 전송이 종료되었음을 표시합니다. 정지 비트는 H 상태 또는 유휴 상태로 다시 전환되거나 추가 비트 시간동안 H 상태를 유지합니다. 수신기가 다음 프레임을 준비할 시간을 갖도록 두 번째 정지 비트(선택)를 구성할 수도 있지만 실제로 흔히 사용되지는 않습니다.

데이터 비트

데이터 비트는 사용자 데이터 또는 "유용한" 비트로, 일반적으로 시작 비트 바로 뒤에 전송됩니다. 5~9의 사용자 데이터 비트가 존재하는데 7비트 또는 8비트가 가장 일반적으로 사용됩니다. 이러한 데이터 비트는 일반적으로 최하위(LSB) 비트를 가장 먼저 전송합니다.

예:
대문자 "S"를 7비트 ASCII로 전송하려는 경우 비트 시퀀스는 1 0 1 0 0 1 1입니다. 즉, 비트 시퀀스를 전송하기 전에 먼저 최하위 비트가 가장 앞에 오도록 순서를 역순으로 조정해야 하며, 역순으로 조정된 비트 시퀀스는 1 1 0 0 1 0 1입니다. 마지막 데이터 비트가 전송되면 정지 비트를 사용하여 프레임을 종료하고 라인이 다시 유휴 상태로 변경됩니다.

  • 7-bit ASCII ‘S’ (0x52) = 1 0 1 0 0 1 1
  • LSB 순서 = 1 1 0 0 1 0 1

시작 및 정지 비트

데이터 비트

패리티 비트

UART 프레임은 오류 감지를 위해 사용되는 선택적 패리티 비트도 포함할 수 있습니다. 패리티 비트는 데이터 비트와 정지 비트 사이에 삽입됩니다. 패리티 비트 값은 사용 중인 패리티 유형(짝수 또는 홀수)에 따라 상이합니다.

  • 짝수 패리티에서는 프레임에 포함된 1의 개수가 짝수가 되도록 비트가 구성됩니다.
  • 홀수 패리티에서는 프레임에 포함된 1의 개수가 홀수가 되도록 비트가 구성됩니다.

예:
대문자 "S"(1 0 1 0 0 1 1)는 총 3개의 0과 4개의 1을 포함하고 있습니다. 짝수 패리티를 사용할 경우, 1의 개수가 이미 짝수이기 때문에 패리티 비트는 0이 됩니다. 홀수 패리티를 사용하는 경우 프레임에 포함된 1의 개수가 홀수가 되도록 패리티 비트가 1이 되어야 합니다.
패리티 비트는 반전된 단일 비트만 감지할 수 있습니다. 반전된 비트의 개수가 둘 이상인 경우에는 단일 패리티 비트를 사용하여 해당 비트를 안정적으로 감지할 방법이 없습니다.

패리티 비트 예시

UART 이해하기

"Understanding UART" 동영상을 시청하고 자세한 내용을 확인해보십시오.

본 동영상에서는 UART(Universal Asynchronous Receiver/Transmitter, 범용 비동기 송수신기) 직렬 프로토콜의 기술 개요와 함께 프레임 구조 및 개별 프레임 비트의 중요도를 설명합니다.

요약

  • UART는 범용 비동기 송수신기(Universal Asynchronous Receiver/Transmitter)의 약자로 직렬 데이터를 교환하는 간단한 2선식 프로토콜입니다.
  • 비동기식은 공유되는 클럭이 없다는 사실을 의미하므로, UART를 작동시키려면 통신이 이루어지는 양 끝단에 동일한 비트 또는 보오율이 설정되어야 합니다.
  • 시작 및 정지 비트는 시작 및 종료 지점을 표시하거나 데이터를 "프레임"하기 위해 사용됩니다.
  • 선택적으로 사용 가능한 패리티 비트는 신호 비트 오류를 감지하는 데 사용될 수 있습니다.
  • UART는 최근에도 널리 사용되는 직렬 데이터 프로토콜이지만 최근 몇 년 사이 SPI, I2C, USB, 이더넷 등과 같은 일부 애플리케이션이 UART를 대체하고 있습니다.

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