통신관련 용어

2025. 12. 8. 11:31IT 용어

반응형

1. 보더레이트

시리얼 통신은 보통 서로 같은 시계(클럭)을 공유하지 않고 서로 약속한 속도로 0과 1로 데이터를 보내는 방식이다.

여기서 서로 약속한 속도baudrate가 된다.

 

보더레이트가 필요한 이유는 결국 A가 B로 데이터를 보낼때는 0과 1을 특정한 속도로 고정되어 전송시킬 텐데 서로 같은 속도를 지정하고 데이터를 읽기로 했을때는 A가 B로 데이터를 보낼 때 문제 없이 원하는 데이터를 정확하게 읽어 기록할 수 있을 것이다.

 

그런데 만약 B가 속도가 더 빠르다면 A가 1을 B로 보낸 후에 최초는 B가 정상적으로 1을 보냈구나 라고 인식할텐데 A가 다음 데이터를 보내기도 전에 B가 다시 그 1을 읽어서 A가 보내는 원하는 값을 B가 정확하게 읽지 못해서 이상하게 깨진 데이터가 모여서 보이게 될것이다.

 

동일하게 B의 속도가 느리다면 A가 보내는 데이터를 B가 놓지는게 있게 되면서 그 데이터들이 모여 또 깨진 이상한 데이터를 보여줄 것이다.

 

그렇기에 이 보더레이트는 정상적인 데이터 결과를 보내기 위한 시작점이 된다.

 

정리: 손발이 맞아야 일이 된다, 그 박자는 보더레이트

 

2. 스타트 비트

스타트 비트를 이해하기 위해서는 UART 통신에 대해서 이해가 필요하다

RS-232 및 RS-485 통신은 상위 계층에서 UART 기반 비동기 프레임을 사용하는 경우가 많다.
UART는 장비 내부에 칩 내부의 하드웨어 블록인 UART송신기(TX)와 UART수신기(RX) 하드웨어를 가지며 RS-232는 외부에 TX/RX 선이 직접 노출되는 형태가 일반적이다.(RS-485 통신은 이와는 다름, 이 내용 추후 추가 예정)

 

A와 B가 서로 연결되어 통신을 한다면 A가 B로 송신할 수도 있고 B가 A로 송신할 수도 있다.

 

A에서 B로 송신하기 위해서는

 

A 칩 내부의 UART 송신기(Transmitter)와 내부 배선으로 연결된 TX 핀

B 칩 내부의 UART 수신기(Receiver)와 내부 배선으로 연결된 RX 핀

 

연결한다.

 

반대로 B에서 A로 송신하기 위해서는 B의 TX 핀을 A의 RX 핀에 연결하여 반대 방향 송수신도 가능하게 한다.

  • A의 TX → B의 RX
  • B의 TX → A의 RX

 

이때 UART 송신기(Transmitter)는 입력한 데이터를 비동기 프레임(스타트/데이터/패리티/스톱 비트)으로 구성하여
TX 선에 전압 패턴으로 출력하고(데이터(바이트) → UART 프레임(비트열) → TX 전압 패턴), UART 수신기(Receiver)는 RX 선에서 이 전압 패턴을 받아 비트/바이트 데이터로 복원한다.

 

추가로 A에서 인식하는 전압의 기준과 B에서 인식하는 전압의 기준이 다를 수 있기에 GND라는 전선을 연결하여 둘이 서로 인식해야할 전압의 기준점을 공유하게 한다.

 

수신기(UART 하드웨어)는 RX선의 전압 상태 변화를 계속 감시하다가 그 전압 레벨을 기준으로 0과 1을 판단한다.
(TTL UART 기준) Idle이 High(1)인 상태에서 RX선 전압이 Low(0)로 떨어지는 에지를 감지하면 이를 스타트 비트의 시작으로 인식한다.

이후에 수신기는 약속된 보더레이트를 기준으로 정해진 타이밍에 데이터 비트를 샘플링한다.

 

3. 데이터 비트

스타트 비트가 이제 데이터를 보내겠다는 신호였다면 데이터 비트는 진짜 보내고 싶은 내용(문자, 숫자, 명령값)을 0과 1로 쪼개어 실어 나르는 구간이다.

데이터 비트는 7 data bits와 8 data bits로 구분된다.

이건 한 프레임 안에 실제 내용이 몇비트를 담아 보내는지의 규격에 대한 설정이다.

예전에는 7 data bits를 많이 사용했으나 지금은 8 data bits가 더 많이 사용 되고 있다.

 

UART의 기준에서 보면 데이터의 LSB(가장 오른쪽 비트, 가장 작은 자리 값)을 먼저 보낸다.

ASCII Code에서 A는 0x41이고 2진수로는 0100 0001이다.

이걸 UART(8N1) 프레임으로 보면 

0100 0001
        ↑ LSB

가장 우측의 값부터 전송하기 시작해서 

데이터 비트: 1 0 0 0 0 0 1 0  (LSB → MSB)

이런식으로 보내게 된다.

 

이걸 프레임을 기준으로 작성해보면 아래와 같다.

Idle  Start  Data(8bits)                 Stop
  1      0    1 0 0 0 0 0 1 0              1

 

여기서 예전에는 메모리/통신 자원이 지금보다 비쌌고 영어 중심 문자만 필요한 환경이 많아 ASCII Code가 7 비트의 문자 집합으로 2^7의 128개의 문자만을 표현 하는것으로 충분했기에 7 data bits를 많이 썼고 오류 검출용으로 패리티 1 비트를 붙여서 7E1 또는 7O1를 쓰는것이 흔했는데 지금은 1 바이트가 8 비트인 단위가 표준이 되었고 영어 외 문자/바이너리 프로토콜 등도 다뤄야 하기 때문에 시리얼이 8N1이 대부분을 쓰는 흐름이 되었다.

 

여기서 8 data bits로 송신이 오는데 수신을 7 data bits로 인식하면 수신 쪽에서는 데이터는 7 바이트로 만 온다 라고 인식해서 8번째 비트의 내용을 읽지 않아 다음 구조 해석에 오류가 발생하기에 이를 맞춰서 읽을 수있도록 송신 쪽과 수신쪽의 데이터 비트를 맞춰줘야 한다.

 

4. 패리티

패리티(Parity)는 시리얼 통신에서 간단하게 오류를 감지하기 위해 붙이는 검사용 비트이다.

데이터 비트를 보낼 때 1의 개수가 짝수인지, 홀수인지를 맞추기 위해서 패리티 비트 1개를 추가하는 방식으로 송신측에서 우린 짝수로 맞춰 보낼께 했을때 데이터 비트에 1의 갯수가 홀수면 패리티 비트를 1을 추가해서 짝수로 만들어 보내고 반대로 홀수 일 경우는 데이터 비트의 1의 갯수가 짝수 일 경우 패리티 비트에 1을 추가해서 홀수로 만들어 읽는 측에서도 이게 맞는지 확인을 해서 데이터가 오류가 없을 거라고 간단하게 검사할 수 있게 만드는 비트이다.

이 패리티는 짝수, 홀수, 없음으로 각각 

 

1) Even Parity(짝수 패리티)

짝수로 맞추기 위한 용도로 사용되는 패리티

ex) 데이터 + 패리티의 1의 갯수가 짝수가 되게 맞춤 -> 8 data bits면서 Even Parity라면 8E

 

2) Odd Parity(홀수 패리티)

홀수로 맞추기 위한 용도로 사용되는 패리티

ex) 데이터 + 패리티의 1의 갯수가 홀수가 되게 맞춤 -> 8 data bits면서 Odd Parity라면 8O

 

3) None(패리티 없음)

검사 비트 자체를 붙이지 않는 형태 -> 8 data bits면서 None Parity라면 8N

 

가장 흔하게 사용 되는 건 None이다.

 

5. 스탑 비트

스톱 비트는 데이터 비트(및 패리티 비트)가 끝난 뒤에 붙는 마무리 신호이다.

UART 통신에서 Idle 상태는 보통 High(1)이며 스타트 비트는 Idle(1) 상태에서 Low(0)로 떨어지는 전압 변화를 통해 프레임의 시작을 알린다.

스톱 비트는 프레임의 끝에서 High(1) 상태를 일정 시간 유지하는 구간으로 수신기는 이 구간을 통해 데이터 프레임의 종료와 Idle 복귀를 확인한다.

스톱 비트의 길이는 설정에 따라 1비트 시간 또는 2비트 시간으로 구성할 수 있으며 송신기와 수신기가 동일한 스톱 비트 규칙을 사용하면 수신기는 그 시간만큼 High 상태를 확인한 뒤 다음 프레임을 받을 준비를 한다.

 

우선은 이 정도로 정리하고 추가로 필요할때 작성하도록 하자

반응형

'IT 용어' 카테고리의 다른 글

CRC  (0) 2025.12.10