¿Qué es la FPGA? ¿Cómo funciona eso?

Por lo general, presento el FPGA (matriz de puerta programable en campo) diciendo que es como una caja de Lego , llena de muchas instancias de varios tipos de bloques. En lugar de bloques Lego, el FPGA contiene circuitos digitales modulares que comprenden algunos de los componentes combinacionales (por ejemplo, compuertas lógicas, multiplexores) y secuenciales (por ejemplo, flip-flops).

Los bloques de Lego nos permiten construir muchos, muchos objetos diferentes (casas, automóviles, puentes, aviones, etc.). El FPGA se puede utilizar para construir casi cualquier circuito digital, siempre que la parte FPGA seleccionada tenga suficientes recursos (bloques y velocidad) para implementar ese circuito.

Entonces, el FPGA es el circuito reconfigurable más popular.

El costo de FPGA va de unos pocos USD a más de mil USD, según el modelo que necesite para su diseño.

A continuación se muestra una imagen de un FPGA típico, muy simple y clásico.

Como puede ver, los bloques principales en el FPGA son bloques lógicos y bloques de E / S (entrada / salida). Pero la gran mayoría de los bloques en el FPGA son bloques lógicos, como se puede deducir de la figura.

Además de los bloques, hay grupos de líneas de metal dentro del FPGA, que generalmente se ejecutan a lo largo de dos direcciones ortogonales: vertical y horizontal. Estos se denominan interconexiones programables . En la encrucijada de las líneas vertical y horizontal, hay grupos de interruptores (el cuadrado gris en el zoom de Interconexión Programable, que se muestra en la figura anterior, representa uno de ellos) implementado con transistores MOSFET, que se conectan, de manera programada, Las líneas ortogonales según el circuito digital (proyecto) que estamos desplegando en el FPGA.

Los Bloques lógicos , llamados CLB (Bloques lógicos configurables) por algunos proveedores de FPGA (es decir, Xilinx), varían en arquitectura según el proveedor y la familia de FPGA. A continuación se muestra un CLB típico, pero simple.

Este CLB contiene dos LUT de 3 entradas (Tablas de búsqueda), que en realidad son dos pequeñas RAM de 8 bits, que generalmente se utilizan para emular cualquier función combinacional (o combinatoria) de 3 entradas. Combinando las dos LUT de 3 entradas con un MUX de dos entradas (multiplexor), podemos implementar cualquier función combinacional de 4 entradas. Este CLB también tiene una celda sumadora completa (FA), algunos MUX y un flip-flop tipo D (DFF). Por lo tanto, este CLB puede ser parte de circuitos combinados o secuenciales complejos digitales (con muchas compuertas y flip-flops).

Otro proveedor importante de FPGA, el antiguo Altera (ahora Intel-FPGA, porque Intel compró Altera hace unos meses), llama a los Elementos Lógicos (LE) a sus bloques lógicos. A continuación se muestra un LE de su familia Cyclone II, un bloque algo similar al CLB de Xilinx (que se mostró en la imagen anterior).

Para reconfigurar (o “programar”) el FPGA, generalmente describimos el circuito digital que deseamos implementar en el FPGA utilizando los lenguajes de descripción de hardware (HDL) Verilog o VHDL . Esta descripción se “compila” (lo que generalmente se llama compilación de hardware) a una secuencia de bits que se descarga, a través de un pin FPGA, a una cadena de registro dentro de la FPGA. Esta cadena de registros atraviesa todos los registros programables en la FPGA: LUT, MUX y FFD en los bloques lógicos, conmutadores MOSFET en las interconexiones programables y eventualmente otros registros internos (es decir, registros en los bloques de E / S).

A continuación se muestra una imagen del Quartus II IDE (Entorno de desarrollo integrado) de Altera (o Intel-FPGA), donde se muestra un circuito digital, descrito como un módulo Verilog. Es un decodificador / demultiplexor simple, si los comentarios en la figura son verdaderos 🙂

De hecho, consta de solo cinco puertas AND interconectadas.

El IDE de Xilinx tiene un aspecto muy similar. A continuación se muestra una imagen del software ISE de Xilinx.

De hecho, si aprende a trabajar con una de estas herramientas, es bastante sencillo extender sus habilidades a las herramientas de otros proveedores, dado que son bastante similares.

Recuerde que después de haber terminado de describir su proyecto en una de estas herramientas de diseño, definiendo los módulos (o entidades) Verilog o VHDL, o incluso dibujando los esquemas del circuito, que también está permitido en la mayoría de las herramientas, compila su diseño para un archivo de bits conforme con el modelo FPGA donde desea implementar su proyecto. Este archivo de bits se descarga en el FPGA, y luego puede conectar otros dispositivos y señales al FPGA (relojes, habilitaciones, etc.) y probar su diseño observando su comportamiento con osciloscopios y analizadores de señales digitales.

Es importante tener en cuenta que las herramientas también proporcionan la simulación de su diseño. Entonces, antes de probar el hardware, debe simular su diseño para realizar su verificación . Solo después de que este paso se haya realizado con éxito, debe proceder a las pruebas de hardware (que casi siempre es más costoso y consume bastante más tiempo del ingeniero, en comparación con la simulación).

Hay varias variaciones del FPGA típico mencionado anteriormente. Mencionaré algunos de ellos.

Por ejemplo, hay FPGA de señal mixta, es decir, chips similares a FPGA que tienen algunos bloques reconfigurables digitales estándar pero también tienen un “número limitado” de bloques analógicos reconfigurables. El que se muestra a continuación, de Microsemi (anteriormente Actel) es un ejemplo: tiene algunos comparadores, ADC y DAC que se pueden vincular de varias maneras. Este dispositivo en particular también tiene un procesador integrado (ARM Cortex-M3). Por lo tanto, es un chip bastante versátil.

Hoy en día hay varios ejemplos de dispositivos que combinan, en el mismo chip, un procesador (micro) estándar y un FPGA. Un ejemplo popular es el Zynq de Xilinx. A continuación se muestra un diagrama de la arquitectura Zynq-7000.

Como puede ver, hay un subsistema que consiste en un procesador (de la familia ARM), varias interfaces de E / S y una estructura FPGA (parte amarilla del diagrama) que consta de los bloques FPGA habituales. En los FPGA complejos, como estos, además de los tres bloques FPGA básicos (bloques lógicos, bloques de E / S e interconexiones programables), se pueden encontrar bloques más complejos, como DSP (bloques de procesamiento de señal digital) y RAM grande (acceso aleatorio Memoria) bloques.

Conclusión…

Un FPGA puede verse como una “bolsa” de bloques que implementan una funcionalidad digital simple (compuertas, flip-flops, multiplexores …) o, en FPGA más complejos y costosos, que implementan funciones digitales de alto nivel como los bloques de procesamiento de señales digitales. Dentro del FPGA también hay una infraestructura de interconexiones programables que se utilizan para vincular los bloques FPGA con el fin de “construir” el proyecto digital propuesto. El diseñador de circuitos describe su proyecto en Verilog o VHDL la mayoría de las veces, utilizando las herramientas del proveedor de FPGA (a menudo proporcionadas sin costo) y esa descripción del circuito se “compila por hardware” en un archivo de bits que consiste en el flujo de bits que se descarga a las partes internas de FPGA (de hecho, a un largo registro de desplazamiento interno). “Et voila”, tienes tu circuito digital construido de una manera similar a una construcción de Lego 🙂

Última nota: bueno (o menos bueno …) ¡Los diseñadores de FPGA generalmente encuentran trabajo fácil y rápidamente!

Descargo de responsabilidad: no tengo ningún tipo de relación con los proveedores de FPGA; Hay varias compañías más que proporcionan FPGA, además de las que mencioné en esta respuesta.

FPGA significa Field Programmable Gate Array. Es un dispositivo semiconductor que contiene componentes lógicos programables llamados bloques lógicos e interconexiones programables . Podemos programarlo para cualquier función digital.

Trabajando :

  • Una computadora se utiliza para describir una función lógica, ya sea en forma de archivo de texto o de esquema para sintetizar.
  • Luego, la función lógica se compila utilizando el software proporcionado por el proveedor de FPGA.
  • Esto crea un archivo binario que se puede descargar en el FPGA y en la computadora.
  • Ahora, el FPGA programado se comporta de acuerdo con la función lógica.

Puntos a tener en cuenta:

  • FPGA pierde su funcionalidad cuando se va la energía.
  • Puede descargar tantos FPGA como desee, cambiando su funcionalidad.

Los kits de desarrollo que permiten a los desarrolladores de sistemas evaluar un FPGA o un procesador sin tener que diseñar un sistema completo son cada vez más importantes a medida que los chips se vuelven más complejos. Las matrices de puertas programables de campo (FPGA) son circuitos integrados que consisten en una matriz de bloques lógicos configurables conectados a través de interconexiones programables. Los FPGA actuales son sistemas completos en chips que incluyen no solo lógica y memoria programables, sino también procesadores de señales digitales, convertidores analógico a digital, convertidores digital a analógico y circuitos de acondicionamiento de señal

Tal complejidad plantea desafíos de administración de energía. La corriente dibujada por los FPGA y los procesadores continúa aumentando a medida que se introducen más elementos lógicos en el chip; Las corrientes de carga de 100 A o más se están volviendo comunes. Mientras tanto, los voltajes de funcionamiento (“núcleo”) del chip están cayendo por debajo de 0.9V y requieren una regulación estricta. La mayoría de los FPGA especifican tanto el voltaje del núcleo para controlar la lógica como los rieles de voltaje de E / S separados. A menudo, los FPGA requieren rieles adicionales para alimentar relojes internos, bucles de bloqueo de fase o transceptores. Hacer que la administración de energía sea correcta es esencial para un rendimiento óptimo.

La buena noticia es que los fabricantes de semiconductores han superado el desafío de proporcionar múltiples raíles de voltaje regulado con soluciones empaquetadas: módulos de alimentación que funcionan como sistemas de administración de energía autónomos, con conversión CC / CC integrada, transistores de potencia, condensadores de entrada y salida, Los componentes de compensación y los inductores encapsulados en paquetes BGA o LGA de montaje en superficie son más fáciles de usar que las soluciones discretas. Las herramientas de planificación de energía basadas en PC pueden configurar estos módulos para optimizar el “árbol de energía” de un sistema.

Un diseño de administración de energía bien pensado puede reducir el tamaño, el peso y la complejidad de la PCB, así como reducir el consumo de energía y los costos de enfriamiento.

Pero, todavía es una perspectiva desalentadora.

Ingrese al kit de desarrollo: la mejor noticia para los diseñadores de sistemas es que las soluciones de administración de energía a nivel de placa, ensambladas y verificadas por los fabricantes de FPGA o por terceros, están proliferando. El uso de soluciones estándar como prototipos de evaluación es casi siempre el más rápido hora de comprar.