¿Cómo evitó las colisiones el USB 2.0?

32

Al mirar las clavijas 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 una pareja de "datos". ¿Cómo garantiza USB 2.0 que los dispositivos no se comunican simultáneamente?

    
pregunta VortixDev

2 respuestas

67

El 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 tienes un mouse gamer), la PC pregunta al mouse "cuál es tu posición" y el mouse responde.

Igual si tiene una interfaz USB 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 el funcionamiento del periférico más sencillo y más barato posible, lo que significa que la mayor parte de la inteligencia se encuentra en el host, el controlador usb del host, el sistema operativo y los controladores. Esto es muy evidente al leer la especificación.

Firewire (por ejemplo) tiene una filosofía completamente diferente, es mucho más potente, es multi-master, por lo que los dispositivos pueden comunicarse entre sí sin la ayuda de un host / master. En realidad, está mucho más cerca en su filosofía de algo así como un token ring con transferencias isócronas golpeadas en la parte superior, que a USB. Sin embargo, "maestro múltiple" significa que requiere un microcontrolador potente en los dispositivos, ejecutando una pila de software compleja. Por lo tanto, es más costoso y, por lo tanto, se limita a productos costosos, como videocámaras y carcasas de discos duros rápidos. Un mouse firewire no tiene sentido, sería demasiado caro. Esa es una de las razones por las que FireWire falló.

    
respondido por el peufeu
18

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 su cuenta, 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.

Todas las transacciones en el bus son iniciadas por el host USB.

Los encabezados de cada transacción USB llevan la 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 del host en particular), solo el dispositivo con la dirección coincidente responderá a la transacción y tomará los datos o responderá con los datos.

El enlace "socios" enviará un acuse de recibo en la dirección de quién recibe los datos correctamente. La transacción completa sigue el 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 está dirigido a ellos.

Eso es todo, es una interfaz "half-duplex".

    
respondido por el Ale..chenski

Lea otras preguntas en las etiquetas