USB(Universal Serial Bus)
인터페이스 & 프로토콜 파트 중 USB
1. USB(Universal Serical Bus)
- 전력(5V), 직렬 데이터, 접지로 구성된 아이콘
- 호스트와 주변장치 간의 데이터 전송 및 전력 공급을 위한 표준 직렬 버스 인터페이스
- 1996년에 최초 도입되었으며, 이후 여러 버전으로 발전하여 현재는 다양한 속도와 기능을 지원함
- 기존의 직렬 포트나 병렬 포트를 대체하여 주변장치와 컴퓨터의 연결을 표준화 하기 위해 설계됨
특징
- 하나의 커넥터로 각종 주변기기를 동일한 규격으로 접속할 수 있음
- 하나의 호스트와 여러개의 장치 연결 가능
- 플러그 앤 플레이(Plug and Play) 기능을 제공
장점
- 5V 전원을 편리하게 사용할 수 있음
- 기기별로 단자를 구별할 필요가 없어, 확장성이 좋음
- 플러그 앤 플레이
- 사용자가 별도의 드라이버 설치 없이 장치를 쉽게 연결 가능
- 핫스왑 기능 지원
단점
- 구조상 하나의 Host를 반드시 필요로 함
- 메인 CPU의 의존율이 높음
- CPU의 연산력이 높으면, 문제가 되지 않음
- 연결 길이의 제한. 2.0은 5m, 3.0은 3m를 초과할 때 부터 정상 작동을 보장하지 못함
2. USB 통신 원리
USB 하드웨어적 구조
- USB 인터페이스는 물리적 계층, 데이터 링크 계층, 프로토콜 계층, 장치 계층의 4계층으로 구성됨
1. 물리 계층
- USB 케이블을 통한 데이터 전송을 담당
- 케이블 커넥터 및 트랜시버
2. 데이터 링크 계층
- 오류 감지 및 수정, 흐름 제어 및 프레이밍 담당
- 호스트와 장치 간의 패킷 처리
3. 프로토콜 계층
- 장치 열거, 구성 및 제어 담당
- 트랜잭션 요청 및 응답 처리
4. 장치 계층
- 장치에서 USB 기능을 구현하는 역할 담당
- 마이크로 컨트롤러, 엔드포인트 컨트롤러 및
주변 회로와 같은 장치의 펌웨어 및 하드웨어 구성요소가 포함됨 - 물리적인 연결 형태와 크기를 정의하는 폼팩터는 하단에서 설명
USB 소프트웨어적 구조
- 주로 호스트쪽의 소프트웨어 스택과 장치쪽의 펌웨어로 구성됨
1. 호스트 측 소프트웨어 구조
- 호스트 컨트롤 드라이버(Host Controll Driver, HCD)
- USB 호스트 컨트롤러와 직접 상호작용하는 소프트웨어 계층
- USB 포트에 연결된 장치들을 관리하고, 데이터를 전송함
- 각 호스트 컨트롤러에 대해 별도의 드라이버가 존재함
- USB 드라이버(USB Core Driver)
- USB 스택의 핵심 부분
- 운영체제와 USB 하드웨어 사이에서 통신을 중개하는 소프트웨어 모듈
- 호스트 컨트롤러 드라이버와 상위 계층 간의 인터페이스 역할
- 새로운 USB 장치가 연결되면 이를 인식하고 적절한 장치 드라이버를 로드함
- 장치 드라이버(Device Driver)
- 특정 USB 장치와 직접 상호작용하는 드라이버
- 각 장치 유형에 대해 별도의 장치 드라이버 존재
- 응용 프로그램 계층(Application Layer)
- USB 장치를 사용하는 최종 사용자의 애플리케이션
- 응용 프로그램은 장치 드라이버를 통해 USB 장치와 상호작용
2. 장치 측 소프트웨어
- 펌웨어(Firmware)
- USB 장치 내부에 내장된 소프트웨어
- 장치의 기본 동작을 제어하고, 호스트의 응답하며, 데이터 전송을 처리
- USB 스택
- 장치에서 USB 통신 프로토콜을 처리하는 소프트웨어 계층
- 호스트와의 데이터 교환, 명령 처리, 상태 관리 등을 담당
- 엔드 포인트(Endpoint)
- USB 장치 내의 논리적 데이터 전송 통로
- 각 엔드 포인트는 특정 유형의 데이터를 전송하는데 사용되며, 펌웨어에서 이를 관리함
- 엔드 포인트는 주로 제어 전송, 데이터 전송, 인터럽트 전송등을 위해 설정됨
통신 과정
1. 호스트와 장치의 연결
- 호스트-슬레이브 구조를 따름
- 호스트(PC)가 통신을 주도하고, 연결된 장치(슬레이브)는 호스트의 명령에 따라 데이터를 전송하거나 수신함
2. 장치 인식(Enumeration) 초기화
- 장치가 USB 포트에 연결되면, 호스트는 장치를 인식하고, 장치가 지원하는 프로토콜과 속도를 조정함
- 호스트는 일련의 메세지를 장치에 보내, 장치의 요구사항들을 확인함
- 이 요구사항을
descriptor
라고 함
- 이 요구사항을
- 장치는 전원 요구사항, 데이터 전송 속도 및 사용 가능한 엔드포인트에 대한 정보로 응답함
- 이
descriptor
를 읽어온 뒤, 해당 디바이스에게 고유한 주소를 할당해 줌
- 호스트는 일련의 메세지를 장치에 보내, 장치의 요구사항들을 확인함
3. 데이터 전송
- 장치가 구성되면 호스트와 슬레이브는 일련의 패킷을 사용하여 통신함
- USB 전송은 트랜잭션 단위로 이루어지며, 각 트랜잭션은 요청(Request), 데이터(Data), 상태(Status)의 세 부분으로 나뉘어짐
transfer
라는 단위를 사용함
- USB는 폴링 방식을 사용하여, 호스트가 주기적으로 각 장치에 데이터를 요청하거나 데이터를 보냄
- 각 패킷에는 헤더와 페이로드가 포함되며, 엔드 포인트 주소, 데이터 길이 및 패킷 유형과 같은 정보가 포함됨
- 토큰 패킷 : 트랜잭션을 시작하기 위해 호스트에서 사용
- 데이터 패킷 : 장치에서 데이터를 송수신할때 사용
- 핸드셰이크 패킷 : 호스트와 슬레이브에서 데이터 수신을 확인하는데 사용
- 특수 패킷 : 오류 보고 또는 장치 재설정에 사용
4. 전원 공급
- 호스트는 연결된 장치에 전력을 공급하여 장치가 동작할 수 있게 함
- USB 2.0은 최대 500mA, USB 3.0은 최대 1.5A 까지도 전력 제공 가능
5. 장치 제거
- 장치 사용을 중지한 후, 호스트는 장치와 통신으 종료하고 전원 공급을 차단하여 장치를 제거함
3. USB 버전과 단자 타입
- USB는 버전과 타입으로 구분함
- 버전은 기능 추가 및 성능 향상으로 올라가는 숫자
- 타입은 단자의 모양
1. USB의 버전
- USB 1.0/1.1: 초기 USB 표준으로, 최대 12Mbps의 데이터 전송 속도를 제공
- USB 2.0: 최대 480Mbps의 속도를 지원하며, 대부분의 기본적인 주변 장치에 사용
- USB 3.0/3.1/3.2: 고속 데이터 전송을 지원하며, 최대 20Gbps의 속도를 제공
- USB4: 최신 표준으로, 최대 40Gbps의 속도를 지원하고, Thunderbolt 3와 호환성을 제공
- 이 외에도 다양한 버전 존재
2. USB의 단자 타입
- USB 커넥터의 물리적 형태와 크기를 나타내는 폼 팩터(Form Factor)는 종류에 따라 다양함
A타입
- 16 * 8mm 크기의 일반적인 USB 형태
- mini타입과 Micro 타입도 있으나, 두께가 작아 일반적으로 Standard 형태가 널리 쓰임
B타입
- Standard : 11. 5 * 10.mm 크기의 단자로, 프린터, 복합기, 3.5인치 외장하드 등 어느정도 크기가 있는 클라이언트 기기에 사용
- Mini : 6.8 x 3mm 크기의 단자로, 소형 전자기기에 주로 쓰이는 단자
- Micro : 6.85 * 1.8mm 크기의 단자, Micro 5핀으로도 불리는 단자
C타입
- USB 3.1 이상에서 사용되는 새로운 형태의 커넥터
- 가장 많이 사용되는 USB type-C의 폼 팩터
- USB PD를 지원하여 고속 충전이 가능
- 8.3 * 2.5mm 크기의 단자로, 양면 사용이 가능한 규격
- 12쌍의 24핀을 갖고 있어, DisplayPort, HDMI 등 다양한 프로토콜을 지원하여 하나의 케이블로 다양한 기능을 수행할 수 있음
USB-PD
- USB를 통해 더 높은 전력을 전송할 수 있도록 하는 표준
- 기존 USB가 5V/500mA정도의 전력을 제공했다면, USB-PD는 최대 100W이상의 전력을 전송 할 수 있어, 노트북, 태블릿 등 고성능 기기를 빠르게 충전하거나 동작시킬 수 있음
Thunderbolt
- Intel에서 개발한 고속 인터페이스 기술
- USB-C 커넥터를 사용하며, USB-C 보다 더 높은 대역폭과 다양한 기능 제공
- 고해상도 디스플레이 연결, 고석 데이터 전송, 외장 GPU 연결 등에 사용함
참조
https://en.wikipedia.org/wiki/USB
https://blog.naver.com/gocomputer/223084378039?trackingCode=rss
https://the-object.tistory.com/8
https://jeongzero.oopy.io/fad066a1-fe95-487e-a826-003aee42a0cc#cc1f7646-4f7d-4983-afe8-25f7e3b1c1bc
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.