포스트

USB(Universal Serial Bus)

임베디드 시스템 엔지니어링 로드맵

인터페이스 & 프로토콜 파트 중 USB

1. USB(Universal Serical Bus)


USB_ICON

  • 전력(5V), 직렬 데이터, 접지로 구성된 아이콘
  • 호스트와 주변장치 간의 데이터 전송 및 전력 공급을 위한 표준 직렬 버스 인터페이스
  • 1996년에 최초 도입되었으며, 이후 여러 버전으로 발전하여 현재는 다양한 속도와 기능을 지원함
  • 기존의 직렬 포트나 병렬 포트를 대체하여 주변장치와 컴퓨터의 연결을 표준화 하기 위해 설계됨

특징

  1. 하나의 커넥터로 각종 주변기기를 동일한 규격으로 접속할 수 있음
  2. 하나의 호스트와 여러개의 장치 연결 가능
  3. 플러그 앤 플레이(Plug and Play) 기능을 제공

장점

  1. 5V 전원을 편리하게 사용할 수 있음
  2. 기기별로 단자를 구별할 필요가 없어, 확장성이 좋음
  3. 플러그 앤 플레이
    • 사용자가 별도의 드라이버 설치 없이 장치를 쉽게 연결 가능
  4. 핫스왑 기능 지원

단점

  1. 구조상 하나의 Host를 반드시 필요로 함
  2. 메인 CPU의 의존율이 높음
    • CPU의 연산력이 높으면, 문제가 되지 않음
  3. 연결 길이의 제한. 2.0은 5m, 3.0은 3m를 초과할 때 부터 정상 작동을 보장하지 못함

2. USB 통신 원리


USB 하드웨어적 구조

USB_구조1

  • 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. 데이터 전송

  • 장치가 구성되면 호스트와 슬레이브는 일련의 패킷을 사용하여 통신함 transfer
  • 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의 단자 타입

formfactor1 usb-type

  • 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타입

formfactor1 formfactor

  • 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://namu.wiki/w/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 라이센스를 따릅니다.