2025. 2. 10. 14:05ㆍ프로그래밍/시스템
3장: 동기식 vs 비동기식 통신
시리얼 통신 방식은 동기식(Synchronous)과 비동기식(Asynchronous) 통신으로 나뉩니다.
이 두 방식은 데이터를 전송하는 방법에서 가장 큰 차이를 가지며, 사용 목적과 환경에 따라 적절한 방식이 선택됩니다.
이번 장에서는 동기식과 비동기식 통신의 개념과 차이점을 살펴보고, 실제 적용 사례를 통해 언제 어떤 방식을 사용해야 하는지 알아보겠습니다.
1. 동기식(Synchronous) 통신 개념
✅ 동기식 통신이란?
동기식(Synchronous) 통신은 송신기와 수신기가 같은 클럭(Clock) 신호를 공유하여 동기화된 상태에서 데이터를 전송하는 방식입니다.
즉, 모든 데이터 전송이 공통된 클럭 신호에 맞춰 정해진 타이밍에 이루어집니다.
📌 동기식 통신의 특징
- 클럭 신호(Clock Signal)가 필요함 → 데이터와 함께 동기 신호를 전송
- 데이터가 연속적으로 전송됨 (Start/Stop Bit 필요 없음)
- 속도가 빠르고 효율적이지만, 클럭이 필요하여 하드웨어가 복잡
2. 클럭 신호를 공유하여 데이터 전송
✅ 클럭(Clock) 신호란?
- 클럭은 데이터를 주고받을 때 타이밍을 맞추는 기준 신호입니다.
- 송신기와 수신기가 동일한 클럭 속도로 동작해야만 데이터가 올바르게 해석됩니다.
- 클럭 신호가 HIGH(1) 일 때 데이터를 읽거나, LOW(0) 일 때 데이터를 전송하는 방식으로 동작할 수 있습니다.
📌 동기식 통신에서는 "언제 데이터를 보낼지"를 클럭 신호를 통해 결정합니다.
3. 대표적인 동기식 통신 (SPI, I2C)
🔹 SPI (Serial Peripheral Interface)
- 마스터(Master)와 슬레이브(Slave) 간의 통신 방식
- MOSI (Master Out Slave In) / MISO (Master In Slave Out) / SCK (Serial Clock) 핀 사용
- 빠른 데이터 전송 속도 지원 (MHz 단위의 고속 전송 가능)
- 한 개의 마스터가 여러 개의 슬레이브를 제어할 수 있음
📌 SPI는 속도가 빠르고 효율적이지만, 연결 선이 많아 하드웨어가 복잡해질 수 있음.
🔹 I2C (Inter-Integrated Circuit)
- 마스터(Master)와 여러 개의 슬레이브(Slave) 간 통신 가능
- SDA (Serial Data), SCL (Serial Clock) 핀 사용 (2개만 필요)
- 데이터가 하나의 버스를 통해 여러 장치에 전달 가능 (멀티 마스터 지원)
- 속도는 SPI보다 느리지만, 배선이 간단하여 센서 연결 등에 적합
📌 I2C는 하드웨어 연결이 간단하고 확장성이 뛰어나지만, 속도는 SPI보다 낮음.
4. 비동기식(Asynchronous) 통신 개념
✅ 비동기식 통신이란?
비동기식(Asynchronous) 통신은 송신기와 수신기가 공통된 클럭 신호 없이 데이터를 전송하는 방식입니다.
즉, 데이터가 필요할 때마다 전송되며, 데이터의 시작과 끝을 구분하는 방식을 사용합니다.
📌 비동기식 통신의 특징
- 클럭이 필요 없음 → 하드웨어가 간단함
- Start Bit, Stop Bit을 활용하여 데이터 경계를 구분
- 전송 속도(Baud Rate)가 송신기와 수신기 간에 미리 설정되어 있어야 함
5. 클럭 없이 데이터 전송 (UART)
✅ UART (Universal Asynchronous Receiver Transmitter)
- 비동기식 시리얼 통신에서 가장 많이 사용되는 프로토콜
- TX (Transmit), RX (Receive) 핀을 사용하여 데이터 송수신
- 별도의 클럭이 없고, 송신과 수신 장치가 동일한 Baud Rate을 사용해야 함
- Start Bit, Stop Bit을 사용하여 데이터의 시작과 끝을 구분
📌 UART는 하드웨어가 간단하고 구현이 쉬워서 센서, 마이크로컨트롤러, 컴퓨터 간의 통신에 널리 사용됩니다.
6. Start/Stop Bit을 활용한 데이터 구분
🔹 비동기식 통신에서 데이터 프레임 구조 (8N1 예제)
Start Bit | Data Bits | Parity Bit (선택) | Stop Bit
---------------------------------------------------------
1 | 8 | 0 | 1
📌 Start Bit → 데이터를 시작하는 신호 (항상 0)
📌 Data Bits → 실제 전송되는 데이터 (보통 8비트 사용)
📌 Parity Bit → 오류 검출용 (선택사항, 없을 수도 있음)
📌 Stop Bit → 데이터를 끝내는 신호 (1비트 또는 2비트)
7. 동기식 vs 비동기식 비교
구분 | 동기식(Synchronous) 통신 | 비동기식(Asynchronous) 통신 |
클럭 신호 | 필요 (마스터가 클럭 제공) | 없음 |
데이터 전송 방식 | 연속적 데이터 전송 | 필요할 때마다 데이터 전송 |
데이터 프레임 | Start/Stop Bit 불필요 | Start/Stop Bit 필요 |
속도 | 빠름 (SPI: 최대 수십 MHz) | 상대적으로 느림 (UART: 몇 Kbps~Mbps) |
하드웨어 복잡도 | 높음 (배선이 많음) | 낮음 (배선이 단순) |
대표 프로토콜 | SPI, I2C | UART |
📌 SPI, I2C 같은 동기식 통신은 속도가 빠르지만, 추가적인 클럭 신호가 필요하여 하드웨어가 복잡할 수 있습니다.
📌 UART 같은 비동기식 통신은 클럭이 필요 없고 간단하게 사용할 수 있지만, 전송 속도가 상대적으로 낮습니다.
8. 언제 어떤 방식을 사용해야 하는가?
사용 사례 | 동기식 (SPI, I2C) | 비동기식 (UART) |
고속 데이터 전송 | ✅ | ❌ |
센서 데이터 전송 | ✅ (I2C) | ✅ (UART) |
마이크로컨트롤러 간 통신 | ✅ (SPI, I2C) | ✅ (UART) |
PC-장치 간 통신 (USB, 블루투스) | ❌ | ✅ (UART) |
하드웨어가 단순해야 하는 경우 | ❌ | ✅ |
📌 고속 데이터 전송이 필요한 경우 → 동기식 (SPI, I2C) 사용
📌 하드웨어가 간단해야 하는 경우 → 비동기식 (UART) 사용
📌 요약
✅ 동기식(Synchronous) 통신 → 클럭 신호를 공유하여 데이터를 연속적으로 전송 (SPI, I2C)
✅ 비동기식(Asynchronous) 통신 → 클럭 없이 Start/Stop Bit을 사용하여 데이터 전송 (UART)
✅ 속도가 빠르고 효율적인 통신이 필요하면 동기식, 하드웨어가 단순해야 하면 비동기식 사용
'프로그래밍 > 시스템' 카테고리의 다른 글
주요 시리얼 통신 프로토콜 - 2. SPI (Serial Peripheral Interface) (0) | 2025.02.10 |
---|---|
주요 시리얼 통신 프로토콜 - 1. UART (Universal Asynchronous Receiver Transmitter) (0) | 2025.02.10 |
시리얼 통신의 기본 개념 - 2. 데이터 프레임 구조 (0) | 2025.02.10 |
시리얼 통신의 기본 개념 - 1. 비트와 바이트 개념 + 전송 속도(Baud Rate) (0) | 2025.02.10 |
시리얼 통신 개요 - 3. 시리얼 통신의 활용 분야 (0) | 2025.02.10 |