Estoy un poco confundido acerca de los requisitos de USB 2.0 de alta velocidad.
USB 2.0. la tasa de transferencia máxima de alta velocidad es de 480 Mbit/s. Entonces, según tengo entendido, para utilizar completamente esta velocidad de datos, se debe usar IC (uC o FPGA) con una frecuencia de al menos 480 MHz.
Pero, por ejemplo, el microcontrolador de la serie STM32 F4 proporciona soporte USB 2.0 de alta velocidad, aunque la frecuencia máxima en la que se ejecutan es de 180 MHz.
También Atmel SAM3U admite USB de alta velocidad, a pesar de la frecuencia máxima absoluta de 192 MHz.
¿Como es eso?
Para Atmel noté que tienen un reloj adicional de 480 MHz solo para USB. Esto es aún más confuso, ya que si el microcontrolador solo tiene capacidad para 192 MHz, ¿cómo debería comunicarse con el periférico USB interno que funciona en 480 MHz?
Para STM32 también es raro, en su software CubeMX parece que ejecutan USB desde un reloj de 48 MHz. Buscando hoja de datos, la única mención que encontré fue
Bit 15 PHYLPCS:
PHY Selección de reloj de baja potencia Este bit selecciona el modo PHY de 480 MHz o 48 MHz (baja potencia). En los modos FS y LS, el PHY generalmente puede funcionar con un reloj de 48 MHz para ahorrar energía.
0: reloj PLL interno de 480 MHz
1: reloj externo de 48 MHz
En el modo de 480 MHz, la interfaz UTMI funciona a 60 o 30 MHz, dependiendo de si se selecciona el ancho de datos de 8 o 16 bits. En el modo de 48 MHz, la interfaz UTMI funciona a 48 MHz en los modos FS y LS.
Así que supongo que usa un reloj de 48 MHz para generar 480 MHz a través de PLL. Pero, de nuevo, si el microcontrolador solo puede llegar a 180 MHz, ¿cuál es el punto de USB de 480 MHz?
Los FPGA son aún más confusos (muchos se ejecutan por debajo de 480 MHz), pero aún no he investigado mucho sobre FPGA, por lo que no preguntaré nada (pero si puede dar algún consejo / educar sobre FPGA - de nada, estoy interesado).
La pregunta es: si usamos un microcontrolador de 180 MHz y queremos transferir datos con un periférico USB de 480 MHz, ¿cómo coincide con la frecuencia? ¿Cuál es el proceso?
Tenga en cuenta que el USB es de 480 M bits por segundo, mientras que los ups tienen sus datos generalmente de 8 o 32 bits de ancho. Por lo tanto, la tasa de transferencia de datos del sistema se reduce a 60MHz o 15Mhz solamente. Los controladores USB utilizan el acceso de hardware a la memoria uP (también conocido como acceso directo a la memoria o "masterización de bus") para transferir bloques de datos entre la memoria del sistema y USB PHY (transceptor de capa física). Las transferencias se realizan en formato paralelo de 8 o 16 bits, y el PHY realiza la conversión de paralelo a serie. El sistema generalmente tiene muchos búferes de "elasticidad" (FIFO) para proporcionar paquetes USB coherentes en pleno acuerdo con las velocidades de datos especificadas.
La velocidad a la que un sistema puede preparar los búferes de memoria de lectura/escritura depende del rendimiento general del procesador, por lo que es posible que los procesadores de bajo rendimiento no alcancen el máximo rendimiento USB.
R drástico
Eugenio Sh.
CienciaSamovar
jw_