¿Cómo funciona un concentrador USB?

9

Sé la respuesta de Google y la respuesta de Wikipedia para la pregunta anterior. Pero tengo una pregunta más específica a la mano. Los concentradores USB tienen muchos puertos entrantes y puertos y solo un puerto saliente, por eso puedo usar un número n de dispositivos juntos. Pero, no entiendo cómo puede un puerto USB hacer transferencias de datos con un número n de puertos USB.
¿Cómo puede enviar datos diferentes a todos los puertos USB al mismo tiempo?

* *

esquemático

simular este circuito : esquema creado con CircuitLab

*.

Aaditya Sahay
fuente
1
Casi de la misma manera que su enrutador de red puede conectar un puerto LAN (Internet) a múltiples dispositivos. A cada punto final (dispositivo USB) se le asigna una dirección, y los concentradores simplemente enrutan las solicitudes del host al dispositivo correcto al realizar un seguimiento de qué dirección se encuentra en qué puerto. Es mucho más simple para USB en el sentido de que solo hay un maestro (el puerto host) que inicia todas las transacciones.
Tom Carpenter
@TomCarpenter Entonces, ¿cómo enviaría el puerto USB diferentes datos juntos?
Aaditya Sahay
1
El puerto host solicita un punto final específico para hablar. Los puntos finales solo responden cuando el host lo solicita.
Tom Carpenter
@TomCarpenter Pero todos se están utilizando simultáneamente y no uno por uno, sino todos juntos.
Aaditya Sahay
3
Recuerde que el bus USB puede ejecutar hasta 480Mbps en USB 2.0. El host solo habla con un punto final a la vez, pero les habla a todos de forma secuencial y cambia entre ellos tan rápido que no se nota. Lo mismo que hacen las redes. "Oye, mouse en el puerto 1, dime si te has movido. Ok, ahora, en el teclado del puerto 2, ¿tienes que presionar alguna tecla para informar? Ahora estás en el puerto 3, unidad flash, almacena estos datos para mí. necesito hablar con? no, ok, entonces, mouse en el puerto 1, dime si te has mudado ... "
Tom Carpenter

Respuestas:

16

Todo tiene que ver con el arbitraje. Cualquier sistema que requiera la conexión de múltiples dispositivos necesita alguna forma de determinar quién debe hablar y cuándo. Hay diferentes esquemas, como es de esperar, según la aplicación.

Un ejemplo común: en las redes tenemos muchos nodos que se comunican entre sí. Esto lo hace cada nodo que tiene una dirección (por ejemplo, dirección IP), y cuando un nodo quiere hablar con otro nodo, envía un paquete a esa dirección. Luego tiene dispositivos como enrutadores que toman los paquetes que ingresan en múltiples puertos y los reenvían al puerto correcto. El arbitraje se realiza utilizando la memoria para almacenar paquetes hasta que el puerto de destino esté libre.


Ahora a USB. En realidad, esto es mucho más simple que las redes porque no todos los nodos son iguales. Tiene dos tipos, un host y un punto final. Solo hay un host, pero puede haber muchos puntos finales. En este caso, el arbitraje es mucho más fácil porque solo el puerto host puede hablar a voluntad. Los puntos finales solo pueden hablar cuando el host lo solicita , y el anfitrión solo habla con un punto final a la vez.

Para los paquetes host-> punto final, los concentradores USB simplemente pasan la solicitud del host a todos los puntos finales. Como todos los puntos finales tienen una dirección, solo el destinatario de la solicitud hará algo con ella (por ejemplo, responder), todos los demás ignorarán el paquete.

Para el punto final-> paquetes de host, el host primero envía un paquete a un punto final específico por dirección para decir "puede hablar ahora", y luego ese punto final debe enviar inmediatamente una respuesta. Debido a que solo un punto final puede hablar en un momento dado, el concentrador USB simplemente enrutará el paquete desde el puerto que responda a una solicitud del host.


En términos de cómo el host calcula qué dispositivos están conectados y cómo el punto final obtiene su dirección, esto se logra mediante la enumeración.

Todos los puertos host y hub tienen resistencias desplegables (15kOhm) en las líneas D + y D-. Estos ponen las líneas de datos de ese puerto en un estado conocido cuando no hay ningún dispositivo conectado, un estado en el que el puerto no enviará ningún dato a través de las líneas D + / D-.

Cuando se conecta un dispositivo, se da a conocer conectando la línea de datos D + (velocidad completa) o D- (velocidad baja) a VCC usando una resistencia de 1.5kOhm. Esto desencadena un evento de enumeración. El puerto comenzará el proceso de configuración del dispositivo y la asignación de una dirección. Si tuviera que conectar dos dispositivos simultáneamente, se enumerarán uno a la vez .

Si no hay concentradores, el host simplemente habla con el nuevo dispositivo y lo configura. Si hay concentradores en el sistema, es el concentrador el que informa que el nuevo dispositivo está conectado . Si un concentrador informa que un nuevo dispositivo está conectado, el anfitrión le indicará al concentrador que reinicie el nuevo dispositivo y comience las comunicaciones. Durante el restablecimiento, el punto final recibe una dirección predeterminada de 0 (*). Luego, el host puede comunicarse con el punto final utilizando la dirección predeterminada y configurarlo con una dirección única distinta de cero que le permitirá saber cuándo se está hablando.

(*) Debido a que solo se enumera un dispositivo a la vez, la dirección 0 siempre será única para el dispositivo recién conectado.


A continuación, puede preguntar, "bueno, ¿cómo puedo tener varios dispositivos todos hablando al mismo tiempo?". Supongamos que tiene un mouse, un teclado y una unidad flash, todos conectados al mismo concentrador USB. Todos sabemos que puede usar su mouse y teclado al mismo tiempo mientras también copia archivos a / desde su unidad flash, pero si solo un dispositivo puede hablar a la vez, ¿cómo puede ser posible?

Bueno, todo se reduce al hecho de que los pocos cientos de milisegundos que le toma a su cerebro notar que presionó una tecla y espera que la pantalla se actualice es una eternidad para la computadora. Una interfaz USB 2.0 puede funcionar a una velocidad de hasta 480Mbps (¡USB 3.1 puede funcionar a una velocidad de hasta 10Gbps!), Lo que significa que aunque el host solo está hablando con un punto final en un momento dado, alterna entre ellos tan rápido que puede No digas que lo está haciendo.

Host USB: "Oye, mouse en el puerto 1, dime si te has movido. Ok, ahora, en el teclado del puerto 2, ¿tienes que presionar alguna tecla para informar? Ahora estás en el puerto 3, unidad flash, almacena estos datos para mí. ¿Alguien más con quien necesito hablar? No, ok, entonces, pase el mouse por el puerto 1, dígame si se ha mudado ... "

Humano: "Oh, mira, la computadora notó que simplemente moví mi mouse, presioné una tecla en mi teclado y copié una imagen en la unidad flash, ¡todo al mismo tiempo!"

El dispositivo host realiza un seguimiento de qué direcciones de punto final se utilizan y enviará paquetes a cada uno de forma secuencial o según sea necesario (es decir, cuando el sistema operativo solicite acceso a un dispositivo específico). Entonces, si bien no todo sucede simultáneamente, el arbitraje es tan rápido que las computadoras que son mascotas no pueden notar la diferencia.

Tom Carpenter
fuente
2
Para agregar: los dispositivos USB (solo puntos finales de "interrupción", para ser precisos) pueden solicitar que se realice un sondeo en un intervalo determinado de hasta 1 ms. Mientras no tenga cientos de dispositivos de entrada, nunca notará un retraso.
Michael
¿Cómo sabe el host qué puntos finales están conectados? Además, esto en realidad no parece responder a la pregunta original sobre los centros. ¿Cómo interactúan en este proceso? ¿Cómo interactúan en la enumeración?
Yona Appletree
1
Enumeración @YonaAppletree. Los hosts y los concentradores escanean todos sus puertos en busca de conexiones de dispositivos: detectan una resistencia pull-up de 1.5kOhm en D + (Velocidad máxima) o D- (Velocidad baja). Agregaré información sobre cómo se asigna una dirección a los puntos finales.
Tom Carpenter
@YonaAppletree en términos de centros durante la operación, la respuesta ya habla de eso. De host a punto final: "los concentradores USB simplemente pasan la solicitud del host a todos los puntos finales". Para el punto final al host: "Debido a que solo un punto final puede hablar en un momento dado, el concentrador USB simplemente enrutará el paquete desde el puerto que responda"
Tom Carpenter
1

Respuesta más corta: el host envía datos que se dirigen a un dispositivo en particular (que fue "enumerado" preliminarmente), una transacción a la vez, de forma secuencial. El concentrador transmite todos los paquetes a todos los dispositivos. Un dispositivo responde solo a las transacciones que se dirigen a él. Eso es todo, cierto para los dispositivos HS.

Para dispositivos FS y LS, el proceso es un poco más complicado. Utiliza "traductores de transacciones" integrados en cada centro para cada puerto, que traducen las llamadas "transacciones divididas" en tráfico LS o FS.

Ale..chenski
fuente
¿Qué pasa con USB 3?
jbarlow
Los concentradores USB3 son más inteligentes para el enlace Super-Speed ​​y utilizan enrutamiento explícito a dispositivos / puntos finales. La sección USB2 permanece igual. Consulte la Sección 3.1 "Resumen arquitectónico" de las especificaciones USB3.1 más recientes, usb.org/developers/docs/usb_31_052016.zip
Ale..chenski