Una matriz de puertas programables en campo ( FPGA ) es un tipo de circuito integrado configurable que se puede programar repetidamente después de la fabricación. Las FPGA son un subconjunto de dispositivos lógicos denominados dispositivos lógicos programables (PLD). Consisten en una matriz de bloques lógicos programables con una rejilla de conexión, que se pueden configurar "en el campo" para interconectarse con otros bloques lógicos para realizar varias funciones digitales. Las FPGA se utilizan a menudo en la producción de cantidades limitadas (bajas) de productos hechos a medida, y en investigación y desarrollo, donde el mayor coste de las FPGA individuales no es tan importante y donde la creación y fabricación de un circuito personalizado no sería factible. Otras aplicaciones de las FPGA incluyen los sectores de las telecomunicaciones, la automoción, la aeroespacial y la industria, que se benefician de su flexibilidad, alta velocidad de procesamiento de señales y capacidades de procesamiento paralelo.
Una configuración de FPGA generalmente se escribe utilizando un lenguaje de descripción de hardware (HDL), por ejemplo VHDL , similar a los que se utilizan para circuitos integrados específicos de la aplicación (ASIC). Antes se utilizaban diagramas de circuitos para escribir la configuración.
Los bloques lógicos de un FPGA se pueden configurar para realizar funciones combinacionales complejas o actuar como puertas lógicas simples como AND y XOR . En la mayoría de los FPGA, los bloques lógicos también incluyen elementos de memoria , que pueden ser flip-flops simples o bloques de memoria más sofisticados. [1] Muchos FPGA se pueden reprogramar para implementar diferentes funciones lógicas , lo que permite una computación reconfigurable flexible como la que se realiza en el software de computadora .
Los FPGAs también tienen un papel en el desarrollo de sistemas integrados debido a su capacidad de iniciar el desarrollo del software del sistema simultáneamente con el hardware, permitir simulaciones del rendimiento del sistema en una fase muy temprana del desarrollo y permitir varias pruebas del sistema e iteraciones de diseño antes de finalizar la arquitectura del sistema. [2]
Los FPGA también se utilizan comúnmente durante el desarrollo de ASIC para acelerar el proceso de simulación.
La industria de los FPGA surgió a partir de la memoria de solo lectura programable (PROM) y los dispositivos lógicos programables (PLD). Tanto las PROM como los PLD tenían la opción de programarse en lotes en una fábrica o en el campo (programación en campo). [3]
Altera se fundó en 1983 y lanzó el primer dispositivo lógico reprogramable de la industria en 1984, el EP300, que incluía una ventana de cuarzo en el paquete que permitía a los usuarios iluminar la matriz con una lámpara ultravioleta para borrar las celdas EPROM que contenían la configuración del dispositivo. [4]
En 1985, Xilinx produjo el primer conjunto de puertas programable en campo comercialmente viable [3] : el XC2064. [5] El XC2064 tenía puertas programables e interconexiones programables entre puertas, lo que supuso el comienzo de una nueva tecnología y un nuevo mercado. [6] El XC2064 tenía 64 bloques lógicos configurables (CLB), con dos tablas de búsqueda de tres entradas (LUT). [7]
En 1987, el Centro de Guerra de Superficie Naval financió un experimento propuesto por Steve Casselman para desarrollar una computadora que implementara 600.000 puertas reprogramables. Casselman tuvo éxito y en 1992 se emitió una patente relacionada con el sistema. [3]
Altera y Xilinx siguieron sin encontrar rivales y crecieron rápidamente desde 1985 hasta mediados de los años 1990, cuando aparecieron competidores que erosionaron una parte significativa de su cuota de mercado. En 1993, Actel (más tarde Microsemi , ahora Microchip ) atendía aproximadamente el 18 por ciento del mercado. [6]
La década de 1990 fue un período de rápido crecimiento para los FPGA, tanto en sofisticación de circuitos como en volumen de producción. A principios de la década de 1990, los FPGA se utilizaban principalmente en telecomunicaciones y redes . A finales de la década, los FPGA se abrieron camino en aplicaciones de consumo, automotrices e industriales. [8]
En 2013, Altera (31 por ciento), Actel (10 por ciento) y Xilinx (36 por ciento) juntos representaban aproximadamente el 77 por ciento del mercado de FPGA. [9]
Empresas como Microsoft han comenzado a utilizar FPGAs para acelerar sistemas de alto rendimiento y de uso intensivo de recursos computacionales (como los centros de datos que operan su motor de búsqueda Bing ), debido a la ventaja de rendimiento por vatio que ofrecen los FPGAs. [10] Microsoft comenzó a utilizar FPGAs para acelerar Bing en 2014, y en 2018 comenzó a implementar FPGAs en otras cargas de trabajo de centros de datos para su plataforma de computación en la nube Azure . [11]
Las siguientes líneas de tiempo indican el progreso en diferentes aspectos del diseño de FPGA.
Un inicio de diseño es un nuevo diseño personalizado para implementar en un FPGA.
Los FPGAs contemporáneos tienen una gran cantidad de puertas lógicas y bloques de RAM para implementar cálculos digitales complejos. Los FPGAs se pueden utilizar para implementar cualquier función lógica que un ASIC pueda realizar. La capacidad de actualizar la funcionalidad después del envío, la reconfiguración parcial de una parte del diseño [18] y los bajos costos de ingeniería no recurrentes en relación con un diseño ASIC (a pesar del costo unitario generalmente más alto) ofrecen ventajas para muchas aplicaciones. [1]
Como los diseños de FPGA emplean tasas de E/S muy rápidas y buses de datos bidireccionales , se convierte en un desafío verificar la sincronización correcta de los datos válidos dentro del tiempo de configuración y el tiempo de retención. [19] La planificación del piso ayuda a la asignación de recursos dentro de los FPGA para cumplir con estas restricciones de tiempo.
Algunos FPGAs tienen características analógicas además de funciones digitales. La característica analógica más común es una velocidad de respuesta programable en cada pin de salida, lo que permite al ingeniero establecer velocidades bajas en pines ligeramente cargados que de otro modo sonarían o se acoplarían de manera inaceptable, y establecer velocidades más altas en canales de alta velocidad muy cargados que de otro modo funcionarían demasiado lentos. [20] [21] También son comunes los circuitos de controlador de oscilador de cristal de cuarzo, los osciladores RC en chip y los bucles de enganche de fase con osciladores controlados por voltaje integrados que se utilizan para la generación y gestión de relojes, así como para los relojes de transmisión del serializador-deserializador de alta velocidad (SERDES) y la recuperación del reloj del receptor. Bastante comunes son los comparadores diferenciales en los pines de entrada diseñados para conectarse a canales de señalización diferencial . Algunos FPGAs de señal mixta tienen convertidores analógicos a digitales (ADC) periféricos integrados y convertidores digitales a analógicos (DAC) con bloques de acondicionamiento de señales analógicas, lo que les permite funcionar como un sistema en un chip (SoC). [22] Estos dispositivos difuminan la línea entre un FPGA, que lleva unos y ceros digitales en su estructura de interconexión programable interna, y una matriz analógica programable en campo (FPAA), que lleva valores analógicos en su estructura de interconexión programable interna.
La arquitectura FPGA más común consiste en una matriz de bloques lógicos llamados bloques lógicos configurables (CLB) o bloques de matriz lógica (LAB) (según el proveedor), pads de E/S y canales de enrutamiento. [1] Generalmente, todos los canales de enrutamiento tienen el mismo ancho (número de señales). Múltiples pads de E/S pueden caber en la altura de una fila o en el ancho de una columna de la matriz.
"Un circuito de aplicación debe ser mapeado en un FPGA con recursos adecuados. Mientras que la cantidad de bloques lógicos y E/S requeridas se determina fácilmente a partir del diseño, la cantidad de canales de enrutamiento necesarios puede variar considerablemente incluso entre diseños con la misma cantidad de lógica. Por ejemplo, un interruptor de barra cruzada requiere mucho más enrutamiento que una matriz sistólica con el mismo conteo de puertas. Dado que los canales de enrutamiento no utilizados aumentan el costo (y disminuyen el rendimiento) del FPGA sin proporcionar ningún beneficio, los fabricantes de FPGA intentan proporcionar solo los canales suficientes para que la mayoría de los diseños que se ajusten en términos de tablas de búsqueda (LUT) y E/S puedan enrutarse . Esto se determina mediante estimaciones como las derivadas de la regla de Rent o mediante experimentos con diseños existentes". [23]
En general, un bloque lógico consta de unas cuantas celdas lógicas. Una celda típica consta de una LUT de 4 entradas, un sumador completo (FA) y un flip-flop tipo D. La LUT se puede dividir en dos LUT de 3 entradas. En el modo normal, se combinan en una LUT de 4 entradas a través del primer multiplexor (mux). En el modo aritmético , sus salidas se envían al sumador. La selección del modo se programa en el segundo mux. La salida puede ser sincrónica o asincrónica , según la programación del tercer mux. En la práctica, el sumador completo o partes de él se almacenan como funciones en las LUT para ahorrar espacio . [24] [25] [26]
Las familias de FPGA modernas amplían las capacidades anteriores para incluir funciones de nivel superior fijadas en silicio. Tener estas funciones comunes integradas en el circuito reduce el área requerida y les otorga a esas funciones un mayor rendimiento en comparación con su construcción a partir de primitivas lógicas. Algunos ejemplos de estas incluyen multiplicadores , bloques DSP genéricos , procesadores integrados , lógica de E/S de alta velocidad y memorias integradas .
Los FPGA de gama alta pueden contener transceptores multigigabit de alta velocidad y núcleos IP duros como núcleos de procesador , unidades de control de acceso al medio Ethernet , controladores PCI o PCI Express y controladores de memoria externa . Estos núcleos existen junto con la estructura programable, pero están construidos con transistores en lugar de LUT, por lo que tienen un rendimiento y un consumo de energía de nivel ASIC sin consumir una cantidad significativa de recursos de la estructura, dejando más de la estructura libre para la lógica específica de la aplicación. Los transceptores multigigabit también contienen circuitos de acondicionamiento de señales de alto rendimiento junto con serializadores y deserializadores de alta velocidad, componentes que no se pueden construir a partir de LUT. La funcionalidad de la capa física (PHY) de nivel superior, como la codificación de línea , puede o no implementarse junto con los serializadores y deserializadores en la lógica dura, según el FPGA.
Un enfoque alternativo al uso de macroprocesadores duros es hacer uso de núcleos IP de procesadores blandos que se implementan dentro de la lógica FPGA. Nios II , MicroBlaze y Mico32 son ejemplos de procesadores de núcleo blando populares. Muchos FPGA modernos se programan en tiempo de ejecución , lo que ha llevado a la idea de computación reconfigurable o sistemas reconfigurables: CPU que se reconfiguran a sí mismas para adaptarse a la tarea en cuestión. Además, están comenzando a surgir nuevas arquitecturas no FPGA. Los microprocesadores configurables por software como el Stretch S5000 adoptan un enfoque híbrido al proporcionar una matriz de núcleos de procesador y núcleos programables similares a FPGA en el mismo chip.
En 2012, el enfoque arquitectónico de grano grueso se llevó un paso más allá al combinar los bloques lógicos e interconexiones de los FPGA tradicionales con microprocesadores integrados y periféricos relacionados para formar un sistema completo en un chip programable . Se pueden encontrar ejemplos de tales tecnologías híbridas en el SoC totalmente programable Xilinx Zynq-7000 , [27] que incluye un procesador ARM Cortex-A9 MPCore de doble núcleo de 1,0 GHz integrado en la estructura lógica del FPGA, [28] o en el FPGA Altera Arria V, que incluye un ARM Cortex-A9 MPCore de doble núcleo de 800 MHz . El FPSLIC de Atmel es otro de esos dispositivos, que utiliza un procesador AVR en combinación con la arquitectura lógica programable de Atmel. Los dispositivos Microsemi SmartFusion incorporan un núcleo de procesador duro ARM Cortex-M3 (con hasta 512 kB de flash y 64 kB de RAM) y periféricos analógicos como convertidores analógico-digitales multicanal y convertidores digital-analógicos en su estructura FPGA basada en memoria flash . [ cita requerida ]
La mayor parte de la lógica dentro de un FPGA es un circuito sincrónico que requiere una señal de reloj . Los FPGA contienen redes de enrutamiento globales y regionales dedicadas para reloj y reinicio, generalmente implementadas como un árbol H , por lo que se pueden entregar con un sesgo mínimo . Los FPGA pueden contener componentes analógicos de bucle de enganche de fase o bucle de enganche de retardo para sintetizar nuevas frecuencias de reloj y gestionar el jitter . Los diseños complejos pueden utilizar múltiples relojes con diferentes relaciones de frecuencia y fase, cada uno formando dominios de reloj separados . Estas señales de reloj se pueden generar localmente mediante un oscilador o se pueden recuperar de un flujo de datos . Se debe tener cuidado al construir circuitos que crucen el dominio del reloj para evitar la metaestabilidad . Algunos FPGA contienen bloques de RAM de doble puerto que son capaces de trabajar con diferentes relojes, lo que ayuda en la construcción de FIFO de construcción y búferes de doble puerto que unen los dominios de reloj.
Para reducir el tamaño y el consumo de energía de los FPGA, proveedores como Tabula y Xilinx han introducido arquitecturas 3D o apiladas . [29] [30] Tras la introducción de sus FPGA de la serie 7 de 28 nm , Xilinx dijo que varias de las piezas de mayor densidad en esas líneas de productos FPGA se construirán utilizando múltiples matrices en un paquete, empleando tecnología desarrollada para la construcción 3D y ensamblajes de matrices apiladas.
El método de Xilinx consiste en apilar varias matrices FPGA activas (tres o cuatro) una al lado de la otra sobre un intercalador de silicio , una única pieza de silicio que lleva la interconexión pasiva. [30] [31] La construcción de múltiples matrices también permite crear diferentes partes de la FPGA con diferentes tecnologías de proceso, ya que los requisitos de proceso son diferentes entre la propia estructura de la FPGA y los transceptores en serie de altísima velocidad de 28 Gbit/s. Una FPGA construida de esta manera se denomina FPGA heterogénea . [32]
El enfoque heterogéneo de Altera implica el uso de una única matriz FPGA monolítica y la conexión de otras matrices y tecnologías a la FPGA mediante la tecnología de puente de interconexión multimatriz (EMIB) integrada de Intel. [33]
Para definir el comportamiento del FPGA, el usuario proporciona un diseño en lenguaje de descripción de hardware (HDL) o como diseño esquemático . El formato HDL es más adecuado para trabajar con estructuras grandes porque es posible especificar un comportamiento funcional de alto nivel en lugar de dibujar cada pieza a mano. Sin embargo, la introducción de un esquema puede permitir una visualización más sencilla de un diseño y sus módulos componentes .
Utilizando una herramienta de automatización de diseño electrónico , se genera una lista de conexiones asignada a la tecnología . La lista de conexiones se puede ajustar a la arquitectura real del FPGA mediante un proceso llamado " place and route" , que normalmente se lleva a cabo mediante el software propietario de "place and route" de la empresa del FPGA. El usuario validará los resultados mediante análisis de tiempos , simulación y otras técnicas de verificación y validación . Una vez que se completa el proceso de diseño y validación, el archivo binario generado, normalmente mediante el software propietario del proveedor del FPGA, se utiliza para (re)configurar el FPGA. Este archivo se transfiere al FPGA a través de una interfaz en serie ( JTAG ) o a un dispositivo de memoria externo como una EEPROM .
Los HDL más comunes son VHDL y Verilog . El lenguaje de programación gráfica LabVIEW de National Instruments (a veces denominado G ) tiene un módulo adicional FPGA disponible para apuntar y programar hardware FPGA. Verilog se creó para simplificar el proceso, haciendo que HDL sea más robusto y flexible. Verilog tiene una sintaxis similar a C, a diferencia de VHDL. [34] [ ¿ Fuente autopublicada? ]
Para simplificar el diseño de sistemas complejos en FPGAs, existen bibliotecas de funciones y circuitos complejos predefinidos que han sido probados y optimizados para acelerar el proceso de diseño. Estos circuitos predefinidos se denominan comúnmente núcleos de propiedad intelectual (IP) y están disponibles a través de proveedores de FPGA y proveedores de IP de terceros. Rara vez son gratuitos y, por lo general, se publican bajo licencias propietarias. Otros circuitos predefinidos están disponibles en comunidades de desarrolladores como OpenCores (generalmente publicados bajo licencias gratuitas y de código abierto como GPL , BSD o licencias similares). Estos diseños se conocen como hardware de código abierto .
En un flujo de diseño típico , un desarrollador de aplicaciones FPGA simulará el diseño en múltiples etapas a lo largo del proceso de diseño. Inicialmente, se simula la descripción RTL en VHDL o Verilog mediante la creación de bancos de pruebas para simular el sistema y observar los resultados. Luego, después de que el motor de síntesis haya mapeado el diseño a una lista de conexiones, la lista de conexiones se traduce a una descripción a nivel de compuerta donde se repite la simulación para confirmar que la síntesis se realizó sin errores. Finalmente, el diseño se presenta en el FPGA, momento en el cual los valores de retardo de propagación se pueden anotar nuevamente en la lista de conexiones y la simulación se puede ejecutar nuevamente con estos valores.
Más recientemente, los programadores están utilizando OpenCL (Open Computing Language) para aprovechar el rendimiento y la eficiencia energética que proporcionan los FPGA. OpenCL permite a los programadores desarrollar código en el lenguaje de programación C. [ 35] Para obtener más información, consulte síntesis de alto nivel y C a HDL .
La mayoría de los FPGA se basan en un enfoque basado en SRAM para su programación. Estos FPGA se pueden programar y reprogramar en el sistema, pero requieren dispositivos de arranque externos. Por ejemplo, los dispositivos de memoria flash o EEPROM pueden cargar contenidos en la SRAM interna que controla el enrutamiento y la lógica. El enfoque de SRAM se basa en CMOS .
Las alternativas más raras al enfoque SRAM incluyen:
En 2016, los rivales de larga data de la industria Xilinx (ahora parte de AMD ) y Altera (ahora parte de Intel ) eran los líderes del mercado de FPGA. [37] En ese momento, controlaban casi el 90 por ciento del mercado.
Tanto Xilinx (ahora AMD) como Altera (ahora Intel) ofrecen software de automatización de diseño electrónico propietario para Windows y Linux ( ISE / Vivado y Quartus ) que permite a los ingenieros diseñar , analizar, simular y sintetizar ( compilar ) sus diseños. [38] [39]
En marzo de 2010, Tabula anunció su tecnología FPGA que utiliza lógica multiplexada en el tiempo e interconexión que promete posibles ahorros de costos para aplicaciones de alta densidad. [40] El 24 de marzo de 2015, Tabula cerró oficialmente. [41]
El 1 de junio de 2015, Intel anunció que adquiriría Altera por aproximadamente US$ 16,7 mil millones y completó la adquisición el 30 de diciembre de 2015. [42]
El 27 de octubre de 2020, AMD anunció que adquiriría Xilinx [43] y completó la adquisición valorada en aproximadamente US$50 mil millones en febrero de 2022. [44]
En febrero de 2024, Altera volvió a ser independiente de Intel. [45]
Otros fabricantes incluyen:
Un FPGA puede utilizarse para resolver cualquier problema que sea computable . Los FPGA pueden utilizarse para implementar un microprocesador suave , como el Xilinx MicroBlaze o el Altera Nios II . Pero su ventaja radica en que son significativamente más rápidos para algunas aplicaciones debido a su naturaleza paralela y su optimalidad en términos del número de puertas utilizadas para ciertos procesos. [51]
Los FPGAs se introdujeron originalmente como competidores de los CPLD para implementar la lógica de unión para las placas de circuitos impresos . A medida que su tamaño, capacidades y velocidad aumentaron, los FPGAs asumieron funciones adicionales hasta el punto en que algunos ahora se comercializan como sistemas completos en chips (SoC). Particularmente con la introducción de multiplicadores dedicados en las arquitecturas FPGA a fines de la década de 1990, las aplicaciones que tradicionalmente habían sido reserva exclusiva de los procesadores de señales digitales (DSP) comenzaron a utilizar FPGAs en su lugar. [52] [53]
La evolución de los FPGAs ha motivado un aumento en el uso de estos dispositivos, cuya arquitectura permite el desarrollo de soluciones hardware optimizadas para tareas complejas, como la segmentación de imágenes de resonancia magnética 3D, la transformada wavelet discreta 3D, la reconstrucción de imágenes tomográficas o los sistemas PET/MRI. [54] [55] Las soluciones desarrolladas pueden realizar tareas de computación intensivas con procesamiento paralelo, son reprogramables dinámicamente y tienen un bajo costo, todo ello cumpliendo con los estrictos requisitos de tiempo real asociados con las imágenes médicas.
Otra tendencia en el uso de FPGAs es la aceleración de hardware , donde uno puede usar el FPGA para acelerar ciertas partes de un algoritmo y compartir parte del cálculo entre el FPGA y un procesador genérico. El motor de búsqueda Bing es conocido por adoptar la aceleración FPGA para su algoritmo de búsqueda en 2014. [56] A partir de 2018 [actualizar], los FPGAs están viendo un uso creciente como aceleradores de IA, incluido el denominado "Proyecto Catapulta" de Microsoft [11] y para acelerar redes neuronales artificiales para aplicaciones de aprendizaje automático .
Tradicionalmente, los FPGAs se han reservado para aplicaciones verticales específicas donde el volumen de producción es pequeño. Para estas aplicaciones de bajo volumen , la prima que las empresas pagan en costo de hardware por unidad por un chip programable es más asequible que los recursos de desarrollo gastados en crear un ASIC. A partir de 2017 , las nuevas dinámicas de costos y rendimiento han ampliado la gama de aplicaciones viables.[actualizar]
Cuando los periféricos de ordenadores personales existen en mercados especializados o tienen dificultades para abrirse paso en un mercado masivo (a veces a pesar de una fuerte promoción), puede resultar más rentable utilizar FPGAs para pequeñas producciones (por ejemplo, 1.000 unidades). Algunos ejemplos son productos exóticos como, por ejemplo, ArVid , un archivador de cintas VHS (del que solo algunas versiones estaban basadas en FPGA) y la unidad pseudo-SSD económica i-RAM de Gigabyte Technology , que utilizaba un FPGA de Xilinx. [57] A menudo, un chip hecho a medida sería más barato si se fabricara en grandes cantidades, pero se pueden elegir FPGAs para llevar rápidamente un producto al mercado. De nuevo, en la medida en que aumente la disponibilidad de FPGAs de menor coste, puede llegar a justificarse su inclusión incluso en producciones más grandes.
Otros usos de los FPGAs incluyen:
Los FPGAs desempeñan un papel crucial en las comunicaciones militares modernas, especialmente en sistemas como el Sistema de Radio Táctica Conjunta (JTRS) y en dispositivos de empresas como Thales y Harris Corporation . Su flexibilidad y programabilidad los hacen ideales para las comunicaciones militares, ofreciendo un procesamiento de señales personalizable y seguro. En el JTRS, utilizado por el ejército estadounidense, los FPGAs proporcionan adaptabilidad y procesamiento en tiempo real, cruciales para cumplir con varios estándares de comunicación y métodos de cifrado. Thales aprovecha la tecnología FPGA para diseñar dispositivos de comunicación que cumplan con las rigurosas demandas del uso militar, incluida la reconfiguración rápida y la seguridad robusta. De manera similar, Harris Corporation, ahora parte de L3Harris Technologies , incorpora FPGAs en sus soluciones de comunicación comercial y de defensa, mejorando el procesamiento de señales y la seguridad del sistema. [62]
Los FPGAs tienen ventajas y desventajas en comparación con los ASIC o microprocesadores seguros, en lo que respecta a la seguridad del hardware . La flexibilidad de los FPGAs hace que las modificaciones maliciosas durante la fabricación sean un riesgo menor. [63] Anteriormente, para muchos FPGAs, el flujo de bits de diseño se exponía mientras el FPGA lo cargaba desde la memoria externa (normalmente en cada encendido). Todos los principales proveedores de FPGAs ofrecen ahora un espectro de soluciones de seguridad a los diseñadores, como el cifrado y la autenticación del flujo de bits . Por ejemplo, Altera y Xilinx ofrecen cifrado AES (hasta 256 bits) para flujos de bits almacenados en una memoria flash externa. Las funciones físicas no clonables (PUF) son circuitos integrados que tienen sus propias firmas únicas, debido al procesamiento, y también se pueden utilizar para proteger los FPGAs mientras ocupan muy poco espacio en el hardware. [64]
Los FPGAs que almacenan su configuración internamente en una memoria flash no volátil, como ProAsic 3 de Microsemi o los dispositivos programables XP2 de Lattice , no exponen el flujo de bits y no necesitan cifrado . Además, la memoria flash para una tabla de búsqueda proporciona protección contra alteraciones de un solo evento para aplicaciones espaciales. [ Aclaración necesaria ] Los clientes que desean una mayor garantía de resistencia a la manipulación pueden utilizar FPGAs antifusibles de escritura única de proveedores como Microsemi .
Con sus FPGAs y SoCs Stratix 10, Altera introdujo un Administrador de Dispositivos Seguros y funciones físicas no clonables para brindar altos niveles de protección contra ataques físicos. [65]
En 2012, los investigadores Sergei Skorobogatov y Christopher Woods demostraron que algunos FPGA pueden ser vulnerables a intenciones hostiles. Descubrieron que se había creado una vulnerabilidad crítica de puerta trasera en silicio como parte del Actel/Microsemi ProAsic 3, lo que lo hacía vulnerable en muchos niveles, como la reprogramación de claves de acceso y criptografía , el acceso a flujos de bits no cifrados, la modificación de características de bajo nivel del silicio y la extracción de datos de configuración . [66]
En 2020 se descubrió una vulnerabilidad crítica (denominada "Starbleed") en todos los FPGA de la serie 7 de Xilinx que hacía inútil el cifrado de flujo de bits. No existe ninguna solución alternativa. Xilinx no produjo una revisión del hardware. Los dispositivos Ultrascale y posteriores, que ya estaban en el mercado en ese momento, no se vieron afectados.
Históricamente, los FPGAs han sido más lentos, menos eficientes energéticamente y, en general, han logrado menos funcionalidad que sus contrapartes ASIC fijas. Un estudio de 2006 mostró que los diseños implementados en FPGAs necesitan en promedio 40 veces más área, consumen 12 veces más energía dinámica y funcionan a un tercio de la velocidad de las implementaciones ASIC correspondientes. [67]
Las ventajas de los FPGAs incluyen la capacidad de reprogramarlos cuando ya están implementados (es decir, "en el campo") para corregir errores , y a menudo incluyen un menor tiempo de comercialización y menores costos de ingeniería no recurrentes . Los proveedores también pueden tomar un camino intermedio a través del prototipado de FPGA : desarrollar su hardware prototipo en FPGAs, pero fabricar su versión final como un ASIC para que ya no pueda modificarse después de que se haya confirmado el diseño. Esto también suele suceder con los nuevos diseños de procesadores. [68] Algunos FPGAs tienen la capacidad de reconfiguración parcial que permite reprogramar una parte del dispositivo mientras otras partes continúan funcionando. [69] [70]
Las principales diferencias entre los dispositivos lógicos programables complejos (CPLD) y los FPGA son arquitectónicas . Un CPLD tiene una estructura comparativamente restrictiva que consiste en una o más matrices lógicas de suma de productos programables que alimentan un número relativamente pequeño de registros sincronizados . Como resultado, los CPLD son menos flexibles pero tienen la ventaja de retrasos de tiempo más predecibles y una mayor relación lógica-interconexión. [ cita requerida ] Las arquitecturas de FPGA, por otro lado, están dominadas por la interconexión . Esto las hace mucho más flexibles (en términos de la gama de diseños que son prácticos para la implementación en ellas) pero también mucho más complejas de diseñar, o al menos requieren un software de automatización de diseño electrónico (EDA) más complejo. En la práctica, la distinción entre FPGA y CPLD es a menudo una de tamaño, ya que los FPGA suelen ser mucho más grandes en términos de recursos que los CPLD. Normalmente, solo los FPGA contienen funciones integradas más complejas , como sumadores , multiplicadores , memoria y serializadores/deserializadores . Otra distinción común es que los CPLD contienen memoria flash incorporada para almacenar su configuración, mientras que los FPGAs generalmente requieren memoria externa no volátil (pero no siempre). Cuando un diseño requiere un encendido instantáneo simple (la lógica ya está configurada al encender el sistema), generalmente se prefieren los CPLD. Para la mayoría de las demás aplicaciones, generalmente se prefieren los FPGAs. A veces, se utilizan tanto CPLD como FPGAs en un único diseño de sistema. En esos diseños, los CPLD generalmente realizan funciones de lógica de unión y son responsables de " arrancar " el FPGA, así como de controlar la secuencia de reinicio y arranque de la placa de circuito completa. Por lo tanto, dependiendo de la aplicación, puede ser prudente utilizar tanto FPGAs como CPLDs en un único diseño. [71]