직렬 포트

섬네일|IBM PC 호환기종 컴퓨터에 사용된 RS-232 직렬 포트의 DE-9 수 커넥터 (직렬 포트 기호 포함)
섬네일|RS-232 케이블의 암형 DE-9 커넥터.
컴퓨터 환경에서 직렬 포트(serial port, ) 또는 시리얼 케이블(serial cable)은 정보를 한 번에 비트 단위로 순차적으로 주고받는 직렬 통신 인터페이스이다. 이는 여러 비트를 병렬로 동시에 통신하는 병렬 포트와 대조된다. 대부분의 개인용 컴퓨터의 역사 동안 데이터는 직렬 포트를 통해 모뎀, 단말기, 다양한 주변기기, 그리고 컴퓨터 간에 직접 전송되었다.

이더넷, 파이어와이어, USB와 같은 인터페이스도 데이터를 직렬 스트림으로 전송하지만, 직렬 포트라는 용어는 일반적으로 하드웨어가 RS-232 또는 RS-485나 RS-422와 같은 관련 표준을 준수함을 의미한다.

최신 일반 PC는 주로 USB와 같은 고속 표준으로 직렬 포트를 대체했다. 그러나 직렬 포트는 산업 자동화 시스템, 과학 기기, 판매 시점 정보 관리 시스템 및 일부 산업용 및 소비자 제품과 같이 단순하고 저속 인터페이스를 요구하는 응용 분야에서 여전히 자주 사용된다.

서버 컴퓨터는 진단을 위한 제어 콘솔로 직렬 포트를 사용할 수 있으며, 네트워킹 하드웨어(예: 라우터 및 네트워크 스위치)는 구성, 진단 및 비상 유지 보수 접근을 위해 일반적으로 직렬 콘솔 포트를 사용한다. 이러한 장치 및 기타 장치와 인터페이스하기 위해 USB-to-시리얼 컨버터를 사용하여 최신 PC에 직렬 포트를 쉽고 빠르게 추가할 수 있다.

 하드웨어 

최신 장치는 직렬 포트를 구현하기 위해 UART라는 집적 회로를 사용한다. 이 IC는 문자를 비동기 직렬 형식으로 변환하고, 하드웨어에서 직렬 프로토콜에 의해 지정된 데이터의 타이밍 및 프레이밍을 구현한다. IBM PC는 존재하는 경우 하나 이상의 UART를 사용하여 직렬 포트를 구현한다.

일부 초기 가정용 컴퓨터와 같은 매우 저렴한 시스템은 CPU를 사용하여 비트 뱅잉 기술을 통해 출력 핀으로 데이터를 전송했다. 이러한 초기 가정용 컴퓨터는 종종 RS-232와 호환되지 않는 핀 배열 및 전압 레벨을 가진 독점 직렬 포트를 가지고 있었다.

대규모 집적 회로가 UART를 보편화하기 전에는 직렬 포트가 메인프레임과 미니컴퓨터에서 일반적으로 사용되었으며, 이들은 시프트 레지스터, 논리 게이트, 카운터 및 필요한 다른 모든 논리를 구현하기 위해 여러 개의 소규모 집적 회로를 가지고 있었다. PC가 발전함에 따라 직렬 포트는 슈퍼 I/O 칩에 포함되었고 그 다음에는 칩셋에 포함되었다.

DTE 및 DCE
직렬 포트의 개별 신호는 단방향이며, 두 장치를 연결할 때 한 장치의 출력이 다른 장치의 입력에 연결되어야 한다. 장치는 DTE(Data Terminal Equipment)와 DCE(Data Circuit-terminating Equipment)의 두 가지 범주로 나뉜다. DTE 장치의 출력인 라인은 DCE 장치의 입력이며 그 반대도 마찬가지이므로, DCE 장치는 각 핀이 다른 쪽 끝의 동일한 번호가 매겨진 핀으로 가는 직선 배선 케이블로 DTE 장치에 연결될 수 있다.

관례적으로 컴퓨터와 터미널은 DTE이며, 모뎀과 같은 주변 장치는 DCE이다. 두 DTE (또는 DCE) 장치를 연결해야 하는 경우, TX 및 RX 라인이 뒤집힌 케이블, 즉 크로스오버, 롤오버 또는 널 모뎀 케이블을 사용해야 한다.

성별
일반적으로 직렬 포트 커넥터는 성별이 정해져 있어 반대 성별의 커넥터와만 결합할 수 있다. D-sub 커넥터의 경우 수 커넥터에는 돌출된 핀이 있고 암 커넥터에는 해당되는 둥근 소켓이 있다. 두 가지 유형의 커넥터 모두 장비나 패널에 장착하거나 케이블을 종단할 수 있다.

DTE에 장착된 커넥터는 수형일 가능성이 높고, DCE에 장착된 커넥터는 암형일 가능성이 높다 (케이블 커넥터는 반대). 그러나 이것이 보편적인 것은 아니다. 예를 들어, 대부분의 직렬 프린터는 암형 DB25 커넥터를 가지고 있지만 DTE이다. 이 경우 케이블의 적절한 성별 커넥터나 젠더 체인저를 사용하여 불일치를 수정할 수 있다.

커넥터
원래 RS-232 표준에서 지정된 유일한 커넥터는 25핀 D-subminiature였지만, 비용 절감이나 물리적 공간 절감 등 여러 가지 이유로 많은 다른 커넥터가 사용되었다. 특히, 많은 장치가 표준에 정의된 20개 신호를 모두 사용하지 않기 때문에 핀 수가 적은 커넥터가 자주 사용된다. 다음은 구체적인 예시이지만, RS-232 연결을 위해 수많은 다른 커넥터가 사용되었다.

9핀 DE-9 커넥터는 PC-AT의 직렬/병렬 어댑터 옵션 이후 대부분의 IBM 호환 PC에서 사용되었으며, 9핀 커넥터는 직렬 및 병렬 포트가 동일한 카드에 장착될 수 있도록 했다. 이 커넥터는 TIA-574로 RS-232 표준화되었다.

일부 소형화된 전자제품, 특히 그래프 계산기 및 휴대용 아마추어 및 투웨이 라디오(two-way radio) 장비는 일반적으로 더 작은 2.5 또는 3.5mm 커넥터와 가장 기본적인 3선 인터페이스(송신, 수신 및 접지)를 사용하는 폰 커넥터를 통해 직렬 포트를 가지고 있다.

8P8C 커넥터도 많은 장치에서 사용된다. EIA/TIA-561 표준은 이 커넥터를 사용하는 핀 배열을 정의하고, 롤오버 케이블(rollover cable, 또는 Yost 표준)은 유닉스 컴퓨터 및 시스코 시스템즈 장비와 같은 네트워크 장치에서 일반적으로 사용된다.

많은 매킨토시 모델은 주로 원형 미니 DIN 단자를 사용하여 관련 RS-422 표준을 선호한다. 매킨토시는 프린터와 모뎀 연결을 위한 표준 2개의 포트 세트를 포함했지만, 일부 파워북 랩톱은 공간 절약을 위해 하나의 통합 포트만 가졌다.

10P10C 커넥터는 일부 장치에서 찾을 수 있다.

또 다른 일반적인 커넥터는 메인보드 및 애드인 카드에 흔히 볼 수 있는 핀 헤더인데, 이는 일반적으로 리본 케이블을 통해 보다 표준적인 9핀 DE-9 커넥터로 변환되어 (자주 빈 슬롯 플레이트 또는 하우징의 다른 부분에 장착된다).

핀 배열
다음 표는 일반적으로 사용되는 RS-232 신호 및 핀 할당을 나열한다.

신호 접지는 다른 연결에 대한 공통 귀환이다. Yost 표준에서는 두 개의 핀에 나타나지만 동일한 신호이다. DB-25 커넥터에는 핀 1에 두 번째 보호 접지가 포함되어 있으며, 각 장치가 자체 프레임 접지 등에 연결하도록 의도되었다. 보호 접지를 신호 접지에 연결하는 것은 일반적인 관행이지만 권장되지는 않는다.

EIA/TIA 561은 DSR과 RI를 결합하고, Yost 표준은 DSR과 DCD를 결합한다.

하드웨어 추상화
운영 체제는 일반적으로 프로그램이 하드웨어 주소로 참조하도록 요구하는 대신 컴퓨터의 직렬 포트에 대한 상징적인 이름을 만든다.

유닉스 계열 운영 체제는 일반적으로 직렬 포트 장치를 로 명명한다. TTY는 초기 컴퓨터의 직렬 포트에 일반적으로 연결된 장치인 전신타자기에 대한 상표 없는 일반적인 약어이며, 는 특정 포트를 식별하는 문자열을 나타낸다. 이 문자열의 구문은 운영 체제 및 장치에 따라 다르다. 리눅스에서는 8250/16550 UART 하드웨어 직렬 포트가 로 명명되고, USB 어댑터는 로 나타나며, 다양한 유형의 가상 직렬 포트는 반드시 로 시작하는 이름을 갖지는 않는다.

도스 및 마이크로소프트 윈도우 환경에서는 직렬 포트를 COM 포트(COM1, COM2 등)라고 부른다.

 직렬 포트의 일반적인 응용 프로그램 
이 목록에는 PC의 직렬 포트에 연결되는 몇 가지 일반적인 장치가 포함되어 있다. 이들 중 일부(예: 모뎀 및 직렬 마우스)는 사용되지 않고 있지만, 다른 일부는 여전히 널리 사용 가능하다. 직렬 포트는 대부분의 마이크로컨트롤러 유형에서 매우 흔하며, PC 또는 다른 직렬 장치와 통신하는 데 사용될 수 있다.

 다이얼업 모뎀
 네트워킹 장비(예: 라우터, 네트워크 스위치, 방화벽, 로드 밸런서)의 구성 및 관리
 GPS 수신기 (일반적으로 NMEA 0183에서 )
 바코드 스캐너 및 기타 판매 시점 정보 관리 장치
 LED 및 LCD 텍스트 디스플레이
 위성 전화, 저속 위성 모뎀 및 기타 위성 기반 트랜시버 장치
 평판 디스플레이를 이용한 외부 컴퓨터, 기타 AV 구성 요소 또는 리모컨을 통한 화면 기능 제어
 디지털 멀티미터 및 계량 시스템과 같은 테스트 및 측정 장비
 다양한 소비자 장치의 펌웨어 업데이트
 CNC 컨트롤러
 무정전 전원 장치 관리 및 상태 보고
 속기 또는 속기 자판 기계
 두 번째 컴퓨터에서 실행되는 소프트웨어 디버거
 마이크로프로세서 개발 또는 평가 보드에 대한 콘솔 또는 디버거 인터페이스
 산업용 필드버스
 프린터
 단말기, 전신타자기
 네트워킹 (매킨토시 애플토크는 RS-422를 사용하여 )
 직렬 마우스

직렬 포트의 제어 신호는 어떤 디지털 신호에 의해서도 구동될 수 있으므로, 일부 응용 프로그램에서는 직렬 데이터를 교환하지 않고 직렬 포트의 제어 라인을 사용하여 외부 장치를 모니터링했다. 이 원리의 일반적인 상업적 응용은 일부 무정전 전원 장치 모델에서 전원 손실, 배터리 부족 및 기타 상태 정보를 알리는 데 제어 라인을 사용한 경우이다. 적어도 일부 모스 부호 훈련 소프트웨어는 직렬 포트에 연결된 코드 키를 사용하여 실제 코드 사용을 시뮬레이션했다. 직렬 포트의 상태 비트는 매우 빠르게 예측 가능한 시간에 샘플링될 수 있어 소프트웨어가 모스 부호를 해독할 수 있었다.

직렬 컴퓨터 마우스는 수신된 데이터 또는 제어 신호에서 작동 전원을 얻을 수 있다.

 설정 

직렬 표준은 다양한 작동 속도뿐만 아니라 다양한 작동 조건을 고려하기 위한 프로토콜 조정도 제공한다. 가장 잘 알려진 옵션은 속도, 문자당 데이터 비트 수, 패리티 및 문자당 정지 비트 수이다.

UART 집적 회로를 사용하는 최신 직렬 포트에서는 이 모든 설정을 소프트웨어로 제어할 수 있다. 1980년대 및 그 이전의 하드웨어는 회로 기판의 스위치 또는 점퍼를 설정해야 할 수 있다.

PC에 연결하도록 설계된 직렬 포트의 구성은 사실상의 표준이 되었으며, 일반적으로 9600/8-N-1로 표기된다.

속도
직렬 포트는 이진(2단계) 신호를 사용하므로 비트/초 데이터 속도는 보드의 심볼 속도와 같다. 총 속도에는 프레이밍을 위한 비트(정지 비트, 패리티 등)가 포함되므로 유효 데이터 속도는 비트 전송 속도보다 낮다. 예를 들어, 8-N-1 문자 프레이밍의 경우 비트의 80%만이 데이터에 사용할 수 있으며, 데이터 8비트당 2비트의 추가 프레이밍 비트가 전송된다.

표준 속도 시리즈는 전기 기계식 전신타자기의 속도 배수를 기반으로 한다. 일부 직렬 포트는 임의의 속도를 선택할 수 있지만, 데이터가 올바르게 수신되려면 연결 양쪽의 속도가 일치해야 한다. 일반적으로 지원되는 비트 전송률은 75, 110, 300, 1200, 2400, 4800, 9600, 19,200, 38,400, 57,600 및 이다. 이러한 표준 모뎀 비트 전송률 중 상당수는 (예: 19200, 38400, 76800) 또는 (예: 57600, 115200)의 배수이다. 1.843200 MHz의 주파수를 가진 결정 진동자는 이 목적으로 특별히 판매된다. 이는 가장 빠른 비트 전송률의 16배이며, 직렬 포트 회로는 필요에 따라 이를 낮은 주파수로 쉽게 나눌 수 있다.

비트 전송률을 설정할 수 있다고 해서 작동하는 연결이 보장되는 것은 아니다. 모든 직렬 포트에서 모든 비트 전송률이 가능한 것은 아니다. 음악 악기 제어를 위한 MIDI와 같은 일부 특수 목적 프로토콜은 전신타자기 표준 이외의 직렬 데이터 전송률을 사용한다. 일부 직렬 포트 구현은 연결된 장치가 전송하는 것을 관찰하고 동기화하여 비트 전송률을 자동으로 선택할 수 있다.

데이터 비트
각 문자열의 데이터 비트 수는 5 ( 보도 코드용), 6 (거의 사용되지 않음), 7 (진정한 ASCII용), 8 (대부분의 데이터 유형, 이 크기가 바이트 크기와 일치하기 때문), 또는 9 (거의 사용되지 않음)일 수 있다. 8 데이터 비트는 최신 응용 프로그램에서 거의 보편적으로 사용된다. 5 또는 7 비트는 일반적으로 전신타자기와 같은 오래된 장비에서만 의미가 있다.

대부분의 직렬 통신 설계는 각 바이트 내의 데이터 비트를 최하위 비트부터 먼저 전송한다. 또한 가능하지만 거의 사용되지 않는 것은 최상위 비트 우선이다. 예를 들어, IBM 2741 인쇄 터미널에서 사용되었다. 비트의 순서는 일반적으로 직렬 포트 인터페이스 내에서 구성할 수 없지만 호스트 시스템에 의해 정의된다. 로컬 기본값과 다른 비트 순서를 요구하는 시스템과 통신하려면 로컬 소프트웨어가 전송 직전과 수신 직후에 각 바이트 내의 비트를 재정렬할 수 있다.

패리티

패리티는 전송 오류를 감지하는 방법이다. 직렬 포트에서 패리티가 사용될 때, 각 데이터 문자마다 추가 데이터 비트가 전송되며, 패리티 비트를 포함한 각 문자의 1 비트 수가 항상 홀수 또는 항상 짝수가 되도록 배열된다. 잘못된 수의 1이 있는 바이트가 수신되면 손상된 것이다. 올바른 패리티는 반드시 손상이 없음을 나타내는 것은 아니다. 오류 수가 짝수인 손상된 전송은 패리티 검사를 통과할 수 있기 때문이다. 단일 패리티 비트는 각 문자에서 오류 수정을 구현할 수 없으며, 직렬 데이터 링크를 통해 작동하는 통신 프로토콜은 일반적으로 데이터 유효성을 보장하고 잘못 수신된 데이터의 재전송을 요청하는 상위 수준 메커니즘을 가질 것이다.

각 문자의 패리티 비트는 다음 중 하나로 설정할 수 있다.

 없음 (N)은 패리티 비트가 전송되지 않고 전송이 단축됨을 의미한다.
 홀수 (O)는 1 비트의 수가 홀수가 되도록 패리티 비트가 설정됨을 의미한다.
 짝수 (E)는 1 비트의 수가 짝수가 되도록 패리티 비트가 설정됨을 의미한다.
 마크 (M) 패리티는 패리티 비트가 항상 마크 신호 상태(1 비트 값)로 설정됨을 의미한다.
 스페이스 (S) 패리티는 항상 패리티 비트를 스페이스 신호 상태(0 비트 값)로 전송함을 의미한다.

어떤 형태의 주소 지정이나 특수 신호에 마지막 비트(일반적으로 9번째 비트)를 사용하는 드문 응용 프로그램을 제외하고, 마크 또는 스페이스 패리티는 오류 감지 정보를 추가하지 않으므로 흔하지 않다.

홀수 패리티는 각 문자에서 적어도 하나의 상태 전환이 발생하도록 보장하므로 짝수 패리티보다 유용하며, 이는 직렬 포트 속도 불일치로 인해 발생할 수 있는 오류를 감지하는 데 더 신뢰할 수 있다. 그러나 가장 일반적인 패리티 설정은 없음을 의미하며, 오류 감지는 통신 프로토콜에 의해 처리된다.

회선 노이즈로 손상된 메시지를 감지할 수 있도록, 전기 기계식 전신타자기는 수신된 데이터에 패리티 오류가 포함될 경우 특수 문자를 인쇄하도록 배열되었다.

정지 비트
각 문자 끝에 전송되는 정지 비트는 수신 신호 하드웨어가 문자의 끝을 감지하고 문자 스트림과 재동기화할 수 있도록 한다. 전자 장치는 일반적으로 하나의 정지 비트를 사용한다. 느린 전기 기계식 전신타자기가 사용되는 경우, 1.5 또는 2개의 정지 비트가 필요할 수 있다.

관례적 표기
frame|이 다이어그램에서는 두 바이트가 전송되며, 각각 시작 비트, 8개의 데이터 비트(비트 0-7), 그리고 하나의 정지 비트로 구성되어 8N1 형식의 10비트 문자 프레임을 이룬다. 다이어그램에서 위로 유지되는 선은 흥분된("마크" 또는 1) 선 상태를 나타내고, 아래로 유지되는 선은 비활성("스페이스" 또는 0) 상태를 나타낸다. 비트에 대해 위아래로 그려진 선(정사각형을 형성)은 값이 0 또는 1이 될 수 있는 데이터 비트를 나타낸다.
데이터/패리티/정지(D/P/S) 관례적 표기법은 직렬 연결의 프레이밍을 지정한다. 개인용 컴퓨팅 장치의 가장 일반적인 구성은 8-N-1(8N1, 8-None-1로도 표기)이며, 이는 하나의 시작 비트, 8개("8")의 데이터 비트, 패리티 비트 없음("N"), 그리고 하나의("1") 정지 비트가 있음을 의미한다. 이 표기법에서는 패리티 비트가 데이터 비트 수에 포함되지 않는다. 예를 들어, 7/E/1(7E1)은 7개의 데이터 비트에 짝수 패리티 비트가 추가되어 시작 비트와 정지 비트 사이에 총 8개의 비트가 있음을 의미한다.

이 약어는 일반적으로 초당 비트 수와 함께 "9600–8-N-1"과 같이 주어진다. 속도(또는 보 레이트)에는 프레이밍을 위한 비트(정지 비트, 패리티 등)가 포함되므로 유효 데이터 속도는 보 레이트보다 낮다. 8-N-1 인코딩의 경우, 비트의 80%만이 데이터에 사용할 수 있다(데이터 8비트당 10비트가 직렬 링크를 통해 전송됨 — 시작 비트 1개, 데이터 비트 8개, 정지 비트 1개).

흐름 제어
흐름 제어는 송신기가 수신기가 처리할 수 있는 것보다 빠르게 데이터를 보낼 수 있는 경우에 사용된다. 이를 해결하기 위해 직렬 회선은 종종 핸드셰이킹 방법을 통합한다. 하드웨어 및 소프트웨어 핸드셰이킹 방법이 있다.

하드웨어 핸드셰이킹은 추가 신호, 종종 RS-232 RTS/CTS 또는 DTR/DSR 신호 회로를 사용하여 수행된다. RTS 및 CTS는 데이터 흐름을 제어하는 데 사용되며, 예를 들어 버퍼가 거의 가득 찼을 때 신호를 보낸다. RS-232 표준 및 그 후속 표준에 따라 DTR 및 DSR은 장비가 존재하고 전원이 켜져 있음을 신호하는 데 사용되므로 일반적으로 항상 활성화된다. 그러나 흐름 제어에 DTR을 사용하는 프린터와 같은 비표준 구현도 존재한다.

소프트웨어 핸드셰이킹은 예를 들어 ASCII 제어 문자 XON/XOFF를 사용하여 데이터 흐름을 제어한다. XON 및 XOFF 문자는 수신기가 발신자에게 발신자가 언제 데이터를 보낼지 제어하기 위해 보내진다. 즉, 이 문자들은 전송되는 데이터와 반대 방향으로 이동한다. 시스템은 발신 허용 상태로 시작된다. 수신기의 버퍼가 용량에 가까워지면 수신기는 발신자에게 XOFF 문자를 보내 데이터 전송을 중지하도록 알린다. 나중에 수신기가 버퍼를 비운 후에는 발신자에게 XON 문자를 보내 전송을 재개하도록 알린다. 이는 제어 정보가 데이터와 동일한 채널을 통해 전송되는 대역 내 신호의 예이다.

하드웨어 핸드셰이킹의 장점은 매우 빠를 수 있고, 전송된 데이터에 대한 ASCII와 같은 강제된 의미와 독립적으로 작동하며, 상태 비저장이라는 점이다. 단점은 더 많은 하드웨어와 케이블링이 필요하며, 연결의 양쪽 끝이 사용되는 하드웨어 핸드셰이킹 프로토콜을 지원해야 한다는 점이다.

소프트웨어 핸드셰이킹의 장점은 하드웨어 핸드셰이킹 회로 및 케이블링이 없거나 호환되지 않는 경우에도 수행할 수 있다는 것이다. 모든 대역 내 제어 신호 방식의 공통적인 단점은 데이터 메시지가 차단된 경우에도 제어 메시지가 통과하도록 보장하는 복잡성을 유발하고, 데이터가 제어 신호로 오인될 수 없다는 점이다. 전자는 일반적으로 운영 체제 또는 장치 드라이버가 처리하며, 후자는 일반적으로 제어 코드가 이스케이프되거나 (예: 커밋 프로토콜) 설계상 생략되도록 (예: ANSI 이스케이프 코드) 보장함으로써 처리된다.

핸드셰이킹이 사용되지 않으면, 오버런된 수신기는 송신기로부터 데이터를 수신하지 못할 수 있다. 이를 방지하는 방법으로는 수신기가 항상 따라잡을 수 있도록 연결 속도를 줄이거나, 더 긴 시간 동안 평균적으로 따라잡을 수 있도록 버퍼 크기를 늘리거나, 시간이 많이 걸리는 작업 후에 지연을 사용하거나 (예: termcap) 올바르게 수신되지 않은 데이터를 재전송하는 메커니즘을 사용하는 (예: TCP) 방법이 있다.

 같이 보기 
 RS-232
 범용 직렬 버스
 병렬 포트

 각주 

 외부 링크 
 현재는 쓰이지 않는 컴퓨터와 모뎀의 직렬 인터페이스 포트

분류:직렬 버스
분류:레거시 하드웨어
분류:컴퓨터 단자