Академический Документы
Профессиональный Документы
Культура Документы
2018-2
PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
CIENCIAS E INGENIERÍA
LABORATORIO 4
Introducción
En 1994 una alianza de cuatro industrias (Compaq, Intel, Microsoft y NEC) empezo el diseño del Bus
Universal en Serie (USB). Dicho bus fue originalmente diseñado bajo el marco de 3 puntos claves:
✔ Fácil de usar.
✔ Expandible
La primera implementación (versión 1.0) fue anunciada en enero de 1996 y la versión oficial (1.1) fue
lanzada en setiembre del 1998. Una versión mejorada (2.0) fue lanzada en 2000. El USB tiene un
funcionamiento jerárquico y es controlada por un host. El host usa el protocolo Maestro/Esclavo para
comunicarse con los dispositivos USB conectados, lo que significa que toda clase de conexión es
establecida por el host y los dispositivos no pueden establecer conexión directa con otros dispositivos.
La actual implementación del USB permite hasta 127 dispositivos conectados al mismo tiempo y una
velocidad total de comunicación de 480Mbits/s (versión 2.0). Sin embargo, el uso de dispositivos de
baja velocidad, la gestión de las interrupciones del USB, así como también otros procesos indirectos
reducen considerablemente en la practica la velocidad de uso.
La mayoría de los chipsets de placas modernas provee el controlador de Host USB. Sin embargo,
placas más antiguas (que no poseen controladores Host USB) pueden ser actualizadas utilizando
tarjetas de expansión PCI con el controlador en éstas.
Los controladores USB host son compatibles ya sea con el estándar Open Host Controller Interface
(OHCI, diseñado por Compaq) o el Universal Host Controller Interface (UHCI, por Intel). Ambos tipos
tienen las mismas capacidades y los dispositivos USB trabajan en ambos por igual, las diferencias
radican en que el hardware UHCI es más simple y por lo tanto más barato, pero necesita un driver
más complejo, el cual puede causar mayor carga al CPU.
Hay una amplia variedad de dispositivos USB para un amplio rango de objetivos, lo que significa que
los detalles de implementación varían en cada uno de ellos.
Por ejemplo, un dispositivo USB puede tener una fuente de alimentación propia, alimentarse a través
del bus (máximo 500mA) o ambos. En el caso que un dispositivo consuma mayor energía a la
provista , será necesario que cuente con fuente propia.
En otro aspecto, es importante destacar que la máxima velocidad de comunicación puede variar de
dispositivo en dispositivo: el estándar USB menciona que los dispositivos de low-speed (mouse,
teclado, joystick, etc.) se comunican a 1.5Mbits/s y tienen capacidades limitadas., diferente a los
dispositivos full-speed (sistemas de audio, video, etc.) que pueden usar hasta el 90% de la velocidad.
Hubs
Físicamente existen dos o más puertos USB en los paneles de una computadora, los cuales sirven
para conectar algún dispositivo USB o un hub.
Un hub es un dispositivo que extiende el número de puertos para conectar dispositivos USB. El
máximo numero de dispositivos que se pueden conectar al bus se ve reducido por la cantidad de hubs
conectados (por ejemplo, si se conectan 20 hubs, solo se podrán conectar como máximo 127-20 =
107 dispositivos). Estos son siempre dispositivos full-speed, y si tienen fuente de alimentación propia
cualquier dispositivo puede ser conectado a él. Sin embargo, si es energizado por el propio bus solo se
le pueden conectar dispositivos que tengan un consumo energético bajo (100mA máx.).
Normalmente los puertos físicos de los controladores del host son manejados por un hub principal
virtual (virtual root hub).
La comunicación USB se realiza en dos direcciones y usa cuatro diferentes tipos de transferencia:
cuando la información se dirige desde el host hacia el dispositivo es llamado downstream, y cuando
es en otra dirección se denomina upstream. Asimismo, diversos tipos de transferencia pueden ser
usados:
• Control transfer, solicita y envía pequeños paquetes de datos. Es usado para configurar
dispositivos donde cada uno requiere soportar un mínimo de los comandos de control. Los
comandos estándar son:
GET_STATUS
CLEAR _FEATURE
SET_FEATURE
SET_ADDRESS
GET_DESCRIPTOR
SET_DESCRIPTOR
GET_CONFIGURATION
SET_CONFIGURATION
GET_INTERFACE
SET_INTERFACE
SYNCH_FRAME
• Bulk transfers, es usado para pedir o enviar datos hasta la velocidad máxima del bus.
Dispositivos como escáner o adaptadores SCSI utilizan este tipo de transferencia.
• Isochronous transfer, envía o recibe flujo de datos en tiempo real sin confiabilidad. En
general, este tipo de transferencia es usada en dispositivos de audio y video.
Descriptores de dispositivos
Un descriptor de dispositivo (device descriptor) es una estructura de datos que contiene información
general acerca de un dispositivo USB, sus propiedades y configuración.
Cada dispositivo USB tiene solo un descriptor de dispositivo, cuya jerarquía queda definida por: