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

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, interruptores 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.

Una matriz de compuerta programable en campo ( FPGA ) es un circuito integrado (IC) que se puede programar en el campo después de la fabricación.

En términos generales, los FPGA son chips de silicio programables con una colección de bloques lógicos programables rodeados de bloques de entrada / salida que se juntan a través de recursos de interconexión programables para convertirse en cualquier tipo de circuito o sistema digital. FPGA desarrollados a partir de memoria de solo lectura programable (PROM) y dispositivos lógicos programables (PLD).

A diferencia de los procesadores, los FPGA son de naturaleza verdaderamente paralela. Cada tarea de procesamiento independiente se asigna a una sección dedicada del chip. Por lo tanto, el rendimiento de una parte de la aplicación no se ve afectado cuando se agregan más tareas de procesamiento.

Arquitectura FPGA:

La arquitectura precisa de un FPGA varía de un fabricante a otro. Aquí, presentamos una estructura genérica de FPGA que contiene los siguientes elementos:

• Bloques lógicos programables: los bloques lógicos pueden formarse desde miles de transistores hasta millones de transistores. Implementan las funciones lógicas requeridas por el diseño y consisten en componentes lógicos como pares de transistores, tablas de búsqueda (LUT) y lógica de transporte y control (flip flops y multiplexores).

• Bloques de E / S programables: conectan bloques lógicos con componentes externos a través de pines de interfaz.

• Recursos de interconexión programables: son interconexiones programables eléctricamente (preestablecidas vertical y horizontalmente) que proporcionan la ruta de enrutamiento para los bloques lógicos programables. Las rutas de enrutamiento contienen segmentos de cable de diferentes longitudes que pueden interconectarse a través de interruptores programables eléctricamente. La densidad de FPGA depende del número de segmentos utilizados para las rutas de enrutamiento.

¡Espero que este concepto sea útil!

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.

FPGA es un banco de puertas lógicas que pueden formar circuitos digitales interconectando las puertas lógicas dentro de él mediante programación. El sumador, sustractor, registro, máquinas de estado, etc. pueden realizarse utilizando un FPGA. También se puede programar para que funcione como un ADC o un Microcontrolador (MCU).

Se prefieren los FPGA en aplicaciones de alta velocidad. Por ejemplo, en el seguimiento del punto de máxima potencia de un módulo fotovoltaico. Si el convertidor funciona a una frecuencia de 1 MHz, el ADC que se utilizará para detectar el voltaje, la corriente y el voltaje debe ser de 100MHz de velocidad de muestreo. Entonces el controlador debe operar a una frecuencia igual o mayor a 100 MHz. En una aplicación de alta velocidad, preferimos FPGA como controlador, ya que las MCU no pueden funcionar con una velocidad tan alta. Porque las MCU ejecutan el código secuencialmente. Por otro lado, FPGA implementa el código en paralelo. Porque usa lenguaje de descripción de hardware. Una vez que programamos el FPGA, las interconexiones se forman dentro de él. Si se define más de un circuito en un solo programa, creará diferentes circuitos dentro de FPGA en un espacio diferente. Por lo tanto, todos los circuitos pueden funcionar simultáneamente para cumplir el propósito deseado. Por lo tanto, la función de ejecución paralela hace que el FPGA sea inherentemente rápido.

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, sigue siendo 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.

Definición: “Matriz de puertas programable en campo”.

Significado para ingenieros:
“Un chip que se puede usar para implementar cualquier circuito digital arbitrario, siempre que haya suficiente espacio”.

Significado para laicos:
“Un chip genial que se puede hacer para hacer una cosa en un sistema y algo completamente diferente en otro sistema, e incluso se puede cambiar en función más adelante”.

¿Qué es un FPGA? Las cinco razones principales por las que amo el diseño FPGA

FPGA significa Field Programmable Gate Array. Analicemos el término:
¿Qué es un FPGA? Las cinco razones principales por las que amo el diseño FPGA

FPGA se puede usar de diferentes maneras. FPGA proporciona una solución SoC (sistema en chip) que puede tener uno o más procesadores además de muchas IP personalizadas.

Un chip ASIC SoC típico tiene características definidas, mientras que un FPGA le brinda la capacidad de crear su propio SoC personalizado que se adapte a sus necesidades.

Para los sistemas integrados, los FPGA se utilizan principalmente para proporcionar aceleradores de hardware. Un uso es descargar la CPU al delegar una tarea pesada en un núcleo dedicado y simplemente recopilar los resultados.

FPGA significa campo programable de compuerta de campo. Es un dispositivo utilizado para implementar lógica digital. Es un chip que generalmente tiene millones de puertas. Cuando escribimos el programa, estas puertas están conectadas por multiplexores para realizar el circuito digital que queremos probar. Inicialmente, los FPGA se usaban para verificar la lógica y la funcionalidad de un circuito. Como solían ser lentos (es decir, menos GHz), se usaban para la creación de prototipos. Pero hoy en día se han vuelto muy rápidos y potentes, por lo que la gente ha comenzado a hacer un sistema en chip utilizando FPGA y se están utilizando en lugar de ASIC (circuito integrado específico de la aplicación).

Por favor lea las respuestas sobre la pregunta,
¿Cuál es una explicación intuitiva de cómo funciona un FPGA?

FPGA se utiliza principalmente para diseñar circuitos digitales escribiendo un programa en lenguajes de descripción de hardware como VHDL y Veriog. Luego, el código se compila y se descarga en una placa de desarrollo de Target que generalmente alberga el chip FPGA El IDE típico para programar FPGA es Quartus II de Altera. Los FPGA también se pueden programar utilizando las herramientas SOPC y NIOS

Descripción de la funcionalidad del lenguaje HDL => herramientas del proveedor => programa FPGA => verificar en PCB (ya sea placa de desarrollo personalizada o lista para usar).