PEREZ REYES JANETH NAVA FLORES GERMAN Ingeniera Informtica ITESCO Universal Serial Bus Autor: Alejandro Furfaro 3 Genealoga y alcance Genealoga Enero de 1996, versin 1.0. Velocidad 1,5 Mbps. Intel, Compaq, NEC, y Microsoft Septiembre de 1998, versin 1.1. Velocidades de 1,5 (Low Speed) 12Mbps (Full Speed) Mejora en la asignacin de ancho de banda a los dispositivos, a travs de la incorporacin de nuevos tipos de transferencias. Septiembre del 2000 versin 2.0 Velocidades de 1,5 (Low Speed), 12(Full Speed), o 480 Mbps (High Speed) Alcance: Nuestro estudio se centrar en la versin 1.1, tratando de introducir conceptos de 2.0. Autor: Alejandro Furfaro 4 Principales metas propuestas Expansin de perifricos sencilla Deteccin automtica de un nuevo dispositivo Conexin y desconexin sin reiniciar el equipo Soporte plug & play. Velocidades de transferencia de hasta 480 Mbits/seg. a bajo costo. Soporte a aplicaciones multimedia real time. Integracin con dispositivos electrnicos (VCR, por ejemplo), aumentando de esta manera las capacidades de la PC. Interfaz de software standard independiente del dispositivo que se desee conectar. Autor: Alejandro Furfaro 7 El Hub es un dispositivo USB especial, que extiende la cantidad de ports para conectar dispositivos, convirtiendo un punto de conexin simple, en mltiples puntos de conexin. Por punto de conexin entendemos port.
Funciones Son dispositivos conectados al bus capaces de recibir y transmitir informacin desde / hacia el Host Controller. Se denomina funcin debido a que no necesariamente la correspondencia funcin dispositivo es uno a uno. Ejemplos de funciones en un Bus USB: Teclado, Mouse, lapiz ptico, una impresora, un modem (analgico, o ISDN) etc. Dispositivos USB I 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 Autor: Alejandro Furfaro 9 Consideraciones adicionales Alimentacin:Desde este punto de vista, los dispositivos USB trabajan en dos modos: self powered Bus powered. Velocidad:La especificacin 1.1 soporta dos tipos de dispositivos: Dispositivos USB low speed, (1.5 Mbits/seg.) Dispositivos USB full speed, (12Mbits/seg). Adems, garantiza la coexistencia de ambos tipos de dispositivo en el bus de manera que no existan desincronizaciones con los mismos. Autor: Alejandro Furfaro 10 Flujo de datos: Modelo de Implementacin Function Layer, es quien provee la interfaz entre el usuario y el dispositivo. USB Device Layer es la visin que tiene el software del sistema para realizar las operaciones previstas con el dispositivo USB. USB BUS Interface Layer es la capa del modelo que resuelve la comunicacin fsica, a travs de sealizacin de hardware y transmisin de paquetes de informacin, entre el Host y el Dispositivo Fsico. Autor: Alejandro Furfaro 13 La seal se aplica en forma diferencial entre D+ y D-, de modo tal que se establece una comunicacin Half Duplex. Es decir, se transmite en un nico sentido en cada momento. VBUS , por su parte transporta 5Vcc con respecto de la lnea GND que tiene la referencia elctrica de tierra del sistema. Conexiones Cada conexin 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. Autor: Alejandro Furfaro 15 Caractersticas Elctricas I Entrada 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 elctricas establecen la forma en que se detectan las conexiones y desconexiones de dispositivos al bus. Autor: Alejandro Furfaro 16 Sealizacin al desconectar un dispositivo
Sealizacin al conectar un dispositivo Full Speed
Caractersticas Elctricas II Autor: Alejandro Furfaro 17 Sealizacin al resetear un dispositivo
Sealizacin al conectar un dispositivo Low Speed
Caractersticas Elctricas III Autor: Alejandro Furfaro 18 Caractersticas Elctricas IV
Aceptable Requerido En el conector destino En el conector de origen Niveles de Sealizacin
Estado del Bus Las lneas 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- < V IH
(min) D+ y D- < V IL
(max) D+ y D- < V OL
(max) Single Ended 0 (SE0) (D-) (D+) > 200 mV (D-) (D+) > 200 mV D- >V IH (min) D- > V OH (min) y D+ < V OL (max) 0 Diferencial (D+) (D-) > 200 mV
(D+) (D-) > 200 mV D+ >V IH (min) D+ > V OH (min) y D- < V OL (max) 1 Diferencial Autor: Alejandro Furfaro 19 Caractersticas Elctricas V
Idle 2.5 mseg. D- > V IHZ (min) y D+ <V IH (min) D+ > V IHZ (min) y D- <V IH (min) D+ y D- < V IL
(max) pr 2.5 m seg. D+ y D- < V IL
(max) por 10 mseg. D+ y D- <V OL (max) por 10 mseg. Reset Idle 2 mseg. N.A. Conectado (a un port downstream) SE0 por 2.5 mseg. N.A. Desconectado (a un port upstream) Estado Dato K Estado Dato K Resume D- > V IHZ (min) y D+ <V IL (max) D+ > V IHZ (min) y D- <V IL (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 Sealizacin
Estado del Bus Autor: Alejandro Furfaro 20 Sealizacin de Comienzo y Fin de Paquete Caractersticas Elctricas VI Autor: Alejandro Furfaro 21 mediante el no cambio de nivel y los 0 mediante cambios de nivel. Llevado a trminos 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 prdida de sincronismo entre los dos dispositivos.
Para evitarlo se utiliza una tcnica denominada bit Stuffing (Relleno de bits), que consiste en insertar un 0 cada seis 1 consecutivos. USB emplea codificacin de datos NRZI. Consiste en representar los 1 Caractersticas Elctricas VII Autor: Alejandro Furfaro 22 Se dispone de un flujo de comunicacin dedicado entre cada aplicacin y la correspondiente Funcin en el dispositivo. As, una Funcin de un dispositivo puede tener diferentes flujos de comunicaciones con diferentes aplicaciones que la requieran .
En el dispositivo USB, el flujo de comunicacin 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 aplicacin cliente (Client SW) permitindoles a stas el manejo del dispositivo USB Flujo de Informacin en USB I Autor: Alejandro Furfaro 23 Un dispositivo USB se presenta al sistema como una coleccin de Endpoints. Estos Endpoints a su vez se agrupan formando Interfaces. Las Interfaces son vistas de las diferentes Funciones del dispositivo. La comunicacin 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 Informacin en USB II Autor: Alejandro Furfaro 24 Endpoints I Es la porcin identificable de un dispositivo USB que representa el extremo en un flujo de comunicacin entre el Host y dicho dispositivo. Tiene un Nmero definido durante el diseo del dispositivo que lo identifica unvocamente. Transfiere informacin en una sola direccin. Cada dispositivo USB tiene una cantidad de Endpoints independientes entre s, y una direccin unvoca que lo identifica en el sistema, que obtiene desde el Host en el momento de su conexin al bus. As es que, definidos la direccin del dispositivo USB, el Nmero de Endpoint, y la Direccin del Flujo de Datos, se determina el Endpoint del dispositivo con el que se quiere establecer comunicacin. Autor: Alejandro Furfaro 25 Endpoints II Caractersticas de un Endpoint que deben ser conocidas por el Software Cliente a fin de interactuar con l de manera correcta: Nmero de identificacin Direccin 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. Tamao mximo del paquete de datos que puede transaccionar. Autor: Alejandro Furfaro 26 El Endpoint 0 Todos los dispositivos USB deben tener implementado un mtodo de control default que utilice un par de Endpoints (uno de entrada y otro de salida), para que en el momento de su conexin al bus los pueda inicializar el USB System Software en el Host. Este mtodo se conoce como Default control Pipe, y el par de Endpoints que lo compone levan el Nmero 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 alimentacin, o es reseteado. 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 comunicacin 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 enva un requerimiento al dispositivo USB desde el host, el que es seguido por una transferencia de datos en la direccin adecuada. Finalmente se pasa a una fase de Estado. Este tipo de pipes permite comunicaciones bidireccionales.
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 Caractersticas del Endpoint asociado en el dispositivo: direccin de transferencia, tamao mximo del paquete de datos a transmitir,etc. El Cliente de Software que corre en el host enva requerimientos al pipe a travs de I/O Request Paquets (IRPs). El formato de estos depende del Sistema Operativo. El Cliente de Software se entera de la finalizacin de un IRP, cuando recibe un aviso de finalizacin 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. Autor: Alejandro Furfaro 30 Cada Transferencia comprende una o mas transacciones Cada Transaccin contiene un paquete Token, y puede contener adicionalmente paquetes de datos y Handshake Cada paquete contiene un PID y puede tener adems informacin adicional y un CRC Transferencia 1 Transferencia 2 Transferencia 3 Transaccin 1 Transaccin 2 Transaccin 3 Token Datos Handshake PID Info. Adicional CRC Transacciones Autor: Alejandro Furfaro 38 Tipos de Transferencias I Cada tipo de transferencia determina caractersticas importantes del flujo de informacin involucrado. Entre otras contamos las siguientes: Formato de datos impuesto por el USB. Direccin del flujo de comunicaciones. Restricciones en el tamao del paquete de datos a transmitir. Restricciones en el acceso al bus. Restricciones en el tiempo de recuperacin de datos. Secuencias de datos requeridas. Manejo de errores.
Autor: Alejandro Furfaro 39 Tipos de Transferencias II Transferencias de control: Son comunicaciones por irrupcin, no peridicas, iniciadas por el host, que se utilizan en operaciones de comando o status. Transferencias Iscronas: Se trata de un tipo de comunicacin peridica y continua entre el host y un dispositivo USB, utilizadas tpicamente en aplicaciones en donde el tiempo de recuperacin de datos es un factor relevante. No quiere decir que sea crtico el tiempo de respuesta en cuanto a la velocidad de recuperacin de los datos sino ms bien, en cuanto a la periodicidad de acceso a stos.
Autor: Alejandro Furfaro 40 Transferencias de Interrupcin: Son comunicaciones de baja frecuencia, para tamaos de paquete de datos muy pequeos, y tiempo de recuperacin de datos limitado. Transferencias de volumen (bulk): Son comunicaciones de grandes paquetes de datos por irrupcin, no peridicas, utilizadas para transmitir datos que pueden utilizar cualquier ancho de banda disponible y que tambin pueden ser demorados hasta que el ancho de banda requerido se encuentre disponible. Tipos de Transferencias III Autor: Alejandro Furfaro 42 Transferencias de Volumen (Bulk): Formatos de Transacciones I Autor: Alejandro Furfaro 43 Transferencias de Volumen (Bulk): Formatos de Transacciones II Autor: Alejandro Furfaro 44 Transferencias de Control: ormatos de Transacciones III Autor: Alejandro Furfaro 45 Transferencias de Control: Formatos de Transacciones IV Autor: Alejandro Furfaro 46 Transferencias de Interrupcin: Formatos de Transacciones V Autor: Alejandro Furfaro 47 Transferencias Iscronas: Formatos de Transacciones VI Autor: Alejandro Furfaro 48 Transacciones Consecutivas: Formatos de Transacciones VII Autor: Alejandro Furfaro 49 Uso del Ancho de Banda I DataPayload Max Bandwidth (bytes/second) Frame Bandwidth per Transfer Max Transfers Bytes Remaining Bytes/Frame Useful Data 1 32000 3% 32 23 32 2 62000 3% 31 43 62 4 120000 3% 30 30 120 8 224000 4% 28 16 224 16 384000 4% 24 36 384 32 608000 5% 19 37 608 64 832000 7% 13 83 832 Max. 1500000 1500 DataPayload Max Bandwidth (bytes/second) Frame Bandwidth per Transfer Max Transfers Bytes Remaining Bytes/Frame Useful Data 1 3000 25% 3 46 3 2 6000 25% 3 43 6 4 12000 26% 3 37 12 8 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 Autor: Alejandro Furfaro 50 Uso del Ancho de Banda II DataPayload Max Bandwidth (bytes/second) Frame Bandwidth per Transfer Max Transfers Bytes Remaining Bytes/Frame Useful Data 1 150000 1% 150 0 150 2 272000 1% 136 4 272 4 460000 1% 115 30 460 8 704000 1% 88 5 704 16 960000 2% 60 40 960 32 1152000 3% 36 24 1152 64 1280000 5% 20 40 1280 128 1280000 9% 10 130 1280 256 1280000 18% 5 175 1280 512 1024000 35% 2 458 1024 1023 1023000 69% 1 468 1023 Max. 1500000 1500 Limites en las Transferencias Iscronas Protocol Overhead (9 bytes) (2 SYNC bytes, 2 PID bytes, 2 Endpoint + CRC bytes, 2 CRC bytes, and a 1-byte interpacketdelay Autor: Alejandro Furfaro 51 Uso del Ancho de Banda III DataPayload Max Bandwidth (bytes/second) Frame Bandwidth per Transfer Max Transfers Bytes Remaining Bytes/Frame Useful Data 1 107000 1% 107 2 107 2 200000 1% 100 0 200 4 352000 1% 88 4 352 8 568000 1% 71 9 568 16 816000 2% 51 21 816 32 1056000 3% 33 15 1056 64 1216000 5% 19 37 1216 Max. 1500000 1500 DataPayload Max Bandwidth (bytes/second) Frame Bandwidth per Transfer Max Transfers Bytes Remaining Bytes/Frame Useful Data 1 13000 7% 13 5 13 2 24000 8% 12 7 24 4 44000 9% 11 0 44 8 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 Interrupcin Full-speed Limites en las Transferencias de Interrupcin Low-speed Protocol Overhead (13 bytes) (3 SYNC bytes, 3 PID bytes, 2 Endpoint + CRC bytes, 2 CRC bytes, and a 3-byte interpacket delay) Autor: Alejandro Furfaro 52 Uso del Ancho de Banda IV DataPayload Max Bandwidth (bytes/second) Frame Bandwidth per Transfer Max Transfers Bytes Remaining Bytes/Frame Useful Data 1 107000 1% 107 2 107 2 200000 1% 100 0 200 4 352000 1% 88 4 352 8 568000 1% 71 9 568 16 816000 2% 51 21 816 32 1056000 3% 33 15 1056 64 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 Autor: Alejandro Furfaro 53 Enumeracin Antes de comenzar a trabajar con un dispositivo el Host debe averiguar sus caractersticas (Tipos de transferencias, cantidad de endpoints, etc.).
Una vez obtenida esta informacin le asigna al dispositivo un nmero de port lgico en el Bus.
Este proceso se denomina Enumeracin. Autor: Alejandro Furfaro 55 Pasos en la Enumeracin I El usuario conecta el dispositivo a un port de un Hub (Hub root o cualquier hub externo). El dispositivo toma su estado inicial:Attached. Si el Hub est operativo y no est siendo reseteado, alimenta al dispositivo automticamente, si ste es Bus Powered. El dispositivo pasa al estado Powered. Si el dispositivo es Self Powered al attacharse directamente entra al estado Powered. El Hub detecta al dispositivo. Monitorea el estado elctrico 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 Powered El hub no transmite nada al bus. Autor: Alejandro Furfaro 56 Pasos en la Enumeracin II El Host controller encuesta a los hubs para saber si tienen eventos que reportar. Cada Hub utiliza un pipe configurado para transferencias de interrupcin 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 enva al Hub por el pipe de interrupcin 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 especificacin. El Host Controller accede a la informacin completa acera del evento. Autor: Alejandro Furfaro 57 Pasos en la Enumeracin III El Hub resetea al dispositivo. Leda la informacin del port attachado, el Host enva al Hub el comando Set_Port_Feature. En dicho comando utiliza la opcin que le permite solicitar al hub el reset del port. El Hub enva las lneas D+ y D- del port a la condicin de Reset durante 10 mseg (atencin: el reset durar los prximos 10 frames). El Hub detecta la velocidad del dispositvo. Examina las tensiones en ambos terminales D+ y D- en el estado Idle. Segn cual tiene mayor tensin, el dispositivo es High Speed o Low Speed. Segn su diseo el Hub puede efectuar esta comprobacin antes del Reset o inmediatamente despus del mismo. Autor: Alejandro Furfaro 58 Pasos en la Enumeracin IV El Host establece un path de seal entre el dispositivo y el bus. Enva al Hub el comando Get_Port_Status para verificar que el dispositivo finaliz el reset. Esta operacin 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 Default: Los registros del controlador estn 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 direccin de port 0. Autor: Alejandro Furfaro 59 Pasos en la Enumeracin V El Host averigua el tamao mximo de paquete soportado por el default control pipe. Enva el requerimiento Get_Descriptor al Endpoint 0 de la Direccin 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 tamao mximo del paquete est en el byte 8 del Descriptor de Dispositivo. Por eso el Host solo lee sus ocho primeros bytes. Autor: Alejandro Furfaro 60 Pasos en la Enumeracin VI El Host asigna una direccin. Enva el requerimiento Set_Address, con la direccin que le asigna al dispositivo. El dispositivo lo lee, devuelve ACK, y almacena su direccin. Ahora est en el estado Addressed. La direccin asignada es vlida hasta que el dispositivo se desconecte, apague, o resetee. Autor: Alejandro Furfaro 61 Pasos en la Enumeracin VII El Host lee las caractersticas del dispositivo. Enva el requerimiento Get_Descriptor Endpoint 0 del dispositivo. Direccin 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 configuracin informada, el host controller enva un Get_Descriptor al dispositivo Port y Endpoint, dem anterior Descriptor de Configuracin. El dispositivo responde el requerimiento. Descriptor de la configuracin requerida Descriptores de interfaz que dependen de esta configuracin Descriptores de endpoint que dependen de cada interfaz Descriptores de string si los hubiera Autor: Alejandro Furfaro 62 Pasos en la Enumeracin VIII El Host carga un Device Driver. En base a la informacin de Vendor ID, Product ID, Release number, e informacin de clase ledos 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 adems la informacin de los archivos de Sistema .INF. El Device Driver del dispositivo selecciona una configuracin. Comando Set_Configuration. El dispositivo est ahora en el estado Configured. El dispositivo est listo para ser utilizado. Autor: Alejandro Furfaro 63 Descriptor de Dispositivo Offset Campo Tamao Valor Descripcin 0 bLength 1 Number Tamao del Descriptor en Bytes 1 bDescriptorType 1 Constant Tipo de Descriptor DEVICE 2 bcdUSB 2 BCD Nmero de versin de la Especificacin USB en Binario Codificado Decimal (ej., 1.10 es 110H). Este campo identifica el release de la Especificacin 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 configuracin especificar su propia informacin de clase y todas trabajarn 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 definicin 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 cdigo se evala de acuerdo al valor del campo bDeviceClass. Si el campo bDeviceClass es cero, este campo tambin 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 cdigos se evalan de acuerdo con el valor de los campos bDeviceClass ybDeviceSubClass. Si un dispositivo soporta protocolos de clase especficos sobre la base de dispositivo y no de interfaz, este cdigo identifica el protocolo que utiliza el dispositivo tal como se lo define en la especificacin de clase de ese dispositivo. Si este campo vale cero, el dispositivo no utiliza protocolos especficos de clase. Sin embargo puede utilizar protocolos especficos 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 Tamao mximo de paquete para endpoint 0 (valores vlidos 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 Nmero de versin del Dispositivo en Binario Codificado Decimal 14 iManufacturer 1 Index Indice de descriptor de string que describe al fabricante 15 iProduct 1 Index Indice de descriptor de string que describe al producto 16 iSerialNumber 1 Index Indice al descriptor de string que describe el nmero de serie del dispositivo 17 bNumConfigurations 1 Number Nmero de configurationes posibles 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. */ }; Autor: Alejandro Furfaro 65 Descriptor de Configuracin Offset Campo Tamao Valor Descripcin 0 bLength 1 Number Tamao del Descriptor en Bytes 1 bDescriptorType 1 Constant Tipo de Descriptor CONFIGURATION 2 wTotalLength 2 Number Longitud total de los datos retornados para esta configuracin. Incluye la longitud combinada de todos los descriptores de configuracin, interfaz, endpoint, y especficos de clase o fabricante retornados para esta configuracin. 4 bNumInterfaces 1 Number Nmeo de interfaces soportadas por esta configuracin 5 bConfigurationValue 1 Number Valor a utilizar como argumento en el requerimiento SetConfiguration() para seleccionar esta configuracin 6 iConfiguration 1 Index Indice al descriptor de string que describe esta configuracin 7 bmAttributes 1 Bitmap Caractersticas de la configuracin : 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 histricas. Para indicar la cantidad de mA requeridos, una configuracin de dispositivo que utiliza alimentacin del Bus y una fuente local, reporta un valor distinto de cero en MaxPower y setea D6. La fuente de alimentacin actual en tiempo de ejecucin se determina mediante el requerimiento GetStatus (DEVICE). Si una configuracin de dispositivo soporta remote wakeup, D5 se pone en 1. 8 MaxPower 1 mA Mximo consumo de alimentacin desde el Bus para esta configuracin especfica, del dispositivo USB cuando se encuentra completamente operacional. Se expresa en unidades de 2mA (p.ej., 50 = 100mA). Nota: La configuracin de un dispositivo indica si esa configuracin 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 alimentacin externa, actualiza su estado de dispositivo para indicar que ya no est self-powered. Un dispositivo no puede incrementar su toma de alimentacin del bus, cuando pierde su alimentacin externa, mas all de la cantidad reportada por esta configuracin. Si un dispositivo puede continuar operando cuando se desconecta de su fuente de alimentacin externa, continuar hacindolo, caso contrario cesa su operacin. El USB System Software puede determinar la causa de la falla chequeando el estado y detectando la prdida de alimentacin del dispositivo. Autor: Alejandro Furfaro 66 Interface Descriptor Offset Campo Tamao Valor Descripcin 0 bLength 1 Number Tamao del Descriptor en Bytes 1 bDescriptorType 1 Constant Tipo de Descriptor INTERFACE 2 bInterfaceNumber 1 Number Nmero de interfaz. Valor base cero que identifica el dice en un array de interfaces concurrentes soportadas por esta configuracin 3 bAlternateSetting 1 Number Valor utilizado para seleccionar ajustes alternativos para la interfaz identificadas en el campo previo. 4 bNumEndpoints 1 Number Nmero 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 Cdigo de clase (asignado por el USB). El valor cero se reserva para futura estandarizacin. Si este campo se pone en FFh, la clase de esta interfaz es "vendor-specific". El resto de los valores est reservado para su asignacin por el USB. 6 bInterfaceSubClass 1 SubClass El Cdigo de Subclase (asignado por el USB). Estos cdigos son clasificados por el valor de campo bInterfaceClass. Si el campo bInterfaceClass es 0, este campo tambin debe estar en 0. Si el campo bInterfaceClassno es FFh, todos los valores se reservan para su asignacin por el USB. 7 bInterfaceProtocol 1 Protocol Cdigo de Protocolo (asignado por el USB). Estos cdigos se clasifican de acuerdo con el valore de los campos bInterfaceClass y bInterfaceSubClass. Si una interfaz soporta requerimientos "class-specific", este cdigo identifica los protocolos que usa el dispositivo de acuerdo con lo definido en la especificacin 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. Autor: Alejandro Furfaro 67 Descriptor de Endpoint Offset Campo Tamao Valor Descripcin 0 bLength 1 Number Tamao del Descriptor en Bytes 1 bDescriptorType 1 Constant Tipo de Descriptor ENDPOINT 2 bEndpointAddress 1 Endpoint Direccin del endpoint en el dispositivo USB. Se codifica como sigue: Bit 3...0: Nmero de endpoint Bit 6...4: Reservados, se ponen en 0 Bit 7: Direccin 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 = Interrupt El resto de los bits estn reservados. 4 wMaxPacketSize 2 Number Es el mximo tamao de paquete que este endpoint es capaz de enviar o recibir cuando se selecciona esta configuracin. Para endpoints iscronos, 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 interrupcin, bulk, y control, se pueden enviar payloads de datos mas pequeos, pero esto terminar la transferencia y podr o no requirirse intervencin 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 iscronos este campo debe estar en 1. Para endpoints de interrupcin, este campo puede valer desde 1 a 255. 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 Configuracin, Interfaz y Endpoint. Ejemplos Autor: Alejandro Furfaro 69 Descriptor de String Offset Campo Tamao Valor Descripcin 0 bLength 1 N+2 Tamao del Descriptor en Bytes 1 bDescriptorType 1 Constant Tipo de Descriptor STRING 2 wLANGID[0] 2 Constant Cdigo de LANGID Cero .. . . N wLANGID[x] 2 Cdigo de LANGID x Autor: Alejandro Furfaro 70 Descriptores de String. Ejemplos const 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 Autor: Alejandro Furfaro 71 Datos para un requerimiento SETUP Especifica la cantidad de bytes qu se transmitirn en en la segunda fase de datos. La direccin de la transaccin la especifica el bit D7 de bmRequest Especifica al requerimiento especfico que se va a enviar (ver siguiente slide) Especifica las caractersticas del requerimiento especfico que se va a enviar Autor: Alejandro Furfaro 72 Requerimientos Standard bmRequestType bRequest wValue wIndex wLength Data 00000000B 00000001B 00000010B CLEAR_FEATURE Feature Selector Zero Interface Endpoint Zero None 10000000B GET_CONFIGURATION Zero Zero One Configuration Value 10000000B GET_DESCRIPTOR Descriptor Type and Descriptor Index Zero or Language ID Descript or Length Descriptor 10000001B GET_INTERFACE Zero Interface One Alternate Interface 10000000B 10000001B 10000010B GET_STATUS Zero Zero Interface Endpoint Two Device, Interface, or Endpoint Status 00000000B SET_ADDRESS Device Address Zero Zero None 00000000B SET_CONFIGURATION Configuration Value Zero Zero None 00000000B SET_DESCRIPTOR Descriptor Type and Descriptor Index Zero or Language ID Descript or Length Descriptor 00000000B 00000001B 00000010B 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 Autor: Alejandro Furfaro 73 Cdigos para Requerimientos y Tipos Standard bRequest Valor GET_STATUS 0 CLEAR_FEATURE 1 Reservado para uso Futuro 2 SET_FEATURE 3 Reservado para uso Futuro 4 SET_ADDRESS 5 GET_DESCRIPTOR 6 SET_DESCRIPTOR 7 GET_CONFIGURATION 8 SET_CONFIGURATION 9 GET_INTERFACE 10 SET_INTERFACE 11 SYNCH_FRAME 12 Tipo de Descriptor Receptor Valor DEVICE_REMOTE_WAKEUP Device 1 ENDPOINT_HALT Endpoint 0 Tipo de Descriptor Valor DEVICE 1 CONFIGURATION 2 STRING 3 INTERFACE 4 ENDPOINT 5 HDMI tiene tres canales de comunicacin fsicamente 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, vdeo y datos auxiliares se transmite a travs de los tres canales de datos TMDS. Un reloj TMDS, por lo general funciona a la tasa de pxeles de vdeo, se transmite en el canal de reloj TMDS HDMI canals de comunicacion HDMI lleva un canal VESA DDC. El DDC se utiliza para la configuracin 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 configuracin 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 Hay 3 tipos de conector HDMI, tipo A, B y C. Los tres conectores llevan todo requiere seales HDMI, incluyendo un enlace TMDS. El conector de tipo B es ligeramente ms grande y lleva un segundo enlace de TMDS, que es necesario para apoyar pantallas de muy alta resolucin usando doble enlace. El conector de tipo C lleva las mismas seales que el Tipo A, pero es ms compacto y destinados para aplicaciones mviles. 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 harn valer la seal de alimentacin 5 V cuando el transmisor est usando las seales DDC o TMDS El acoplamiento de HDMI funciona en uno de tres modos: Vdeo Perodo de datos - los pxeles activos de una lnea de video activo se transmiten Perodo 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 vdeo o describir el transmisor. Control de perodo-Se utiliza cuando no hay vdeo, audio, o datos auxiliares se necesita transmitir. Se requiere entre dos perodos que no se controlan los perodos. El acoplamiento de HDMI Los datos de vdeo pueden tener un tamao de pxel 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 pxeles. Pxeles de vdeo de datos de vdeo de codificacin es tal que los 8 bits convertidos a 10 bits por el transmisor de HDMI. Los pxeles 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 vdeo Un paquete infoframe lleva uno infoframe. El infoframe proporcionada por HDMI se limita a 30 bytes ms un byte de suma de comprobacin. Transmisor HDMI siempre transmitir una infoframe AVI, al menos, una vez cada dos campos de vdeo si el transmisor es compatible. El AVI infoframe se transmitir aunque tal transmisor est transmitiendo RGB y de vdeo no pixel-repiti. Para el formato AVI infoframe consulte: Seccin 8.2 de la especificacin HDMI 1.3 Un paquete infoframe
Transmisor HDMI deber leer el EDID y primera extensin CEA para determinar las capacidades soportadas por el receptor. Transmisor HDMI comprobar la E-EDID para la presencia de un vendedor HDMI especfica bloque de datos dentro de la primera extensin CEA para determinar si se trata de un dispositivo HDMI / DVI. Todo el receptor soporta 640 * 480P formato de vdeo por defecto Transmisor HDMI Un receptor HDMI aducir nivel de alta tensin 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 conexin en caliente Deteccin pin. Un receptor HDMI