USB에는 USB 2.0 사양에 설명되어있는 여러 계층이 있습니다 . OSI 계층 네트워크 모델에 익숙하다면 다음과 같이 생각할 수 있습니다.
- 세션 계층 = 10 장 USB 호스트 하드웨어 및 소프트웨어 (장치 드라이버)
- 전송 계층 = 9 장 USB 장치 프레임 워크
- 네트워크 계층 = 8 장 프로토콜 계층 (비트 스트림)
- 데이터 링크 계층 = 7 장 전기 (회로)
- 물리 계층 = 6 장 기계 (케이블 및 커넥터)
개념적으로 USB는 Endpoints 라고하는 데이터 스트림을 기반으로 하며 IN (호스트로) 또는 OUT (호스트에서)이 될 수 있습니다. 모든 장치에는 제어 및 상태에 사용되는 Endpoint 0이 있습니다. 장치에는 응용 프로그램 데이터에 대한 추가 엔드 포인트가있을 수 있습니다. 각 엔드 포인트는 FIFO 버퍼처럼 작동합니다.
데이터는 엔드 포인트에서 대량 (TCP / IP와 같이 모든 바이트가 도착하고 올바른 순서로 보장됨) 또는 등시성 (UDP / IP와 같이 신선하지만 패킷을 떨어 뜨릴 수 있음)로 전송됩니다. 오해의 소지가있는 " 인터럽트 "전송 유형이 있으며 실제로 호스트에 의해 폴링됩니다.
USB 2.0은 데이터 링크에 차동 쌍을 사용합니다. USB 2.0 사양 7 장에서 다룰 것이기 때문에 자세한 내용은 다루지 않겠습니다. 일반적으로 PCB 레이아웃에서는이를 일치하는 길이, 차동 쌍으로 취급하고 USB PHY (물리적)에 필요한 직렬 저항을 넣습니다. 인터페이스)를 사용 중입니다. USB 주변 장치는 D + 또는 D- 라인 중 하나에서 높은 값의 저항을 사용하여 호스트에게 고속 또는 저속 주변 장치임을 알립니다.
USB 호스트가 장치가 있음을 발견 한 후 호스트는 장치에 설명자 무리를 요청합니다 . 이것은 FTDI 칩에 의해 배후에서 처리됩니다. 설명은 9.5 장 에 설명되어 있습니다. 여기에는 장치 설명자 , 구성 설명자 , 인터페이스 설명자 , 끝점 설명자 , 문자열 설명자 , 심지어 HID 보고서 설명 자도 포함 됩니다.
장치 설명자 의 USB 포함 VID (공급 업체 식별) 및 PID (제품 식별) 번호를. 운영 체제는이 숫자 쌍인 VID_PID를 사용하여이 장치에 어떤 장치 드라이버를 사용해야하는지 결정합니다. VID 번호는 USB 구현 자 포럼에 회원 자격을 부여하여 발급되므로 개인 발명가 인 경우 문제가됩니다.
또한 HID (Human Interface Device) 클래스 드라이버가 있습니다.이 드라이버는 키보드 / 마우스 등을위한 일반적인 입력 및 일반적인 입출력을 제공합니다. HID의 장점 중 하나는 사용자 지정 장치 드라이버를 제공 할 필요가 없지만 사용자 지정 대량 드라이버에 비해 처리량이 약간 제한되어 있다는 것입니다. HID 디스크립터에 대한 다른 스펙 문서 가 있습니다. 주어진 휴먼 인터페이스 장치에서 사용할 수있는 다양한 기능을 설명하는 모든 코드 번호를 자세히 설명 하는 HID Usage Table 문서 .
FT220X 데이터 시트 와 같은 FTDI 칩 은 USB "직렬 인터페이스 엔진"(SPI 직렬 또는 RS232 직렬과 혼동하지 않아야 함)을 제공합니다. 이것은 6 장, 7 장 및 8 장에 설명 된 대부분의 저수준 항목을 처리합니다.
FTDI는 EEPROM (FT2232H의 오프 칩, FT220X의 온칩)을 사용하여 디스크립터에 들어가는 약간의 정보를 포함합니다. VID / PID 값을 사용자 정의하고 사용자 정의 설명 문자열을 제공 할 수 있습니다.