2025. 2. 10. 14:00ㆍ프로그래밍/시스템
2장: 데이터 프레임 구조
시리얼 통신에서 데이터를 주고받기 위해서는 데이터 프레임(Data Frame)이라는 특정한 형식을 따라야 합니다.
데이터 프레임은 데이터가 올바르게 전송되고 수신될 수 있도록 구성된 정보 단위입니다.
이 장에서는 데이터 프레임의 구성 요소와 패리티 비트(Parity Bit)를 활용한 오류 검출 방식을 자세히 살펴보겠습니다.
1. 시리얼 통신의 데이터 프레임 구조
시리얼 통신에서는 데이터를 한 비트씩 순차적으로 전송합니다.
이때 수신 장치가 올바르게 데이터를 해석할 수 있도록 일정한 형식으로 데이터를 패킹합니다.
이를 데이터 프레임(Data Frame) 이라고 하며, 기본적인 구조는 다음과 같습니다.
🔹 데이터 프레임 기본 구조 (8N1 예제)
Start Bit | Data Bits | Parity Bit (선택) | Stop Bit
---------------------------------------------------------
1 | 8 | 0 | 1
📌 예제: "A" (아스키코드 65, 8비트 데이터) 전송 시 (Baud Rate: 9600, 8N1 설정)
- Start Bit → 0
- Data Bits (8비트) → 01000001 (65의 바이너리 표현)
- Parity Bit (없음) → 패리티 비트 미사용 (8N1 설정)
- Stop Bit → 1
결과: 0 01000001 1 → 수신기가 이를 해석하여 "A"를 받음.
이제 각 구성 요소를 하나씩 자세히 살펴보겠습니다.
2. Start Bit (데이터 전송의 시작)
✅ Start Bit란?
시리얼 통신에서는 송신 측과 수신 측이 동기화되어야 합니다.
하지만 비동기식 통신(UART) 의 경우, 별도의 클럭 신호가 없기 때문에 수신기가 데이터의 시작을 알아차릴 수 있도록 Start Bit가 필요합니다.
📌 Start Bit의 특징
- 항상 0(LOW, LOW Voltage Level) 으로 설정됨.
- 수신기가 "데이터가 시작되었다"는 신호로 인식함.
- Start Bit 이후에 데이터 비트(Data Bits) 가 전송됨.
🛠️ 예제
Start Bit | Data Bits
-------------------------
0 | 01000001 ("A"의 바이너리)
👉 Start Bit이 "0"으로 전송되면, 수신기는 데이터를 받을 준비를 시작합니다.
3. Data Bits (보낼 데이터)
✅ Data Bits란?
실제 데이터를 담고 있는 비트들을 의미합니다.
데이터 비트의 개수는 5~9비트로 설정 가능하지만, 일반적으로 8비트(1바이트)가 가장 많이 사용됩니다.
📌 Data Bits의 설정
- 5, 6, 7, 8, 9비트 가능 (8비트가 가장 일반적)
- 아스키(ASCII) 코드 문자 전송 시 보통 7비트 또는 8비트 사용
- 센서 데이터, 바이너리 값 전송 시 8비트 이상 사용 가능
🛠️ 예제
Data Bits (8비트)
------------------
01000001 ("A"의 바이너리)
👉 수신기가 이 값을 읽어 "A"로 변환하여 출력합니다.
4. Parity Bit (에러 검출을 위한 비트, 선택 사항)
✅ Parity Bit란?
패리티 비트(Parity Bit)는 전송 중 발생할 수 있는 데이터 오류를 감지하기 위한 추가적인 비트입니다.
전송 데이터가 손상되었는지 확인하는 기본적인 오류 검출 방식입니다.
📌 Parity Bit의 특징
- 선택적으로 사용 가능 (일반적으로 "No Parity" 옵션 사용)
- 패리티 비트를 사용할 경우 Even Parity(짝수 패리티) 또는 Odd Parity(홀수 패리티) 설정 가능
- 하드웨어적으로 간단한 오류 감지가 가능하지만, 오류를 수정하지는 못함
🛠️ 예제
Data Bits | Parity Bit (Even Parity)
--------------------------------------
01000001 | 0
👉 "A"(65, 8비트) 데이터의 1의 개수가 홀수이므로, 짝수 개로 맞추기 위해 0이 추가됨.
5. Stop Bit (데이터 전송 종료 신호)
✅ Stop Bit란?
데이터 전송이 끝났음을 나타내기 위해 사용됩니다.
시리얼 통신에서는 수신기가 데이터 패킷이 종료되었음을 인식할 수 있도록 Stop Bit를 포함합니다.
📌 Stop Bit의 특징
- 1 또는 2비트로 설정 가능
- 항상 1(HIGH, High Voltage Level)로 설정됨
- 수신기가 다음 데이터를 기다릴 준비를 하도록 도움
🛠️ 예제
Data Bits | Parity Bit | Stop Bit
--------------------------------------
01000001 | 0 | 1
👉 Stop Bit이 "1"이므로, 수신기가 데이터 패킷이 끝났음을 인식합니다.
6. 패리티 비트의 역할과 오류 검출 방식
✅ Even Parity(짝수 패리티) vs Odd Parity(홀수 패리티)
패리티 비트는 데이터 비트에서 "1"의 개수를 세어 짝수 또는 홀수가 되도록 조정하는 방식으로 동작합니다.
📌 짝수 패리티(Even Parity)
- 데이터 비트에서 "1"의 개수가 짝수(2, 4, 6, …)가 되도록 패리티 비트를 설정
- "1"의 개수가 홀수일 경우 패리티 비트를 1로 설정하여 짝수로 맞춤
- 예제: Data Bits: 01000001 (1의 개수 = 2) → Parity Bit = 0
📌 홀수 패리티(Odd Parity)
- 데이터 비트에서 "1"의 개수가 홀수(1, 3, 5, …)가 되도록 패리티 비트를 설정
- "1"의 개수가 짝수일 경우 패리티 비트를 1로 설정하여 홀수로 맞춤
- 예제: Data Bits: 01000001 (1의 개수 = 2) → Parity Bit = 1
✅ 패리티 비트가 필요한 이유
- 데이터 전송 중 오류(비트 변형, 노이즈 등) 감지 가능
- 하드웨어적으로 간단하게 구현 가능 (복잡한 오류 검출 알고리즘 없이 감지 가능)
- BUT, 오류를 수정할 수는 없음 (단순 검출만 가능)
📌 패리티 비트는 오류를 감지하는 데 사용되지만, 실제 데이터가 손상되었을 경우 수정할 수 없으므로 CRC(Cyclic Redundancy Check)나 ECC(Error Correction Code) 같은 추가적인 오류 검출 및 수정 기법이 필요할 수 있습니다.
📌 요약
✅ Start Bit → 데이터 전송의 시작을 알리는 신호 (항상 0)
✅ Data Bits → 실제 전송되는 데이터 (5~9비트, 보통 8비트 사용)
✅ Parity Bit → 오류 검출을 위한 선택적 비트 (Even Parity / Odd Parity)
✅ Stop Bit → 데이터 전송이 종료되었음을 알리는 신호 (항상 1, 보통 1비트 사용)
'프로그래밍 > 시스템' 카테고리의 다른 글
주요 시리얼 통신 프로토콜 - 1. UART (Universal Asynchronous Receiver Transmitter) (0) | 2025.02.10 |
---|---|
시리얼 통신의 기본 개념 - 3. 동기식 vs 비동기식 통신 (0) | 2025.02.10 |
시리얼 통신의 기본 개념 - 1. 비트와 바이트 개념 + 전송 속도(Baud Rate) (0) | 2025.02.10 |
시리얼 통신 개요 - 3. 시리얼 통신의 활용 분야 (0) | 2025.02.10 |
시리얼 통신 개요 - 2. 병렬 통신과 시리얼 통신의 차이점 (0) | 2025.02.10 |