USB 3.0 리셉터클의 핀을 보면 별도의 전송 및 수신 쌍이 있음을 알 수 있지만 USB 2.0의 경우 하나의 "데이터"핀 쌍만 있습니다. USB 2.0은 장치가 동시에 통신하지 않도록 어떻게 보장합니까?
USB 3.0 리셉터클의 핀을 보면 별도의 전송 및 수신 쌍이 있음을 알 수 있지만 USB 2.0의 경우 하나의 "데이터"핀 쌍만 있습니다. USB 2.0은 장치가 동시에 통신하지 않도록 어떻게 보장합니까?
답변:
USB는 마스터-슬레이브입니다. 호스트가 전송을 지시하지 않으면 장치는 전송되지 않습니다.
이른바 "인터럽트"모드는 실제로 폴링입니다. 예를 들어, 8 밀리 초마다 (또는 게이머 마우스를 사용하는 경우 더 적음) PC는 마우스에게 "당신의 위치는 어디입니까?"라고 묻고 마우스는 응답합니다.
예를 들어 USB 직렬 인터페이스가있는 경우에도 동일합니다. 인터페이스가 직렬 회선에서 데이터를 수신하면 PC로 전송하지 않습니다. 대신 PC가 트랜잭션을 시작하고 데이터를 요청할 때까지 기다립니다.
이 웹 페이지 에는 교환되는 패킷에 대한 좋은 설명이 있습니다. 기본적으로 USB는 가장 저렴하고 가장 저렴한 주변 장치가 작동 할 수 있도록 구현되었으므로 대부분의 인텔리전스는 호스트, 호스트 USB 컨트롤러, OS 및 드라이버에 있습니다. 이것은 사양을 읽을 때 매우 분명합니다.
Firewire (예 :)는 완전히 다른 철학을 가지고 있으며 훨씬 강력하며 멀티 마스터이므로 장치가 호스트 / 마스터의 도움없이 서로 대화 할 수 있습니다. 실제로는 USB보다 등시 전송이 맨 위에있는 토큰 링과 같은 개념에 훨씬 가깝습니다. 그러나 "멀티 마스터"는 복잡한 소프트웨어 스택을 실행하는 장치에 강력한 마이크로 컨트롤러가 필요하다는 것을 의미합니다. 따라서 가격이 비싸므로 캠코더 및 고속 하드 드라이브 인클로저와 같은 고가의 제품으로 제한됩니다. 파이어 와이어 마우스는 말이되지 않습니다. 너무 비쌀 것입니다. 이것이 FireWire가 실패한 이유 중 하나입니다.
USB 프레임 워크에서 장치는 USB 호스트가 대화를 허용 할 때만 "대화"하기 때문에 동시에 통신 할 수 없습니다. 또한 USB 호스트를 사용하면 첫 번째 장치와의 순차 트랜잭션 프로토콜이 완료된 경우에만 다른 장치가 "토크"할 수 있습니다. USB 장치는 자체적으로 "통화"할 수단이 없으며 USB에는 활성 인터럽트 메커니즘이 없습니다. 간단히 말해서이 규율을 구현하는 메커니즘은 다음과 같습니다.
USB 2.0 장치가 연결되면 호스트는 각 장치에 고유 한 주소를 할당하여 장치를 열거합니다.
버스의 모든 트랜잭션은 USB 호스트에 의해 시작됩니다.
모든 USB 트랜잭션의 헤더에는 특정 장치 주소가 있습니다. 트랜잭션이 전체 USB 트리를 통해 (특정 호스트 컨트롤러 인스턴스에서) 브로드 캐스트 되더라도 주소가 일치하는 장치 만 트랜잭션에 응답하고 데이터를 가져 오거나 데이터로 응답합니다.
그런 다음 "파트너"링크는 데이터를 성공적으로 수신 한 사람의 지시에 따라 승인을 보냅니다. 전체 트랜잭션은 트랜잭션의 무결성을 보장하기 위해 정의 된 토큰 시퀀스, 시간 제한 및 오류 수정 코드와 함께 설정된 프로토콜을 따릅니다.
다른 모든 장치는 트래픽을 듣고 무시하고 있습니다.
그것은 "반이중"인터페이스입니다.