¿Qué son los FPGAs? ¿Cómo funcionan? ¿Para qué sirven? ¿Quién debería utilizarlos?

Los FPGA son dispositivos que aunque no son nuevos no son tan populares, si no los has usado seguramente ya habrás escuchado de ellos, este artículo no tiene como intención hacer un análisis técnico profundo ni enseñar a programarlos, sólo mostrar el panorama para aquellos que no los conocen.

alterafpga

FPGA son las siglas de Field Programmable Gate Array, los FPGAs son dispositivos digitales que son capaces de configurarse para prácticamente cualquier aplicación, son muy rápidos, son capaces de trabajar muchos procesos en paralelo.

Entonces viene la pregunta, ¿por qué no muchos los utilizan? ¿son una tecnología sin futuro? Habrá opiniones diferentes pero por lo menos Intel cree que tienen mucho futuro, acaba de invertir $16,700 millones de dólares en la compra de Altera, una de las empresas más grandes de FPGAs. Analizemos algunos de sus aspectos.

Arquitectura programable

Sin entrar en detalles internamente los FPGAs tienen un conjunto muy grande de componentes digitales elementales combinacionales y secuenciales, compuertas AND, OR, NOT, FLIP-FLOPs entre otros.

circuitocombinacional

Lo interesante está en que se pueden “programar” las conexiones entre las compuertas y FLIP-FLOPs de modo que se puede crear cualquier dispositivo digital que te puedas imaginar, lo que sea, los únicos limitantes son la frecuencia y la cantidad de compuertas, y precisamente estos son los factores que determinan el precio del FPGA.

Algunos ejemplos de aplicaciones pueden ser: compuertas AND, decodificadores de 7 segmentos, temporizadores, sumadores, ALUs, microprocesadores, protocolos de comunicación UART, I2C, SPI, memorias RAM, y cualquier circuito digital que te imagines.

Velocidad

Entre las tarjetas de desarrollo con FPGAs más básicas se suelen manejar los 50MHz, si quieres compararlos con algún microcontrolador debes ser cuidadoso porque para los FPGAs esa frecuencia es una frecuencia de operación real, realizan sumas, multiplicaciones, divisiones y cambios de estado de un pin a 50MHz, a diferencia de los microprocesadores que aunque están conectados a un cristal de cierta frecuencia, su frecuencia de operación es 2 o 4 veces menor debido a la arquitectura que tienen.

simulacionVHDL

Otro detalle es que al igual que muchos microcontroladores y microprocesadores tienen PLLs internos que permiten multiplicar la frecuencia llegando a 100MHz o 200MHz desde 50MHz sin ningún problema.

Programación, o mejor dicho, descripción de hardware

Los FPGAs a diferencia de los microcontroladores y microprocesadores no se programan, se describen, no tienen lenguaje de programación, tienen lenguaje de descripción de descripción de hardware, se le llama descripción porque lo que en realidad hacemos es describir las conexiones entre los elementos, hay dos opciones, VHDL y Verilog.

codigoVHDL

Hay que decirlo, es un lenguaje difícil, mientras que enviar el mensaje “¡Hola Mundo!” desde Arduino implica escribir unas pocas líneas, quizá unas 10, casi cualquiera puede hacerlo, enviar ese mensaje en VHDL puede implicar unas 300 o 400 líneas de código para alguien que ya tiene experiencia. Claro que hay sistemas que definitivamente no se pueden hacer en los microcontroladores y para los FPGA no hay problema.

También existe la posibilidad de implementar un procesador y a este procesador programarlo en C utilizando las herramientas oficiales, o algunas alternativas. O también hay FPGAs que llevan in procesador dentro.

Precio

Las tarjetas de desarrollo suelen ser relativamente caras, un poco por el precio del FPGA mismo pero también por los componentes externos necesarios para su funcionamiento, memoria Flash, fuente de voltaje, que usualmente es fuente conmutada porque consumen bastante corriente para su funcionamiento, varias decenas capacitores necesarios por la gran cantidad de transistores que funcionan a altas frecuencias, programador y muchos otros aditamentos que suelen poner los fabricantes de tarjetas para agregar funcionalidad.

¿Quienes utilizan los FPGA?

Las industrias dedicadas al desarrollo de circuitos integrados digitales, centros de investigación, en general instituciones dedicadas a crear circuitos digitales que no pueden conseguir en ningún otro lado, sistemas con características especiales.

Si eres estudiante de alguna carrera que está relacionada con sistemas digitales, arquitectura de procesadores, microcontroladores también es recomendable utilizarlos, utilizar FPGAs para practicar la teoría mejora mucho el entendimiento de los sistemas digitales.

Todo ingeniero que se tome en serio  los sistemas digitales debería también saber a programar FPGAs incluso si no es la plataforma de su preferencia, implementar sistemas en FPGAs ayuda mucho a entender mucho a los microprocesadores o microcontroladores, características como el DMA (Direct Memory Access), prioridad de interrupciones y la diferencia entre un SoftwareSerial y un Serial de Arduino.

IntelTweetFuturo de los FPGAs

La compra de Altera de parte de Intel quizá sea indicio de que lo mejor está por venir, ya hablamos de que algunos FPGAs llevan procesadores dentro, otra propuesta interesante es que los procesadores lleven dentro un FPGA.

Imaginemos que en el futuro nuestra computadora podrá elegir entre agregar algunos núcleos de procesador extra, o mayor memoria RAM o agregar otra tarjeta gráfica, todo esto sin tener que agregar nada físicamente, nuestra computadora configuraría su hardware de acuerdo a las necesidades.

psoc

En el área de los microcontroladores también hay propuestas interesantes que agregan una parte de arquitectura configurable, manteniendo el bajo costo, el bajo consumo y la facilidad de programación, esto agrega el gran beneficio de poder agregar PWMs o UART o Timers extra, de acuerdo a la necesidad de la aplicación.

6 comentarios sobre “¿Qué son los FPGAs? ¿Cómo funcionan? ¿Para qué sirven? ¿Quién debería utilizarlos?

  1. Muy buen articulo para describir en breve los FPGAs. Solo un comentario en donde mencionas que existen dos opciones para describir el hardware las cuales son VHDL y VERILOG. Actualmente hay innumerables lenguajes para la descripción de hardware ya sea basados en lenguaje C, Java, Matlab, etc. Como ejemplo puedo citar los siguientes: System-C, Impulse-C, Forge, System Generator DSP, Catapult-C, Handel-C. Siendo este último el más fácil de utilizar y que permite enviar el mensaje HOLA MUNDO! en 10 líneas como mencionas que lo hace arduino.
    Dejo un link sobre la metodología de descripción de hardware con lenguaje C, en específico con HandelC:
    http://handelc.blogspot.mx/2014/11/metodologia-de-programacion-fpga-en-c.html

    Saludos

    Me gusta

  2. Muy interesante, principalmente para quitar lo oxidado del cerebro, hace años solo los oía mencionar y eran una curiosidad y sólo aparecían como “advanced information”

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s