Entendiendo el Bus USB: Arquitectura, Dispositivos y Funcionamiento
El Bus USB nace para acabar con la diversidad de conectores disponibles para acceder al PC, creando uno más sencillo y con más prestaciones.
Objetivos
- Proporcionar anchos de banda suficientes.
- Conexión de dispositivos de muy diversas funcionalidades.
- Coste no muy elevado.
- Cumplimiento del estándar.
- Permitir *plug & play*.
Arquitectura
Tres áreas de responsabilidad:
1. Interconexión/Topología USB
Estructurando la interconexión en 7 capas en estrella, cada estrella tiene como centro un *hub* raíz. Cada segmento es una conexión punto a punto entre el *host* y un *hub*, o entre el *host* y un dispositivo que proporciona una nueva facilidad al *host*. Se presenta un elemento que puede considerarse la conjunción de un *hub* y una función, denominándolo como dispositivo compuesto, ya que proporciona un modo de unión y una funcionalidad añadida.
2. Dispositivos USB
Pueden ser *hubs* que proporcionan conexiones al USB o dispositivos que añaden funcionalidades al sistema. Estos dispositivos presentan una interfaz estándar de modo que entienden el protocolo de USB y tienen capacidad para resolver y responder a operaciones propias del estándar USB. Solo los *hubs* tienen capacidad de proporcionar punto de acceso adicional al USB, y las funciones dan nuevas facilidades al *host*, directamente o a través del *hub*.
3. Host
Es único, reside en el PC, responsable de las comunicaciones de periféricos USB y CPU del PC. Pueden ser combinaciones de *software*, *hardware* y *firmware*, responsable de la admisión de periféricos dentro del bus. Una vez conectado el periférico le dará los recursos que precisa haciéndose responsable del control de flujo de datos entre CPU y periférico.
Entorno Físico
La topología física del USB consiste en la conexión de puertos descendentes a puertos ascendentes de otro *hub* o dispositivo. Dado que el USB puede trabajar a tres velocidades, para las velocidades alta y completa precisa utilizar un cable apantallado con dos conductores de alimentación y un par trenzado (*twisteado*) para las señales. En el caso de baja velocidad se recomienda pero no es necesario que el par de comunicaciones este trenzado.
Pipe de Control o Mensaje
Es una vía de comunicación bidireccional entre el *host* y dos *endpoints* de control en un dispositivo USB, siendo uno de Salida y otro de Entrada y todos los dispositivos disponen de estos *endpoints* en la dirección 0 para que siempre el sistema pueda establecer una *pipe* de control incluso antes de la configuración pudiendo a través de ella leer toda la información descriptiva del dispositivo para tomar nota de: el tipo de dispositivo, posibles configuraciones, protocolo que soporta, número y tipo de *endpoint* que tiene en cada configuración, etc. En resumen lo denominado como Descriptores, que veremos más adelante.
Los datos que se mueven a través de este *pipe* tienen una estructura caracterizada por las especificaciones del Bus USB.
Pipe de Stream
Vía de comunicación unidireccional, entre el *host* y un *endpoint* con transferencias tipo *Bulk*, Interrupción o Isócrono es decir los datos no están estructurados como indica USB.
Operativa de Transmisión
El bus serie USB es síncrono, y utiliza la codificación NRZI (*Non Return to Zero Inverted*) con inserción de un cero tras la transmisión de 6 unos, para asegurar transacciones en la línea y permitir que el receptor se mantenga sincronizado. En este sistema existen dos voltajes opuestos; una tensión de referencia corresponde a un "1", pero no hay retorno a cero entre bits, de forma que una serie de unos corresponde a un voltaje uniforme; en cambio los ceros se marcan como cambios del nivel de tensión, de modo que una sucesión de ceros produce sucesivos cambios de tensión entre los conductores de señal.