Genealogía Enero de 1996, versión 1.0 -> 1,5 Mbps Conocida como Low Speed Septiembre de 1998, versión 1.1 -> 12 Mbps Conocida como Full Speed Universal Serial Bus Clase uno Septiembre de 2000, versión 2.0 -> 480 Mbps La cátedra enseña USB versión 1.1 Objetivos de USB Técnicas Digitales III Expansión de periféricos sencilla: Detección automática de dispositivos Conexión y desconexión sin re-iniciar Soporte Plug & Play Garantiza ancho de banda (QoS) Aplicaciones CTI, Consumo y Productividad Compite con FireWire Temas Cap. 4 Repaso de la Arquitectura Cap. 5 Modelo de flujo de datos en USB Cap. 7 Especificación Eléctrica Cap. 8 Capa Protocolo 4.1 Descripción del Sistema I Estructura Jerárquica Un Host Controller Una PC Un Hub Root La red se amplía utilizando Hub's 4.1 Descripción del Sistema II En la norma está todo No es fácil encontrarlo Recorreremos sus aspectos más sobresalientes Capítulo IV Host, hay uno sólo Dispositivos Recorrido por la Norma USB 1.1 Función (Dotan al sistema de alguna funcionalidad, tal como 1 Modem, 1 Parlante, 1 Puerto Serial, etc) Hub (Provee conexiones adicionales) Un dispositivo cumple USB si: Comprende al protocolo USB Responde a las operaciones estándar de USB Puede describirse como dispositivo Repaso de la Arquitectura 4.2 Interface Física II Las conexiones son punto a punto Upstream (hacia el Host) Downstream (hacia el Hub o Función) Cinco Cables por el cable (VBUS=5V, D-, D+, 0V y GND) Hay dos tipos de conectores El conector A en dirección Upstream El conector B en dirección Downstream Es para evitar loops en los Hubs 4.2 Interface Física III 4.1 Descripción del Sistema III Host Controller's OHCI Open Host Controller Interface, desarrollado por Compaq. UHCI Universal Host Controller Interface, desarrollado por Intel (su módulo de SW es mas complejo) EHCI Enhanced Host Controller Interface, mas reciente, se incorporó con USB 2.0 (Perdón dije que de USB 2.0 no hablaría) 4.2 Interface Física I Full Speed 12 Mbps Low Speed 1,5 Mbps Ambos conviven en el mismo bus Es diferencial NRZI (¿para qué?) Bit Stuffing (¿Por qué?) SYNC before Packet 4.4 Bus Protocol I Es un protocolo por encuesta El Host Controller inicia las encuestas, estas son transacciones Una transacción está compuesta por paquetes: TOKEN DATA HANDSHAKE (dependiendo del tipo de transferencia) 4.4 Bus Protocol II Pipe: Modelo de transferencia de datos Stream (no definidos por USB) Mensaje (definidos en la norma) Los cables de datos está cargados a ambos extremos, esto permite la detección de la conexión y desconexión de dispositivos y Conocer si el dispositivo es Low o Full Speed No hay límite de distancia para los cables, el límite está dado por las pérdidas admitidas. 4.3 Power Aspecto distribución Fuente o destino en el Host endpoint en el dispositivo Dos tipos de pipes 4.2 Interface Física IV bus-powered devices self-powered devices Un Hub proveerá energía desde una fuente propia o desde el bus mismo. Posee además gestión de alimentación de los dispositivos suspend resume 4.4 Bus Protocol V Las transacciones son programadas (¿por quién?) El NAK es utilizado para controlar el flujo de información. Cuando una transacción es NAKed es retransmitida por el host, a su tiempo Señalización diferencial CRC protege campos de control y de datos Detección de conexión y desconexión Recuperación automática de errores (NAKed) Control de flujo Hay pipes de datos y de control, independencia entre el control del dispositivo y la función en sí misma Los pipes aparecen cuando el dispositivo se configura. Definiciones de un pipe involucran aspectos como: Así se van programando tiempos para cada pipe en el bus. Se evita sobrecarga en los buffer's. 4.5 Fortalezas 4.4 Bus Protocol III Bandwidth, tipo de transferencia, dirección, tamaño de buffer. 4.4 Bus Protocol IV Hay un pipe que siempre existe: El Default Control Pipe Por el Default Control Pipe se accede a la configuración, al estado y se controla del dispositivo 4.7 Tipos de flujo de datos I Flujo de datos y flujo de control Sucede en pipes (Host software - endpoint) Es unidireccional, así se puede diferenciar el Up Stream del Down Stream Un dispositivo puede tener varios pipes Cuatro tipos de transferencias: Control, Data Bulk, Data Interrupt y Data Isochronous 4.7 Tipos de flujo de datos II Asignación de ancho de banda Se hace a los pipes Infiere un buffer determinado así conviven dispositivos con diferentes requerimientos de BW sobre un mismo bus 4.6 Configuración del Sistema I En la conexión Todo dispositivo se conecta a un Hub (Hub root) El Host le asignará un address a través del Default Control Pipe El Host define si es Hub o Función Luego el Host le pedirá a la función otros datos y notificará al SO de la disponibilidad de dicha función 4.6 Configuración del Sistema II En la desconexión La desconexión es notificada al SO En caso de un Hub arrastrará a los dispositivos conectados a el Enumeración: Proceso por el cual el Host le asigna un número al dispositivo y obtiene de este información necesaria para su activación en el SO 4.8 Dispositivos USB III Hay dos grandes grupos de clases de dispositivos: Hubs, son lo únicos que pueden proveer de mas puntos (ports) de conexión USB Funciones, son el resto. Los que proveen de capacidades al Host (mouse, modem, serial converter, etc) 4.8 Dispositivos USB I Los dispositivos están clasificados por "clases" Cada dispositivos es caracterizado por un número que es asignado al momento de su enumeración Todo dispositivo "que se precie de tal" deberá manejar la Default Control Pipe (endpoint 0) Por el Default Control Pipe el Host accederá a información complementaria del dispositivo 4.8 Dispositivos USB II La información complementaria puede ser Standard, Información común a todos los dispositivos USB Identificación de Fabricante, Clase, alimentación Descriptores de Dispositivo, Configuración, Interface y endpoint's de Clase, información propia de la clase USB Vendor, información propietaria Capítulo V 4.8 Dispositivos USB IV El Hub posee dos partes Modelo de flujo de datos en USB Hub Controller, es una interface de registro que permite comunicación con el Host. Permite configurar al Hub y controlar sus puertos. Hub Repeater, es un switch controlado por el protocolo. Opera entre el puerto upstream y los puertos downdstream. Posee capacidad de señalizar reset, suspend y resume. 4.8 Dispositivos USB V 5.1 Áreas de implementación I Funciones Se conectan a un Hub Típicamente es un periférico Puede ser un dispositivo compuesto, multifunción y poseer capacidades de función y de hub Cada función fija los recursos que necesita (BW, delay, Energía) Antes de ser utilizado tiene que ser enumerado Cada función puede tener múltiples configuraciones 5.1 Áreas de implementación IV Estructura de capas 5.1 Áreas de implementación II La capa de interface USB provee conectividad física, señalización y de paquetes entre el Host y los dispositivos La capa de dispositivo USB es la vista del USB System Software para operaciones del protocolo USB, como por ejemplo la enumeración La capa Función provee funcionalidades adicionales al host a través de un client software apropiado 5.2.3 Topología Física Client Software: Software en el Host que se corresponde con el dispositivo, el driver, generalmente provisto por el SO o hecho por el fabricante del dispositivo. 5.1 Áreas de implementación III USB System Software: Interface entre el USB Host Controller y el client SW. Es provisto por el SO USB Host Controller: Encargado de la conexión de un dispositivo USB physical device: El todo hardware del lado USB del dispositivo. 5.3 Flujos de comunicación I Es independiente para cada par client SW – Función Un conjunto de endpoint's forman una interface Termina en un endpoint -> Son unidireccionales El dispositivo lógico es la totalidad de endpoint's al cual se le asignó un address en la enumeración Cada endpoint a su vez tendrá un número Así address de dispositivo, de endpoint y la dirección (in, out) definen univocamente a un endpoint 5.2.4 Topología Lógica Este es el BUS 5.2.5 Relación CSw y Función Relación uno a uno Deben utilizar las interfaces de programación de USB del SO 5.3 Flujo de comunicación V Endpoint cero, Default Control Pipe Necesario Es el único endpoint bi-direccional inicializa y manipula dispositivos lógicos Accede a información de configuración y de estado Soporta transferencia de control Está siempre disponible 5.3 Flujo de comunicación VI 5.3 Flujo de comunicación III endpoint's distintos de cero Son 15 endpoint's in y 15 endpoint's out Los utilizan las funciones Están disponibles sólo después de la enumeración (¿por qué endpoint se realiza la enumeración?) (¿para qué se realiza la enumeración?) 5.3 Flujo de comunicación IV Así un endpoint se caracteriza por: frecuencia/latencia de acceso al bus Ancho de banda requerido Número de endpoint Tratamiento de errores Tamaño máximo de paquete Tipo de transferencia Dirección 5.3 Flujo de comunicación IX Message Pipe Asociación endpoint en el dispositivo porción de SW en el Host Transferencia de buffer a buffer (FIFO) Los pipes son de dos tipos El USB System Software garantiza que no habrá simultaneidad de Request por dispositivo Pero un message pipe puede ser interrumpido por el inicio de otro Request Utilizan el mismo número de endpoint (in y out) De control: La utiliza el Default Control Pipe, Comandos, Configuración, Status Isocrono: Periódicas, Real-Time, no Segura Interrupt: Paquetes chicos, Seguro, BW mínimo garantizado Bulk: Grandes Volúmenes de Datos, Seguro, "Best Effort" Pipe Request (Siempre del Host al dispositivo) Data (La dirección depende del Request) Status (En Sentido opuesto al Data) 5.4 Tipos de transferencias El Default Control Pipe es siempre un message pipe Posee tres estados: 5.3 Flujo de comunicación VII Stream, estructura no definida por USB Message, estructura definida por USB En ningún caso los datos son interpretados por USB (aún los pipes de tipo message) Recordar la importancia del Default Control Pipe 5.3 Flujo de comunicación VIII La información es transmitida o recibida por el client SW por medio de IRP (I/O Request Packet) en la interface denominada USB Driver Esta interface depende del SO que se trate Respuestas posibles: STALL, abort de la transferencia NAK, significa que el dispositivo está ocupado, no significa un error Para profundizar en transferencias 5.5 a 5.8 5.9 Acceso al bus I El proceso de asignación de ancho de banda se denomina "transfer management" Intervienen cuatro entidades Client SW generando IRP's USB Driver transfiere los IRP's al Host Controller Driver (HCD) utilizando un tipo de transferencia determinado. Interviene en el proc. de enumeración El HCD transforma los IRP's en transacciones El Host Controller transforma las transacciones en Paquetes 7.1.1 Características eléctricas Señalización diferencial VOL(max) 0,3V VOH(min) 2,8V Half Duplex Detecta modo diferencial y modo común (¿Para qué modo común?) 7.1.5 Identificación de la velocidad Los identifica por el R de Pull Up Capítulo VII Full Speed a D+ Low Speed a D- RPU=1.5K conectada a una fuente de 3V a 3,6V Especificación eléctrica 7.1.5 Full Speed 7.1.7 Niveles de señal Dos estados J y K Los cruces indican 0's, la ausencia de cruces 1's J Idle K Resume 7.1.5 Low Speed Conexión Low Speed Desconexión Proceso de RESET Conexión Full Speed 7.1.7 Señalización de datos RESUME Actividad en el puerto Upstream 20mSg de estado K, seguido de un EOP Low Speed Comenzando con un SOF 7.1.7 Señalización de datos Remote Wake Up Primero pasaje de estado J a K Esto significa el primer 0 del SYNC Fin de paquete Resume iniciado desde la función de 1 a 15mSg de estado K, seguido de EOP Low Speed y luego Alta impedancia 7.1.9 Bit Stuff Inicio de datos (SYNC) 2tB de SE0 1tB de estado J Alta impedancia 7.1.7 Señalización de datos RESET 10mSg por lo menos de SE0 Lo genera el HUB o es ordenado por el Host Controller desde el USB System Software SUSPEND Idle por mas de 3mSg El SOF evita entrar en Suspend La R de Pull Up mantiene el estado Idle 8.3 Formato de los paquetes Todo comienza con un estado IDLE (Estado J sostenido "1" para USB 1.1) Seguido por el SYNC Luego tendremos Token Data Handshake, si lo hubiera Capa Protocolo Definición de Paquetes y sus Campos Formato de las Transacciones en los diferentes tipos de transferencia Mecanismos de detección y recuperación de errores Finalizando con un End Of Packet (2 SE0 + 1 J("1") Termina en el mismo estado que comenzó 8.3.1 Packet Identifier (PID) Capítulo 8 Son cuatro bits Determinan el formato del paquete Posee su propio mecanismo de detección de error Si la función no puede responder al paquete identificado ignora el pedido Bit ordering & Synchronization Low Significant Bit (LSB) First Todos los paquetes comienzan son un campo SYNC (00000001), sirve para sincronizar el reloj del receptor El campo SYNC es precedido por la señalización de IDLE del bus El compo SYNC es sucedido por el campo identificador de paquete (PID) De ahora en mas no se mostrará el campo SYNC 8.3.3 Campo número de frame Presente sólo el Start Of Frame (SOF) token solamente Es de 11 bits Lo incrementa el Host en uno en cada Frame, estos se suceden cada 1mSg Al llegar a 7FFH vuelve a cero 8.3.2 Campo Dirección Posee dos partes Function address endpoint address Function Address cero reservado para el estado Default 8.4.1 Formato del paquete TOKEN El TOKEN puede ser IN, OUT o SETUP El Host es el único que emite este tipo de paquete Notar que es de 3 bytes, luego debe venir un EOP 8.4.2 Formato del SOF Hay uno cada 1mSg Es una transacción TOKEN sólo Es señalización, nada mas Sirve como mecanismo de tracking Es de 3 bytes seguido de EOP 8.3.4 Campo Data Va de cero a 1023 bytes Debe ser un número entero de bytes 8.3.5 CRC Todos los campos distintos del PID son protegidos por un Código de Redundancia Cíclica (CRC) No considera el bit de stuffing El CRC en los paquetes TOKEN es de 5 bits (G(X) = X5 + X2 + 1) El CRC en los paquetes DATA es de 16 bits (G(X) = X16 + X15 + X2 + 1) Para profundizar 8.4.3 Formato del paquete DATA Número entero de bytes, puede ser cero 8.4.5 Handshake Responses 8.5.1 Transacciones BULK 8.4.4 Formato paquete Handshake Sólo existe en transferencia que admiten control de flujo Es de un byte seguido de EOP 8.5.2 Transferencias de CONTROL 8.5.1 Transferencias BULK 8.5.3 Transferencias Interrupt Toda transacción BULK comienza con DATA0 DATA0 y DATA1 servirá como mecanismo de error 8.5.2 Transferencias de CONTROL 8.6.1 Inicialización via SETUP TOKEN 8.5.4 Transferencia Isochronous 8.6.2 Transacciones de Dato exitosas 8.5 resumen Tipo de Transferencia Control Bulk Interrupción Isócrona Uso típico Configuración Impresora, scanner Mouse, Teclado Audio Obligatoria Soportada por dispositivos Low Speed Corrección de errores Si No No No Si No Si No Si Si Si No Tipo de pipe Message Stream Stream Stream Garantiza Velocidad de envío No No Si Si Garantiza mínimo tiempo de acceso a la No información No Si Si Tamaño de datos por Endpoint (Full Speed) 8, 16, 32, ó 64 bytes 8, 16, 32, ó 64 bytes 1 a 64 bytes hasta 1023 bytes Tamaño de datos por Endpoint (Low Speed) 8 bytes No aplica 8 bytes No aplica Ancho de banda reservado por frame 10% Ninguno 90 % (ambas combinadas) 8.7.2 Timing 8.6.3 Transacciones DATA corruptas o no aceptadas 8.6.4 ACK corrupto