Observando os pinos dos receptáculos USB 3.0, posso ver que existem pares separados de transmissão e recepção; no entanto, para o USB 2.0, existe apenas um par de pinos "dados". Como o USB 2.0 garante que os dispositivos não estejam se comunicando simultaneamente?
33
Respostas:
USB é estritamente mestre-escravo. O dispositivo não transmite, a menos que o host solicite a transmissão.
Mesmo o chamado modo "interrupção" é realmente interessante: por exemplo, a cada 8 milissegundos (ou menos, se você tiver um mouse para jogador), o PC pergunta ao mouse "qual é a sua posição" e o mouse responde.
Mesmo se você tiver uma interface serial USB, por exemplo. Quando a interface recebe dados na linha serial, não os transmite ao PC. Em vez disso, aguardará o PC iniciar a transação e solicitará os dados.
Esta página tem uma boa explicação sobre os pacotes que são trocados. Basicamente, lembre-se de que o USB foi implementado para permitir que o periférico mais burro e mais barato possível funcione, o que significa que a maior parte da inteligência está no host, no controlador USB do host, no SO e nos drivers. Isso é muito aparente ao ler as especificações.
O Firewire (por exemplo) tem uma filosofia completamente diferente, é muito mais poderoso, é multi-mestre para que os dispositivos possam conversar entre si sem a ajuda de um host / mestre. Na verdade, é muito mais próximo em sua filosofia de algo como anel de token com transferências isócronas batidas na parte superior do que USB. No entanto, "multi master" significa que requer um microcontrolador poderoso nos dispositivos, executando uma pilha de software complexa. Portanto, é mais caro e, portanto, limitado a produtos caros, como câmeras de vídeo e gabinetes de disco rígido rápidos. Um mouse firewire não faz sentido, seria muito caro. Essa é uma das razões pelas quais o FireWire falhou.
fonte
Na estrutura USB, os dispositivos não podem se comunicar simultaneamente, porque apenas "conversam" quando o host USB "permite" que eles falem. E o host USB permite que outro dispositivo "fale" somente quando o protocolo de transação seqüencial com o primeiro dispositivo for concluído. E os dispositivos USB não têm como "conversar" sozinhos, não há mecanismo de interrupção ativo no USB. Em resumo, o mecanismo de implementação dessa disciplina é o seguinte.
Após a conexão dos dispositivos USB 2.0, o host os enumera atribuindo endereços exclusivos a cada dispositivo.
Toda transação no barramento é iniciada pelo host USB.
Os cabeçalhos de todas as transações USB possuem um endereço de dispositivo específico. Mesmo quando as transações são transmitidas por toda a árvore USB (na instância específica do controlador host), apenas o dispositivo com endereço correspondente responderia à transação e pegaria os dados ou responderia com dados.
O link "parceiros" enviará uma confirmação na direção de quem recebe os dados com sucesso. Toda a transação segue um protocolo estabelecido com uma sequência definida de tokens, tempos limite e códigos de correção de erros, para garantir a integridade da transação.
Todos os outros dispositivos estão apenas ouvindo e ignorando o tráfego que não é direcionado a eles.
É isso, é interface "half-duplex".
fonte