Universal Serial Bus

81
ROJAS SANTIAGO CESAR ROBERTO LUNA HERRERA TERESA PEREZ REYES JANETH NAVA FLORES GERMAN Ingeniería Informática ITESCO

Transcript of Universal Serial Bus

Page 1: Universal Serial Bus

ROJAS SANTIAGO CESAR ROBERTOLUNA HERRERA TERESA

PEREZ REYES JANETH

NAVA FLORES GERMAN

Ingeniería InformáticaITESCO

Page 2: Universal Serial Bus

Universal Serial Bus

Page 3: Universal Serial Bus

Autor: Alejandro Furfaro 3

Genealogía y alcance Genealogía

Enero de 1996, versión 1.0. Velocidad 1,5 Mbps. Intel, Compaq, NEC, y Microsoft

Septiembre de 1998, versión 1.1. Velocidades de 1,5 (Low Speed) ó 12Mbps (Full Speed) Mejora en la asignación de ancho de banda a los dispositivos, a

través de la incorporación de nuevos tipos de transferencias. Septiembre del 2000 versión 2.0

Velocidades de 1,5 (Low Speed), 12(Full Speed), o 480 Mbps (High Speed)

Alcance: Nuestro estudio se centrará en la versión 1.1, tratando de

introducir conceptos de 2.0.

Page 4: Universal Serial Bus

Autor: Alejandro Furfaro 4

Principales metas propuestas Expansión de periféricos sencilla

Detección automática de un nuevo dispositivo Conexión y desconexión sin reiniciar el equipo Soporte plug & play.

Velocidades de transferencia de hasta 480 Mbits/seg. a bajo costo.

Soporte a aplicaciones multimedia real time. Integración con dispositivos electrónicos (VCR, por

ejemplo), aumentando de esta manera las capacidades de la PC.

Interfaz de software standard independiente del dispositivo que se desee conectar.

Page 5: Universal Serial Bus
Page 6: Universal Serial Bus
Page 7: Universal Serial Bus

Autor: Alejandro Furfaro 7

El Hub es un dispositivo USB especial, que extiende la cantidad de ports para conectar dispositivos, convirtiendo un punto de conexión simple, en múltiples puntos de conexión. Por punto de conexión entendemos port.

FuncionesSon dispositivos conectados al bus capaces de recibir y transmitir información desde / hacia el Host Controller. Se denomina función debido a que no necesariamente la correspondencia función dispositivo es uno a uno. Ejemplos de funciones en un Bus USB: Teclado, Mouse, lapiz óptico, una impresora, un modem (analógico, o ISDN) etc.

Dispositivos USB I

Page 8: Universal Serial Bus

Autor: Alejandro Furfaro 8

Es posible tener varias funciones implementadas dentro de un dispositivo conectado por un único cable a un port USB. Estos son conocidos como dispositivos compuestos, y se presentan al Host Controller como un Hub con mas de un dispositivo no removible.

Dispositivos USB II

Page 9: Universal Serial Bus

Autor: Alejandro Furfaro 9

Consideraciones adicionales Alimentación:Desde este punto de vista, los

dispositivos USB trabajan en dos modos: self powered

Bus powered.

Velocidad:La especificación 1.1 soporta dos tipos de dispositivos: Dispositivos USB low speed, (1.5 Mbits/seg.) Dispositivos USB full speed, (12Mbits/seg).

Además, garantiza la coexistencia de ambos tipos de dispositivo en el bus de manera que no existan desincronizaciones con los mismos.

Page 10: Universal Serial Bus

Autor: Alejandro Furfaro 10

Flujo de datos: Modelo de Implementación

Function LayerFunction Layer, es quien provee la interfaz entre el usuario y el dispositivo.

USB Device LayerUSB Device Layer es la visión que tiene el software del sistema para realizar las operaciones previstas con el dispositivo USB.

USB BUS InterfaceUSB BUS Interface Layer es la capa del modelo que resuelve la comunicación física, a través de señalización de hardware y transmisión de paquetes de información, entre el Host y el Dispositivo Físico.

Page 11: Universal Serial Bus
Page 12: Universal Serial Bus
Page 13: Universal Serial Bus

Autor: Alejandro Furfaro 13

La señal se aplica en forma diferencial entre D+ y D-, de modo tal que se establece una comunicación Half Duplex. Es decir, se transmite en un único sentido en cada momento.

VBUS , por su parte transporta 5Vcc con respecto de la líneaGND que tiene la referencia eléctrica de tierra del sistema.

Conexiones Cada conexión es punto a punto y se lleva a cabo mediante

un cable separado. Dicho cable está compuesto de cuatro hilos.

Se pueden conectar hasta 127 nodos o dispositivos diferentes al bus.

Page 14: Universal Serial Bus

Autor: Alejandro Furfaro 15

Características Eléctricas IEntrada de un port de Hub, y de un Dispositivo USB Full-speed

Entrada de un port de Hub, y de un Dispositivo USB Low-speed

Significa que un port desconectado “ve” 15 K. En el momento de conectar un dispositivo uno de los conductores del Bus queda a 1,5 K con respecto a una fuente de entre 3V y 3,6V. La resistencia de Thevenin (que no incluye los 15 K), no debe ser menor de 900 .

Estas condiciones eléctricas establecen la forma en que se detectan las conexiones y desconexiones de dispositivos al bus.

Page 15: Universal Serial Bus

Autor: Alejandro Furfaro 16

Señalización al desconectar un dispositivo

Señalización al conectar un dispositivo Full Speed

Características Eléctricas II

Page 16: Universal Serial Bus

Autor: Alejandro Furfaro 17

Señalización al resetear un dispositivo

Señalización al conectar un dispositivo Low Speed

Características Eléctricas III

Page 17: Universal Serial Bus

Autor: Alejandro Furfaro 18

Características Eléctricas IV

Aceptable Requerido En el conector destino En el conector de

origen

Niveles de Señalización

Estado del Bus

Las líneas de datos conmutan del estado Idle al estado ‘K’

Start of Packet

‘1’ Diferencial ‘0’ Diferencial

‘1’ Diferencial ‘0’ Diferencial

Estado Dato “K”

Low Speed Full Speed

‘0’ Diferencial ‘1’ Diferencial

‘0’ Diferencial ‘1’ Diferencial

Estado Dato “J” Low Speed Full Speed

D+ y D- < VIH (min)

D+ y D- < VIL (max)

D+ y D- < VOL (max)

Single Ended 0 (SE0)

(D-) – (D+) > 200 mV

(D-) – (D+) > 200 mV D- >VIH (min)

D- > VOH(min) y D+ < VOL (max)

‘0’ Diferencial

(D+) – (D-) > 200 mV

(D+) – (D-) > 200 mV D+ >VIH (min)

D+ > VOH(min) y D- < VOL (max)

‘1’ Diferencial

Page 18: Universal Serial Bus

Autor: Alejandro Furfaro 19

Características Eléctricas V

Idle 2.5 seg.

D- > VIHZ (min) y D+ <VIH (min) D+ > VIHZ (min) y D- <VIH (min)

D+ y D- < VIL (max) pr 2.5 seg.

D+ y D- < VIL (max) por 10 mseg.

D+ y D- <VOL (max) por 10 mseg.

Reset

Idle 2 mseg. N.A. Conectado (a un port downstream)

SE0 por 2.5 seg. N.A. Desconectado (a un port upstream)

Estado Dato “K” Estado Dato “K” Resume

D- > VIHZ (min) y D+ <VIL (max) D+ > VIHZ (min) y D- <VIL (max)

N.A. Idle Low Speed Full Speed

SE0 por 1 bit seguido por un estado Dato “J”

SE0 por 1 bit seguido por un estado Dato “J” de un bit

SE0 por el tiempo de dos bits seguido por un estado Dato “J” por el tiempo de un bit

End of Packet (EOP)

Aceptable Requerido En el conector destino En el conector de

origen

Niveles de Señalización

Estado del Bus

Page 19: Universal Serial Bus

Autor: Alejandro Furfaro 20

Señalización de Comienzo y Fin de Paquete

Características Eléctricas VI

Page 20: Universal Serial Bus

Autor: Alejandro Furfaro 21

mediante el no cambio de nivel y los ‘0’ mediante cambios de nivel. Llevado a términos de estados, en NRZI pasa del estado J al K cada vez que aparece un ‘0’ en el stream de bits a transmitir.

Problema: Las strings largas de ’1s’ no generan cambios de nivel y pueden causar la pérdida de sincronismo entre los dos dispositivos.

Para evitarlo se utiliza una técnica denominada “bit Stuffing” (Relleno de bits), que consiste en insertar un ‘0’ cada seis ‘1’ consecutivos.

USB emplea codificación de datos NRZI. Consiste en representar los ‘1’

Características Eléctricas VII

Page 21: Universal Serial Bus

Autor: Alejandro Furfaro 22

Se dispone de un flujo de comunicación dedicado entre cada aplicación y la correspondiente Función en el dispositivo. Así, una Función de un dispositivo puede tener diferentes flujos de comunicaciones con diferentes aplicaciones que la requieran .

En el dispositivo USB, el flujo de comunicación termina en un Endpoint .Host Controller Driver: Interfacea al USB Host Controller con el USB System Software. Garantiza que el USB System Software, pueda interactuar con toda la variedad de implementaciones de Hardware que se pueda encontrar.USB Driver (USBD): Interfacea al USB System Software con la aplicación cliente (Client SW) permitiéndoles a éstas el manejo del dispositivo USB

Flujo de Información en USB I

Page 22: Universal Serial Bus

Autor: Alejandro Furfaro 23

Un dispositivo USB se presenta al sistema como una colección de Endpoints. Estos Endpoints a su vez se agrupan formando Interfaces. Las Interfaces son “vistas” de las diferentes Funciones del dispositivo.

La comunicación entre los extremos se realiza entre un buffer del lado Host y un Endpoint del lado Dispositivo USB. El Canal es un pipe.

Flujo de Información en USB II

Page 23: Universal Serial Bus

Autor: Alejandro Furfaro 24

Endpoints I Es la porción identificable de un dispositivo USB que

representa el extremo en un flujo de comunicación entre el Host y dicho dispositivo.

Tiene un Número definido durante el diseño del dispositivo que lo identifica unívocamente.

Transfiere información en una sola dirección. Cada dispositivo USB tiene una cantidad de

Endpoints independientes entre sí, y una dirección unívoca que lo identifica en el sistema, que obtiene desde el Host en el momento de su conexión al bus.

Así es que, definidos la dirección del dispositivo USB, el Número de Endpoint, y la Dirección del Flujo de Datos, se determina el Endpoint del dispositivo con el que se quiere establecer comunicación.

Page 24: Universal Serial Bus

Autor: Alejandro Furfaro 25

Endpoints II Características de un Endpoint que deben ser

conocidas por el Software Cliente a fin de interactuar con él de manera correcta: Número de identificación Dirección de transferencia de datos Tipo de transferencia que soporta.

Frecuencia o tiempo de demora en el acceso al bus. Ancho de Banda requerido. Comportamiento en el manejo de errores. Tamaño máximo del paquete de datos que puede

transaccionar.

Page 25: Universal Serial Bus

Autor: Alejandro Furfaro 26

El Endpoint 0 Todos los dispositivos USB deben tener implementado

un método de control default que utilice un par de Endpoints (uno de entrada y otro de salida), para que en el momento de su conexión al bus los pueda inicializar el USB System Software en el Host.

Este método se conoce como Default control Pipe, y el par de Endpoints que lo compone levan el Número cero.

El Default Control Pipe soporta las transferencias de Control.

El Endpoint cero está siempre accesible ni bien el dispositivo se conecta al bus, o se conecta a la fuente de alimentación, o es reseteado.

Page 26: Universal Serial Bus

Autor: Alejandro Furfaro 27

Pipes I Son entidades abstractas que relacionan un Endpoint del

dispositivo USB con el software del host. Son el canal de comunicación virtual mediante el cual se pueden transferir datos entre un buffer de memoria en el host y el Endpoint del dispositivo USB.

Pueden tener uno de dos modos mutuamente excluyentes: Stream: Transmiten datos sin una estructura USB definida y en

modo First-In First-Out. Siempre son unidireccionales.

Message: Transmiten datos con alguna estructura USB definida. Se envía un requerimiento al dispositivo USB desde el host, el que es seguido por una transferencia de datos en la dirección adecuada. Finalmente se pasa a una fase de Estado. Este tipo de pipes permite comunicaciones bidireccionales.

Page 27: Universal Serial Bus

Autor: Alejandro Furfaro 28

Pipes II Para cursar una transferencia un pipe requiere que se

defina: Demanda del bus USB y ancho de banda requerido. Tipo de transferencia Características del Endpoint asociado en el dispositivo: dirección

de transferencia, tamaño máximo del paquete de datos a transmitir,etc.

El Cliente de Software que corre en el host envía requerimientos al pipe a través de I/O Request Paquets (IRPs). El formato de estos depende del Sistema Operativo. El Cliente de Software se entera de la finalización de un IRP, cuando recibe un aviso de finalización exitosa, o con error.

Si no existen IRPs pendientes el pipe está en estado idle. Esto significa que su Endpoint asociado en el extremo del dispositivo USB no ve en el bus transacciones dirigidas a él.

Page 28: Universal Serial Bus
Page 29: Universal Serial Bus

Autor: Alejandro Furfaro 30

Cada Transferencia comprende una o mas transacciones

Cada Transacción contiene un paquete Token, y puede contener adicionalmente paquetes de datos y Handshake

Cada paquete contiene un PID y puede tener además información adicional y un CRC

Transferencia 1 Transferencia 2 Transferencia 3

Transacción 1 Transacción 2 Transacción 3

Token Datos Handshake

PID Info. Adicional CRC

Transacciones

Page 30: Universal Serial Bus
Page 31: Universal Serial Bus
Page 32: Universal Serial Bus
Page 33: Universal Serial Bus
Page 34: Universal Serial Bus
Page 35: Universal Serial Bus
Page 36: Universal Serial Bus
Page 37: Universal Serial Bus

Autor: Alejandro Furfaro 38

Tipos de Transferencias I Cada tipo de transferencia determina características

importantes del flujo de información involucrado. Entre otras contamos las siguientes: Formato de datos impuesto por el USB. Dirección del flujo de comunicaciones. Restricciones en el tamaño del paquete de datos a

transmitir. Restricciones en el acceso al bus. Restricciones en el tiempo de recuperación de datos.

Secuencias de datos requeridas. Manejo de errores.

Page 38: Universal Serial Bus

Autor: Alejandro Furfaro 39

Tipos de Transferencias II Transferencias de control:

Son comunicaciones por irrupción, no periódicas, iniciadas por el host, que se utilizan en operaciones de comando o status.

Transferencias Isócronas: Se trata de un tipo de comunicación periódica y continua entre el host y un dispositivo USB, utilizadas típicamente en aplicaciones en donde el tiempo de recuperación de datos es un factor relevante. No quiere decir que sea crítico el tiempo de respuesta en cuanto a la velocidad de recuperación de los datos sino más bien, en cuanto a la periodicidad de acceso a éstos.

Page 39: Universal Serial Bus

Autor: Alejandro Furfaro 40

Transferencias de Interrupción: Son comunicaciones de baja frecuencia, para tamaños de paquete de datos muy pequeños, y tiempo de recuperación de datos limitado.

Transferencias de volumen (bulk): Son comunicaciones de grandes paquetes de datos por irrupción, no periódicas, utilizadas para transmitir datos que pueden utilizar cualquier ancho de banda disponible y que también pueden ser demorados hasta que el ancho de banda requerido se encuentre disponible.

Tipos de Transferencias III

Page 40: Universal Serial Bus
Page 41: Universal Serial Bus

Autor: Alejandro Furfaro 42

Transferencias de Volumen (Bulk):

Formatos de Transacciones I

Page 42: Universal Serial Bus

Autor: Alejandro Furfaro 43

Transferencias de Volumen (Bulk):

Formatos de Transacciones II

Page 43: Universal Serial Bus

Autor: Alejandro Furfaro 44

Transferencias de Control:

ormatos de Transacciones III

Page 44: Universal Serial Bus

Autor: Alejandro Furfaro 45

Transferencias de Control:

Formatos de Transacciones IV

Page 45: Universal Serial Bus

Autor: Alejandro Furfaro 46

Transferencias de Interrupción:

Formatos de Transacciones V

Page 46: Universal Serial Bus

Autor: Alejandro Furfaro 47

Transferencias Isócronas:

Formatos de Transacciones VI

Page 47: Universal Serial Bus

Autor: Alejandro Furfaro 48

Transacciones Consecutivas:

Formatos de Transacciones VII

Page 48: Universal Serial Bus

Autor: Alejandro Furfaro 49

Uso del Ancho de Banda I

DataPayload Max Bandwidth (bytes/second)

Frame Bandwidth

per Transfer

Max Transfers

Bytes Remaining

Bytes/FrameUseful Data

1 32000 3% 32 23 322 62000 3% 31 43 624 120000 3% 30 30 1208 224000 4% 28 16 224

16 384000 4% 24 36 38432 608000 5% 19 37 60864 832000 7% 13 83 832

Max. 1500000 1500

DataPayload Max Bandwidth (bytes/second)

Frame Bandwidth

per Transfer

Max Transfers

Bytes Remaining

Bytes/FrameUseful Data

1 3000 25% 3 46 32 6000 25% 3 43 64 12000 26% 3 37 128 24000 28% 3 25 24

Max. 187500 187

Limites en las Transferencias de Control Full-speed

(PRE+ 9 SYNC bytes, 9 PID bytes, 6 Endpoint + CRC bytes, 6CRC bytes, 8 Setup data bytes, and a 7-byte interpacketdelay (EOP, etc.))

Protocol Overhead (46 bytes)

(9 SYNC bytes, 9 PID bytes, 6 Endpoint + CRC bytes, 6CRC bytes, 8 Setup data bytes, and a 7-byte interpacketdelay (EOP, etc.))

Protocol Overhead (45 bytes)

Limites en las Transferencias de Control Low-speed

Page 49: Universal Serial Bus

Autor: Alejandro Furfaro 50

Uso del Ancho de Banda II

DataPayloadMax

Bandwidth (bytes/second)

Frame Bandwidth

per Transfer

Max Transfers

Bytes Remaining

Bytes/FrameUseful Data

1 150000 1% 150 0 1502 272000 1% 136 4 2724 460000 1% 115 30 4608 704000 1% 88 5 704

16 960000 2% 60 40 96032 1152000 3% 36 24 115264 1280000 5% 20 40 1280

128 1280000 9% 10 130 1280256 1280000 18% 5 175 1280512 1024000 35% 2 458 1024

1023 1023000 69% 1 468 1023Max. 1500000 1500

Limites en las Transferencias IsócronasProtocol Overhead

(9 bytes)(2 SYNC bytes, 2 PID bytes, 2 Endpoint + CRC bytes, 2 CRC bytes, and a 1-byte interpacketdelay

Page 50: Universal Serial Bus

Autor: Alejandro Furfaro 51

Uso del Ancho de Banda III

DataPayloadMax

Bandwidth (bytes/second)

Frame Bandwidth

per Transfer

Max Transfers

Bytes Remaining

Bytes/FrameUseful Data

1 107000 1% 107 2 1072 200000 1% 100 0 2004 352000 1% 88 4 3528 568000 1% 71 9 568

16 816000 2% 51 21 81632 1056000 3% 33 15 105664 1216000 5% 19 37 1216

Max. 1500000 1500

DataPayloadMax

Bandwidth (bytes/second)

Frame Bandwidth

per Transfer

Max Transfers

Bytes Remaining

Bytes/FrameUseful Data

1 13000 7% 13 5 132 24000 8% 12 7 244 44000 9% 11 0 448 64000 11% 8 19 64

Max. 187500 187

Protocol Overhead (13 bytes)

(3 SYNC bytes, 3 PID bytes, 2 Endpoint + CRC bytes, 2 CRC bytes, and a 3-byte interpacket delay)

Limites en las Transferencias de Interrupción Full-speed

Limites en las Transferencias de Interrupción Low-speedProtocol Overhead

(13 bytes)(3 SYNC bytes, 3 PID bytes, 2 Endpoint + CRC bytes, 2 CRC bytes, and a 3-byte interpacket delay)

Page 51: Universal Serial Bus

Autor: Alejandro Furfaro 52

Uso del Ancho de Banda IV

DataPayloadMax

Bandwidth (bytes/second)

Frame Bandwidth

per Transfer

Max Transfers

Bytes Remaining

Bytes/FrameUseful Data

1 107000 1% 107 2 1072 200000 1% 100 0 2004 352000 1% 88 4 3528 568000 1% 71 9 568

16 816000 2% 51 21 81632 1056000 3% 33 15 105664 1216000 5% 19 37 1216

Max. 1500000 1500

Protocol Overhead (13 bytes)

(3 SYNC bytes, 3 PID bytes, 2 Endpoint + CRC bytes, 2 CRC bytes, and a 3-byte interpacket delay)

Limites en las Transferencias Bulk

Page 52: Universal Serial Bus

Autor: Alejandro Furfaro 53

Enumeración Antes de comenzar a trabajar con un

dispositivo el Host debe averiguar sus características (Tipos de transferencias, cantidad de endpoints, etc.).

Una vez obtenida esta información le asigna al dispositivo un número de port lógico en el Bus.

Este proceso se denomina Enumeración.

Page 53: Universal Serial Bus
Page 54: Universal Serial Bus

Autor: Alejandro Furfaro 55

Pasos en la Enumeración I El usuario conecta el dispositivo a un port de un Hub

(Hub root o cualquier hub externo). El dispositivo toma su estado inicial:AttachedAttached. Si el Hub está operativo y no está siendo reseteado,

alimenta al dispositivo automáticamente, si éste es Bus Powered.

El dispositivo pasa al estado PoweredPowered. Si el dispositivo es Self Powered al attacharse directamente

entra al estado PoweredPowered. El Hub detecta al dispositivo.

Monitorea el estado eléctrico del port, y si detecta que la impedancia de entrada cae de 15 K a 1,5 K, registra el evento para informar al host.

El dispositivo sigue en estado PoweredPowered El hub no transmite nada al bus.

Page 55: Universal Serial Bus

Autor: Alejandro Furfaro 56

Pasos en la Enumeración II El Host controller encuesta a los hubs para saber si

tienen eventos que reportar. Cada Hub utiliza un pipe configurado para transferencias de

interrupción para reportar eventos al Host controller. Por medio de este pipe el host controller encuesta a los

Hubs (uno a la vez) para saber si alguno tuvo un evento desde la última consulta, y en tal caso en cual de sus ports se produjo el evento.

El Host envía al Hub por el pipe de interrupción una transferencia de Control que todos los hubs deben entender: Get_Port_Status.

El Hub reponde este comando de acuerdo a lo establecido en la especificación.

El Host Controller accede a la información completa acera del evento.

Page 56: Universal Serial Bus

Autor: Alejandro Furfaro 57

Pasos en la Enumeración III El Hub resetea al dispositivo.

Leída la información del port attachado, el Host envía al Hub el comando Set_Port_Feature.

En dicho comando utiliza la opción que le permite solicitar al hub el reset del port.

El Hub envía las líneas D+ y D- del port a la condición de Reset durante 10 mseg (atención: el reset durará los próximos 10 frames).

El Hub detecta la velocidad del dispositvo. Examina las tensiones en ambos terminales D+ y D- en el

estado Idle. Según cual tiene mayor tensión, el dispositivo es High Speed o Low Speed.

Según su diseño el Hub puede efectuar esta comprobación antes del Reset o inmediatamente después del mismo.

Page 57: Universal Serial Bus

Autor: Alejandro Furfaro 58

Pasos en la Enumeración IV El Host establece un path de señal entre el

dispositivo y el bus. Envía al Hub el comando Get_Port_Status para verificar

que el dispositivo finalizó el reset. Esta operación se repite frame tras frame hasta que el Hub

conteste que el dispositivo ha sido reseteado. (Recordar que el reset dura 10 frames)

Cuando esto ocurre, el dispositivo está en estado DefaultDefault: Los registros del controlador están en su estado default, El controlador está listo para trabajar por el Endpoint 0, Puede tomar no mas de 100 ma. del bus, Contestará transacciones dirigidas a la dirección de port 0.

Page 58: Universal Serial Bus

Autor: Alejandro Furfaro 59

Pasos en la Enumeración V El Host averigua el tamaño máximo de paquete

soportado por el default control pipe. Envía el requerimiento Get_Descriptor al Endpoint 0 de la

Dirección 0. Especificando en este comando que se refiere al descriptor de dispositivo y que se requieren 8 bytes de respuesta por parte del dispositivo.

El Host enumera solo un dispositivo a la vez, así que no hay forma que otro dispositivo responda.

El tamaño máximo del paquete está en el byte 8 del Descriptor de Dispositivo. Por eso el Host solo lee sus ocho primeros bytes.

Page 59: Universal Serial Bus

Autor: Alejandro Furfaro 60

Pasos en la Enumeración VI El Host asigna una dirección.

Envía el requerimiento Set_Address, con la dirección que le asigna al dispositivo.

El dispositivo lo lee, devuelve ACK, y almacena su dirección.

Ahora está en el estado AddressedAddressed. La dirección asignada es válida hasta que el dispositivo se

desconecte, apague, o resetee.

Page 60: Universal Serial Bus

Autor: Alejandro Furfaro 61

Pasos en la Enumeración VII El Host lee las características del dispositivo.

Envía el requerimiento Get_Descriptor Endpoint 0 del dispositivo. Dirección de port: la que termina de asignar Descriptor de dispositivo.

El dispositivo devuelve su Device Descriptor. Contiene la cantidad de configuraciones, interfaces, y endpoints que el

dispositivo tiene definidos. Los detalles de estos elementos se encuentran en los respectivos

descriptores almacenados en el dispositivo.Por cada configuración informada, el host controller envía un Get_Descriptor al dispositivo

Port y Endpoint, ídem anterior Descriptor de Configuración.

El dispositivo responde el requerimiento. Descriptor de la configuración requerida Descriptores de interfaz que dependen de esta configuración Descriptores de endpoint que dependen de cada interfaz Descriptores de string si los hubiera

Page 61: Universal Serial Bus

Autor: Alejandro Furfaro 62

Pasos en la Enumeración VIII El Host carga un Device Driver.

En base a la información de Vendor ID, Product ID, Release number, e información de clase leídos del Device Descriptor por el driver de Bus USB, el Sistema Operativo carga el Device Driver mas apropiado para el dispositivo.

En el caso de entornos Windows, se usa además la información de los archivos de Sistema .INF.

El Device Driver del dispositivo selecciona una configuración.

Comando Set_Configuration. El dispositivo está ahora en el estado ConfiguredConfigured. El dispositivo está listo para ser utilizado.

Page 62: Universal Serial Bus

Autor: Alejandro Furfaro 63

Descriptor de DispositivoOffset Campo Tamaño Valor Descripción

0 bLength 1 Number Tamaño del Descriptor en Bytes 1 bDescriptorType 1 Constant Tipo de Descriptor DEVICE2 bcdUSB 2 BCD Número de versión de la Especificación USB en Binario Codificado Decimal (ej., 1.10 es 110H).

Este campo identifica el release de la Especificación USB con la cual son compatibles el dispositivo y sus descriptores.

4 bDeviceClass 1 Class Class code (asignado por el USB). Si este campo vale 00H, cada interfaz dentro de una configuración especificará su propia información de clase y todas trabajarán independientemente Si este campo tiene un valor entre 1 y FEH, significa que el dispositivo soporta diferentes especificaciones de clase sobre diferentes interfaces y éstas pueden no operar independientemente. Este valor identifica la definición de clase usada por las interfaces agregadas. (Por ejemplo, un CD- ROM con interfaces de audio y datos digitales que requieren control de transporte para ejectar el CD o comenzar a hacerlos girar).Si este campo vale FFH, la clase del dispositivo es vendor-specific

5 bDeviceSubClass 1 Subclass Subclass code (asignado por el USB). Este código se evalúa de acuerdo al valor del campo bDeviceClass. Si el campo bDeviceClass es cero, este campo también debe ser cero. Si el campo bDeviceClass no vale FFH, todos los valores se reservan para ser asignados por el USB.

6 bDeviceProtocol 1 Protocol Protocol code (asignado por el USB). Estos códigos se evalúan de acuerdo con el valor de los campos bDeviceClass ybDeviceSubClass. Si un dispositivo soporta protocolos de clase específicos sobre la base de dispositivo y no de interfaz, este código identifica el protocolo que utiliza el dispositivo tal como se lo define en la especificación de clase de ese dispositivo. Si este campo vale cero, el dispositivo no utiliza protocolos específicos de clase. Sin embargo puede utilizar protocolos específicos de clase sobre la base de interfaces. Si este campo vale FFH, el dispositivo usa un protocolo vendor-specific basado en el dispositivo.

7 bMaxPacketSize0 1 Number Tamaño máximo de paquete para endpoint 0 (valores válidos solo 8, 16, 32, o 64) 8 idVendor 2 ID Vendor ID (asignados por el USB)

10 idProduct 2 ID Product ID (asignados por el fabricante)12 bcdDevice 2 BCD Número de versión del Dispositivo en Binario Codificado Decimal14 iManufacturer 1 Index Indice de descriptor de string que describe al fabricante15 iProduct 1 Index Indice de descriptor de string que describe al producto 16 iSerialNumber 1 Index Indice al descriptor de string que describe el número de serie del dispositivo 17 bNumConfigurations 1 Number Número de configurationes posibles

Page 63: Universal Serial Bus

Autor: Alejandro Furfaro 64

Descriptor de Dispositivo/*SINGLE HID INTERFACE*/

const byte DEV_DESC[]={DEV_LENGTH,/*length of this desc. */ DEVICE, /*DEVICE descriptor */ 0x00,0x01, /*spec rev level (BCD) */ 0x00, /*device class */ 0x00, /*device subclass */ 0x00, /*device protocol */ 0x08, /*max packet size */ 0x00,0x04, /*National's vendor ID */ 0x5B,0xC3, /*National's product ID */ 0x41,0x01, /*National's revision ID */ MFG_STR_OFS,/*index of manuf. string */ PID_STR_OFS,/*index of prod. string */ 0, /*index of ser. # string */ 0x01 /*number of configs. */ };

Page 64: Universal Serial Bus

Autor: Alejandro Furfaro 65

Descriptor de ConfiguraciónOffset Campo Tamaño Valor Descripción

0 bLength 1 Number Tamaño del Descriptor en Bytes 1 bDescriptorType 1 Constant Tipo de Descriptor CONFIGURATION2 wTotalLength 2 Number Longitud total de los datos retornados para esta configuración. Incluye la longitud combinada de

todos los descriptores de configuración, interfaz, endpoint, y específicos de clase o fabricante retornados para esta configuración.

4 bNumInterfaces 1 Number Númeo de interfaces soportadas por esta configuración5 bConfigurationValue 1 Number Valor a utilizar como argumento en el requerimiento SetConfiguration() para

seleccionar esta configuración6 iConfiguration 1 Index Indice al descriptor de string que describe esta configuración7 bmAttributes 1 Bitmap Características de la configuración :

D7: Reservado (debe estar en 1) D6: Self-powered D5: Remote Wakeup D4...0: Reservados (deben estar en 0)D7 está reservado y debe estar en 1 por razones históricas. Para indicar la cantidad de mA requeridos, una configuración de dispositivo que utiliza alimentación del Bus y una fuente local, reporta un valor distinto de cero en MaxPower y setea D6. La fuente de alimentación actual en tiempo de ejecución se determina mediante el requerimiento GetStatus (DEVICE). Si una configuración de dispositivo soporta remote wakeup, D5 se pone en 1.

8 MaxPower 1 mA Máximo consumo de alimentación desde el Bus para esta configuración específica, del dispositivo USB cuando se encuentra completamente operacional. Se expresa en unidades de 2mA (p.ej., 50 = 100mA).Nota: La configuración de un dispositivo indica si esa configuración es bus- powered o selfpowered. El estado del dispositivo reporta si éste está actualmente self-powered. Si un dispositivo se desconecta de su fuente de alimentación externa, actualiza su estado de dispositivo para indicar que ya no está self-powered. Un dispositivo no puede incrementar su toma de alimentación del bus, cuando pierde su alimentación externa, mas allá de la cantidad reportada por esta configuración.Si un dispositivo puede continuar operando cuando se desconecta de su fuente de alimentación externa, continuará haciéndolo, caso contrario cesa su operación. El USB System Software puede determinar la causa de la falla chequeando el estado y detectando la pérdida de alimentación del dispositivo.

Page 65: Universal Serial Bus

Autor: Alejandro Furfaro 66

Interface DescriptorOffset Campo Tamaño Valor Descripción

0 bLength 1 Number Tamaño del Descriptor en Bytes 1 bDescriptorType 1 Constant Tipo de Descriptor INTERFACE2 bInterfaceNumber 1 Number Número de interfaz. Valor base cero que identifica el ídice en un array de interfaces

concurrentes soportadas por esta configuración

3 bAlternateSetting 1 Number Valor utilizado para seleccionar ajustes alternativos para la interfaz identificadas en el campo previo.

4 bNumEndpoints 1 Number Número de endpoints utilizado por esta interfaz (excluyendo el endpoint cero). Si este valor es cero, esta interfaz solo utiliza el Default Control Pipe.

5 bInterfaceClass 1 Class Código de clase (asignado por el USB).El valor cero se reserva para futura estandarización.Si este campo se pone en FFh, la clase de esta interfaz es "vendor-specific".El resto de los valores está reservado para su asignación por el USB.

6 bInterfaceSubClass 1 SubClass El Código de Subclase (asignado por el USB). Estos códigos son clasificados por el valor de campo bInterfaceClass.Si el campo bInterfaceClass es 0, este campo también debe estar en 0.Si el campo bInterfaceClassno es FFh, todos los valores se reservan para su asignación por el USB.

7 bInterfaceProtocol 1 Protocol Código de Protocolo (asignado por el USB). Estos códigos se clasifican de acuerdo con el valore de los campos bInterfaceClass y bInterfaceSubClass. Si una interfaz soporta requerimientos "class-specific", este código identifica los protocolos que usa el dispositivo de acuerdo con lo definido en la especificación de clase a la que pertenece el dispositivo. Si este campo se pone en 0, el dispositivo no utiliza un protocolo "class-specific" en esta interfaz. Si este campo se pone en FFh, el dispositivo utiliza un protocolo "vendor-specific" para esta interfaz.

8 iInterface 1 Index Indice al descriptor de string que describe esta interfaz.

Page 66: Universal Serial Bus

Autor: Alejandro Furfaro 67

Descriptor de EndpointOffset Campo Tamaño Valor Descripción

0 bLength 1 Number Tamaño del Descriptor en Bytes 1 bDescriptorType 1 Constant Tipo de Descriptor ENDPOINT2 bEndpointAddress 1 Endpoint Dirección del endpoint en el dispositivo USB. Se codifica como sigue:

Bit 3...0: Número de endpoint Bit 6...4: Reservados, se ponen en 0 Bit 7: Dirección de las transferencias( se ignora para endpoints de control ) 0 = OUT endpoint 1 = IN endpoint

3 bmAttributes 1 Bitmap Este campo describe los atributos del endpoint cuando lo configuró utilizando el valor bConfigurationValue. Bit 10: Tipo de transferencia: 00 = Control 01 = Isochronous 10 = Bulk 11 = InterruptEl resto de los bits están reservados.

4 wMaxPacketSize 2 Number Es el máximo tamaño de paquete que este endpoint es capaz de enviar o recibir cuando se selecciona esta configuración. Para endpoints isócronos, este valor se utiliza para reservar tiempo de bus en el schedule, requerido para los payloads de datos de cada frame. El pipe puede sobre la marcha, utilizar menos ancho de banda que el reservado. Si es necesario, el dispositivo reporta el ancho de banda actual en uso por medio de sus propios mecanismos normales no definidos por USB. Para endpoints de interrupción, bulk, y control, se pueden enviar payloads de datos mas pequeños, pero esto terminará la transferencia y podrá o no requirirse intervención para recomenzarla.

6 bInterval 1 Number Intervalo para polling al endpoint en espera de transferencias de datos. Expresado en milisegundos. Este campo se ignora para endpoints bulk y control. Para endpoints isócronos este campo debe estar en 1. Para endpoints de interrupción, este campo puede valer desde 1 a 255.

Page 67: Universal Serial Bus

Autor: Alejandro Furfaro 68

const byte CFG_DESC[] = {CFG_LENGTH, /*length of this desc. */ CONFIGURATION, /*CONFIGURATION descriptor*/ 0x22,0x00, /*total length returned */ 0x01, /*number of interfaces */ 0x01, /*number of this config */ CFG_STR_OFS, /*index of config. string */ ATTRIBUTES, /*attr.: bus powered */ 50, /*max power (100 mA) */

INT_LENGTH, /*length of this desc. */ INTERFACE, /*INTERFACE descriptor */ 0x00, /*interface number */ 0x00, /*alternate setting */ 0x01, /*# of (non 0) endpoints */ HIDCLASS, /*interface class */ NOSUBCLASS, /*interface subclass */ 0x00, /*interface protocol */ INT_STR_OFS, /*index of intf. string */

HID_LENGTH, /*length of this desc. */ HID, /*HID descriptor */ 0x00,0x01, /*HID spec rev level (BCD)*/ 0x00, /*target country */ 1, /*# HID class desc follow.*/ HIDREPORT, /*report descr. type */ RPT_DESC_SIZE,0x00, /*report descr. length */

END_LENGTH, /*length of this desc. */ ENDPOINT, /*ENDPOINT descriptor */ 0x85, /*address (IN) */ 0x03, /*attributes (INTERRUPT) */ 0x40,0x00, /*max packet size (64) */ 0xFF}; /*interval (ms) */

Descriptores de Configuración, Interfaz y Endpoint. Ejemplos

Page 68: Universal Serial Bus

Autor: Alejandro Furfaro 69

Descriptor de String

Offset Campo Tamaño Valor Descripción0 bLength 1 N+2 Tamaño del Descriptor en Bytes 1 bDescriptorType 1 Constant Tipo de Descriptor STRING2 wLANGID[0] 2 Constant Código de LANGID Cero

….. …… …… ……. ……….N wLANGID[x] 2 Código de LANGID x

Page 69: Universal Serial Bus

Autor: Alejandro Furfaro 70

Descriptores de String. Ejemplosconst byte STR_DATA[] = {4,3,9,4 /*LANGID array (English) *//*[004] MFG_STR --> "National Semiconductor Corporation" -------------*/ , 70,3, 78,0, 97,0,116,0,105,0,111,0,110,0, 97,0,108,0, 32,0, 83,0 ,101,0,109,0,105,0, 99,0,111,0,110,0,100,0,117,0, 99,0,116,0,111,0 ,114,0, 32,0, 67,0,111,0,114,0,112,0,111,0,114,0, 97,0,116,0,105,0 ,111,0,110,0/*[074] PID_STR --> "USBN9603 HID Evaluation" ------------------------*/ , 48,3, 85,0, 83,0, 66,0, 78,0, 57,0, 54,0, 48,0, 51,0, 32,0, 72,0 , 73,0, 68,0, 32,0, 69,0,118,0, 97,0,108,0,117,0, 97,0,116,0,105,0 ,111,0,110,0/*[122] NBR_STR --> "Jim Lyle" ---------------------------------------*/ , 18,3, 74,0,105,0,109,0, 32,0, 76,0,121,0,108,0,101,0/*[140] CFG_STR --> "Standard Configuration" -------------------------*/ , 46,3, 83,0,116,0, 97,0,110,0,100,0, 97,0,114,0,100,0, 32,0, 67,0 ,111,0,110,0,102,0,105,0,103,0,117,0,114,0, 97,0,116,0,105,0,111,0 ,110,0/*[186] INT_STR --> "HID JOYSTICK Interface" -------------------------*/ , 46,3, 72,0, 73,0, 68,0, 32,0, 74,0, 79,0, 89,0, 83,0, 84,0, 73,0 , 67,0, 75,0, 32,0, 73,0,110,0,116,0,101,0,114,0,102,0, 97,0, 99,0 ,101,0 }; /*end of STR_DATA */#define MFG_STR_OFS 4#define PID_STR_OFS 74#define NBR_STR_OFS 122#define CFG_STR_OFS 140#define INT_STR_OFS 186

Page 70: Universal Serial Bus

Autor: Alejandro Furfaro 71

Offset Campo Tamaño Valor Descripción

Characteristics of request:D7: Data transfer direction

0 = Host-to-device1 = Device-to-host

D6...5: Type0 = Standard1 = Class2 = Vendor3 = Reserved

D4...0: Recipient0 = Device1 = Interface2 = Endpoint3 = Other4...31 = Reserved

1 bRequest 1 Value Specific request (Ver hoja "Standard Device Requests")2 wValue 2 Value Word-sized field that varies according to request4 wIndex 2 Index or Offset Word-sized field that varies according to request;

typically used to pass an index or offset6 wLength 2 Count Number of bytes to transfer if there is a Data stage

0 bmRequestType 1 Bitmap

Datos para un requerimiento SETUP

Especifica la cantidad de bytes qué se transmitirán en en la segunda fase de datos. La dirección de la transacción la especifica el bit D7 de bmRequest

D7 D6 D5 D4 D3 D2 D1 D0DirecciónD15 D14 D13 D12 D11 D10 D9 D8

D7 D6 D5 D4 D3 D2 D1 D0

D15 D14 D13 D12 D11 D10 D9 D8

Formato de wIndex cuando se especifica una Interfaz

Formato de wIndex cuando se especifica un Endpoint

Reservada (Reset a cero)

Nº de Interfaz

Reservada (Reset a cero) Número de Endpoint

Reservada (Reset a cero)

Especifica al requerimiento específico que se va a enviar(ver siguiente slide)

Especifica las características del requerimiento específico que se va a enviar

Page 71: Universal Serial Bus

Autor: Alejandro Furfaro 72

Requerimientos StandardbmRequestType bRequest wValue wIndex wLength Data00000000B00000001B00000010B

CLEAR_FEATURE Feature Selector

Zero I nterface Endpoint

Zero None

10000000B GET_CONFIGURATION Zero Zero One Configuration Value

10000000B GET_DESCRIPTOR Descriptor Type and Descriptor

Index

Zero or Language

ID

Descriptor

Length

Descriptor

10000001B GET_INTERFACE Zero Interface One Alternate Interface

10000000B10000001B10000010B

GET_STATUS Zero ZeroInterfaceEndpoint

Two Device, Interface, or Endpoint Status

00000000B SET_ADDRESS Device Address Zero Zero None00000000B SET_CONFIGURATION Configuration

ValueZero Zero None

00000000B SET_DESCRIPTOR Descriptor Type and Descriptor

Index

Zero or Language

ID

Descriptor

Length

Descriptor

00000000B00000001B00000010B

SET_FEATURE Feature Selector

Zero Interface Endpoint

Zero None

00000001B SET_INTERFACE Alternate Setting

Interface Zero None

10000010B SYNCH_FRAME Zero Endpoint Two Frame Number

Page 72: Universal Serial Bus

Autor: Alejandro Furfaro 73

Códigos para Requerimientos y Tipos Standard

bRequest ValorGET_STATUS 0CLEAR_FEATURE 1Reservado para uso Futuro 2SET_FEATURE 3Reservado para uso Futuro 4SET_ADDRESS 5GET_DESCRIPTOR 6SET_DESCRIPTOR 7GET_CONFIGURATION 8SET_CONFIGURATION 9GET_INTERFACE 10SET_INTERFACE 11SYNCH_FRAME 12Tipo de Descriptor Receptor ValorDEVICE_REMOTE_WAKEUP Device 1ENDPOINT_HALT Endpoint 0

Tipo de Descriptor ValorDEVICE 1CONFIGURATION 2STRING 3INTERFACE 4ENDPOINT 5

Page 73: Universal Serial Bus

HDMI tiene tres canales de comunicación físicamente separados, que son la DDC, TMDS, y la CCA opcional El cable HDMI y conectores llevan cuatro pares diferenciales que componen los datos TMDS y canales de despertador. Audio, vídeo y datos auxiliares se transmite a través de los tres canales de datos TMDS. Un reloj TMDS, por lo general funciona a la tasa de píxeles de vídeo, se transmite en el canal de reloj TMDS

HDMI canals de comunicacion

Page 74: Universal Serial Bus

HDMI lleva un canal VESA DDC. El DDC se utiliza para la configuración y el intercambio entre estado de un único transmisor y un receptor único. El DDC es utilizado por el transmisor a leer del receptor mejorado Extended Display Identification Data (E-EDID) con el fin de descubrir la configuración y las capacidades del receptor. El protocolo CEC opcional proporciona funciones de control de alto nivel entre todos los diferentes productos audiovisuales en el entorno de un usuario

HDMI canals de comunicacion

Page 75: Universal Serial Bus

Hay 3 tipos de conector HDMI, tipo A, B y C. Los tres conectores llevan todo requiere señales HDMI, incluyendo un enlace TMDS. El conector de tipo B es ligeramente más grande y lleva un segundo enlace de TMDS, que es necesario para apoyar pantallas de muy alta resolución usando doble enlace. El conector de tipo C lleva las mismas señales que el Tipo A, pero es más compacto y destinados para aplicaciones móviles. El conector HDMI proporciona un pasador que permite el transmisor para el suministro de 5,0 voltios para el cable y el receptor. Todos los transmisores HDMI harán valer la señal de alimentación 5 V cuando el transmisor está usando las señales DDC o TMDS

Page 76: Universal Serial Bus
Page 77: Universal Serial Bus

El acoplamiento de HDMI funciona en uno de tres modos: Vídeo Período de datos - los píxeles activos de una línea de video activo se transmiten Período de isla de datos - de audio y datos auxiliares se transmiten utilizando una serie de paquetes. Estos datos auxiliar incluye InfoFrames y otros datos que describen el audio activa o secuencia de vídeo o describir el transmisor. Control de período-Se utiliza cuando no hay vídeo, audio, o datos auxiliares se necesita transmitir. Se requiere entre dos períodos que no se controlan los períodos.

El acoplamiento de HDMI

Page 78: Universal Serial Bus

Los datos de vídeo pueden tener un tamaño de píxel de 24, 30, 36 o 48 bits. Profundidades de color superiores a 24 bits se definen como modos "Deep Color". El video en el valor predeterminado de profundidad de color de 24 bits es     llevado a una tasa de reloj TMDS igual a la tasa de reloj de píxeles. Píxeles de vídeo de datos de vídeo de codificación es tal que los 8 bits convertidos a 10 bits por el transmisor de HDMI. Los píxeles de video pueden ser codificados en cualquiera RGB, YCbCr o YCBCR 04:04:04 04:02:02 formatos. Modos de color profundos son opcionales, aunque si un transmisor o receptor HDMI compatible con cualquier modo de profundidad de color *, deberá soportar el modo de 36 bits.

Los datos de vídeo

Page 79: Universal Serial Bus

Un paquete infoframe lleva uno infoframe. El infoframe proporcionada por HDMI se limita a 30 bytes más un byte de suma de comprobación. Transmisor HDMI siempre transmitirá una infoframe AVI, al menos, una vez cada dos campos de vídeo si el transmisor es compatible. El AVI infoframe se transmitirá aunque tal transmisor está transmitiendo RGB y de vídeo no pixel-repitió. Para el formato AVI infoframe consulte: Sección 8.2 de la especificación HDMI 1.3

Un paquete infoframe

Page 80: Universal Serial Bus

Transmisor HDMI deberá leer el EDID y primera extensión CEA para determinar las capacidades soportadas por el receptor. Transmisor HDMI comprobará la E-EDID para la presencia de un vendedor HDMI específica bloque de datos dentro de la primera extensión CEA para determinar si se trata de un dispositivo HDMI / DVI. Todo el receptor soporta 640 * 480P formato de vídeo por defecto

Transmisor HDMI

Page 81: Universal Serial Bus

Un receptor HDMI aducirá nivel de alta tensión en su Hot Plug Detect pin cuando el E-EDID está disponible para su lectura. Receptor HDMI indicará cualquier cambio en el contenido del E-EDID conduciendo un pulso bajo nivel de voltaje en la conexión en caliente Detección pin.

Un receptor HDMI