USB 2.0은 어떻게 충돌을 피했습니까?


33

USB 3.0 리셉터클의 핀을 보면 별도의 전송 및 수신 쌍이 있음을 알 수 있지만 USB 2.0의 경우 하나의 "데이터"핀 쌍만 있습니다. USB 2.0은 장치가 동시에 통신하지 않도록 어떻게 보장합니까?


2
CSMA / CD와 같은 것을 보는 데 관심이있을 수도 있습니다. 이것은 다른 상황에서 어떻게 해결되는지
PlasmaHH

1
별도의 전송 / 수신 쌍이 모든 충돌을 해결하지는 않습니다. 펜 드라이브와 모뎀이 있다고 가정 해 봅시다. 둘 다 호스트에 데이터를 보내려고하므로 둘 다 전송을 시작합니다. 어디에? 동일한 쌍에서 : 호스트 수신. 갈등은 여전히 ​​존재합니다. 이것은 USB의 작동 방식이 아니라 정확히 10/100 이더넷의 작동 방식입니다. 모든 방향에는 고유 한 쌍이 있지만 허브의 "충돌"표시등은 계속 깜박입니다.
Agent_L

답변:


67

USB는 마스터-슬레이브입니다. 호스트가 전송을 지시하지 않으면 장치는 전송되지 않습니다.

이른바 "인터럽트"모드는 실제로 폴링입니다. 예를 들어, 8 밀리 초마다 (또는 게이머 마우스를 사용하는 경우 더 적음) PC는 마우스에게 "당신의 위치는 어디입니까?"라고 묻고 마우스는 응답합니다.

예를 들어 USB 직렬 인터페이스가있는 경우에도 동일합니다. 인터페이스가 직렬 회선에서 데이터를 수신하면 PC로 전송하지 않습니다. 대신 PC가 트랜잭션을 시작하고 데이터를 요청할 때까지 기다립니다.

웹 페이지 에는 교환되는 패킷에 대한 좋은 설명이 있습니다. 기본적으로 USB는 가장 저렴하고 가장 저렴한 주변 장치가 작동 할 수 있도록 구현되었으므로 대부분의 인텔리전스는 호스트, 호스트 USB 컨트롤러, OS 및 드라이버에 있습니다. 이것은 사양을 읽을 때 매우 분명합니다.

Firewire (예 :)는 완전히 다른 철학을 가지고 있으며 훨씬 강력하며 멀티 마스터이므로 장치가 호스트 / 마스터의 도움없이 서로 대화 할 수 있습니다. 실제로는 USB보다 등시 전송이 맨 위에있는 토큰 링과 같은 개념에 훨씬 가깝습니다. 그러나 "멀티 마스터"는 복잡한 소프트웨어 스택을 실행하는 장치에 강력한 마이크로 컨트롤러가 필요하다는 것을 의미합니다. 따라서 가격이 비싸므로 캠코더 및 고속 하드 드라이브 인클로저와 같은 고가의 제품으로 제한됩니다. 파이어 와이어 마우스는 말이되지 않습니다. 너무 비쌀 것입니다. 이것이 FireWire가 실패한 이유 중 하나입니다.


3
훌륭한 설명과 FireWire와의 비교 (그리고 예, 버스에서 최대 5 대의 장치를 현실적으로 위해 토큰 기반 중재 네트워크를 구축합시다).
Marcus Müller

3
이것은 좋은 대답이지만 열거 형을 언급하면 ​​더 완벽하다고 생각합니다. 멀티 마스터 네트워크와 같이 중재 기능이없는 동적 네트워크에 어떤 장치가 연결되어 있는지 알아내는 것은 사소한 문제가 아니며 여러 가지 방법으로 USB가 진정한 버스 토폴로지를 사용할 수없는 이유를 정의합니다.
Jon

고마워;) 호스트 측에서 열거에 대한 까다로운 세부 사항을 알지 못합니다. 그러나 IMO가 USB와 같은 진정한 이유는 1990 년대 중반에 설계되었으며 당시 마이크로 컨트롤러가 더 비싸기 때문에 저렴한 장치로가는 방법은 적은 RAM과 코드로 가능한 한 멍청하게 만들었습니다. 가능한 한. 게다가, 그것은 아주 잘 작동합니다.
peufeu

5
잘못된 USB는 버스 입니다. 더 친숙한 "선형"버스와는 다른 토폴로지 (별)가 있습니다. 모든 USB 2.0 (HS) 호스트 트랜잭션은 스타의 모든 세그먼트에 걸쳐 브로드 캐스트되므로 "선형"버스와 크게 다르지 않습니다. 선형 버스와 유사하게 모든 장치는 거의 한 번에 버스 활동을 봅니다. 유일한 차이점은 다른 지점에있는 다른 장치에서는 장치 응답을 볼 수 없다는 것입니다.
Ale..chenski

2
@rahuldottech 작동한다면 괜찮은 수준 이지만 FireWire는 USB, 특히 WRT 플러그 앤 플레이보다 안정성이 훨씬 떨어졌습니다. USB를 사용하면 추가 허브를 사용하여 많은 드라이브를 단일 포트에 쉽게 연결할 수 있습니다. 성능 상충 관계가 있지만 안정성과 용이성이 우월합니다.
leftaroundabout

18

USB 프레임 워크에서 장치는 USB 호스트가 대화를 허용 할 때만 "대화"하기 때문에 동시에 통신 할 수 없습니다. 또한 USB 호스트를 사용하면 첫 번째 장치와의 순차 트랜잭션 프로토콜이 완료된 경우에만 다른 장치가 "토크"할 수 있습니다. USB 장치는 자체적으로 "통화"할 수단이 없으며 USB에는 활성 인터럽트 메커니즘이 없습니다. 간단히 말해서이 규율을 구현하는 메커니즘은 다음과 같습니다.

USB 2.0 장치가 연결되면 호스트는 각 장치에 고유 한 주소를 할당하여 장치를 열거합니다.

버스의 모든 트랜잭션은 USB 호스트에 의해 시작됩니다.

모든 USB 트랜잭션의 헤더에는 특정 장치 주소가 있습니다. 트랜잭션이 전체 USB 트리를 통해 (특정 호스트 컨트롤러 인스턴스에서) 브로드 캐스트 되더라도 주소가 일치하는 장치 만 트랜잭션에 응답하고 데이터를 가져 오거나 데이터로 응답합니다.

그런 다음 "파트너"링크는 데이터를 성공적으로 수신 한 사람의 지시에 따라 승인을 보냅니다. 전체 트랜잭션은 트랜잭션의 무결성을 보장하기 위해 정의 된 토큰 시퀀스, 시간 제한 및 오류 수정 코드와 함께 설정된 프로토콜을 따릅니다.

다른 모든 장치는 트래픽을 듣고 무시하고 있습니다.

그것은 "반이중"인터페이스입니다.


1
USB 프로토콜에 익숙하지 않으므로 호스트가 올바른 장치가 응답 한 것을 어떻게 알 수 있습니까?
Derek 朕 會 功夫

@Derek 朕 會 功夫, 호스트는 이것이 응답 해야하는 유일한 장치이기 때문에 아무도 알지 못합니다. USB 2.0 트랜잭션은 "원자"이며 지연된 응답이 없으며 모든 것이 시간 초과에 의존합니다. 적시에 응답하지 않으면 (완료되지 않은 거래) 다시 시도하게됩니다.
Ale..chenski

후속 적으로, 내 질문은 모든 장치가 동일한 버스에 연결되어 있기 때문에 연결된 다른 장치 인 척하지 못하게하는 이유는 무엇입니까?
Derek 朕 會 功夫

7
@Derek 朕 會 功夫 : 없어요. 그렇기 때문에 거리 외 시장에서 얻을 수있는 임의의 USB 키를 연결하지 않아도됩니다. 당신은 그들을 믿을 수 없습니다.
모니카와의 가벼움 경주

7
@Derek 朕 會 功夫, 악의적 인 의도를 제외하고 USB 장치는 열거하는 동안 주소를 수락해야하며 다른 장치는 호스트가 제어하는 ​​다른 주소를 갖습니다. 이는 여러 개의 메모리 모듈이 병렬 버스에 연결된 경우와 다르지 않지만 각 모듈은 주소 디코더 / 칩 선택에만 응답합니다. 또한 두 개의 USB 장치가 실수로 응답하면 (예 : 주소 할당으로 호스트가 망가짐) 버스에서 충돌이 발생하고 CRC (모든 USB 토큰에 연결된)를 통과하는 패킷이 없으며 해당 포트는 대규모 오류로 인해 비활성화됩니다.
Ale..chenski
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.