¿Cómo funciona un concentrador USB?

6

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 lo que puedo usar un número n de dispositivos juntos. Pero, no entiendo ¿cómo puede un puerto USB transferir datos con un número n de puertos USB?
¿cómo puede enviar datos diferentes a todos los puertos USB al mismo tiempo?

*

simular este circuito : esquema creado usando CircuitLab

*.

    
pregunta Aaditya Sahay

2 respuestas

14

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 cuándo. Hay diferentes esquemas como usted esperaría dependiendo de la aplicación.

Un ejemplo común: en la red tenemos muchos nodos que se comunican entre sí. Esto se hace cuando cada nodo tiene una dirección (por ejemplo, una 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 paquetes que ingresan en varios 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 en el 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 sencillo porque solo el puerto de host puede hablar a voluntad. Los puntos finales solo pueden hablar cuando lo solicita el host , y el anfitrión solo habla con un punto extremo a la vez.

Para los paquetes de punto final de host > los concentradores USB simplemente pasan la solicitud del host a todos los puntos finales. Debido a que 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 los paquetes de punto final > host, el servidor primero envía un paquete a un punto final específico por dirección para decir "puede hablar ahora", y luego ese punto extremo debe enviar una respuesta de inmediato. Debido a que solo se permite hablar a un punto final en un momento dado, el concentrador USB simplemente enrutará el paquete desde cualquier puerto que responda a una solicitud del host.

En términos de cómo funciona el host los dispositivos conectados y la forma en que los puntos finales obtienen su dirección, esto se logra a través de la enumeración.

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

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

Si no hay hubs, 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 host le indicará que reinicie el nuevo dispositivo e inicie las comunicaciones. Durante el restablecimiento, el punto final recibe una dirección predeterminada de 0 (*). Luego, el host puede hablar 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.

(*) Dado que solo se enumera un dispositivo a la vez, la dirección 0 siempre será exclusiva del dispositivo recién conectado.

Luego puede preguntar: "bien, ¿cómo puedo tener varios dispositivos hablando todos al mismo tiempo?". Supongamos que tiene un mouse, un teclado y una unidad flash conectados al mismo concentrador USB. Todos sabemos que puede usar el mouse y el teclado al mismo tiempo al mismo tiempo que copia archivos a / desde su unidad flash, pero si solo puede hablar un dispositivo 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 darse cuenta de que presionó una tecla y esperan que la pantalla se actualice es una eternidad para la computadora. Una interfaz USB 2.0 puede funcionar a hasta 480Mbps (¡USB 3.1 puede funcionar a 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.

  

USB Host: "Oye, ratón en el puerto 1, dime si te has movido. Bien, ahora, teclado en el puerto 2, ¿tienes alguna tecla presionada para informar? Ahora estás en el puerto 3 , unidad flash, guarde estos datos para mí. ¿Alguien más con quien debo hablar? No, está bien, mouse en el puerto 1, dígame si se ha mudado ... "

     

Humano: "Oh, mira, la computadora notó que acabo de mover el mouse, presionar una tecla de mi teclado y copiar una imagen a 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 una de forma secuencial o según sea necesario (es decir, cuando el sistema operativo solicita acceso a un dispositivo específico). Entonces, si bien no todo sucede simultáneamente, el arbitraje es tan rápido que las computadoras que los humanos no pueden notar la diferencia.

    
respondido por el Tom Carpenter
1

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

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

    
respondido por el Ale..chenski

Lea otras preguntas en las etiquetas