Valkertown Home

2007-02-08-notas sobre el usb3a velocidad de transferencia

Bien despues de implementar exitosamente las transferneias Isochronous en el uC y un controlador propio para el núcleo de Linux. sin duda es más complicado que los otros métodos pero es el que garantiza el mayor ancho de banda disponible para el dispositivo a costa de fiabilidad.

Unos números rapidos que sirven como guia para calcular el AB disponible en una aplicación que utilice USB.

Una caracteristica especial que se puede ver en las transferencias Isocronous e interrupt es la de tener la minima latencia si a esto se une la idea que todas las transferencias del protocolo USB son iniciadas por el HOST esto implica naturalmente que la velocidad de transferencia y el AB disponible es determinado por el host.

Ahora, el USB esta orientado a la transmisión de paquetes y lleva consigo un diseño round-robin sobre los dispositivos enumerados para la solicitud de un paquete. Según la especificación del USB para dispositivos de velocidad baja y velocidad "completa"(full speed) el intervalo de transmisión de paquetes se define en el enpoint descriptor, esto implica la primera limitación del ancho de banda.

Si de mira el campo INTERVAL del ENDPOINT DESCRIPTOR se ve que este es un BYTE, este indica el número de milisengundos(ms) entre petición y petición, esto es igualmente cierto para transferencias Isoc e Int. Para dispositivos de alta velocidad este número es de 1/8ms.

El sigueinte parámetro que determina el AB disponible es el tamaño del paquete; para transferencias tipo Int el maximo es de 64bytes y para transferencias tipo Isoc es de 1023 para velocidad completa y 1024 para alta velocidad.

Si se quiere ver la tabla completa de tamaños de paquetes disponibles y de intervalos disponibles para el USB toda esta información esta en la especificación del USB.

Ahora lo que me interesa, con estas dos consideraciones el calculo resulta muy simple:

AB = PACKETSIZE / INTERVAL [KBps]

Si bien este es el AB Maximo disponible sin considerar la probabilidad de error y sin tener en cuenta las limitaciones propias de cada implementación.

Para el AT90USB128 el máximo AB posible es de 512KBps, por las propias limitaciones del hardware.

Una caracteristica muy importante de este sistema es que el HOST puede tomar decisiones sobre el AB desde la enumeración de los dispositivos, y los dispositivos deben tener tener en cuenta que es posible que al solicitar un AB con estos dos parametros el HOST puede rechazar la configuración. Por esto se recomienda incluir diferentes interfaces si es posible con diferentes AB para asegurar el funcionamiento del dispositivos en tantos casos como sea posible. Referencia: USB 2.0 Specification

Eso es todo, EOP

comments powered by Disqus

© 2008-2012 Carlos A. Perilla deepspawn at valkertown dot org | Based on original design by Andreas Viklund