TTL은 UART인가? RS 프로토콜인가?

RS-232, RS-485, 그리고 TTL 통신을 공부하다보면 여러가지 개념들이 난잡하게 쏟아져 머리가 아픕니다. 체계화된 개념 없이 각각의 개념들 산발적으로 공부하다보면 나중에는 걷잡을 수 없이 무너져버리게 됩니다. 이번 글에서는 TTL은 UART인가? RS 프로토콜인가?라는 주제로 이야기를 해 보도록 하겠습니다.

통신구분1 Serial vs Parallel

직렬통신과 병렬통신의 가장 큰 차이점은 한 번에 몇개의 데이터를 보낼 수 있는가 입니다. 직렬통신은 한 번에 한개의 데이터만 보내지만 병렬통신은 한번에 여러개의 신호를 동시에 보냅니다. 그래서 다음과 같은 장단점이 생깁니다.

  • 직렬통신
    • 통신거리가 길다
    • 전화선을 이용해서도 통신이 가능해서 비용이 적게 든다
  • 병렬통신
    • 통신거리가 짧다
    • 비용이 많이 든다

통신구분2 Full Duplex vs Half Duplex

Full Duplex와 Half Duplex 통신의 구분은 전화와 무전기의 차이를 생각하면 이해하기 쉽습니다.

Full Duplex의 경우 전화처럼 양방향에서 동시에 신호 전송이 가능한 것을 의미하여, Half Duplex는 한번에 한쪽 방향으로만 데이터 전송이 가능한 것을 말합니다.

통신구분3 Async(비동기) vs Sync(동기)

Asynchronous 통신은 데이터 전송 시 시작과 끝을 알 수 없다. 따라서 동기비트(시작비트, 정지비트)를 이용해서 메시지의 시작과 끝을 구분합니다.

통신프로토콜

통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다.(위키백과)

통신 프로토콜이라 함은 통신을 하기 위해서 서로 규칙을 정해놓은 방법이라고 생각하면 됩니다. 통신이라는 것은 무선이든 유선이든 전기 신호가 닿는 상대방에게 시간과 전압 차이를 둔 전기신호를 계속적으로 보내는 행위입니다.

신호가 닿는 누구나 그 신호를 볼 수 있습니다. 하지만 신호를 본다고 해서 그 의미를 아는 것은 아닙니다. 그렇기 때문에 내가 의도를 가지고 보낸 신호를 받는 수신자도 알아야 하기 때문에 서로의 약속을 정한 것이 바로 프로토콜이라고 생각하시면 됩니다.

직렬 통신에도 여러 프로토콜이 있는데 크게 RS-232, RS-422, RS-485 등이 이에 해당합니다.

RS-232RS-422RS-485TTL
로직single-endeddifferentialdifferentialsingle-ended
지원 전송방식Full DuplexFull DuplexHalf Duplex, Full Duplex 모두 지원
최대 송신/수신단 수1 송신단
1 수신단
1 송신단
10 수신단
32 송신단
32 수신단
1 송신단
1 수신단
통달거리약 15m약 1.2km약 1.2km
신호선3개
Tx, Rx, GND
4개
Tx+, Tx-, Rx+, Rx-
2개(Half Duplex)
4개(Full Duplex)
Logic 1-3V ~ -15V+2V ~ +6V+5V
logic 0+3V ~ +15V-2V ~ -6V0V
최대전송속도20Kbps10Mbps10Mbps4Mbps
비고DB-9 plug socketRS232 대비 더 빠르고 더 멀리 통신가능신호 노이즈에 약함

UART(Universal Asynchronous Receiver/Transmitter)

사람들이 가장 많이 오해하는 것이 UART와 RS232를 동일한 것으로 본다는 것이다. 둘 다 시리얼 통신의 하위 개념인건 사실이지만 차이가 있습니다. UART는 병렬데이터를 직렬데이터로 바꿔서 전송하는 HW의 일종입니다. 비동기식 통신컨트롤러라고도 불립니다.

쉽게 이야기해서 UART는 시리얼통신의 HW적 구성을 정의한 것이고, RS-232는 SW적인 구성을 정의한 것이라고 생각하면 쉽습니다.

UART는 Full Duplex 통신이므로 2개의 신호선을 갖습니다. (Tx, Rx)

SW적으로도 구현 가능하나 성능이 떨어집니다

UART에서 나오는 신호는 TTL(Transistor-Transistor Level) 신호레벨을 갖습니다. TTL신호를 받아 노이즈에 강하고 더 멀리갈 수 있는 신호로 변환해주는 인터페이스 IC를 Line Driver/Receiver라고 하며 대표적으로 RS-232, RS-422, RS-485가 있습니다.

[TTL(아래)와 RS-232 신호 차이]

그렇다면 TTL은 UART인가? RS 프로토콜인가?

그럼 여기서 나오는 질문은 TTL은 UART인 것인지, 아니면 RS 프로토콜인지에 대한 질문입니다. 답부터 이야기하면 둘 다 아니다입니다. UART와 통신 프로토콜 사이의 어딘가에 있는 개념입니다. 굳이 비교하자면 통신 프로토콜에 더 가깝긴 합니다. 신호의 출력 등 RS 프로토콜과 비교가 되기 때문입니다.

UART를 이용해서 직렬통신을 하였을 때 가장 처음 출력되는 결과물이 TTL이고 TTL만으로는 노이즈에도 약하고 전송 거리도 짧기 때문에 이를 더욱 강건하게 만들기 위해서 신호를 변환해서 전송하는 것이지요.

그러므로 UART 통신을 하는 장치들은 TTL로 신호를 출력하고 TTL로 신호를 수신하기 때문에 RS 프로토콜은 시작과 끝 부분에서 각각 신호 변환을 해 주어야 합니다. 해당 개념을 설명한 그림이 다음과 같습니다.

References

RS-232, RS-485, UART, TTL 정리

Difference between ttl and rs485?

What is the difference between RS232, RS485 and TTL

Differences between RS485, TTL and RS232

RS-232 vs. TTL Serial Communication

Difference between USART, UART, RS232, USB, SPI, I2C, TTL

시리얼통신 정리 -기본 개념 Serial

Leave a Comment