Características del USB.
- Todos los dispositivos USB deben tener el mismo tipo de cable y el mismo tipo de conector, más allá de la función que cumplan.
- Los detalles de consumo y administración eléctrica del dispositivo deben ser completamente transparentes para el usuario.
- El computador debe identificar automáticamente un dispositivo agregado mientras opera, y por supuesto configurarlo.
- Los dispositivos pueden ser desconectados mientras el computador está en uso.
- Deben poder compartir un mismo bus tanto dispositivos que requieren de unos pocos Kbps como los que requieren varios Mbps.
- Más de 127 dispositivos diferentes pueden estar conectados simultáneamente y operando con un mismo ordenador sobre el Bus Serial Universal.
- El bus debe permitir periféricos multifunción, es decir aquellos que pueden realizar varias tareas a la vez, como lo son algunas impresoras que adicionalmente son fotocopiadoras y máquinas de fax.
- Capacidad para manejo y recuperación de errores producidos por un dispositivo cualquiera.
- Soporte para la arquitectura Conectar y Operar (Plug&Play).
- Bajo costo.
- No se necesita un cable extra de alimentación - la mayoría de los periféricos USB obtienen la alimentación del bus USB, con lo cual no requieren un cable de alimentación adicional.
- Más rápido: USB transfiere los datos 10 veces más rápido que los puertos serie tradicionales.
El protocolo USB se basa en el llamado paso de testigo (token). Este bus permite la conexión y la des-conexión en cualquier momento sin necesidad de apagar el equipo.
El bus USB puede trabajar en dos modos, a baja velocidad (1,5 Mbps, para dispositivos como teclados, ratones, que no barajan grandes cantidades de información) y a alta velocidad (12 Mbps, para dispositivos como unidades de CDROM, altavoces, módems e ISDN, etcétera).
Este protocolo tiene un sistema muy eficiente de recuperación de errores, empleando uno de los modelos más seguros como es el CRC (Código de Redundancia Cíclica). Y puede estar implementado al nivel de software y/o hardware de manera configurable.
A nivel eléctrico
El cable USB transfiere la señal y la alimentación sobre 4 hilos dos para datos y dos para alimentación.
A nivel de alimentación
El cable proporciona la tensión nominal de 5 V. Es necesario definir correctamente el diámetro del hilo con el fin de que no se produzca una caída de tensión demasiado importante en el cable. Una resistencia de terminación instalada en la línea de datos permite detectar el puerto y conocer su configuración (1,5 o 12 Mbits/s).
A nivel de señal
Se trata de un par trenzado con una impedancia característica de 90 Ω. La velocidad puede ser tanto de 12 Mbits/s como de 1,5 Mbits/s. La sensibilidad del receptor puede ser de, al menos, 200mV y debe poder admitir un buen factor de rechazo de tensión en modo común. El reloj se transmite en el flow de datos, la codificación es de tipo NRZI, existiendo un dispositivo que genera un bit de relleno (bit stuffing) que garantiza que la frecuencia de reloj permanezca constante. Cada paquete va precedido por un campo de sincronismo.
Consumo
Cada sección puede proporcionar una determinada potencia máxima siendo el PC el encargado de suministrar la energía. Además, el periférico puede estar autoalimentado (self powered).
Control de consumo
El ordenador gestiona el consumo, teniendo capacidad de poner en reposo (suspend) o en marcha a un periférico USB. En reposo, este reduce su consumo (si puede) quedándose la parte USB funcional. Esta gestión está orientada especialmente a los equipos portátiles.
La norma USB define 2 tipos de enlaces virtuales (pipe); stream y message.
TIPOS DE TRANSFERECIA
El enlace virtual (pipe) puede ser de cuatro tipos:
Control: Modo utilizado para realizar configuraciones: existe siempre sobre el Punto terminal 0 (EndPoint 0). Todos los dispositivos USB deben soportar este tipo de transferencia.
Los datos de control sirven para configurar el periférico en el momento de conectarse al USB. Algunos drivers específicos pueden utilizar este enlace para transmitir su propia información de control. Este enlace no tiene pérdida de datos, puesto que los dispositivos de detección de recuperación de errores están activos a nivel USB.
Bulk: Este modo se utiliza para la transmisión de importantes cantidades de información. Como el tipo control, este enlace no tiene pérdida de datos. Este tipo de transferencia es útil cuando la razón de transferencia no es critica como por ejemplo, el envió de un archivo a imprimir o la recepción de datos desde un escáner.
Interrupt, modo utilizado para transmisiones de pequeños paquetes, rápidos, orientados a percepciones humanas (ratón, punteros).
Este tipo de transferencia es para dispositivos que deben recibir atención periódicamente y lo utilizan los dispositivos de baja velocidad.
Este tipo de transmisión garantiza la transferencia de pequeñas cantidades de datos. El tiempo de respuesta no puede ser inferior al valor especificado por la interfaz. El ratón o cualquier otro dispositivo apuntador es una aplicación típica de este modo de transmisión.
Isochronous o Flujo en tiempo real: modo utilizado para la transmisión de audio o video comprimido. Este tipo de transmisión funciona en tiempo real. Este es el modo de mayor prioridad.
La transmisión de la voz es un ejemplo de esta aplicación. Si ésta no se transmite correctamente, pueden llegar a oírse parásitos (glich) y la aplicación puede detectar ciertos.
Enumeración
Cuando se conecta un dispositivo USB a la PC se produce el Proceso de Enumeración, el cual consiste en que el host le pregunta al dispositivo que se presente y le diga cuáles son sus parámetros, tales como:
- Consumo de energía expresada en unidades de Carga
- Numero y tipos de Puntos terminales
- Clase del producto.
- Tipo de transferencia
- Razón de escrutinio, etc.
El proceso de enumeración es inicializado por el host cuando detecta que un nuevo dispositivo que ha sido adjuntado al Bus. El host le asigna una dirección al dispositivo adjuntado al bus y habilita su configuración permitiendo la transferencia de datos sobre el bus.
Terminología USB
Host: Dispositivo maestro que inicia la comunicación (Generalmente la computadora).
Hub: Dispositivo que contiene uno o más conectores o conexiones internas hacia otros dispositivos usb, el cual habilita la comunicación entre el host y con diversos dispositivos. Cada conector representa un puerto USB.
Puerto USB: Cada host soporta solo un bus, cada conector en el bus representa un puerto USB por lo tanto sobre el bus puede haber un varios conectores , pero solo existe una ruta y solo un dispositivo puede transmitir información a un tiempo.
Driver: es un programa que habilita aplicaciones para poderse comunicar con el dispositivo. Cada dispositivo sobre el bus debe tener un driver, algunos periféricos utilizan los drivers que trae Windows.
Puntos terminales (Endpoints): Es una localidad específica dentro del dispositivo. El Endpoint es un buffer que almacena múltiples bytes, típicamente es un bloque de la memoria de datos o un registro dentro del micro controlador. Todos los dispositivos deben soportar el punto terminal 0. Este punto terminal es el que recibe todo el control y la peticiones de estado durante la enumeración cuando el dispositivo esta sobre el bus.
Tuberías (Pipes): Es un enlace virtual entre el host (la PC) y el dispositivo USB, este enlace configura los parámetros asociados con el ancho de banda que tipo de transferencia se va a utilizar.