HardwareTutoriales

FPGA: Todo lo que necesitas saber

Si te preguntas qué es un FPGA, en este artículo podrás conocer todas las claves sobre este tipo de chips integrados en placas de desarrollo que posibilitan implementar casi cualquier cosa, desde un procesador, hasta una memoria, un sistema completo, etc. Además, debes estar al tanto del término, ya que se van a transformar en partes fundamentales de los próximos sistemas desde la compra Altera por parte de Intel y de Xilinx por parte de AMD.

ASIC, FPGA, PLC, MCU,…: diferencias

placa FPGA

PLC, FPGA, ASIC… son nombres para varios tipos de circuitos electrónicos. Las diferencias entre un PLC y un FPGA son que el PLC es una computación digital con múltiples entradas y salidas que se utiliza para controlar líneas de máquinas industriales y aplicaciones más pesadas, mientras que el FPGA es una matriz programable que puede configurarse después de la producción. Se utiliza para controlar las líneas de montaje de las fábricas, las atracciones de feria, etc. Un PLC es un diseño con múltiples entradas y salidas. El PLC es un dispositivo de control inteligente compuesto por un microprocesador y una memoria, junto con periféricos seleccionados.

Los autómatas programables (PLC) son miembros de la familia de ordenadores diseñados y fabricados para aplicaciones de control industrial. El PLC es un dispositivo lógico fijo (las funciones se realizan mediante cambios en el software), mientras que el CPLD es un dispositivo lógico variable (las funciones se realizan mediante cambios en las estructuras de los circuitos internos). PLD es un acrónimo de dispositivo lógico programable (Programmable Logic Device), y FPGA es un acrónimo de Field Programmable Gate Array, y las funciones de ambos son esencialmente las mismas, pero los principios que subyacen a su implementación son un poco diferentes, por lo que a veces podemos pasar por alto ambos. No es exagerado decir que un PLD puede suplir las funciones de cualquier dispositivo digital, desde las CPUs de alto rendimiento hasta los circuitos más sencillos con 74s, que podrían implementarse utilizando PLDs.

El uso de los PLD para desarrollar circuitos digitales puede acortar significativamente los tiempos de diseño, disminuir el tamaño de las placas de circuito impreso y aumentar la fiabilidad del sistema. En el caso de los dispositivos lógicos programables, los diseñadores pueden diseñar, modelar y probar rápidamente sus diseños utilizando herramientas de software de bajo coste. En el otro extremo del espectro están los sistemas de control integrados, que aprovechan las matrices de puertas programables (FPGA) para conseguir los desarrollos utilizando hardware en lugar de software.

Un ASIC es en teoría como un FPGA, salvo que se fabrica como un circuito especializado. Una FPGA es un componente que puede considerarse como un gigantesco océano de componentes digitales (puertas, tablas de búsqueda, flip-flops) que pueden conectarse entre sí mediante cables. El código que se escribe realiza las conexiones físicas reales mediante cables para realizar la funcionalidad que se desea. El programa puede ser una simple puerta lógica (una función AND OR o ), o puede incluir una o más funciones complejas, incluyendo funciones que, cuando se combinan, trabajan como una CPU multinúcleo integrada.

Las funciones lógicas de los ASIC se especifican de forma similar a las FPGA, utilizando un lenguaje de descripción de hardware como Verilog o VHDL. La función lógica de la CPU de los teléfonos no puede cambiarse por otra, ya que su circuitería digital está hecha de puertas y flip-flops conectados permanentemente en el silicio. Un ASIC fabricado utilizando el mismo nodo de proceso puede funcionar a una frecuencia mucho mayor que un FPGA, ya que su circuitería está optimizada para su función concreta.

Sin embargo, una vez fabricado un ASIC no se puede alterar, mientras un FPGA se podría programar una vez se ha fabricado el chip. Un ASIC puede ser desde una memoria, hasta un procesador, o un microcontrolador, o cualquier otro chip específico.

Este enfoque puede utilizarse para resolver proyectos singulares de alto rendimiento, sin tener que crear un ASIC específico.

Todo lo que debes saber sobre un FPGA

Xilinx FPGA

Básicamente, las FPGA son circuitos de hardware que un usuario puede programar para realizar una o varias operaciones lógicas. Las FPGAs (Field Programmable Gate Arrays) pueden programarse para realizar proyectos de hardware específicos. Estas matrices son, por tanto, un tipo de circuito integrado reconfigurable formado por bloques lógicos reconfigurables (CLBs), que a su vez se componen de tablas de consulta (LUT) junto con otra lógica, como registros y puertas lógicas.

Las matrices de puertas programables en campo (FPGA) están experimentando cambios rápidos y drásticos, impulsados por su creciente uso en la informática de los centros de datos. Actualmente se pueden integrar junto con la CPU para implementar aceleradores para tareas específicas. De esa forma, no solo descargan el trabajo de la CPU, sino que también lo hacen de una forma más rápida y eficiente.

Con varias arquitecturas disponibles en el mercado, los chips FPGA contienen millones de puertas lógicas programables. Los componentes lógicos programables de las FPGAs, o bloques lógicos, como se conoce a las FPGAs, pueden estar compuestos por cualquier cosa, desde puertas lógicas, hasta elementos de memoria, o bloques de memoria, o prácticamente cualquier elemento. Todos estos componentes hacen de una FPGA un circuito integrado totalmente programable que un diseñador puede utilizar para diseñar cualquier sistema informático digital que desee.

Además, las FPGAs proporcionan el rendimiento similar a una solución integral, ya que un sistema completo junto con los periféricos puede integrarse en una sola FPGA miniaturizada en un chip. La mayor ventaja de una FPGA es que el chip es totalmente programable y reprogramable. Así, se convierte en un gran circuito lógico que puede configurarse según un diseño, pero que puede reprogramarse actualizándolo, o para crear otra cosa totalmente diferente. Por ejemplo, un FPGA podría ser un microcontrolador y luego programarse como una memoria, etc. Solo hay que programar sus puertas y la forma en la que se unen para hacer el circuito que te plazca.

Si se fabrican las placas de circuito o tableros e incluyen la FPGA como parte del circuito, ésta se programa en el momento de su fabricación, pero puede reprogramarse posteriormente para reflejar cualquier cambio. Dado que una FPGA es una matriz lógica reconfigurable, la lógica debe configurarse para ajustarse a los requisitos del sistema. Una vez completados los procesos de diseño y verificación, se utiliza un archivo binario generado (también con software propio de la empresa de la FPGA) para configurar el dispositivo FPGA. Por tanto, los programas que se ejecutan en la FPGA no tocan la memoria local de la FPGA, sino que mueven los datos hacia ella y leen los resultados.

Cada vez que se enciende la FPGA, la SRAM se carga con su configuración, normalmente mediante un chip flash para que no se borre cuando está desconectada de la fuente de alimentación eléctrica. Los circuitos lógicos booleanos se dejan sin cablear en una FPGA, y se programan permanentemente una vez, o se reprograman cada vez que se suministra energía al chip.

Xilinx Spartan

Cuando se encuentran en placas separadas, las FPGAs pueden llevar un poco más de inteligencia que puede ser potencialmente utilizada para ejecutar Linux, pero la tecnología FPGA en sí misma es similar. Las FPGAs son especialmente útiles para la creación de prototipos de Circuitos Integrados de Aplicación Específica (ASICs) o CPUs, así como los novedosos DSAs. Es decir, que se emplea en aquellos casos en las que se necesita ajustar el chip a cargas de trabajo específicas, o cuando es probable que se necesiten cambios a nivel de chip en algún momento futuro. Sin necesidad de diseñar el ASIC y, lo peor de todo y más costoso, mandarlo a producir.

Por eso los FPGA son tan admirados por los makers, ya que pueden recrear sus circuitos en estos elementos sin necesidad de usar servicios MPW. También las usan los desarrolladores de ASICs, para implementar el circuito en etapas tempranas de desarrollo y probar si funciona.

Esto significa que la decisión de utilizar o no un diseño construido en torno a una FPGA debe tomarse en una fase temprana del ciclo de diseño, y dependerá de cosas como si tendrá que reprogramar el chip, si puede obtener características equivalentes en otro lugar y, por supuesto, de los costes permitidos. Es posible que haya que reprogramar una FPGA antes de que el diseño de un ASIC o una CPU esté finalizado y libre de errores, y que comience la fabricación real del ASIC final. A continuación, un proceso de diseño de FPGA debe contar con herramientas de gestión de proyectos, para permitir el desarrollo de diseños en equipo que pueden utilizar herramientas de control de revisión. Cada paso del proceso de diseño utiliza más de varias herramientas EDA, que deberían poder integrarse en una plataforma para reducir la complejidad para los usuarios.

Los ingenieros pueden construir el diseño utilizando FPGAs, y luego en lugar de gastar tiempo optimizando el diseño del circuito, hornear un diseño fijo en la máscara de diseño, para la producción. La AMI está preconstruida con herramientas de desarrollo de FPGAs y las herramientas de ejecución necesarias para diseñar y utilizar FPGAs personalizadas para la aceleración de hardware.

Los servicios en la nube de Microsofts Azure permiten a los desarrolladores aprovechar la potencia de los chips FPGA sin tener que comprar y configurar hardware y software dedicados. En lugar de servir de contrapartida o de alternativa a los ASIC, la lógica programable de los FPGA está surgiendo como el tercer paradigma informático, que se desmarca de los paradigmas tradicionales de hardware versus software. Impulsado tanto por las demandas de la computación actual centrada en los datos y en red, como por las nuevas capacidades que surgen de la integración 3D, el centro de investigación académica Intel/VMwares Crossroads para FPGAs 3D explorará el emergente hardware programable del anexo de datos, que se sitúa en el núcleo de los servidores y opera sobre los datos en movimiento a través de la red, la computación principal y los elementos de almacenamiento.

Isaac

Geek de los sistemas electrónicos, especialmente del hardware informático. Con alma de escritor y pasión por compartir todo el conocimiento sobre tecnología.
Los datos de carácter personal que nos facilite mediante este formulario quedarán registrados en un fichero de Miguel Ángel Navas Carrera, con la finalidad de gestionar los comentarios que realizas en este blog. La legitimación se realiza a través del consentimiento del interesado. Si no se acepta no podrás comentar en este blog. Puedes consultar Política de privacidad. Puede ejercitar los derechos de acceso, rectificación, cancelación y oposición en [email protected]
Botón volver arriba