¿Puedo usar los canales USB 2.0 y 3.x simultáneamente en un puerto USB 3.x?

Estoy diseñando una placa de desarrollo FPGA para mí. Quiero un enlace de velocidad moderadamente alta (400-500 MB/s) a la PC anfitriona y estoy considerando varias opciones, incluido un puente IC FTDI FT-60x . El problema es que este chip no tiene un canal lateral que me permita configurar la FPGA, a diferencia del buen viejo FT-2232H .

Este artículo afirma que "USB 2.0 está disponible en el mismo conector y se puede usar como banda lateral", y sugiere usar ambos chips en tándem, con un concentrador en las líneas USB2 para que ambos estén disponibles, pero enrutando los pares USB3 directamente. al FT-60x. Aparentemente están haciendo esto en algunos de los tableros que venden.

Asi que aqui están mis preguntas:

  • ¿La especificación USB garantiza que USB2 aún está disponible mientras se usa el carril USB3 del mismo conector?
  • ¿Realmente puedo omitir el concentrador en el carril USB3 si estoy usando uno en el carril USB2?
  • Realmente no me importa si la funcionalidad se reduce en un puerto solo USB2. ¿Puedo omitir los concentradores por completo y conectar un dispositivo a cada carril?

Respuestas (2)

Despotricar, comentar, hacer otra recomendación

bueno El "nuestro FT-60x no puede hacer algo obvio, así que compre dos de nuestros productos" de FTDI no me sienta muy bien. Francamente, hay dispositivos que hacen exactamente lo que quieres:

  • Primero cargue un firmware de controlador USB a través de USB,
  • luego descargue un flujo de bits al FPGA a través de USB3,
  • luego comuníquese con el FPGA ahora funcional a velocidades USB3.

El dispositivo que tengo en mente es la serie Ettus USRP B200 /B210/B200mini…. Utilizan un ciprés FX3 .

Puedes encontrar

  • los esquemas de estos dispositivos aquí ;
  • el firmware del controlador USB FX3 aquí ;
  • el software de la zona de usuario del lado del host (todo esto funciona a través de libUSB, por lo que no hay controladores personalizados en modo kernel) aquí , y
  • el código fuente de la imagen FPGA aquí .

respondiendo tu pregunta

de acuerdo con https://electronics.stackexchange.com/a/266990/64158 (y el autor de la respuesta vinculada tiene mucho conocimiento sobre USB3), sí, puede usar un enlace USB3 sin líneas USB2.

Sin embargo, su controlador de host y sistema operativo deben estar dispuestos a considerar los dos buses por separado, si no desea utilizar un concentrador USB3. En mi experiencia, es poco probable que eso suceda si su host es una PC o algo similar

Sin embargo, si tiene el control total de su pila USB (porque, por ejemplo, tiene un OHCI / xHCI en un FPGA en el otro extremo del enlace, actuando como host), esto podría funcionar.

¡Gracias! Sabía sobre el FX3 y también lo estoy considerando, tal vez debería haber mencionado esto en mi pregunta. Una molestia menor es que requiere otro riel de voltaje (el FPGA al que me dirijo, Lattice ECP5, toma 1.1 V para el núcleo, mientras que FX3 necesita 1.2 V), pero supongo que esto se compensa eliminando una gran cantidad de circuitos de soporte y condensando tres fichas en una. En cuanto a la segunda parte de su respuesta, ya sabía que las líneas USB 2.0 no eran necesarias para la operación 3.0, mi pregunta era más específica "¿puedo usar ambas para cosas diferentes?". El anfitrión es de hecho una PC.
sí, así que si el host es una PC y realmente no puedes jugar mucho con las partes internas de su controlador USB, no, no puedes confiar en que funcione. Podría, pero simplemente no apostaría por ello. ¿Es realmente problemática una línea adicional de 1.2V? Quiero decir, es literalmente uno o dos SOT-algo LDO + dos mayúsculas más. De todos modos, este sería un diseño en el que intentaría colocar los LDO cerca de los consumidores de energía individuales.
Sí, considerando todo, tiene mucho más sentido usar el FX3 que cualquier combinación de dispositivos FTDI. Es mucho más flexible controlar el protocolo USB, obtienes una CPU dura "gratis" y también es compatible con USB OTG. Lo siguiente mejor es usar un PHY independiente o módulos Serdes de alta velocidad con un núcleo USB adecuado en el FPGA, pero eso es mucho más complicado. Marcando tu respuesta como aceptada.
@Streetwalrus gracias por las amables palabras. Por cierto, también podría considerar tener almacenamiento permanente en el dispositivo desde el que configura el FPGA, para que no necesite el chip FTDI adicional; luego podría simplemente enviar algunos comandos al FPGA para sobrescribir esa memoria y reiniciar.
Sí, eso tampoco es poco común y quiero incluir flash SPI para almacenamiento de flujo de bits y uso de aplicaciones. El problema es que es bastante fácil "bloquear" una configuración de este tipo. Siempre puedo mantener un encabezado JTAG separado para solucionarlo, pero eso es una molestia. Mi configuración de desarrollo actual es una ruptura Spartan 6 bastante básica, una ruptura FT2232H y un clon de cable de plataforma: 3 cables USB en total. Quería reducir el desorden y evitar tener que tocar la placa durante las pruebas.
… y comprensiblemente así :)

¿La especificación USB garantiza que USB2 aún está disponible mientras se usa el carril USB3 del mismo conector?

No sé si la 'garantía' está en la imagen, pero USB2 y USB3 son dos controladores separados en cada host que he encontrado.

¿Realmente puedo omitir el concentrador en el carril USB3 si estoy usando uno en el carril USB2?

Sí. De hecho, los concentradores "USB3" son internamente dos concentradores: uno USB3 y otro USB2. Hay concentradores chinos "USB 3.0" de 4 puertos que tienen un enchufe azul con señales USB3 y USB2 (cable USB 3.0 clásico), extraen las señales USB2 a un concentrador USB2 que va a los cuatro puertos y extraen las señales USB3 a solo uno de los puertos

Realmente no me importa si la funcionalidad se reduce en un puerto solo USB2. ¿Puedo omitir los concentradores por completo y conectar un dispositivo a cada carril?

Sí.