통신 관련 용어 및 기술
데이터 전송 방식
직렬 통신 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
USART 컨버터 구조
참고
Next