¿QUÉ ES UN FPGA?

 JAVIER MICHEL FLORES COYOTL 

FPGA es el acrónimo de Field Programmable Gate Arrays y no es más que una serie de dispositivos basados en semiconductores a base de matrices de bloques lógicos configurables o CLB, donde además se conectan a través de lo que en el sector se denomina como interconexiones programables.

Su principal característica y ventaja es que pueden ser reprogramados para un trabajo específico o cambiar sus requisitos después de haberse fabricado. El inventor de esta tecnología fue Xilinx, el cual ha evolucionado dicha tecnología hasta convertirla en un nuevo concepto a tener en cuenta en ciertos entornos de trabajo.

FPGA: dispositivos de naturaleza programable


Lo interesante de este tipo de dispositivo son sus innumerables aplicaciones en la actualidad, ya que sus características técnicas pueden ser enfocadas a sectores como:

  •         Aeroespacial
  •      Audio.
  •      Automotriz.
  •      Broadcast.
  •      Electrónica.
  •      Centros de datos.
  •      Computación de alto rendimiento.
  •      Industrial y médica.

Esto es algo totalmente atípico en el sector donde nos encontramos, pero las ventajas de ser reprogramables añaden un atractivo innegable de cara a lograr mayor flexibilidad del flujo de los diseños finales. Además, sus costes por ello son mucho menores y su tiempo de desarrollo se reduce bastante frente a otras opciones muy populares como los ASIC.

Aun así, actualmente el mercado se está centrando en tres sectores muy claros y que están tomando mucha fuerza en los últimos años: centros de datos, IA y avances para mejorar los procesadores.

Características principales



Como podremos intuir, la principal característica de un FPGA es la flexibilidad. Esto viene dado por su naturaleza, donde un ingeniero podría descargar un archivo para un FPGA en concreto y modificar el comportamiento del mismo mediante cambios en dicho fichero.

Este apartado también implica que en muchos casos se pueden hacer cambios físicos sin hacer modificaciones costosas en la placa que lo soporta.

La segunda característica que portan los FPGA es la aceleración. Cuando hablamos de aceleración tenemos que definir tres escenarios totalmente distintos: fabricación, diseño y aceleración en sí misma.

En la fabricación, los FPGA son muy sencillos de construir y se venden listos para usar, lo cual implica una reducción en los tiempos totales de una empresa. Sobre el diseño, un OEM puede enviar un FPGA en cuanto su diseño inicial esté terminado y probado, lo cual de nuevo ahorra tiempo a las empresas.

Para la aceleración no hay mucho que decir, ya que como todos sabemos, los FPGA de alto rendimiento están ayudando a los procesadores mediante aceleraciones de carga y descarga de información, con lo que se aumenta el rendimiento del sistema.

Los FPGA son cada vez más completos y complejos


El siguiente punto principal es la integración, ya que hoy en día un FPGA puede incluir RAM, procesadores, motores DSP y un sin fin de sistemas individuales para una misma matriz. Cada año van aumentando en complejidad, donde podrían llegar a rivalizar con un sistema básico en cuanto a complejidad y potencia bruta.

El último punto son sus costes. Aparte de lo dicho hasta ahora, hay que tener en cuenta el costo que supone para una empresa encargar nuevos sistemas para tareas específicas. Con un buen FPGA, dichas tareas pueden ser programadas para aprovechar su potencia, lo que reduce los costes de manera significativa.

Si un sistema tuviese algún problema o necesitase cambios importantes, con un FPGA no sería tan problemático como con un ASIC, ya que podría reprogramarse o rediseñarse para dichos cambios y nuevas tareas.

Como vemos, los FPGA tienen muchas opciones de ser cada vez más famosos en la industria, donde como hemos comentado Intel está apostando fuerte sobre todo en centros de datos e IA.

Los FPGA se utilizan para prototipar nuevas CPU y GPUS



Los FPGA se utilizan para probar nuevas funcionalidades a nivel de hardware antes de su implementación en un procesador. Esto significa que la funcionalidad es escrita en un lenguaje de descripción del hardware como puede ser Verilog o VHDL y el FPGA se configura para trabajar como ese hardware en concreto.

Debido a que día de hoy la cantidad de puertas lógicas de un procesador es varias ordenes de magnitud superior, a nivel de FPGA no se implementa núcleos enteros, sino unidades e incluso partes de las mismas. No es raro que en los laboratorios de los grandes fabricantes y/o diseñadores de hardware ver unidades como es el Protium S1 de Cadence, los cuales están formados por decenas de FPGA conectados entre si y permiten simular el funcionamiento de procesadores más complejos.

Con simulación no nos referimos a poder ejecutar los programas tal cual como lo haría en el hardware final, sino asegurarse que cada uno de los elementos esta bien interconectado y se comporta como se espera en el diseño planeado. Además, la simulación vía permite ver errores en la implementación para luego corregirlo.

También sirven para preservar el hardware

A medida que pasa el tiempo el hardware se deteriora, lo normal es reemplazarlo por otro más nuevo de mayores capacidades y compatible con el ya existente, pero hay casos en los que la empresa que había diseñado el hardware original ya no existe y por tanto tampoco la plataforma.

Para conservar dicho hardware, y con el ello también el software para la plataforma sirven los FPGA. Ya que estos se utilizan para volver a implementar partes del mismo que no se podrían recuperar de otra manera. El ejemplo más claro de ello es el uso de la plataforma MisterFPGA para simular varias máquinas distintas. Aunque también hay soluciones específicas para resucitar hardware en concreto. La resurrección de hardware antiguo necesita una gran documentación y aún a día de hoy existen plataformas ya desaparecidas, pero cuya información técnica se encuentra bajo un manto de derechos de propiedad y que por tanto siguen siendo un secreto.

Bibliografía










Comentarios

Entradas populares de este blog

ARREGLO LOGICO GENERICO (GAL)

Función "rising_edge" para VHDL

Señal del reloj en VHDL