직렬 통신에서 여러 비트가 하나의 선을 타고 연속으로 도착하면, 수신 측은 한 비트가 어디서 끝나고 다음 비트가 어디서 시작하는지 구별할 방법이 있어야 한다. 이 구별 방법은 송신 측과 수신 측이 클럭을 공유하는지에 따라 동기(synchronous) 전송과 비동기(asynchronous) 전송으로 나뉜다.

구분동기 전송비동기 전송
클럭데이터 선과 별도로 공통 클럭 신호를 전송[1]클럭 신호 없음 — 송수신 측이 각자의 클럭으로 동작[2]
비트 경계 식별클럭 엣지사전에 합의한 전송률과 시작·종료 비트
대표 예시SPIUART, CAN

동기 전송은 데이터 선과 별도로 클럭 신호를 함께 보내 송신 측과 수신 측이 매 비트의 경계를 그 클럭 엣지로 맞춘다. SPI가 대표적인 예로, 호스트가 SCK 클럭을 생성하면 모든 비트 전송이 이 클럭에 동기화된다[1].

비동기 전송은 데이터 선 외에 클럭 신호를 따로 보내지 않는다. UART가 대표적인 예로, 송신 측과 수신 측이 각자 정해진 속도로 동작하는 자신만의 클럭을 갖고, 유휴 상태에서 로우로 떨어지는 시작 비트(start bit)로 프레임의 시작을 알린 뒤 종료 비트(stop bit)로 끝을 표시해 그 사이의 데이터 비트를 구별한다[2]. CAN도 데이터 선과 별도의 클럭선을 두지 않는다는 점에서 비동기 방식에 속하며[3], 공통 클럭이 없는 상태에서 각 노드가 프레임 시작 edge를 기준으로 자신의 비트 타이밍을 재조정하는 구체적 메커니즘은 CAN Bit Timing에서 다룬다.

Warning

비동기 전송은 클럭을 공유하지 않으므로 송신 측과 수신 측의 전송률이 완전히 같기는 어렵다. 오실레이터 오차로 생기는 이 차이는 어느 정도까지만 허용되며(Operational Range), 그 범위를 넘으면 수신 측이 비트 경계를 잘못 판단해 데이터를 다르게 읽는다[4].

동기 전송은 클럭 선을 추가로 써서 송수신 속도를 정확히 맞추는 대신, 비동기 전송은 선을 아끼는 대신 양측이 전송률을 사전에 합의해야 한다는 점이 이 둘의 근본적인 차이다.

참고문헌

[1]
A. Stoicescu, “TB3215 — Getting Started with Serial Peripheral Interface (SPI)”, 2021.
[2]
T. Hiers, “SPRA633C — TMS320C620x/C642x McBSP: UART”, 2008.
[3]
Robert Bosch GmbH, “CAN Specification, Version 2.0”, 1991.
[4]
Microchip Technology, “AVR16EA28/32/48 Data Sheet — USART Error Tolerance”, 2024.