Conozco la respuesta de Google y la de Wikipedia para la pregunta anterior. Pero tengo una pregunta más específica entre manos. Los concentradores USB tienen muchos puertos entrantes y puertos y solo un puerto saliente, puedo usar un número n de dispositivos juntos debido a esto. Pero no entiendo ¿cómo puede un puerto USB realizar 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?
*
simula este circuito – Esquema creado usando CircuitLab
*.
Comentarios
- Casi de la misma manera que su enrutador de red puede conectar un puerto LAN (Internet) a varios 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 la dirección 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.
- @TomCarpenter Entonces cómo ¿Enviaría el puerto USB datos diferentes ' s juntos?
- El puerto del host le pide a un terminal específico que hable. Los puntos finales solo responden cuando el host se lo pide.
- @TomCarpenter Pero todos se utilizan simultáneamente y no uno por uno, sino todos juntos.
- Recuerde que el bus USB puede funcionar a hasta 480 Mbps en USB 2.0. El host solo habla con un punto final a la vez, pero habla con todos de forma secuencial y cambia entre ellos tan rápido que no puede ' saberlo. Lo mismo que hacen las redes. " Oye, mouse en el puerto 1, dime si ' te mudaste. Ok, ahora teclado en el puerto 2, ¿tiene alguna pulsación de tecla para informar? Ahora, en el puerto 3, unidad flash, almacene estos datos por mí. ¿Alguien más con quien necesito hablar? no, ok, entonces, mouse en el puerto 1, dime si ' has movido … "
Responder
Todo tiene que ver con el arbitraje. Cualquier sistema que requiera que varios dispositivos estén conectados necesita alguna forma de determinar quién debe hablar cuando. Hay diferentes esquemas como cabría esperar dependiendo de la aplicación.
Un ejemplo común: en redes tenemos muchos nodos que se comunican entre sí. Esto se hace cuando cada nodo tiene una dirección (por ejemplo, IP dirección), 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 varios puertos y los reenvían al puerto correcto. El arbitraje es hecho usando la memoria para almacenar paquetes hasta que el puerto de destino esté libre.
Ahora en USB. Esto es en realidad mucho más simple que las redes porque no todos los nodos son iguales. Tienes 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 de host puede hablar a voluntad. Los terminales solo pueden hablar cuando el host se lo pide, y el host solo habla con un terminal a la vez.
Para paquetes host- > de punto final, 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 aquel al que se dirigió la solicitud hará algo con él (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 " puedes hablar ahora " , y luego ese punto final debe enviar una respuesta de inmediato. Debido a que solo se permite hablar a un extremo 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 saber qué dispositivos están conectados y cómo el punto final obtiene su dirección, esto se logra a través de la enumeración.
Todos los puertos de 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 un dispositivo es adjunto, se da a conocer conectando la línea de datos D + (velocidad completa) o D- (baja velocidad) a VCC usando una resistencia de 1.5kOhm. Esto desencadena un evento de enumeración. Luego, 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 anfitrión simplemente habla con el nuevo dispositivo y lo configura. Si hay hubs en el sistema, es el hub que informa que el nuevo dispositivo está conectado . Si un concentrador informa que hay un nuevo dispositivo conectado, el host le indicará al concentrador que reinicie el nuevo dispositivo y comience las comunicaciones. Durante el reinicio, el punto final recibe una dirección predeterminada de 0 (*). Luego, el host puede hablar con el punto final usando la dirección predeterminada y configurarlo con una dirección única distinta de cero que le permitirá saber cuándo se está hablando con él.
(*) Porque solo un dispositivo alguna vez se enumera a la vez, la dirección 0 siempre será única para el dispositivo recién conectado.
A continuación, puede preguntar, " bien cómo ¿Puedo tener varios dispositivos hablando 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 mientras copia archivos hacia / 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 al cerebro darse cuenta de que presionó una tecla y espera que la pantalla se actualice son una eternidad para la computadora. Una interfaz USB 2.0 puede funcionar a hasta 480 Mbps (¡USB 3.1 puede funcionar a hasta 10 Gbps!), Lo que significa que aunque el host solo está hablando con un punto final en un momento dado, se alterna entre ellos tan rápido que puede «No diga que lo está haciendo.
Host USB: " Oye, mouse en el puerto 1, dime si te has mudado. Ok, ahora teclado en el puerto 2, ¿tienes alguna pulsación de tecla para informar? en el puerto 3, unidad flash, almacene estos datos por mí. ¿Alguien más con quien deba hablar? No, está bien, entonces, mouse en el puerto 1, dígame si «se ha mudado … "
Humano: " Oh, mira , la computadora notó que simplemente moví el 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 cuál e Se utilizan direcciones de ndpoint y enviarán paquetes a cada uno 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 está sucediendo simultáneamente, el arbitraje es tan rápido que la computadora mascota humana no puede notar la diferencia.
Comentarios
- Para agregar: los dispositivos USB (solo los puntos finales de «interrupción», para ser precisos) pueden solicitar ser sondeados en un cierto intervalo de hasta 1 ms. Siempre que no tenga cientos de dispositivos de entrada, nunca notará un retraso.
- ¿Cómo sabe el host qué puntos finales están conectados? Además, esto no ' en realidad parece responder a la pregunta original sobre los concentradores. ¿Cómo interactúan en este proceso? ? ¿Cómo interactúan en la enumeración?
- @YonaAppletree enumeración. Los hosts y 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- (Baja velocidad). Yo ' agregaré información sobre cómo se asigna una dirección a los puntos finales.
- @YonaAppletree en términos de concentradores durante la operación, la respuesta habla sobre eso ya. Por host a punto final: " Los concentradores USB simplemente pasan la solicitud del host a todos los puntos finales ". Para el extremo al host: " Debido a que solo un extremo puede hablar en un momento dado, el concentrador USB simplemente enrutará el paquete desde cualquier puerto que responda "
Respuesta
Respuesta más corta: el host envía datos que están dirigidos a un dispositivo en particular ( que fue «enumerado» preliminarmente), una transacción a la vez, secuencialmente. El concentrador transmite 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 están integrados en cada hub para cada puerto, que traducen tan -llamado «transacciones divididas» en tráfico LS o FS.
Comentarios
- ¿Qué pasa con USB 3?
- Los concentradores USB3 son más inteligente para el enlace de súper velocidad y usa 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