위 질문에 대한 Google의 답변과 wikipedia의 답변을 알고 있습니다. 하지만 좀 더 구체적인 질문이 있습니다. USB 허브에는 많은 수의 수신 및 포트와 하나의 발신 포트가 있기 때문에 n 개의 장치를 함께 사용할 수 있습니다. 하지만 하나의 USB 포트가 n 개의 USB 포트로 데이터를 전송하는 방법을 이해하지 못합니다.
모든 USB 포트에 동시에 다른 데이터를 보내려면 어떻게해야합니까?

*

도식

이 회로 시뮬레이션 CircuitLab

*를 사용하여 생성 된 회로도.

설명

  • 네트워크 라우터가 하나의 LAN 포트 (인터넷)를 여러 장치에 연결할 수있는 것과 거의 같은 방식입니다. 각 엔드 포인트 (USB 장치)에는 주소가 할당되고 허브는 포트에있는 주소를 추적하여 호스트의 요청을 올바른 장치로 라우팅합니다. 모든 트랜잭션을 시작하는 마스터 (호스트 포트)가 하나뿐이라는 점에서 USB의 경우 ' 훨씬 간단합니다.
  • @TomCarpenter Then How USB 포트가 서로 다른 데이터를 ' 함께 전송합니까?
  • 호스트 포트는 특정 엔드 포인트에 통신을 요청합니다. 엔드 포인트는 호스트의 요청이있을 때만 응답합니다.
  • @TomCarpenter하지만 모두 동시에 사용되며 하나씩이 아니라 모두 함께 사용됩니다.
  • USB 버스는 USB 2.0에서 최대 480Mbps로 실행됩니다. 호스트는 한 번에 하나의 엔드 포인트와 만 통신하지만 모든 엔드 포인트와 순차적으로 통신하며 너무 빠르게 전환하여 ' 알 수 없습니다. 네트워크가하는 것과 같은 일입니다. " 이봐 요, 포트 1에 마우스를 올려주세요. ' 이동했는지 알려주세요. 이제 포트 2의 키보드에보고 할 키 누름이 있습니까? 이제 포트 3, 플래시 드라이브에이 데이터를 저장하십시오. 다른 사람과 이야기해야합니까? 아니요, 알겠습니다. 포트 1에 마우스를 놓고 ' 이동했는지 알려주세요 … "

답변

모두 중재와 관련이 있습니다. 여러 장치를 연결해야하는 모든 시스템에는 누가 대화해야하는지 결정하는 방법이 필요합니다. 응용 프로그램에 따라 예상 할 수있는 다른 방식이 있습니다.

일반적인 예-네트워킹에서 우리는 모두 서로 통신하는 많은 노드가 있습니다. 이것은 주소 (예 : IP 주소), 노드가 다른 노드와 통신하기를 원하면 해당 주소로 패킷을 전송합니다. 그러면 라우터와 같은 장치가 여러 포트에서 들어오는 패킷을 올바른 포트로 전달합니다. 대상 포트가 비워 질 때까지 메모리를 사용하여 패킷을 저장했습니다.


이제 USB로 이동합니다. 모든 노드가 동일하게 만들어지지 않기 때문에 실제로 네트워킹보다 훨씬 간단합니다. 두 가지 종류가 있습니다. 호스트 및 엔드 포인트. 호스트는 하나 뿐이지 만 엔드 포인트는 여러 개일 수 있습니다. 이 경우 호스트 포트만 마음대로 대화 할 수 있기 때문에 중재가 훨씬 쉽습니다. 엔드 포인트는 호스트가 요청한 경우에만 대화 할 수 있으며 호스트는 한 번에 하나의 엔드 포인트와 만 대화합니다.

호스트-> 엔드 포인트 패킷의 경우 USB 허브는 단순히 호스트에서 모든 엔드 포인트로 요청을 전달합니다. 모든 엔드 포인트에는 주소가 있기 때문에 요청이 처리 된 주소 만 해당 주소 (예 : 응답)를 수행하고 다른 모든 엔드 포인트는 패킷을 무시합니다.

Endpoint- 호스트 패킷, 호스트는 먼저 주소로 특정 엔드 포인트에 패킷을 전송하여 " 지금 통화 할 수 있습니다. " , 그러면 해당 엔드 포인트가 즉시 응답을 보내야합니다. 주어진 시간에 하나의 엔드 포인트 만 통신 할 수 있기 때문에 USB 허브는 호스트의 요청에 응답하는 포트에서 패킷을 라우팅합니다.


호스트 작동 방식 측면에서 어떤 장치가 연결되어 있는지, 엔드 포인트가 주소를 얻는 방법은 열거를 통해 얻을 수 있습니다.

모든 호스트 및 허브 포트에는 D + 및 D- 라인에 풀다운 저항 (15kOhm)이 있습니다. 이렇게하면 연결된 장치가 없을 때 해당 포트의 데이터 라인이 알려진 상태가됩니다.이 상태는 포트가 D + / D- 라인을 통해 데이터를 전혀 전송하지 않는 상태입니다.

장치가 1.5kOhm 저항을 사용하여 D + (최대 속도) 또는 D- (저속) 데이터 라인을 VCC에 연결하여 자체적으로 알 수 있습니다. 이것은 열거 이벤트를 트리거합니다. 그러면 포트가 장치 구성 및 주소 할당 프로세스를 시작합니다.두 장치를 동시에 연결하면 한 번에 하나씩 나열됩니다 .

허브가없는 경우 호스트는 단순히 새 장치와 통신하고 설정합니다. 시스템에 허브가있는 경우 새 장치가 연결되었음을보고하는 허브입니다 . 허브가 새 장치가 연결되었다고보고하면 호스트는 허브에 새 장치를 재설정하고 통신을 시작하도록 지시합니다. 재설정하는 동안 엔드 포인트에는 기본 주소 0 (*)이 제공됩니다. 그런 다음 호스트는 기본 주소를 사용하여 엔드 포인트와 통신 할 수 있으며, 통신중인 시점을 알 수있는 고유 한 0이 아닌 주소로 구성 할 수 있습니다.

(*) 장치가 하나뿐이기 때문입니다. 주소 0은 항상 새로 연결된 장치에 고유합니다.


그러면 " 어떻게 그런 다음 여러 기기에서 동시에 통화 할 수 있나요? ". 마우스, 키보드 및 플래시 드라이브가 모두 동일한 USB 허브에 연결되어 있다고 가정 해 보겠습니다. 마우스와 키보드를 동시에 사용하는 동시에 플래시 드라이브로 /에서 파일을 복사 할 수 있다는 것을 알고 있지만 한 번에 하나의 장치 만 통신 할 수 있다면 어떻게 가능할까요?

음 , 당신의 두뇌가 키를 눌렀 음을 인식하고 화면이 업데이트되기를 기대하는 데 걸리는 수백 밀리 초는 컴퓨터에 영원하다는 사실로 귀결됩니다. USB 2.0 인터페이스는 최대 480Mbps로 실행될 수 있습니다 (USB 3.1은 최대 10Gbps에서 실행될 수 있습니다!). 즉, 호스트가 특정 시간에 하나의 엔드 포인트와 만 통신하더라도 둘 사이를 너무 빠르게 순환하여 사용할 수 있습니다. “말하지 마세요”라고합니다.

USB 호스트 : " 이봐, 포트 1의 마우스, 이동했는지 알려주세요. 이제 포트 2의 키보드에서보고 할 키를 누르 셨나요? 이제 완료되었습니다. 포트 3, 플래시 드라이브에이 데이터를 저장해주세요. 다른 사람과 통화 할 사람이 있습니까? 아니요, 알겠습니다. 포트 1에 마우스를 올려 놓고 “이동 한 경우 … "

인간 : " 이봐 요 , 컴퓨터는 내가 방금 마우스를 움직이고 키보드의 키를 누르고 사진을 플래시 드라이브에 복사하는 것을 동시에 감지했습니다. "

호스트 장치는 ndpoint 주소가 사용되며 패킷을 순차적으로 또는 필요에 따라 (예 : OS가 특정 장치에 대한 액세스를 요청할 때). 따라서 모든 것이 동시에 발생하는 것은 아니지만 중재가 너무 빠르기 때문에 인간의 컴퓨터가 그 차이를 말할 수는 없습니다.

댓글

  • To 추가 : USB 장치 (정확히 “인터럽트”엔드 포인트 만)는 1ms까지의 특정 간격으로 폴링하도록 요청할 수 있습니다. 입력 장치가 수백 개가 아니라면 지연을 알 수 없습니다.
  • 호스트는 어떤 엔드 포인트가 연결되어 있는지 어떻게 알 수 있나요? 또한 허브에 대한 원래 질문에 실제로 답변하지 않는 것 같습니다. '이 프로세스에서 어떻게 상호 작용합니까? ? 열거에서 어떻게 상호 작용합니까?
  • @YonaAppletree 열거. 호스트와 허브는 장치 연결을 위해 모든 포트를 스캔합니다. D + (최대 속도) 또는 D-에서 1.5kOhm 풀업 저항을 감지합니다. (저속). ' 엔드 포인트에 주소를 할당하는 방법에 대한 정보를 추가하겠습니다.
  • @YonaAppletree 작동 중 허브 측면에서 대답은 말을합니다. 이미 그것에 대해. 호스트에서 엔드 포인트로 : " USB 허브는 호스트에서 모든 엔드 포인트로 요청을 전달합니다 ". 호스트에 대한 엔드 포인트의 경우 : " 한 번에 하나의 엔드 포인트 만 통신 할 수 있기 때문에 USB 허브는 응답하는 포트에서 패킷을 라우팅합니다. "

답변

간단한 답변 : 호스트가 특정 기기 ( 이는 예비 “열거”), 한 번에 하나의 트랜잭션을 순차적으로 수행합니다. 허브는 모든 패킷을 모든 장치에 브로드 캐스트합니다. 장치는 주소가 지정된 트랜잭션에만 응답합니다. 그게 전부입니다. HS 장치의 경우에는 해당됩니다.

FS 및 LS 장치의 경우 프로세스가 조금 더 복잡합니다. 모든 포트의 모든 허브에 구축 된 “트랜잭션 변환기”를 사용합니다. -LS 또는 FS 트래픽으로의 “분할 트랜잭션”이라고합니다.

댓글

  • USB 3은 어떻습니까?
  • USB3 허브는 초고속 링크에 더 지능적이며 기기 / 엔드 포인트에 대한 명시 적 라우팅을 사용합니다. USB2 섹션은 동일하게 유지됩니다. 섹션 3.1을 참조하십시오. " 아키텍처 요약 ", usb.org/developers/docs/usb_31_052016.zip

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다