Como funciona um hub USB?


9

Eu sei a resposta do google e a resposta da Wikipedia para a pergunta acima. Mas tenho uma pergunta mais específica em mãos. Os hubs USB têm muitas portas de entrada e apenas uma porta de saída; eu posso usar o número n de dispositivos juntos por causa disso. Mas eu não entendo como uma porta USB pode transferir dados com o número n de portas USB?
como ele pode enviar dados diferentes para todas as portas USB ao mesmo tempo?

*

esquemático

simular este circuito - esquemático criado usando o CircuitLab

*


1
Da mesma maneira que o roteador da rede pode conectar uma porta LAN (a Internet) a vários dispositivos. A cada terminal (dispositivo USB) é atribuído um endereço, e os hubs simplesmente encaminham solicitações do host para o dispositivo correto, mantendo o controle de qual endereço está em qual porta. É muito mais simples para USB no sentido de que há apenas um mestre (a porta do host) que inicia todas as transações.
Tom Carpenter

@TomCarpenter Então, como a porta USB envia dados diferentes juntos?
Aaditya Sahay

1
A porta do host solicita que um terminal específico fale. Os pontos de extremidade apenas respondem quando solicitado pelo host.
Tom Carpenter #

@ TomCarpenter Mas todos estão sendo usados ​​simultaneamente e não um por um, mas todos juntos.
Aaditya Sahay

3
Lembre-se de que o barramento USB pode ser executado em até 480 Mbps no USB 2.0. O host apenas conversa com um ponto de extremidade de cada vez, mas conversa com todos eles sequencialmente e alternando entre eles tão rápido que você não sabia. A mesma coisa que as redes fazem. "Ei, mouse na porta 1, diga-me se você se mudou. Ok, agora teclado na porta 2 você tem alguma tecla pressionada para relatar? Agora você está na porta 3, unidade flash, armazene esses dados para mim. precisa conversar com? não, ok então, mouse na porta 1, diga-me se você se mudou ... "
Tom Carpenter

Respostas:


16

Tudo tem a ver com arbitragem. Qualquer sistema que exija a conexão de vários dispositivos precisa de alguma maneira de determinar quem deve falar quando. Existem esquemas diferentes, como seria de esperar, dependendo da aplicação.

Um exemplo comum - em redes, temos muitos nós conversando entre si. Isso é feito por cada nó com um endereço (por exemplo, endereço IP) e, quando um nó deseja conversar com outro nó, ele envia um pacote para esse endereço. Você tem dispositivos como roteadores que aceitam pacotes que entram em várias portas e os encaminham para a porta correta. A arbitragem é feita usando a memória para armazenar pacotes até que a porta de destino esteja livre.


Agora para USB. Na verdade, isso é muito mais simples que a rede, porque nem todos os nós são iguais. Você tem dois tipos, um host e um terminal. Existe apenas um host, mas pode haver muitos pontos de extremidade. Nesse caso, a arbitragem é muito mais fácil, porque somente a porta do host pode falar à vontade. Os pontos de extremidade só podem conversar quando solicitados pelo host , e o host só fala com um ponto de extremidade por vez.

Para pacotes host-> endpoint, os hubs USB simplesmente passam a solicitação do host para todos os endpoints. Como todos os pontos de extremidade têm um endereço, apenas aquele para o qual a solicitação foi endereçada fará alguma coisa com ele (por exemplo, responder), todos os outros irão ignorar o pacote.

Para pacotes de endpoint-> host, o host envia primeiro um pacote para um endpoint específico por endereço para dizer "você pode falar agora" e, em seguida, esse endpoint deve enviar imediatamente uma resposta. Como apenas um ponto de extremidade pode falar a qualquer momento, o hub USB simplesmente encaminha o pacote a partir de qualquer porta que responda a uma solicitação do host.


Em termos de como o host calcula quais dispositivos estão conectados e como o terminal obtém seu endereço, isso é alcançado através da enumeração.

Todas as portas do host e do hub têm resistores pull-down (15kOhm) nas linhas D + e D-. Eles colocam as linhas de dados dessa porta em um estado conhecido quando não há dispositivo conectado, um estado no qual a porta não envia nenhum dado sobre linhas D + / D-.

Quando um dispositivo é conectado, ele se torna conhecido conectando a linha de dados D + (velocidade máxima) ou D- (velocidade baixa) ao VCC usando um resistor de 1,5 kOhm. Isso dispara um evento de enumeração. A porta começará o processo de configuração do dispositivo e atribuição de um endereço. Se você conectar dois dispositivos simultaneamente, eles serão enumerados um de cada vez .

Se não houver hubs, o host simplesmente conversará com o novo dispositivo e o configurará. Se houver hubs no sistema, é o hub que informa que o novo dispositivo está conectado . Se um hub relatar que um novo dispositivo está conectado, o host instruirá o hub a redefinir o novo dispositivo e iniciar as comunicações. Durante a redefinição, o ponto final recebe um endereço padrão 0 (*). O host pode então conversar com o terminal usando o endereço padrão e configurá-lo com um endereço diferente de zero que permitirá saber quando está sendo conversado.

(*) Como apenas um dispositivo é enumerado por vez, o endereço 0 sempre será exclusivo do dispositivo recém-conectado.


Você pode então perguntar: "bem, como posso ter vários dispositivos todos falando ao mesmo tempo?". Digamos que você tenha um mouse, um teclado e uma unidade flash, todos conectados ao mesmo hub USB. Todos sabemos que você pode usar o mouse e o teclado ao mesmo tempo enquanto copia arquivos para / da sua unidade flash, mas se apenas um dispositivo pode falar por vez, como isso é possível?

Bem, tudo se resume ao fato de que as poucas centenas de milissegundos necessários para o seu cérebro perceber que você pressionou uma tecla e espera que a tela seja atualizada é uma eternidade para o computador. Uma interface USB 2.0 pode ser executada em até 480 Mbps (USB 3.1 pode ser executada em até 10 Gbps!), O que significa que, embora o host esteja apenas conversando com um ponto de extremidade a qualquer momento, alterna entre eles tão rápido que você pode diga que está fazendo isso.

Host USB: "Ei, mouse na porta 1, diga-me se você se mudou. Ok, agora teclado na porta 2 você tem alguma tecla pressionada para relatar? Agora você está na porta 3, unidade flash, armazene esses dados para mim. Mais alguém com quem eu precise conversar? Não, ok então, mouse na porta 1, me diga se você se mudou ... "

Humano: "Olha, o computador percebeu que eu apenas movi o mouse, pressionei uma tecla do teclado e copiei uma imagem para a unidade flash, tudo ao mesmo tempo!"

O dispositivo host monitora quais endereços de endpoint são usados ​​e enviará pacotes para cada um sequencialmente ou conforme necessário (ou seja, quando o sistema operacional solicitar acesso a um dispositivo específico). Portanto, embora nem tudo esteja acontecendo simultaneamente, a arbitragem é tão rápida que os computadores que são humanos de animais não podem dizer a diferença.


2
Para adicionar: Os dispositivos USB (apenas pontos de extremidade de "interrupção", para ser mais preciso) podem solicitar a pesquisa em um determinado intervalo de até 1 ms. Contanto que você não tenha centenas de dispositivos de entrada, nunca notará um atraso.
Michael

Como o host sabe quais terminais estão conectados? Além disso, isso não parece responder à pergunta original sobre hubs. Como eles interagem nesse processo? Como os interagem na enumeração?
precisa saber é o seguinte

1
@YonaAppletree enumeração. Hosts e hubs examinam todas as suas portas em busca de conexões de dispositivos - eles detectam um resistor pull-up de 1,5kOhm em D + (velocidade máxima) ou D- (velocidade baixa). Vou adicionar algumas informações sobre como os endpoints recebem um endereço.
Tom Carpenter

@YonaAppletree em termos de hubs durante a operação, a resposta já fala sobre isso. Para o host até o terminal: "Os hubs USB simplesmente passam a solicitação do host para todos os terminais". Para endpoint de host: "Porque apenas um endpoint é permitido falar a qualquer momento, o hub USB vai simplesmente encaminhar o pacote a partir responde qualquer porta"
Tom Carpenter

1

Resposta mais curta: o host envia dados endereçados a um dispositivo específico (que foi preliminar "enumerado"), uma transação por vez, sequencialmente. O hub transmite todos os pacotes para todos os dispositivos. Um dispositivo responde apenas às transações endereçadas a ele. Isso é tudo verdade para dispositivos HS.

Para dispositivos FS e LS, o processo é um pouco mais complicado. Ele usa "tradutores de transações" criados em todos os hub de todas as portas, que convertem as chamadas "transações divididas" em tráfego LS ou FS.


E o USB 3?
jbarlow

Os hubs USB3 são mais inteligentes para o link Super-Speed ​​e usam roteamento explícito para dispositivos / pontos de extremidade. A seção USB2 permanece a mesma. Consulte a Seção 3.1 "Resumo da arquitetura" das especificações USB3.1 mais recentes, usb.org/developers/docs/usb_31_052016.zip
Ale..chenski
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.