miércoles, 6 de octubre de 2010

Vale, muy bonito pero... ¿Qué es un FPGA?

Acabo de caer en la cuenta de que en mis entradas aparece el término FPGA por todos lados y es muy probable que a la gran mayoría os suene a chino.

Si bien directamente no tiene que ver con lo Retro, indirectamente tiene muchísimo que ver. Voy a intentar explicaros brevemente lo que es un FPGA y por qué se usa tantísimo en nuevos proyectos electrónicos.

Un FPGA no es más que un circuito integrado configurable. FPGA viene del inglés (Field Programable Gate Array) que vendría a significar algo parecido a "Conjunto de matriz de puertas programable". La verdad es que eso tampoco clarifica demasiado, así que empezaremos por lo básico.

Un chip FPGA de la casa Altera
Los circuitos integrados digitales están compuestos por puertas lógicas (AND, OR, NOT) encargadas de dar un resultado en su salida directamente relacionada con sus entradas. Lógica elemental. Los que hayáis estudiado filosofía, recordaréis lo de "Si P es igual a Q entonces si no P, entonces no Q" (o algo así era). 

Las funciones de un circuito integrado (incluyendo los procesadores) vienen determinadas por el número de puertas lógicas que hay en su interior y por el modo en que éstas están conectadas entre ellas. Todo eso en su conjunto, conforman un circuito lógico como por ejemplo, el procesador Z80.

Pues un FPGA es un chip "en blanco" el cual tiene un número de puertas lógicas en su interior, sin configurar y sin conectar entre sí. Nosotros debemos encargarnos de interconectar esas puertas para crear un circuito específico. Por lo tanto, sería posible copiar "literalmente" la configuración lógica interna (interconexionado) de un procesador Z80 dentro de un FPGA, con lo que el FPGA funcionaría como un Z80, o mejor decir que ese FPGA internamente es un Z80 real.

Un chip FPGA de la casa Xilinx
Si a eso añadimos a que es reprogramable tantas veces como queramos, podemos ir deduciendo las posibilidades que nos dan los FPGA, desde crear desarrollos nuevos (chips de nuevo desarrollo como controladoras VGA, controladoras IDE, USB, procesadores...) hasta clonar chips ya existentes (u ordenadores completos si el integrado FPGA es suficientemente grande y tiene puertas lógicas suficientes).

El One Chip MSX, por ejemplo, es un MSX2 enterito dentro de uno de estos chips. Eso nos da una idea de la versatibilidad de estos integrados.

Es habitual que la gente confunda un ordenador en FPGA (como el One Chip MSX) con un emulador. La realidad es que no tienen nada que ver, si bien su meta es la misma: Reproducir el funcionamiento del sistema original

Un emulador es un conjunto de rutinas (programas) encargadas de emular el funcionamiento de los componentes de un ordenador (por ejemplo). Estas rutinas se encargan de "traducir" datos desde la máquina emulada hasta la máquina anfitrión (donde ejecutamos el emulador), con mayor o menor precisión. Es software puro y duro; conseguir un emulador perfecto es prácticamente imposible.

Arquitectura interna de un FPGA
El FPGA puede ser una copia idéntica del chip que se intenta reproducir y sus funcionamientos serán idénticos. Con el FPGA recreamos el hardware original y su funcionamiento a nivel eléctrico (y no sólo a nivel lógico como los emuladores).

En definitiva, que los FPGA molan muchísimo y los hay de distintos tamaños (número de puertas lógicas programables) y precios. Cuantas más puertas tengan, más potentes son y más dispositivos se pueden reproducir en su interior.

La verdad es que es un poco lioso el tema, sobretodo si no se está acostumbrado a manejar este tipo de terminologías, pero por lo menos espero haber aclarado un poco todo lo que rodea al Omnipresente FPGA.

Más información, cómo no, en la Chachipedia: http://es.wikipedia.org/wiki/FPGA

Un saludo.

6 comentarios:

  1. No tenía ni idea sobre el tema!
    Muchas gracias por la lección!

    ResponderEliminar
  2. Gracias a ti por leerme.
    Me alegro de que el artículo te haya sido útil.

    Un saludo.

    ResponderEliminar
  3. muy buena la explicacion

    ResponderEliminar
  4. loco me salvaste!
    el unico que pudo explicar de forma simple lo que es un FPGA
    muchas gracias!

    ResponderEliminar
  5. genial explicación,no lo tenia del todo claro

    ResponderEliminar