Comprensión de los requisitos para USB 2.0 de alta velocidad

2

Estoy un poco confundido acerca de los requisitos de USB 2.0 de alta velocidad.

USB 2.0. La velocidad de transferencia máxima de alta velocidad es de 480 Mbit / s. Por lo tanto, desde mi punto de vista 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 ofrece compatibilidad con 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 es capaz de 192 MHz, ¿cómo debería comunicarse con el periheral USB interno que funciona a 480 MHz?

Para STM32 también es raro, en su software CubeMX parece que funcionan con USB desde un reloj de 48 MHz. Buscando en la hoja de datos, solo mencioné lo que encontré fue

  

Bit 15 PHYLPCS:
  Selección de reloj de baja potencia PHY   Este bit selecciona el modo PHY de 480 MHz o 48 MHz (bajo consumo). En los modos FS y LS, el   PHY generalmente puede operar en un reloj de 48 MHz para ahorrar energía.
  0: 480 MHz reloj PLL interno
  1: 48 MHz reloj externo
  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 modo 48 MHz, la interfaz UTMI opera   a 48 MHz en los modos FS y LS.

Supongo que utiliza un reloj de 48 MHz para generar 480 MHz a través de PLL. Pero una vez más, si el microcontrolador solo puede subir a 180 MHz, ¿cuál es el punto del USB de 480 MHz?

Los FPGA son aún más confusos (muchos de ellos funcionan a menos de 480 MHz), pero aún no he investigado mucho sobre FPGA, así que no preguntaré nada (pero si puedes dar algún consejo / educar sobre FPGA, eres bienvenido , 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 se ajusta a la frecuencia? ¿Cuál es el proceso?

    
pregunta ScienceSamovar

1 respuesta

2

Tenga en cuenta que el USB es de 480M bits por segundo, mientras que los uP 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 el USB PHY (transceptor de capa física). Las transferencias se realizan en formato paralelo de 8 o 16 bits, y la 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 total acuerdo con velocidades de datos específicas.

La velocidad con la que un sistema puede preparar los búferes de memoria de lectura / escritura depende del rendimiento general del procesador, por lo que los procesadores de bajo rendimiento podrían no alcanzar el rendimiento USB máximo.

    
respondido por el Ale..chenski

Lea otras preguntas en las etiquetas