Eu sei a resposta do google e 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 saída e apenas uma porta de saída. Por isso, posso usar, digamos, um número n de dispositivos. Mas eu não entendo como uma porta USB pode fazer transferências de dados com um número n de portas USB?
como ele pode enviar dados diferentes para todas as portas USB ao mesmo tempo?
*
simule este circuito – Esquema criado usando CircuitLab
*.
Comentários
- Praticamente da mesma maneira que seu roteador de rede pode conectar uma porta LAN (a Internet) a vários dispositivos. Cada ponto de extremidade (dispositivo USB) recebe um endereço e os hubs simplesmente roteiam as solicitações do host para o dispositivo correto, controlando 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.
- @TomCarpenter e como a porta USB enviaria dados diferentes ' s juntos?
- A porta do host pede a um endpoint específico para falar. Os endpoints só respondem quando solicitados pelo host.
- @TomCarpenter Mas todos eles estão sendo usados simultaneamente e não um por um, mas todos juntos.
- Lembre-se de que o barramento USB pode executado a até 480Mbps em USB 2.0. O host só fala com um endpoint por vez, mas fala com todos eles sequencialmente e alternando entre eles tão rápido que você não ' perceber. A mesma coisa que as redes fazem. " Ei, mouse na porta 1, diga-me se você ' mudou. Ok, agora teclado na porta 2, você pressionou alguma tecla para relatar? Agora você aí na porta 3, pen drive, armazene esses dados para mim. Mais alguém com quem preciso falar? não, ok então, mouse na porta 1, diga-me se você ' mudou … "
Resposta
Tem tudo a ver com arbitragem. Qualquer sistema que exija a conexão de vários dispositivos precisa de alguma forma de determinar quem deve falar quando. Existem diferentes esquemas como você esperaria, dependendo da aplicação.
Um exemplo comum – na rede, temos muitos nós conversando entre si. Isso é feito por cada nó com um endereço (por exemplo, IP endereço), e quando um nó deseja se comunicar com outro nó, ele envia um pacote para esse endereço. Você então tem dispositivos como roteadores que recebem pacotes que chegam em várias portas e os encaminham para a porta correta. A arbitragem é feito usando memória para armazenar pacotes até que a porta de destino esteja livre.
Agora vamos para USB. Na verdade, é muito mais simples do que a rede, porque nem todos os nós são iguais. Você tem dois tipos, um host e um terminal. Sempre existe apenas um host, mas pode haver vários terminais. Nesse caso, a arbitragem é muito mais fácil porque apenas a porta do host pode falar à vontade. Os endpoints só têm permissão para falar quando solicitados pelo host , e o host só fala com um endpoint por vez.
Para pacotes host- > endpoint, os hubs USB simplesmente passam a solicitação do host para todos os endpoints. Como todos os endpoints têm um endereço, apenas aquele ao qual a solicitação foi endereçada fará algo com ele (por exemplo, responder), todos os outros irão ignorar o pacote.
Para endpoint- > pacotes de host, o host primeiro envia um pacote para um endpoint específico por endereço para dizer " você pode falar agora " , e então esse ponto de extremidade deve enviar uma resposta imediatamente. Como apenas um endpoint tem permissão para falar a qualquer momento, o hub USB simplesmente roteará o pacote de qualquer porta que responder a uma solicitação do host.
Em termos de como o host funciona Para saber quais dispositivos estão conectados e como o endpoint obtém seus endereços, isso é obtido por meio da enumeração.
Todas as portas do host e do hub têm resistores pull-down (15kOhm) nas linhas D + e D-. Isso coloca as linhas de dados dessa porta em um estado conhecido quando não há nenhum dispositivo conectado, um estado em que a porta não enviará nenhum dado pelas linhas D + / D-.
Quando um dispositivo está anexado, ele se torna conhecido conectando a linha de dados D + (velocidade total) ou D- (baixa velocidade) ao VCC usando um resistor de 1,5 kOhm. Isso dispara um evento de enumeração. A porta começará então o processo de configuração do dispositivo e atribuição de um endereço.Se você conectasse dois dispositivos simultaneamente, eles seriam enumerados um de cada vez .
Se não houver hubs, o host simplesmente fala com o novo dispositivo e o configura. Se houver hubs no sistema, é o hub que relata que o novo dispositivo está conectado . Se um hub relatar que um novo dispositivo está conectado, o host instruirá o hub para redefinir o novo dispositivo e iniciar as comunicações. Durante a reconfiguração, o nó de extremidade recebe um endereço padrão de 0 (*). O host pode então falar com o endpoint usando o endereço padrão e configurá-lo com um endereço único diferente de zero que permitirá que ele saiba quando está sendo falado.
(*) Porque apenas um dispositivo é sempre enumerado por vez, o endereço 0 será sempre exclusivo para o dispositivo recém-conectado.
Você pode então perguntar, " bem como posso então ter vários dispositivos falando ao mesmo tempo? ". Digamos que você tenha um mouse, um teclado e uma unidade flash, todos conectados ao mesmo hub USB. Todos nós sabemos que você pode usar seu mouse e teclado ao mesmo tempo enquanto copia arquivos de / para sua unidade flash, mas se apenas um dispositivo pode falar por vez, como isso seria possível?
Bem , tudo se resume ao fato de que as poucas centenas de milissegundos que seu cérebro leva para perceber que você pressionou uma tecla e espera que a tela seja atualizada são uma eternidade para o computador. Uma interface USB 2.0 pode ser executada a até 480Mbps (USB 3.1 pode ser executada a até 10 Gbps!), O que significa que mesmo que o host esteja sempre falando com um endpoint a qualquer momento, ele alterna entre eles tão rápido que você pode “t tell it” está fazendo isso.
Host USB: " Ei, mouse na porta 1, diga-me se você mudou. Ok, agora teclado na porta 2, você tem algum pressionamento de tecla para relatar? Agora você aí na porta 3, unidade flash, armazene esses dados para mim. Mais alguém com quem eu preciso falar? não, ok então, mouse na porta 1, diga-me se você “mudou … "
Humano: " Olha só , o computador percebeu que apenas movi meu mouse, pressionei uma tecla no teclado e copiei uma imagem para a unidade flash, tudo ao mesmo tempo! "
O dispositivo host controla qual e Os endereços de ndpoint são usados e enviarão pacotes para cada um sequencialmente ou conforme necessário (ou seja, quando o sistema operacional solicita acesso a um dispositivo específico). Portanto, embora nem tudo aconteça simultaneamente, a arbitragem é tão rápida que os computadores de estimação humanos não conseguem perceber a diferença.
Comentários
- Para add: Dispositivos USB (apenas endpoints de “interrupção”, para ser mais preciso) podem solicitar que sejam pesquisados em um determinado intervalo de até 1 ms. Contanto que você não tenha centenas de dispositivos de entrada, nunca notará um atraso.
- Como o host sabe quais endpoints estão conectados? Além disso, isso não ' realmente parece responder à pergunta original sobre hubs. Como eles interagem neste processo ? Como interagir na enumeração?
- Enumeração @YonaAppletree. Hosts e hubs verificam todas as suas portas em busca de conexões de dispositivos – eles detectam um resistor pull-up de 1,5 kOhm em D + (Full Speed) ou D- (Baixa velocidade). Eu ' adicionarei algumas informações sobre como os endpoints são atribuídos a um endereço.
- @YonaAppletree em termos de hubs durante a operação, a resposta fala sobre isso já. host para endpoint: " Os hubs USB simplesmente passam a solicitação do host para todos os endpoints ". Para endpoint para host: " Como apenas um endpoint tem permissão para falar a qualquer momento, o hub USB simplesmente roteará o pacote de qualquer porta que responder "
Resposta
Resposta mais curta: o host envia dados que são endereçados a um determinado dispositivo ( que foi “enumerado” preliminarmente), uma transação por vez, sequencialmente. O hub transmite todos os pacotes para todos os dispositivos. Um dispositivo responde apenas às transações que são 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ção” que são construídos em cada hub para cada porta, que traduzem assim chamado de “transações divididas” em tráfego LS ou FS.
Comentários
- E quanto ao USB 3?
- hubs USB3 são mais inteligente para link Super-Speed e use roteamento explícito para dispositivos / terminais. A seção USB2 permanece a mesma. Consulte a seção 3.1 " Resumo arquitetônico " das especificações USB3.1 mais recentes, usb.org/developers/docs/usb_31_052016.zip