Protocolo USB: Tipos de pacotes USB e transferências USB (Parte 2/6)

Protocolo USB: tipos de paquetes USB y transferencias USB (Parte 2/6)

Después de analizar las características y la arquitectura del USB, pasemos a su protocolo. Una interfaz USB tiene varias capas de protocolo. La mayoría de las veces, las capas de nivel inferior son manejadas individualmente por el controlador IC del host, mientras que el diseñador final necesita trabajar en las capas de nivel superior. Todo protocolo de comunicación implica el intercambio de paquetes. Lo mismo ocurre con el USB. Estos paquetes encapsulan información de una manera organizada y definida por defecto. Estos paquetes suelen contener información relacionada con:

• Controlar el intercambio de datos

• Intercambio de datos en forma de carga útil real

• Detección y corrección de errores mediante verificación de estado

Campos de paquetes USB

En USB, el LSB del paquete se transmite primero. Un paquete USB contiene diferentes campos. Ellos son:

• Sincronizar : Es un campo obligatorio que aparece al principio del paquete. Este campo sincroniza el reloj del receptor con el del transmisor. Para el modo de velocidad baja y máxima, este campo es de 8 bytes y para el modo de alta velocidad es de 32 bytes.

• PID : PID significa ID de paquete. Indica el tipo de paquete que se envía. Este campo tiene una longitud de 8 bits. Los cuatro bits superiores identifican el tipo de paquete y los cuatro bits inferiores son un complemento bit a bit de los cuatro bits superiores. Los cuatro bits inferiores ayudan con la detección de errores.

Tabela listando campos de pacotes USB

Fig. 1: Tabla que enumera los campos del paquete USB

• ADDR : este campo contiene la dirección de designación del dispositivo USB. Es de 7 bits, lo que significa que puede admitir 27 ¬=127 dispositivos.

• PEND : Este campo especifica el número de terminal. Son 4 bits, lo que significa que puede indicar 2¬¬4¬¬ ¬¬= 16 posibles puntos finales.

CRC: CRC significa verificación de redundancia cíclica. Este campo se utiliza para comprobar los datos del paquete en busca de errores mediante el proceso CRC.

Para paquetes de token se utiliza CRC de 5 bits y para paquetes de datos se utiliza CRC de 16 bits.

• POE : EOP significa Fin de Paquete. Este campo señala las líneas de datos a cero de extremo único (SE0) durante aproximadamente 2 bits, seguido por el estado J (estado inactivo) durante 1 bit.

Tipos de paquetes USB

Básicamente, existen cuatro tipos de paquetes de datos:

1. Paquetes de tokens : estos paquetes los envía únicamente el host. La estructura del paquete contiene un byte PID, 11 bits de dirección y un CRC de 5 bits. Tipos de paquetes de tokens:

Imagem mostrando o formato dos dados dos pacotes de token

Fig. 2: Imagen que muestra el formato de datos de los paquetes de tokens

• En: este paquete notifica al dispositivo USB que el host desea leer información.
• Fuera: este paquete notifica al dispositivo USB que el host desea escribir información.
• Configuración: este paquete se utiliza para iniciar la transferencia de control.
Con USB2.0, se agregaron dos paquetes más:
• Ping: antes de enviar el par de paquetes SALIDA/DATOS, este token pregunta al dispositivo USB si está listo para recibir el par de paquetes SALIDA/DATOS.
Dividido: este token se utiliza para comunicarse con un dispositivo de baja o máxima velocidad en un bus de alta velocidad.

2. Paquetes de datos: hay dos tipos de paquetes de datos, Datos0 y Datos1. La estructura del paquete contiene un byte PID, un campo de datos y un CRC de 16 bits. El campo de datos puede transportar de 0 a 1023 bytes de datos. Los datos siempre deben enviarse en múltiplos de bytes.

Imagem mostrando o formato dos pacotes de dados

Fig. 3: Imagen que muestra el formato de datos de los paquetes de datos.

• Para dispositivos de baja velocidad, el campo de datos máximo es de 8 bytes.
• Para dispositivos de máxima velocidad, el campo de datos máximo es 1023 bytes.
• Para dispositivos de alta velocidad, el campo de datos máximo es 1024 bytes

Después de USB2.0, se agregaron dos tipos más, Data2 y MData. Sólo se utilizan en transferencias de alta velocidad y transferencias isócronas de gran ancho de banda cuando es necesario transferir más de 1024 bytes a 8192 kB/s.

3. Paquetes de protocolo de enlace : estos paquetes se envían principalmente en respuesta a paquetes de datos. Consisten simplemente en un byte PID. Hay tres tipos de paquetes de protocolo de enlace:

Imagem mostrando o formato de dados dos pacotes de handshake

Fig. 4: Imagen que muestra el formato de datos de los paquetes de protocolo de enlace

• ACK – Acuse de recibo del paquete recibido
• NAK: indica que los paquetes no se pueden recibir ni enviar temporalmente. También se utiliza para indicar que no hay datos para enviar.
• STALL: indica que el dispositivo está en un estado de error y requiere intervención del host
Con USB2.0, se agregaron dos paquetes más:
• NYET: indica que la transacción dividida aún no se ha completado.
ERR: indica error en la transacción de división
4. Paquetes de inicio de trama (SOF) : el paquete SOF consta de un número de trama incremental de 11 bits. En un bus de alta velocidad, el host envía este paquete cada 1 ms y en un bus de alta velocidad cada 125 nodos. Este paquete se utiliza para sincronizar la transferencia isócrona.
Imagem mostrando o formato de dados dos pacotes de início de quadro (SOF)
Fig. 5: Imagen que muestra el formato de datos de los paquetes de inicio de trama (SOF)

Actas

Una transacción exitosa consta de hasta tres fases que ocurren en secuencia. Son fase de token, fase de datos y fase de protocolo de enlace.

Diagrama de blocos de transação USB

Fig. 6: Diagrama de bloques de transacciones USB

Estas fases garantizaron la transferencia segura de datos. Hay tres tipos de transacciones:

Tabela listando tipos de transações USB

Fig. 7: Tabla que enumera los tipos de transacciones USB

Tipos de transferencia USB

Tipos de transferencias USB

Tabela listando tipos de transações USB

Fig. 8: Tabla que enumera los tipos de transferencias USB

Actualmente, USB admite cuatro tipos de modos de transferencia. Cada uno de ellos está diseñado para resolver diferentes propósitos. Ellos son :

1. Transferencias de control

Las transferencias de control se utilizan para transportar información relacionada con la configuración de dispositivos periféricos. El anfitrión aprende sobre el periférico a través de esta transferencia. También admite flujo de comunicación de tipo comando y estado. El punto final de control predeterminado es siempre cero. Es el punto final de control que responde a consultas del host, como la descripción del dispositivo, mediante la transferencia de control.

Hay tres pasos en la transferencia de control y cada paso se compone de una o más transacciones. Ellos son:

• Etapa de configuración : la transferencia de control siempre comienza en esta etapa. En esto, el host envía la consulta/solicitud al dispositivo USB (periférico).

• Etapa de datos – En esta fase se realizan varias transacciones IN o OUT. El paquete de Datos contiene información relacionada con la solicitud realizada en el paso anterior.

• Etapa de estado : esta etapa utiliza transacciones de ENTRADA o SALIDA. Este paso siempre ocurre para proporcionar el estado/resultado de la solicitud realizada por el anfitrión.

Las transferencias de control son compatibles con todos los modos de velocidad. El tamaño máximo de carga útil de datos para paquetes de datos en la etapa de datos es diferente para cada modo de velocidad. Para dispositivos de baja velocidad, es de 8 bytes. Para dispositivos de alta velocidad, puede ser de 8, 16, 32 o 64 bytes. Para dispositivos de alta velocidad, es de 64 bytes. Estos bytes no incluyen bits PID y CRC.

2. Transferencias masivas

Las transferencias masivas se utilizan para transferir grandes cantidades de datos de forma secuencial. No tienen ancho de banda garantizado. El traspaso ocurre cuando queda algo de ancho de banda después de asignar ancho de banda para control, interrupción y traspaso isócrono. Si no hay ancho de banda disponible o el bus está ocupado, la transferencia puede tardar mucho en completarse.

Las transferencias masivas son unidireccionales. Sólo son compatibles con dispositivos Full Speed ​​y High Speed. El tamaño máximo de carga útil de datos para paquetes de datos es diferente para cada modo de velocidad. Para dispositivos de máxima velocidad es de 8, 16, 32 o 64 bytes. Para dispositivos de alta velocidad, es de hasta 512 bytes. Estos bytes no incluyen bits PID y CRC.

3. Transferencias isócronas

La transferencia isócrona se utiliza cuando es importante entregar datos a una velocidad constante, incluso si algunos datos se pierden o dañan. Existe un ancho de banda garantizado para la transferencia isócrona, pero no hay garantía de entrega libre de errores. Por lo general, se utilizan para transmitir información urgente, como audio o video. No debería haber demoras en la transmisión de datos para la transmisión de audio o video en tiempo real; de lo contrario, se producirán fallos en la salida.

Son unidireccionales y utilizan transacciones IN o OUT. Una característica especial de la transferencia isócrona es que no hay protocolo de enlace de paquetes en la transacción. Sólo son compatibles con dispositivos Full y High Speed.

El tamaño máximo de carga útil de datos para paquetes de datos es diferente para cada modo de velocidad. Para dispositivos de máxima velocidad, es de hasta 1023 bytes. Para dispositivos de alta velocidad, es de hasta 1024 bytes. Estos bytes no incluyen bits PID y CRC.

4. Detener transferencias

Interrupt Transfer utiliza sondeo para verificar si hay algún dispositivo que quiera transferir datos. Si el dispositivo no tiene datos para enviar, responde con NAK. La votación se realiza periódicamente. La transferencia interrumpida también se utiliza para transmitir datos a un dispositivo de forma programada. El dispositivo responde con NAK si no está listo para aceptar datos.

En este tipo de transferencia, las transacciones IN y OUT se realizan periódicamente. El tamaño máximo de carga útil de datos para la transferencia de interrupción es diferente para cada modo de velocidad. Para dispositivos de baja velocidad, es de hasta 8 bytes. Para dispositivos de máxima velocidad, es de hasta 64 bytes. Para dispositivos de alta velocidad, es de hasta 1024 bytes. Estos bytes no incluyen bits PID y CRC.

Tabela comparando tipos de transferências USB

Fig. 9: Tabla comparativa de tipos de transferencias USB

Tabela comparando tipos de transferências USB

Fig. 10: Tabla comparativa de tipos de transferencias USB

Tabela listando transações de diferentes transferências USB

Fig. 11: Tabla que enumera las transacciones para diferentes transferencias USB

El siguiente artículo de la serie habla sobre los distintos tipos de descriptores USB.

Volver al blog

Deja un comentario

Los comentarios deben ser aprobados antes de su publicación.