Search
Duplicate
🗣️

minitalk (5) 통신 관련 용어 및 기술

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
C
42cursus
minitalk
태그
Scrap
8 more properties
minitalk

통신 관련 용어 및 기술

데이터 전송 방식

직렬 통신 VS 병렬 통신

단방향 통신 (Simplex)
한쪽 방향으로만 전송이 가능한 방식 (ex. 라디오, TV)
반이중 통신 (Half-Duplex)
양방향으로 한 쪽만 전송이 가능한 방식 (ex. 무전기, 모뎀을 통한 데이터통신)
전이중 통신 (Full-Duplex)
양방향으로 동시 전송이 가능한 방식 (ex. 전화, 전용선을 통한 데이터통신)
직렬 통신 (Serial)
병렬 통신 (Parallel)
통신 거리
원거리 전송
단거리 전송
데이터 전송량
1비트 전송
n비트 전송
기술 구현
단순함
복잡함
비용
저렴함
비쌈
대표 장치 예
PC의 RS232 포트
HDD IDE 케이블
사용 환경
실시간 작은 데이터 처리를 요구하는 환경
많은 양의 데이터를 처리해야 하는 환경
사용 예시
산업 현장의 각종 제어 장비 통신에 사용
컴퓨터 내부 장치 간 통신 CPU와 HDD, Memory 통신

동기 전송 VS 비동기 전송

동기 전송 (Synchronous)
비동기 전송 (Asynchronous)
데이터 전송량
대량의 데이터 전송
소량의 데이터 전송
데이터 속도
고속 전송
저속 전송
기술 구현
복잡함
단순함
비용
고가
저가
동기화 방식
클럭 동기 (동기 문자)
start bit, stop bit
동기 단위
프레임 단위 전송
비트나 문자 단위 전송
IDLE
없음
있음

DTE/DCE

현재 시판중인 대부분의 PC에서의 직렬 포트는 DTE 장치에 해당한다.
DTE(Data Terminal Equipment) : 데이터 단말기 (ex. PC)
DCE(Data Communication Equipment) : 데이터 통신기 (ex. 모뎀)
DTE와 DCE를 구분하는 이유?
역사적으로 원격의 두 컴퓨터 간의 통신에서 PC 와 PC 사이에는 모뎀(Modem; Modulation and Demodualtion)이라는 장치가 사용되었다. Terminal 과 Modem은 각각 DTE 와 DCE로 구분되어 다른 역할을 수행하며, 각 포트의 핀은 케이블을 통해 1:1로 연결된다.
변조(Modulation) : 데이터를 전송할 경우, 컴퓨터가 사용하는 Digital 정보를 Analog 신호로 변환하여 전화선으로 전달해야 한다.
복조(Demodulation) : 데이터를 수신할 경우, 전화선으로 들어온 Analog 신호를 Digital 정보로 변환하여 PC로 전달해야 한다.

직렬 통신 관련 규격

UART

범용 비동기화 송수신기(Universal Asynchronous Receiver/Transmitter)의 약자이다.
직렬 데이터를 교환하는 2선식 프로토콜이며, 구현이 간단하고 비용이 저렴하다.
최신 컴퓨터는 직렬 포트 대신 이더넷, USB 등의 기술을 사용함에도, 속도와 처리량이 낮은 애플리케이션에서 여전히 사용되고 있다.
데이터 비트 : UART는 일반적으로 최하위(LSB) 비트를 가장 먼저 전송하는 리틀 엔디안 방식이다.
ex) 7비트 ASCII ‘S’ (0x52) = 1 0 1 0 0 1 1는 제일 오른쪽부터 전달된다.
패리티 비트 : 없음, 홀수, 짝수 패리티 비트 중 하나를 사용하여 에러를 검출한다.
전기 신호에서는 비트를 구분하기 위해 아래의 정보가 추가적으로 필요하지만, 과제에서는 SIGUSR1, SIGUSR2로 비트가 구분되므로 필요 없다.
1.
시작 비트와 정지 비트
2.
baud rate(초 당 데이터 전송량)
[참고] 전기 신호에서의 Baud Rate 계산식

USART

범용 동기화/비동기화 송수신기(Universal Synchronous and Asynchronous Receiver/Transmitter)의 약자이다.
동기화가 추가된 UART 이며, 별도의 클럭을 사용하여 통신을 수행한다.

USART 모드

1배속 비동기 모드 (UART)
2배속 비동기 모드 (UART)
동기 모드 (USART)

레지스터 종류

송신 (TxD) 레지스터 : 데이터 송신을 위한 버퍼
수신 (RxD) 레지스터 : 데이터 수신을 위한 버퍼
제어 (Control) 레지스터 : 정지비트 길이, 패리티 비트 모드, 패킷 길이 등 설정
상태 (Status) 레지스터 : 수신 완료, 송신 완료, 비어있음 상태 정보와 인터럽트 핸들러와 연결된 오류 정보
UBRR 레지스터 : 설정된 Baud Rate에 따라 한 비트의 시간 폭 저장

RS232/RS422/RS485

EIA(Electornic Industries Association)에 의해 Recommand Standard에 규정된 표준 규격
직렬 통신의 기본적인 방식으로 DTE와 DCE 간의 인터페이스에 대한 규정이다.
사양
RS232C (≒ UART)
RS422
RS485
동작 방식
Single-Ended
차동 방식(Differential)
차동 방식(Differential)
최대 드라이버 수
1 드라이버
1 드라이버
32 드라이버
최대 리시버 수
1 리시버
10 리시버
32 리시버
최고 통신 속도
1Mbps = 1,000,000bps
10Mbps
10Mbps 이상
결선 방식
최소 3-wire
4-wire
2-wire 또는 4-wire
전송 방식
전이중 (Full Duplex)
전이중 (Full Duplex)
4-wire: 전이중 (Full Duplex) 2-wire: 반이중 (Half Duplex)
지원 모드
Point to Point (1:1)
Point to Point (1:1) Muluti-Drop (1:10)
4-wire :Non-Echo Mode 2-wire :Echo Mode
최대 통달거리
약 15 m
약 1.2 km
약 1.2km
최대 출력전압
±25V
-0.25V to +6V
-7V to +12V
최대 입력전압
±15V
-7V to +7V
-7V to +12V

RS232

비동기 직렬 통신 프로토콜의 가장 대표적인 예이다. (전압 빼고 UART와 동일하다)

RS422

RS-232와 유사하여 동일한 프로그래밍이 가능하다.
전압 차이를 이용하는 차동 방식으로 변경되어 노이즈에 강해졌다.

RS485

프로그래밍 시 tansmitter를 켜고 끄는 조작이 필요하지만 보통 장비가 자동으로 해준다.
지원 모드
wire
설명
2
Echo Mode
수신단은 항상 ON 상태 / 송신단은 데이터 전송시에만 ON - 성공 시, 전송 데이터를 그대로 루프백한다. - 충돌 시, 루프백이 달라지므로 데이터가 깨졌음을 알 수 있다. - 충돌을 감지하면 랜덤한 시간만큼 대기한 후 다시 데이터를 전송한다.
4
Non-Echo Mode
송수신단은 항상 반대로 개폐 (TXD데이터가 RXD로 루프백 되지 않음) - 성공 시, ACK 응답을 받는다. - 충돌 시, ACK 응답이 오지 않으므로 일정 시간 뒤에 재전송을 시도한다. ※ ACK 응답이 충돌난 경우 동일 데이터 재전송이 발생할 수 있다.

RS232 포트

근래에 와서 USB(Universal Serial Bus) 포트로 대치될 때까지 대부분의 PC 및 계측장비에서 사용된 대표적인 유선 통신 방식이다. 연결이 간단하고 기술적 구현이 쉬워서 오래 전부터 널리 이용되고 있으며, 제어계측 장비분야에서는 아직까지도 경제적이고 신뢰성있는 통신방식으로 각광받고 있다.
다음은 DTE 9 pin(M) 포트의 핀배열, 명칭과 설명이다
데이터 흐름 제어(flow control)나 반송파 검출(carrier detection) 등의 다른 기능은 사용하지 않고 순수하게 통신만 한다면 송신 신호(TxD)와 수신 신호(RxD) 2개의 신호만으도 충분하다.
pin#
용도
방향
명칭
설명
1
제어선
Input
DCD(Data Carrier Detect)
송수신이 일어나고 있는지 확인
2
데이터선
Input
RxD(Receive Data)
직렬 데이터 수신
3
데이터선
Output
TxD(Transmit Data)
직렬 데이터 전송
4
제어선
Output
DTR(Data Terminal Ready)
자신의 송수신 가능 상태 전송
5
공통선
-
GND(Ground)
신호의 기준점 (0V를 의미)
6
제어선
Input
DSR(Data Set Ready)
상대의 송수신 가능 상태 수신
7
흐름제어선
Output
RTS(Ready To Send)
자신의 수신 버퍼 상태를 전송
8
흐름제어선
Input
CTS(Clear To Send)
상대의 수신 버퍼 상태를 수신
9
제어선
Input
RI(Ring Indicator)
전화벨이 울리고 있음을 수신

반송파 검출(Carrier Detection)

Carrier : 네트워크 상에서 나타나는 신호를 의미한다.
네트워크 통신이 일어나고 있으면 데이터를 보내지 않고 기다린다.
네트워크 통신이 일어나고 있지 않으면 데이터를 네트워크 상에 보낸다.
동시에 보내려다 부딪치는 경우 충돌(Collision)이 발생했다고 한다.
충돌이 발생한 경우 랜덤한 시간 동안 기다린 다음 다시 데이터를 전송한다.
충돌이 계속해서 15번 발생하면 통신을 끊는다.

흐름 제어(Flow Control)

수신 상태가 아닌 경우 데이터를 전송하면 데이터가 손실 될 수 있기 때문에 통신 상태를 확인한다.
H/W Flow Control
수신 DTR - 송신 DSR : 신호가 설정되면 송수신 가능 상태를 의미한다.
수신 RTS - 송신 CTS : 신호가 설정되면 수신 버퍼가 FULL 이므로 전송을 일시 중단한다.
S/W Flow Control
수신 버퍼가 충분하면 XON(0001 0001) 코드를 전송하여 전송 재개를 요구한다.
수신 버퍼가 불충분하면 XOFF(0001 0011) 코드를 전송하여 전송 일시 중단을 요구한다.

번외

USART 구조

USART 구조

1.
클럭 발생부 : Baud Rate 발생기, 클럭 동기 회로
동기 모드인 경우, XCK 핀을 통해 UBRR에 설정된 보율에 의해 생성된 클록 신호를 보내 송수신 비트를 동기시킨다.
비동기 모드인 경우, XCK 핀 없이 UBRR에 설정된 보율에 의해 자체적으로 송수신 비트를 판정한다.
2.
송신부: 송신버퍼(UDR), 송신 시프트 레지스터(FIFO), 패리티 발생기
a.
수신 기능 활성화 (UCSRnB 레지스터의 RXENn 비트를 활성화)
b.
레지스터가 비어있으면 값을 기록 (UCSRnA 레지스터의 UDREn 비트가 1일 때 UDRn 레지스터에 값을 기록)
c.
기록된 데이터는 송신 시프트 레지스터에서 LSB부터 오른쪽으로 시프트하면서 데이터 비트를 TxD 핀으로 출력한다.
3.
수신부: 수신버퍼(UDR), 수신 시프트 레지스터(FIFO), 패리티 발생기
a.
송신 기능 활성화 (UCSRnB 레지스터의 TXENn 비트를 활성화)
b.
RxD 핀에서 입력되는 신호를 클럭에 맞춰 복구 시킨 뒤 LSB부터 오른쪽으로 시프트하면서 수신 천이 레지스터에 입력시킨다.
c.
데이터가 수신되면 변수에 값 이동(UCSRnA 레지스터의 RXCn 비트가 1일 때 UDRn 레지스터에 수신된 값을 변수에 옮겨 저장)
4.
레지스터 A/B/C
Table
Search
읽기/쓰기
변수
비트 범위
이름
설명
R/W
i/o data
0:7
데이터 수신 버퍼 1. RXC 확인 시 버퍼를 읽고 데이터 저장 2. (1)이 끝나기 전에 다른 데이터를 수신하면 안된다.
R/W
i/o data
0:7
TXB (write)
Open
데이터 송신 버퍼 (TXC 확인 후 송신)
R
register A
7
RXC
Open
데이터 수신 시 1로 설정 (신규 데이터 알림)
R/W
register A
6
TXC
Open
데이터 송신 시 1로 설정 (전송 완료 알림)
R
register A
5
UDRE
Open
레지스터가 비어 있을 때 1로 설정
R
register A
4
프레임 에러 발생
R
register A
3
DOR
Open
데이터 오버런 발생 (수신 데이터 덮어쓰기)
R
register A
2
UPE
Open
패리티 비트 에러 발생
R/W
register A
1
U2X
Open
비동기 2배 전송 기능 설정 (속도 2배!)
R/W
register A
0
MPCM
Open
멀티 프로세서 통신 모드 설정
R/W
register B
7
RXCIE
Open
UDR 레지스터 데이터 수신 완료 시 수신 인터럽트 발생 허용
R/W
register B
6
TXCIE
Open
UDR 레지스터 데이터 송신 완료 시 송신 인터럽트 발생 허용
R/W
register B
5
UDRIE
Open
UDR 레지스터가 비어있을 때 UDRE 설정 인터럽트 허용
R/W
register B
4
RXEN
Open
USATRT 통신 기능에서 수신 활성화
R/W
register B
3
TXEN
Open
USATRT 통신 기능에서 송신 활성화
R/W
register B
2
UCSZ2
Open
전송할 데이터 비트 수 (UCSZ1, 0과 함께 동시에 결정)
R
register B
1
RXB8
Open
수신 데이터가 9비트 일 경우 UDR에 추가 1비트로 사용
R/W
register B
0
TXB8
Open
송신 데이터가 9비트 일 경우 UDR에 추가 1비트로 사용
R
register C
7
예약 비트
R/W
register C
6
UMSEL
Open
동기식 전송 (1), 비동기식 전송 (0)
R/W
register C
5:4
UPM
Open
패리티 비트에 대한 옵션 0 0: 패리티 비트 미사용 0 1 : 예약 1 0 : 짝수 패리티 비트 사용 1 1 : 홀수 패리티 비트 사용
R/W
register C
3
USBS
Open
STOP 비트 수; 1비트(0), 2비트(1)
R/W
register C
1:2
UCSZ
Open
전송할 데이터 비트 수 ( UCSZ2 와 함께 동시에 결정 2 1 0 : 설명 0 0 0 : 데이터 5비트 사용 0 0 1 : 데이터 6비트 사용 0 1 0 : 데이터 7비트 사용 0 1 1 : 데이터 8비트 사용 1 0 0 : 예약 1 0 1 : 예약 1 1 0 : 예약 1 1 1 : 데이터 9비트 사용
R/W
register C
0
UCPOL
Open
동기 전송에서 슬레이브 모드로 동작
R
baud rate
15:12
-
R/W
baud rate
11:0
UBRR
Open
통신율 설정

USART 컨버터 구조

참고

Prev
Next