Al observar los pines de los receptáculos USB 3.0, puedo ver que hay pares de transmisión y recepción separados, sin embargo, para USB 2.0 solo hay un par de pines de "datos". ¿Cómo garantiza USB 2.0 que los dispositivos no se comuniquen simultáneamente?
33
Respuestas:
USB es estrictamente maestro-esclavo. El dispositivo no transmite a menos que el host le indique que transmita.
Incluso el llamado modo de "interrupción" es realmente un sondeo: por ejemplo, cada 8 milisegundos (o menos si tiene un mouse de jugador), la PC le pregunta al mouse "cuál es su posición" y el mouse responde.
Lo mismo si tiene una interfaz USB en serie, por ejemplo. Cuando la interfaz recibe datos en la línea serie, no los transmitirá a la PC. En su lugar, esperará a que la PC inicie la transacción y solicite los datos.
Esta página web tiene una buena explicación sobre los paquetes que se intercambian. Básicamente, tenga en cuenta que el USB se implementó para permitir que funcione el periférico más tonto y barato posible, lo que significa que la mayor parte de la inteligencia está en el host, el controlador usb del host, el sistema operativo y los controladores. Esto es muy evidente al leer las especificaciones.
Firewire (por ejemplo) tiene una filosofía completamente diferente, es mucho más potente, es multimaestro, por lo que los dispositivos pueden comunicarse entre sí sin la ayuda de un host / maestro. En realidad, está mucho más cerca en su filosofía de algo como el token ring con transferencias isócronas en la parte superior, que al USB. Sin embargo, "multimaestro" significa que requiere un potente microcontrolador en los dispositivos, ejecutando una pila de software compleja. Por lo tanto, es más costoso y, por lo tanto, se limita a productos caros como videocámaras y carcasas rápidas de discos duros. Un mouse firewire no tiene sentido, sería demasiado costoso. Esa es una de las razones por las que FireWire falló.
fuente
En el marco USB, los dispositivos no pueden comunicarse simultáneamente, porque solo "hablan" cuando el host USB "les permite" hablar. Y el host USB permite que otro dispositivo "hable" solo cuando se completa el protocolo de transacción secuencial con el primer dispositivo. Y los dispositivos USB no tienen ningún medio para "hablar" por sí mismos, no hay un mecanismo de interrupción activo en el USB. En resumen, el mecanismo para implementar esta disciplina es el siguiente.
Después de conectar los dispositivos USB 2.0, el host los enumera asignando direcciones únicas a cada dispositivo.
Cada transacción en el bus es iniciada por un host USB.
Los encabezados de cada transacción USB llevan una dirección específica del dispositivo. Incluso cuando las transacciones se transmiten a través de todo el árbol USB (en la instancia del controlador de host particular), solo el dispositivo con la dirección coincidente respondería a la transacción y tomaría los datos o respondería con los datos.
El enlace "socios" enviará un acuse de recibo en la dirección de quién recibe los datos con éxito. Toda la transacción sigue un protocolo establecido con una secuencia definida de tokens, tiempos de espera y códigos de corrección de errores, para garantizar la integridad de la transacción.
Todos los demás dispositivos solo escuchan e ignoran el tráfico que no se dirige a ellos.
Eso es todo, es una interfaz "half-duplex".
fuente