La matriz de puertas programables por el usuario ( FPGA , matriz de puertas programables en campo en inglés , FPGA ) es un dispositivo semiconductor que puede ser configurado por el fabricante o desarrollador después de la fabricación; el tipo más complejo de circuitos integrados lógicos programables en la organización .
Se programan cambiando la lógica del diagrama del circuito , por ejemplo, utilizando el código fuente en el lenguaje de descripción de hardware (por ejemplo , Verilog ). Se pueden modificar en casi cualquier momento durante su uso. Consisten en bloques lógicos configurables como interruptores con múltiples entradas y una salida ( puertas lógicas , puertas ). En los circuitos digitales, estos interruptores implementan las operaciones binarias básicas AND , NAND , OR , NOR y XOR . La diferencia fundamental entre los FPGA es que tanto las funciones de los bloques como la configuración de las conexiones entre ellos se pueden cambiar con la ayuda de señales especiales enviadas al circuito. Algunos circuitos integrados de aplicaciones específicas ( ASIC ) utilizan arreglos lógicos de diseño similar a los FPGA; sin embargo, se configuran una vez durante la producción, mientras que los FPGA se pueden reprogramar constantemente y cambiar la topología de las conexiones durante el uso. Sin embargo, tal flexibilidad requiere un aumento significativo en el número de transistores en el microcircuito.
En los primeros FPGA , solo las conexiones entre puertas podían cambiarse mediante programación [1] ; En 1985, los cofundadores de Xilinx , Ross Freeman y Bernard V. Vonderschmitt , desarrollaron el primer FPGA comercialmente exitoso, el XC2064, que tiene compuertas programables y conexiones programables entre ellas (en 2005, Freeman fue incluido por esta invención en el Salón Nacional de Inventores de EE. UU. fama ). El concepto mismo de arreglos de puertas programables en campo, puertas lógicas y bloques lógicos fue patentado por David Page y Louwern Peterson en 1985 [2] [3] . En la década de 1990, hubo un gran salto en el interés por los FPGA, su complejidad y volúmenes de producción aumentaron: si en los primeros años se utilizaron principalmente en el campo de las telecomunicaciones y las redes de comunicación, a finales de la década encontraron aplicación en bienes de consumo, en la industria automotriz y otras industrias.
En 1997, Adrian Thompson combinó algoritmos genéticos y tecnología FPGA para crear un dispositivo capaz de distinguir entre tonos de audio de 1 kHz y 10 kHz . Los algoritmos genéticos hicieron posible, utilizando una matriz de puertas de 64 × 64 en un chip Xilinx, crear la configuración necesaria para resolver el problema [4] . En los mismos años, comenzaron a ser ampliamente utilizados para la creación de prototipos de circuitos integrados especializados y procesadores de propósito general. A principios de la década de 2000, los FPGA comenzaron a usarse para acelerar operaciones específicas en nodos de servidores tanto en la industria HPC como en motores de bases de datos ( Netezza ). En la segunda mitad de la década de 2010, hubo un gran interés en la tecnología debido a la efectividad de su aplicación para el aprendizaje profundo (principalmente debido a la posibilidad de implementar aritmética con precisión reducida y cálculos sin registro, un análogo del procesador de tensores de Google ). ), y los proveedores de infraestructura en la nube tuvieron la oportunidad de comprar FPGA por suscripción desde la nube pública ( Amazon F1, Baidu , Tencent , Huawei ).
Para 2018, el volumen del mercado global de FPGA ascendió a alrededor de $ 5,7 mil millones, los mayores fabricantes son Xilinx (51% del mercado), Intel (36%, debido a los activos de Altera ), Microchip (17%), Lattice Semiconductor (9%) [5] .
La FPGA tiene tres tipos de elementos programables:
Los PLB son elementos funcionales para construir la lógica del usuario. BVV proporciona comunicación entre los contactos de la caja y las líneas de señal internas. Los recursos de comunicaciones internas programables proporcionan el control de las rutas de conexión de las entradas y salidas del PLB y las unidades de entrada-salida (I/O) a las redes correspondientes [6] . Todos los canales de enrutamiento tienen el mismo ancho (mismo número de cables). La mayoría de los bloques de E/S (E/S) caben en una fila (alto) o en una columna (ancho) del arreglo de puertas.
El bloque lógico (LB) del FPGA clásico consta de una tabla de verdad ( tabla de búsqueda en inglés , LUT ) para varias entradas y un flip- flop (4 entradas se usaron en las primeras implementaciones, más tarde, una mayor cantidad de entradas, lo que lo hizo posible utilizar un número menor de bloques lógicos para aplicaciones típicas [7] ).
El bloque lógico (PLB) tiene una tabla de verdad para cuatro entradas y una entrada de reloj. Solo hay una salida de bloque: una tabla de verdad de salida con registro o sin registro. Dado que las señales de reloj en los FPGA comerciales (y, a menudo, otras señales que están en paralelo a una gran cantidad de entradas, señales de alto abanico) se enrutan de una manera especial mediante circuitos de enrutamiento especiales, estas señales se administran por separado.
Para la arquitectura de ejemplo dada, el pinout del bloque lógico se muestra a continuación.
Las entradas están ubicadas en lados separados del bloque lógico; el pin de salida se puede enrutar en dos canales: a la derecha del bloque o a la parte inferior. Los pines de salida de cada bloque lógico se pueden conectar a segmentos de enrutamiento en canales adyacentes. De manera similar, un pad de bloque de E/S se puede conectar a un elemento de enrutamiento en cualquier canal adyacente. Por ejemplo, la almohadilla superior del chip se puede conectar a cualquiera de los conductores W (donde W es el ancho del canal) en el canal horizontal directamente debajo de él.
Por lo general, el enrutamiento de FPGA no está segmentado, es decir, cada segmento de cable conecta solo un bloque lógico al bloque de interruptores. Debido a la envoltura de los interruptores programables en el bloque de interruptores, la traza es más larga. Para aumentar la velocidad de las conexiones dentro del sistema, algunas arquitecturas FPGA utilizan conexiones de rastreo más largas entre bloques lógicos.
Los bloques de conmutación se crean en la intersección de los canales verticales y horizontales. Con esta arquitectura, cada conductor en un bloque de interruptores tiene tres interruptores programables que le permiten conectarse a otros tres conductores en segmentos de canales adyacentes. El modelo o topología de los conmutadores utilizados en esta arquitectura es la topología plana o de dominio de las unidades de conmutación. En esta topología, el seguimiento número 1 solo se conecta al seguimiento número 1 en canales adyacentes, el seguimiento número 2 solo se conecta al seguimiento número 2, y así sucesivamente.
Las familias modernas de FPGA amplían las capacidades enumeradas anteriormente y tienen funciones de alto nivel incorporadas, gracias a las cuales es posible reducir el área del chip y acelerar la ejecución de subtareas típicas en comparación con la implementación basada en primitivas.
Los FPGA también se utilizan ampliamente para sistemas de validación, incluida la validación previa y posterior al silicio, así como en el desarrollo de programas para sistemas integrados . Esto permite a las empresas de circuitos integrados probar el rendimiento de sus dispositivos antes de fabricarlos en la fábrica, lo que reduce el tiempo de comercialización.
Tecnologías de procesadores digitales | |||||||||
---|---|---|---|---|---|---|---|---|---|
Arquitectura | |||||||||
Set de instrucciones arquitectura | |||||||||
palabra maquina | |||||||||
Paralelismo |
| ||||||||
Implementaciones | |||||||||
Componentes | |||||||||
Administración de energía |