USB 시스템 디자인

USB 시스템 디자인

USB의 설계 아키텍처는 호스트, 다수의 다운스트림 USB 포트, 계층화된 스타 토폴로지에 연결된 여러 주변 장치로 구성된 토폴로지에서 비대칭입니다. 추가 USB 허브가 계층에 포함될 수 있으므로 최대 5개 계층 수준의 트리 구조로 분기할 수 있습니다. USB 호스트는 여러 개의 호스트 컨트롤러를 구현할 수 있으며 각 호스트 컨트롤러는 하나 이상의 USB 포트를 제공할 수 있습니다. 허브 장치가 있는 경우 최대 127개의 장치를 단일 호스트 컨트롤러에 연결할 수 있습니다. USB 장치는 허브를 통해 직렬로 연결됩니다. 호스트 컨트롤러에 내장된 허브 중 하나가 루트 허브입니다.

물리적 USB 장치는 장치 기능이라고 하는 여러 논리적 하위 장치로 구성될 수 있습니다. 단일 장치는 마이크(오디오 장치 기능)가 내장된 웹캠(비디오 장치 기능)과 같은 여러 기능을 제공할 수 있습니다. 이러한 종류의 장치를 복합 장치라고 합니다. 이에 대한 대안은 호스트가 각 논리 장치에 고유한 주소를 할당하고 모든 논리 장치가 물리적 USB 케이블에 연결되는 내장 허브에 연결되는 복합 장치입니다.

다이어그램: 장치 내부에는 여러 개의 엔드포인트가 있으며, 각 엔드포인트는 논리 파이프를 통해 호스트 컨트롤러에 연결됩니다. 각 파이프의 데이터는 한 방향으로 흐르지만 호스트 컨트롤러로 들어오고 나가는 혼합이 있습니다.

USB 장치 통신은 파이프(논리 채널)를 기반으로 합니다. 파이프는 호스트 컨트롤러에서 논리 엔터티로의 연결로, 장치에서 발견되며 끝점으로 명명됩니다. 파이프는 끝점과 1:1로 대응되므로 용어는 때때로 서로 바꿔서 사용됩니다. USB 장치에는 최대 32개의 엔드포인트(16 IN, 16 OUT)가 있을 수 있지만 이렇게 많은 경우는 드뭅니다. 끝점은 초기화("열거"라고 하는 물리적 연결 이후의 기간) 중에 장치에 의해 정의되고 번호가 지정되므로 상대적으로 영구적인 반면, 파이프는 열리고 닫힐 수 있습니다.


USB 끝점은 실제로 연결된 장치에 있습니다. 호스트에 대한 채널을 파이프라고 합니다.

파이프에는 스트림 파이프와 메시지 파이프라는 두 가지 유형이 있습니다. 메시지 파이프는 양방향이며 제어 전송에 사용됩니다. 메시지 파이프는 일반적으로 장치에 대한 짧고 간단한 명령과 버스 제어 파이프 번호 0에서 사용되는 상태 응답에 사용됩니다. 스트림 파이프는 전송하는 단방향 끝점에 연결된 단방향 파이프입니다. 등시성, 인터럽트 또는 대량 전송을 사용하는 데이터:

• 등시성 전송: 일부 보장된 데이터 속도(반드시 가능한 한 빠르지는 않지만 종종)에서 데이터 손실이 발생할 수 있습니다(예: 실시간 오디오 또는 비디오).
• 인터럽트 전송: 빠른 응답이 보장되어야 하는 장치(제한된 대기 시간)(예: 포인팅 장치 및 키보드).
• 대량 전송: 남은 사용 가능한 대역폭을 모두 사용하는 대규모 산발적 전송이지만 대역폭이나 대기 시간(예: 파일 전송)은 보장되지 않습니다.

파이프의 끝점은 호스트가 데이터 전송 세션을 시작하려고 할 때 보내는 TOKEN 패킷에 지정된 대로 튜플(device_address, 끝점_번호)을 사용하여 주소를 지정할 수 있습니다. 데이터 전송 방향이 호스트에서 엔드포인트로 향하는 경우 호스트는 원하는 장치 주소와 엔드포인트 번호를 갖는 OUT 패킷(TOKEN 패킷의 특수화)을 전송합니다. 데이터 전송 방향이 장치에서 호스트로 향하는 경우 호스트는 대신 IN 패킷을 보냅니다. 대상 엔드포인트가 제조업체가 지정한 방향이 TOKEN 패킷과 일치하지 않는 단방향 엔드포인트인 경우(예: 제조업체가 지정한 방향은 IN이고 TOKEN 패킷은 OUT 패킷인 경우) TOKEN 패킷은 무시됩니다. 그렇지 않으면 승인되고 데이터 트랜잭션이 시작될 수 있습니다. 반면에 양방향 엔드포인트는 IN 및 OUT 패킷을 모두 허용합니다.

엔드포인트는 인터페이스로 그룹화되며 각 인터페이스는 단일 장치 기능과 연결됩니다. 이에 대한 예외는 디바이스 구성에 사용되며 어떤 인터페이스와도 연결되지 않는 엔드포인트 0입니다. 독립적으로 제어되는 인터페이스로 구성된 단일 장치 기능을 복합 장치라고 합니다. 호스트가 기능에 장치 주소만 할당하기 때문에 복합 장치에는 단일 장치 주소만 있습니다.


컴퓨터 전면에 USB 표준 A 소켓 2개

USB 장치가 USB 호스트에 처음 연결되면 USB 장치 열거 프로세스가 시작됩니다. 열거는 USB 장치에 재설정 신호를 보내는 것으로 시작됩니다. USB 장치의 데이터 속도는 재설정 신호 중에 결정됩니다. 재설정 후 호스트는 USB 장치의 정보를 읽고 장치에 고유한 7비트 주소가 할당됩니다. 해당 장치가 호스트에서 지원되면 해당 장치와 통신하는 데 필요한 장치 드라이버가 로드되고 장치는 구성된 상태로 설정됩니다. USB 호스트가 다시 시작되면 연결된 모든 장치에 대해 열거 프로세스가 반복됩니다.

호스트 컨트롤러는 트래픽 흐름을 장치로 지시하므로 USB 장치는 호스트 컨트롤러의 명시적인 요청 없이는 버스의 데이터를 전송할 수 없습니다. USB 2.0에서 호스트 컨트롤러는 일반적으로 라운드 로빈 방식으로 버스에서 트래픽을 폴링합니다. 각 USB 포트의 처리량은 USB 포트 또는 포트에 연결된 USB 장치의 느린 속도에 따라 결정됩니다.

고속 USB 2.0 허브에는 고속 USB 2.0 버스와 전속 및 저속 버스 간을 변환하는 트랜잭션 변환기라는 장치가 포함되어 있습니다. 고속 USB 2.0 허브가 고속 USB 호스트나 허브에 연결되면 고속 모드에서 작동합니다. 그런 다음 USB 허브는 허브당 하나의 트랜잭션 변환기를 사용하여 허브의 모든 전속 및 저속 장치로 라우팅되는 전속/저속 버스를 생성하거나, 포트당 하나의 트랜잭션 변환기를 사용하여 허브당 격리된 전속/저속 버스를 생성합니다. 허브의 포트.

각 USB 3.0 호스트에는 두 개의 개별 컨트롤러가 있으므로 USB 3.0 장치는 해당 호스트에 연결된 USB 2.0 또는 이전 장치에 관계없이 USB 3.0 데이터 속도로 전송 및 수신합니다. 이전 장치의 작동 데이터 속도는 레거시 방식으로 설정됩니다.