¿Qué es una FPGA?

Las siglas FPGA significan Field Programmable Gate Array. Como su nombre indica, se trata de un dispositivo compuesto por una serie de bloques lógicos (puertas, registros, memorias, flip/flops, etc) programables, es decir, la interconexión entre estos bloques lógicos y su funcionalidad no viene predefinida sino que se puede programar y reprogramar.

Este tipo de dispositivo está a medio camino entre los circuitos de propósito específico (ASIC) y los procesadores de propósito general en prestaciones, posibilidad de optimización, consumo de potencia, etc. Su principal ventaja frente a los diseños específicos es que son reprogramables, por lo que proporcionan una gran flexibilidad de diseño, que los costes de desarrollo y adquisición son muy económicos, que el tiempo de desarrollo es mucho menor y que existe la posibilidad de realizar reconfiguraciones dinámicas (durante el funcionamiento del dispositivo) del diseño.

¿Cómo se programa una FPGA para que realice las funciones que nosotros deseamos?. En realidad es muy parecido a programar un procesador de propósito general. La tarea del programador es definir la función lógica que realizará cada uno de los bloques lógicos de la FPGA e interconectarlos. Para ello debe utilizar alguno de los entornos de desarrollo especializados en el diseño de sistemas sobre FPGA. Si se trata de un diseño sencillo puede hacerse con un esquemático, si no, habrá que utilizar un lenguaje de programación especial HDL (Hardware Description Language) como VHDL o Verilog.

Además, en los últimos años han aparecido lenguajes para diseñar sistemas en FPGA de un nivel mucho más alto, por lo que un diseñador poco experimentado tendrá mucho más fácil su trabajo. Con lenguajes como SystemC o HandelC, pasar de la implementación software en C de una aplicación a su diseño sobre una FPGA es mucho más rápido y sencillo.

Para los que estéis interesados en el tema, de gran importancia hoy en día en el entorno industrial, ya iré poniendo enlaces en el blog. De momento, mencionaros a los fabricantes más importantes: Xilinx y Altera.

No hay comentarios: