Frecuencia máxima de conmutación de pines GPIO de FPGA moderna y barata

¿Cómo podemos estimar la frecuencia de conmutación máxima de los pines GPIO FPGA? ¿Cuál es la velocidad de datos máxima que se puede lograr cuando se conectan dos FPGA sin utilizar transceptores de alta velocidad integrados? O cuando estamos transfiriendo GPIO a VGA , ¿cuál es el reloj máximo de píxeles?

Estoy interesado en dispositivos Altera modernos y económicos, como Cyclone IV, Cyclone V (versión E, no GT) y dispositivos Xilinx como Spartan 6.

Hay algunas cifras en las hojas de datos que dicen 300-400 MHz para pines GPIO, pero ¿son reales? ¿Cómo podemos manejar el pin a 300-400 MHz cuando el reloj central máximo es de solo 100-150 MHz?

Muchos FPGA tienen bloques PLL/Clock que pueden multiplicar un reloj de entrada hasta la frecuencia deseada.
dextorb, sí, pero creo que no puedo tener un reloj lógico superior a 150 MHz en mi Cyclone IV (grado de velocidad C6).
Creo que ese es el REFCLK máximo, no la velocidad lógica máxima, que está determinada por el retraso de propagación y los tiempos de configuración/retención del flop. Si dice 400 MHz en la hoja de datos, esperaría poder lograrlo.
No entiendo por qué la gente a menudo quiere FPGA para lo que no está diseñado. Un FPGA de gama baja como la serie Cyclone es económico pero no está diseñado para ejecutar un reloj central de alta frecuencia, si desea que su diseño funcione a una frecuencia alta, debe tomar un FPGA de gama alta. Es como un procesador: un Atom y un Core i7 no cuestan lo mismo pero tampoco tienen el mismo rendimiento. Tenga en cuenta también que con un FPGA puede realizar acciones simultáneas, mientras que con un MCU está trabajando paso a paso (simplificando). Entonces, incluso si su reloj es bajo, puede optimizar su diseño;)

Respuestas (3)

Respuesta corta: sí, puede lograr 400MHz IO en el IO de usuario general en el Cyclone V dependiendo de su grado de velocidad. Por ejemplo, el controlador de memoria dura puede funcionar a 400 MHz . Tenga en cuenta también que las piezas de grado de velocidad más rápida pueden admitir un reloj global interno de 550 MHz . No estoy seguro de dónde proviene su valor de 100-150 MHz, pero eso no es una limitación del dispositivo;) En la práctica, será muy difícil lograr el extremo superior de las capacidades del dispositivo, pero debería poder acercarse.

Si está tratando de maximizar el ancho de banda entre FPGA, la cantidad de IO estará limitada por su elección de paquete, sin embargo, hay una serie de otros factores a considerar al estimar el ancho de banda:

  1. Diseño e integridad de la señal. Para lograr las velocidades de la interfaz de memoria, debe tener trazas relativamente cortas bien adaptadas. Si no puede hacer coincidir las trazas y mantenerlas breves, es posible que experimente problemas de integridad de la señal que reduzcan la frecuencia por debajo de lo que el dispositivo realmente puede admitir. Si debe usar seguimientos largos, podría considerar sacrificar las E/S por integridad mediante el uso de LVDS en lugar de SSTL o similar.

  2. Sesgo de autobús. Si está tratando de maximizar el ancho de banda al agrupar muchas E/S en un amplio bus paralelo, es posible que tenga dificultades para mantener todos los bits sincronizados y, sin algún tipo de calibración, esto reducirá drásticamente la frecuencia. La interfaz de memoria externa tiene una fase de calibración que ajusta dinámicamente el retraso en cada bit del bus de datos para compensar el sesgo entre bits, es probable que deba hacer algo similar. Por ejemplo, en Cyclone V puede ajustar el retardo de salida de 0 a 150 ps en incrementos de 50 ps, ​​pero tenga en cuenta que estos valores no siempre se pueden cambiar en tiempo de ejecución, así que consulte la hoja de datos cuidadosamente.

  3. Reloj. Es casi seguro que querrá utilizar una arquitectura de reloj síncrono de origen en lugar de compartir un reloj externo. Esto afectará su elección de pines.

Otro problema cuando se usan interfaces anchas es la falta de coincidencia en los retrasos de enrutamiento internos para llegar a los pines, incluso si sus trazas coinciden perfectamente en longitud, los retrasos internos pueden sesgar el bus más de lo que puede compensar en el receptor, así que siempre ejecute su diseño a través del herramientas e introduzca esta información en el diseño de su tablero. ¡A veces es mejor tener longitudes de trazas de PCB que no coincidan deliberadamente para compensar los retrasos en el dispositivo!

Las salidas sincrónicas de origen de GPIO pueden ir mucho más rápido que la lógica interna de la FPGA. Como dijo FarhadA, esto se debe a todos los requisitos de interfaz de E/S de alta velocidad que incluso los FPGA de gama baja tienen que cumplir hoy en día (memoria DDR2/3/4, enlace de cámara, mipi, ADC de alta velocidad, etc.).

Por ejemplo, Spartan 6 puede alcanzar hasta 1050 Mb/s http://www.xilinx.com/support/documentation/application_notes/xapp1064.pdf Consulte también la página 18 de la hoja de datos de Spartan 6 http://www.xilinx.com/ soporte/documentación/hojas_de_datos/ds162.pdf

Para lograr estas velocidades, las salidas se serializan y el procesamiento interno se realiza a una señal más amplia y lenta. Específicamente, los bloques ISERDES y OSERDES son bloques ip duros en los mosaicos IO del Spartan 6 FPGA. Xapp1064 hará referencia a gran parte de la documentación correspondiente.

La velocidad del GPIO puede ser de 2 a 4 veces el grado de velocidad del propio FPGA. Los bloques de E/S de la FPGA están diseñados para admitir velocidades más altas de las que puede admitir la FPGA. Esto se debe a que muchos de estos IO se crean para admitir IO de alta velocidad como PCIe, USB 3 o incluso 3 y RapidIO, solo por mencionar algunos.

Incluso si el reloj máximo de su FPGA es de 400 MHz, puede acceder a las E/S al doble de esa velocidad usando los bloques DDR de la E/S o incluso 4 veces usando un bloque QDR.

También es posible serializar y deserializar los datos hacia/desde las IO, lo que hace posible que una FPGA de bajo costo acceda a interfaces de alta velocidad.

Por ejemplo, Altera Stratix II tiene los siguientes bloques IO:ingrese la descripción de la imagen aquí

Estoy seguro de que también puede encontrar una descripción similar de otras compañías de FPGA.

Puede echar un vistazo a este archivo PDF de xilinx con respecto a las capacidades de E/S en serie de alta velocidad de sus FPGA.

http://www.xilinx.com/publications/archives/books/serialio.pdf

Por ejemplo, en mi último proyecto, logramos conectar una FPGA a PCIe Gen 3 a 8 Gb/s, aunque la velocidad interna máxima alcanzable para la FPGA era de aproximadamente 250 MHz. En ese proyecto, usamos un módulo PCM especial, puede leer más sobre el soporte de acceso PCIe de Xilinx FPGA en: http://www.xilinx.com/technology/protocols/pciexpress.htm

Pero, como sé, PCIe y otras interfaces de alta velocidad se implementan con transivers de hardware, no con GPIO habitual. Como GPIO me refiero a los pines sin hardware de alta velocidad.
OP dice sin usar los transceptores de alta velocidad integrados, por lo que la mención de PCIe gen 3 y USB 3 es engañosa, ya que estos protocolos no son posibles con GPIO.