Inicio
Think
Temas
Matriz de puertas programable en campo
Publicado: 08 de mayo de 2024
Colaboradores: Josh Schneider, Ian Smalley
Una FPGA es un tipo versátil de circuito integrado que, a diferencia de los dispositivos lógicos tradicionales, como los ASIC, está diseñado para ser programable (y a menudo reprogramable) para adaptarse a diferentes propósitos, notablemente la computación de alto rendimiento (HPC) y la creación de prototipos.
La frase "programable en campo" se refiere a la capacidad de un FPGA para programar "en el campo" o después de que el fabricante liberó el chip. Xilinx, un fabricante de tecnología, introdujo por primera vez los FPGA en 1985. P
Los FPGA se pueden ajustar para adaptarse a múltiples casos de uso, incluidos fines emergentes o experimentales, sin la necesidad de modificar o alterar físicamente su hardware.
Esta versatilidad reconfigurable se logra a través de una matriz de bloques lógicos programables (PLB) fijos e interconexiones flexibles que se pueden configurarse para realizar operaciones complejas o para servir como puertas lógicas simples. Los FPGA también incluyen elementos de memoria, que van desde flip-flops de un solo bit hasta matrices de memoria muy densas, para el almacenamiento de datos digitales dentro del dispositivo.
Los FPGA son muy valorados por su combinación de alto rendimiento y extrema versatilidad. Son particularmente útiles en aplicaciones que requieren alto rendimiento, baja latencia y flexibilidad en tiempo real. Por esta razón, se emplean comúnmente en las industrias de telecomunicaciones, automotriz y aeroespacial.
Descubra cómo los líderes de TI con visión de futuro emplean IA y automatización para impulsar la competencia con operaciones de TI autónomas.
Los FPGA y los ASIC sirven para diferentes propósitos.
Un ASIC se desarrolla y optimiza para una aplicación específica y no puede reconfigurarse. Sus elementos de circuito internos (transistores) están dispuestos en una estructura fija con interconexión (cableado) fija e inmutable entre ellos.
Debido a que un ASIC sirve para un solo propósito, incorpora solo los elementos lógicos que son necesarios para ese propósito; por ejemplo, si no se necesita un multiplicador de punto flotante, no se incorpora al diseño.
Por el contrario, una FPGA puede configurar y reconfigurarse para cualquier aplicación potencial. Al igual que un ASIC, sus elementos de circuito interno están dispuestos en una estructura fija (bloques lógicos programables o PLB) pero con interconexiones reconfigurables en el medio.
Los elementos lógicos en un FPGA se seleccionan para admitir una amplia variedad de aplicaciones, pero sufren de "úselo o piérdalo" cuando no se emplean elementos lógicos específicos. Si no se requiere un multiplicador de punto flotante para una aplicación en particular, pero el FPGA contiene uno, entonces ese recurso está desconectado y representa "espacio desperdiciado" dentro del FPGA.
Aunque ambos dispositivos pueden contener cientos de millones de transistores, un ASIC puede emplear esos transistores para ofrecer alta eficiencia y rendimiento a expensas de la flexibilidad. Los costos iniciales de desarrollo de un ASIC pueden ser exorbitantes, mientras que los costos unitarios pueden ser relativamente bajos.
Un FPGA emplea sus transistores para ofrecer una alta eficiencia y un alto rendimiento, pero con una enorme flexibilidad. Los cargos iniciales de NRE para desarrollar un FPGA pueden ser extremadamente bajos, mientras que los costos unitarios son generalmente más altos.
Es importante tener en cuenta que estas no son reglas estrictas ni rápidas. En el ámbito del rendimiento, por ejemplo, los FPGA recientes evolucionaron para ofrecer velocidades de reloj de más de 500 MHz y generalmente se fabrican en geometrías de procesos de silicio de última generación. En resumen, el límite entre FPGA y ASIC se vuelve cada vez más borroso con cada nueva generación de FPGA.
Un FPGA se convierte en un dispositivo de hardware personalizado al configurar sus PLB e Interconnect a través de un lenguaje de descripción de hardware (HDL) estándar como Verilog o VHDL.
Las funciones específicas basadas en FPGA, así como las interconexiones entre esas funciones, se "describen" en un HDL. La descripción se compila para producir un archivo de configuración de FPGA. Usando un lenguaje de descripción de hardware, es posible utilizar recursos FPGA incorporados (arreglos de memoria, núcleos PCI y muchos más), así como crear circuitos lógicos personalizados (agregadores, multiplexores y otras funciones específicas de la aplicación) a partir de elementos FPGA más primitivos.
En un proceso conocido como síntesis, el código HDL se traduce en una lista de redes, una descripción efectiva de las puertas lógicas y las interconexiones necesarias para implementar el código HDL. A continuación, la lista de redes se asigna a los PLB y se interconecta para formar físicamente un circuito único.
Los FPGA modernos producidos por fabricantes como Intel y Altera ofrecen una amplia gama de características digitales y analógicas, que incluyen densidades lógicas impresionantes, memoria flash, procesadores integrados y bloques de procesamiento de señales digitales (DSP).
Los FPGA se pueden configurar y reconfigurar modificando las entradas y salidas eléctricas, eligiendo qué recursos internos se emplean y determinando cómo se conectan estos recursos a través de recursos de enrutamiento configurables; el resultado final es una solución de hardware dedicada para resolver un problema en particular.
Al igual que con el software, el desarrollo de diseños complejos de FPGA podría optimizarse mediante el uso de bibliotecas prediseñadas de diversas funciones y circuitos digitales, denominados núcleos de propiedad intelectual (IP). Estas bibliotecas están disponibles para su compra o arrendamiento de proveedores de FPGA y proveedores externos que a menudo se especializan en el desarrollo de diversas funciones.
Además de los componentes de circuitos tradicionales como microcontroladores y convertidores, para lograr sus funciones reconfigurables, los dispositivos FPGA modernos emplean una combinación de varios elementos programables.
Estos elementos programables son principalmente bloques lógicos configurables (CLB), interconexiones programables, enrutamiento programable, bloques programables de entrada/salida (IOB), memoria en chip y bloques de procesamiento de señales digitales (DSP).
Los bloques lógicos configurables (CLB) son el componente principal de los FPGA. Los CLB generalmente contienen algunos elementos lógicos primitivos (puertas lógicas, pequeñas tablas de búsqueda, flip-flops, multiplexores y muchos más).
Dentro del CLB, un flip-flop generalmente sirve como el principal elemento de almacenamiento de datos, aunque las familias de dispositivos más nuevas también pueden incorporar elementos de memoria superficial dentro del CLB.
Los enlaces construidos a partir de segmentos de cable unidos por interruptores programables eléctricamente proporcionan vías de enrutamiento entre el bloque lógico del FPGA.
Las cajas de conmutación que contienen múltiples interruptores semiconductores básicos se emplean comúnmente para establecer una interconexión programable de un FPGA. Estas interconexiones permiten vincular las salidas de una unidad específica o un pad de entrada a cualquier otra celda o pad dentro del circuito.
Los segmentos de cable prefabricados se unen entre sí (o se dejan sin conectar) mediante interconexiones programables para brindar una infraestructura de enrutamiento totalmente programable dentro de un FPGA.
Los recursos de enrutamiento son de naturaleza jerárquica, con una combinación de cables largos, medianos y cortos que abarcan varias “longitudes” dentro del FPGA. Esta infraestructura de enrutamiento programable, habilitada por las interconexiones programables, permite a los usuarios configurar recursos FPGA para la implementación de una tarea o aplicación en particular.
La interfaz entre un FPGA y otros dispositivos externos está habilitada por bloques de entrada/salida (E/S) (IOB). Las IOB son recursos de entrada y salida programables que están configurados para coincidir con los protocolos de cualquier dispositivo externo al que se conecta el FPGA. Todas las señales que entran o salen del FPGA lo hacen a través de pines de dispositivos y IOB asociadas.
Las primeras FPGA empleaban únicamente flip-flops (FF) para integrar la memoria en los bloques lógicos del FPGA. Sin embargo, a medida que aumentaban las capacidades del FPGA, los diseños cada vez más complejos requerían una memoria dedicada en el chip para el almacenamiento en búfer y la reutilización de datos.
Los FPGA modernas emplean grandes matrices de memoria SRAM, tablas de consulta (LUT) más pequeñas y elementos de flip-flop tradicionales para proporcionar el almacenamiento necesario para una aplicación específica.
En los primeros FPGA, los únicos recursos aritméticos disponibles eran sumadores simples; cualquier cosa más compleja se construía a partir de elementos lógicos más primitivos. Sin embargo, a medida que avanzaba la tecnología del silicio, se incorporaron recursos aritméticos más complejos a los FPGA, que culminaron en el moderno bloque FPGA DSP. Los bloques DSP proporcionan recursos altamente optimizados (multiplicadores, acumuladores y muchos más) para la implementación de funciones aritméticas de alto rendimiento.
Su uso elimina la necesidad de implementar estas funciones en CLBs de propósito general, liberando así los CLBs para otros propósitos. Operaciones como el filtrado digital, la convolución, las transformadas de Fourier, las operaciones trigonométricas y muchas más pueden aprovechar estos recursos para obtener rendimiento en tiempo real en aplicaciones que van desde el procesamiento de radar, la formación de haces, el reconocimiento de patrones y muchas más.
Los FPGA están disponibles en variedades diferentes que ofrecen varios tipos de configuración, consumo de energía, elementos programables y memoria en chip.
FPGA que son configurables pero no reconfigurables. Emplean un elemento programable una sola vez llamado antifusible, que se configura aplicando una alta tensión para crear conexiones entre los cables internos. Un FPGA basado en antifusible solo se puede configurar una vez y no se puede volver a configurar.
Estos tipos de FPGA son muy versátiles y pueden configurarse en tiempo de ejecución. Los FPGA basados en SRAM emplean memoria estática de acceso aleatorio (SRAM) para almacenar sus instrucciones de configuración y necesitan memoria externa para mantener el código de configuración.
A diferencia de los FPGA basados en SRAM, los FPGA basados en flash almacenan su configuración en memoria flash no volátil, que tiene el beneficio agregado de ser reprogramable.
Esta variedad de FPGA es similar a los FPGA basados en flash, pero la memoria de solo lectura programable electrónicamente borrable (EEPROM) almacena la configuración del FPGA. Ambos estilos son no volátiles y son reprogramables.
Los FPGA híbridos ofrecen distintos niveles de rendimiento, funcionamiento de bajo consumo y versatilidad mediante una combinación de diferentes elementos programables, como bloques lógicos basados en SRAM o flash.
Los FPGA de sistema en chip (SoC) integran lógica programable con núcleos de procesador duros, combinando la funcionalidad de un FPGA y un SoC, un único chip de silicio que combina múltiples chips de procesamiento de sistemas como CPU, GPU y RAM en una unidad.
Versátiles por naturaleza, los FPGA son adecuados para muchas aplicaciones diferentes.
Los FPGA son los preferidos para el procesamiento de señales y la adquisición de datos debido a sus capacidades de procesamiento paralelo de alta velocidad.
Los algoritmos de procesamiento de señales de alta velocidad hacen que los FPGA sean adecuados para realizar tareas de control de vuelo, procesamiento de sensores y comunicación empleadas en aeronaves no tripuladas como los drones.
Los sistemas de control industrial empleados para monitorear infraestructuras como redes eléctricas, refinerías de petróleo y plantas de tratamiento de agua emplean FPGA que pueden optimizarse fácilmente para satisfacer las necesidades únicas de diversas industrias.
En estas industrias críticas, los FPGA se pueden emplear para implementar diversas automatizaciones y características de cifrado basadas en hardware para una ciberseguridad eficiente.
Si bien los FPGA son soluciones útiles para tareas que requieren flexibilidad, los ASIC específicos de tareas suelen ser más adecuados para operaciones estandarizadas. A medida que se desarrollan nuevos sistemas, los FPGA son valiosos para desarrollar y crear prototipos de nuevos ASIC para tecnologías emergentes.
Los FPGA agregan valor a los centros de datos al facilitar servidores de ancho de banda alto y latencia baja, redes e infraestructura de almacenamiento.
Almacenamiento de nivel empresarial listo para crecer con usted. IBM Storage FlashSystem 5300 es una opción de almacenamiento NVMe para empresas de nivel básico que necesitan un almacenamiento compacto y potente. Unifica la gestión de datos en el núcleo, la nube y el edge y está diseñada en un revolucionario factor de forma 1U.
Un coprocesador que le permite descargar procesos criptográficos computacionalmente intensivos de su servidor host. IBM PCIe Cryptographic Coprocessors es una familia de módulos de seguridad de hardware (HSM) de alto rendimiento. Estas tarjetas PCIe programables funcionan con determinados servidores IBM Z, x64 e IBM Power para descargar procesos criptográficos intensivos en computación, como pagos o transacciones seguras, del servidor alojado.
Una infraestructura de clúster de código abierto optimizada para un procesamiento de datos extremadamente rápido y a gran escala. Apache Spark se desarrolló en AMPLab en UC Berkeley. Puede ayudar a reducir la complejidad de la interacción de datos, aumentar la velocidad de procesamiento y mejorar las aplicaciones de misión crítica con inteligencia profunda.
El almacenamiento flash es una tecnología de almacenamiento en estado sólido que utiliza chips de memoria flash para escribir y almacenar datos, lo que se conoce como operaciones de entrada/salida por segundo (IOPS).
La infraestructura de tecnología de la información, o infraestructura de TI, se refiere a los componentes combinados necesarios para el funcionamiento y la gestión de los servicios de TI de la compañía y los entornos de TI.
El almacenamiento de datos se refiere a medios magnéticos, ópticos o mecánicos que registran y preservan información digital para operaciones en curso o futuras.
Apache Spark es un motor de procesamiento de datos de código abierto ultrarrápido para aplicaciones de aprendizaje automático e inteligencia artificial, apoyado por la comunidad de código abierto más grande en big data.
IA es un término que se refiere al hardware y software necesarios para crear y desplegar aplicaciones y soluciones impulsadas por IA.
El cifrado de datos es una forma de traducir datos de texto sin formato (sin cifrar) a texto cifrado (cifrado).