Matriz de puerta programable en campo


Una matriz de puertas lógicas programable en campo[1][2] o FPGA (del inglés field-programmable gate array), es un circuito integrado programable, que contiene bloques de lógica cuya interconexión y funcionalidad puede ser configurada según sea necesario, mediante un lenguaje de descripción especializado, como VHDL o Verilog. Pertenece a la categoría de los dispositivos de lógica programable (PLD, por sus siglas en inglés). Las FPGA son una de las tecnologías que se utiliza para desarrollar sistemas embebidos.
La lógica programable de una FPGA puede reproducir desde funciones tan sencillas como las llevadas a cabo por una puerta lógica o un sistema combinacional, hasta complejos sistemas en un chip. Se llama "en campo" haciendo referencia a que se pueden configurar en cualquier momento, a diferencia de la mayoría de circuitos integrados y arquitecturas de CPU, cuya interconexión interna está establecida "en fábrica".
Las FPGA se utilizan en aplicaciones similares a los ASIC. Comparados con los ASIC, las FPGA son mucho más flexibles, gracias a su posibilidad de ser reconfigurados, permitiendo crear una amplia cantidad de diseños, lo cual les ha dado una importante ventaja competitiva que los ha vuelto más utilizados.[3] Sin embargo, las FPGA son más lentas, tienen un mayor consumo de energía y no pueden abarcar sistemas tan complejos como los ASIC.
Historia
[editar]
Las FPGA fueron inventadas en el año 1984 por Ross Freeman y Bernard Von Der Schmitt, cofundadores de Xilinx.
Las FPGA evolucionan el diseño de los Dispositivo de Lógica Programable (PLD), además de añadir características de los ASIC.
La historia de los PLD comenzó con los primeros dispositivos PROM (memoria programable de solo lectura) y se les añadió versatilidad con los PAL (matriz lógica programable) que permitieron un mayor número de entradas y la inclusión de registros. Esos dispositivos han continuado creciendo en tamaño y potencia.
Mientras, los ASIC siempre han sido potentes dispositivos, pero su uso ha requerido tradicionalmente una considerable inversión tanto de tiempo como de dinero. Intentos de reducir esta carga han provenido de la modularización de los elementos de los circuitos, como los ASIC basados en celdas, y de la estandarización de las máscaras, tal como Ferranti fue pionero con la ULA (Uncommitted Logic Array).
El paso final era combinar las dos estrategias con un mecanismo de interconexión que pudiese programarse utilizando fusibles, antifusibles o celdas RAM y celdas ROM, como los innovadores dispositivos Xilinx de mediados de los 80. Los circuitos resultantes son similares en capacidad y aplicaciones a los PLD más grandes, aunque hay diferencias puntuales que delatan antepasados diferentes.
FPGA frente a otras tecnologías
[editar]ASIC
[editar]Las FPGA se utilizan en aplicaciones similares a los ASIC pero tienen una serie de inconvenientes históricos así como de ventajas respecto a estos últimos:
Inconvenientes:
- Son más lentas.
- Consumen mayor potencia.
- No pueden realizar sistemas excesivamente complejos.
Ventajas:
- Son reprogramables.
- Los costes de desarrollo y adquisición son mucho menores.
- El tiempo de diseño y manufacturación es menor.
Los inconvenientes listados aquí se mantienen más por razones históricas que por motivos reales, actualmente existen FPGAs lo suficientemente grandes para contener sistemas complejos, la velocidad de recursos de interconexión han aumentado exponencialmente y se ha reducido su consumo energético sobre todo para FPGAs destinadas especialmente para dispositivos de bajo consumo.
CPLD
[editar]Los CPLD, así como las FPGA, contienen un gran número de elementos lógicos programables. Ahora bien: si se compara la densidad de los elementos lógicos programables en puertas lógicas equivalentes (número de puertas NAND equivalentes que se pueden programar en un dispositivo), en un CPLD se puede hallar un número de puertas lógicas equivalentes del orden de las decenas de miles, mientras que en una FPGA se puede hallar un número del orden de los cientos de miles hasta los millones.
Aparte de las diferencias en densidad entre ambos tipos de dispositivos, la diferencia fundamental entre las FPGA y los CPLD es su arquitectura. La arquitectura de los CPLD es más rígida y consiste en una o más sumas de productos programables cuyos resultados van a parar a un número reducido de biestables síncronos (también denominados flip-flops). La arquitectura de las FPGA, por otro lado, se basa en un gran número de pequeños bloques utilizados para reproducir sencillas operaciones lógicas, que cuentan a su vez con biestables síncronos. La enorme libertad disponible en la interconexión de dichos bloques confiere a las FPGA una gran flexibilidad.
Otra diferencia importante entre FPGA y CPLD es que en la mayoría de las FPGA se pueden encontrar funciones de alto nivel (como sumadores y multiplicadores) embebidas en la propia matriz de interconexiones, así como bloques de memoria.
Características
[editar]Una jerarquía de interconexiones programables permite a los bloques lógicos de un FPGA ser interconectados según la necesidad del diseñador del sistema, algo parecido a una placa de inserción (es una placa de uso genérico reutilizable o semipermanente) programable. Estos bloques lógicos e interconexiones pueden ser programados después del proceso de manufactura por el usuario/diseñador, así que la FPGA puede desempeñar cualquier función lógica necesaria.
Una tendencia reciente ha sido combinar los bloques lógicos e interconexiones de las FPGA con microprocesadores y periféricos relacionados para formar un sistema programable en un chip. Ejemplo de tales tecnologías híbridas pueden ser encontradas en los dispositivos Virtex-II PRO y Virtex-4 de Xilinx, los cuales incluyen uno o más procesadores PowerPC embebidos junto con la lógica de la FPGA. El FPSLIC de Atmel es otro dispositivo similar, el cual usa un procesador AVR en combinación con la arquitectura lógica programable de Atmel. Otra alternativa es hacer uso de núcleos de procesadores implementados haciendo uso de la lógica de la FPGA. Esos núcleos incluyen los procesadores MicroBlaze y PicoBlaze de Xlinx, Nios y Nios II de Altera, y los procesadores de código abierto LatticeMicro32 y LatticeMicro8.
Muchas FPGA modernos soportan la reconfiguración parcial del sistema, permitiendo que una parte del diseño sea reprogramada, mientras las demás partes siguen funcionando. Este es el principio de la idea de la computación reconfigurable, o los sistemas reconfigurables.
Puertas lógicas
[editar]- 1982: 8192 puertas, Burroughs Advanced Systems Group
- 1987: 9 000 puertas, Xilinx
- 1992: 600 000, Naval Surface Warfare Department
- Principios de los 2000: millones
Evolución de mercado
[editar]- 1985: primera FPGA comercial por Xilinx, XC2064
- 1987: 14 millones de dólares
- 1993: más de 385 millones de dólares
- 2005: 1 900 millones de dólares
- 2010: alrededor de 2 750 millones de dólares
- 2013: 5 400 millones de dólares
- 2020: alrededor de 9 800 millones de dólares
Programación
[editar]En la FPGA no se realiza programación tal cual como se realiza en otros dispositivos como DSP, CPLD o microcontroladores. La FPGA tiene celdas que se configuran con una función específica ya sea como memoria (FLIP-FLOP tipo D), como multiplexor o con una función lógica tipo AND, OR, XOR. La labor del programador es describir el hardware que tendrá la FPGA. Por consiguiente, la tarea del programador es definir la función lógica que realizará cada uno de los CLB, seleccionar el modo de trabajo de cada IOB e interconectarlos.
El diseñador cuenta con la ayuda de entornos de desarrollo especializados en el diseño de sistemas a implementarse en una FPGA. Un diseño puede ser capturado ya sea como esquemático, o haciendo uso de un lenguaje de programación especial. Estos lenguajes de programación especiales son conocidos como HDL o lenguajes de descripción de hardware. Los HDL más utilizados son:
En un intento de reducir la complejidad y el tiempo de desarrollo en fases de prototipado rápido, y para validar un diseño en HDL, existen varias propuestas y niveles de abstracción del diseño. Los niveles de abstracción superior son los funcionales y los niveles de abstracción inferior son los de diseño al nivel de componentes hardware básicos. Entre otras, National Instruments LabVIEW FPGA propone un acercamiento de programación gráfica de alto nivel.
Aplicaciones
[editar]
Cualquier circuito de aplicación específica puede ser implementado en una FPGA, siempre y cuando esta disponga de los recursos necesarios. Las aplicaciones donde más comúnmente se utilizan las FPGA incluyen a los DSP (procesamiento digital de señales), radio definido por software, sistemas aeroespaciales y de defensa, prototipos de ASIC, sistemas de imágenes para medicina, sistemas de visión para computadoras, reconocimiento de voz, bioinformática, emulación de hardware de computadora, entre otras. Cabe notar que su uso en otras áreas es cada vez mayor, sobre todo en aquellas aplicaciones que requieren un alto grado de paralelismo.
Existe código fuente disponible (bajo licencia GNU GPL)[4][5] de sistemas como microprocesadores, microcontroladores, filtros, módulos de comunicaciones y memorias, entre otros. Estos códigos se llaman cores.
Actualmente es posible implementar todo un SoC mediante una FPGA única, existen herramientas libres y núcleos de propiedad intelectual del código abierto que facilitan su implementación, tal es caso de la Arquitectura de Bus Simple (SBA) que provee una librería de código VHDL portable para la implementación en FPGAs de distintos fabricantes.
Tecnología de la memoria de programación
[editar]Las FPGA también se pueden diferenciar por utilizar diferentes tecnologías de memoria:
- Volátiles: basadas en RAM. Su programación se pierde al quitar la alimentación. Requieren una memoria externa no volátil para configurarlas al arrancar (antes o durante el reinicio).
- No Volátiles: basadas en ROM. Hay de dos tipos, las reprogramables y las no reprogramables.
- Reprogramables: basadas en EPROM o flash. Estas se pueden borrar y volver a reprogramar aunque con un límite de unos 10 000 ciclos.
- No reprogramables: basadas en fusibles o antifusibles. Solo se pueden programar una vez, lo que las hace poco recomendables para trabajos en laboratorios.
Ejemplo de tarjeta de desarrollo que incorpora una FPGA:[6]

Fabricantes
[editar]A principios del 2007, el mercado de las FPGA se ha colocado en un estado en el que hay dos grandes productores de FPGA de propósito general y un conjunto de otros competidores que ofrecen dispositivos con características específicas.
- Xilinx es uno de los grandes líderes en la fabricación de FPGA.
- Altera es el otro gran gigante. Anunció un acuerdo con Intel en 2015 para desarrollar una plataforma de supercomputación con CPUs con FPGA integradas.
- Lattice Semiconductor sacó al mercado FPGA con tecnología de 90nm. Es el líder en tecnología no volátil como FPGA basadas en tecnología Flash y con productos de 90nm y 130 nm. En 2014, Lattice semiconductor comenzó a ofrecer dispositivos programables basados en RAM combinados con memoria no volátil no reprogramable.
- Actel (actualmente Microsemi) tiene FPGA basadas en tecnología Flash reprogramable.
- QuickLogic dispone de productos basados en antifusibles, programables una sola vez.
- Atmel es uno de los fabricantes que produce dispositivos reconfigurables. Se enfocó en microcontroladores AVR con FPGA juntos en un mismo encapsulado.
- Achronix Semiconductor desarrollan FPGA muy rápidas.
- MathStar Inc. ofrecía FPGA que denominaban FPOA (Field Programmable Object Arrays por sus siglas en inglés). La compañía se fusionó con Sajan, Inc. in 2010.
- Tabula anunció en marzo de 2010 una nueva tecnología FPGA que utiliza la lógica de tiempo multiplexado y la interconexión de mayor potencial de ahorro para aplicaciones de alta densidad.
Véase también
[editar]Referencias
[editar]- ↑ Morris Mano, M. (2003). Diseño Digital. Pearson. p. 61. ISBN 970-26-0438-9.
- ↑ Gonzáles Maxinez, David Jaime (2014). Grupo Editorial Patria, ed. Programación de Sistemas Digitales con VHDL. p. 330. ISBN 978-607-438-932-6.
- ↑ BizTech, Ernie Smith Ernie Smith is a former contributor to. «What Is a Field Programmable Gate Array and How Does It Work?». Technology Solutions That Drive Business (en inglés). Consultado el 1 de abril de 2025.
- ↑ opencores.org Archivado el 26 de febrero de 2011 en Wayback Machine. {{subst:en}}
- ↑ «SBA IP Cores».
- ↑ C. Quintáns, J.M. Lago, L.M. Menéndez y E. Mandado. “Plataforma hardware para el autoaprendizaje de las FPGA y sus aplicaciones”. Actas del VII Congreso de Tecnologías Aplicadas a la Enseñanza de la Electrónica. Madrid, 12-14 de julio, 2006. ISBN 84-689-9590-8.
Enlaces externos
[editar]Wikimedia Commons alberga una categoría multimedia sobre Matriz de puerta programable en campo.
- Grupo HDL-FPGA Archivado el 7 de junio de 2008 en Wayback Machine. Lista de correo, en idioma español, para discusión de temas relacionados con HDLs y FPGAs.
- Más información sobre FPGA. (en inglés)
- Grupos de trabajo con FPGA Lista de grupos de discusión FPGA, administrados por el MC Luis Orantes graduado de la Universidad de Pittsburgh en EUA.
- Proyecto para intercambiar programas para FPGA (En castellano)
- Cores libres Sitio de descarga de cores libres y gratuitos. (en inglés)
- Central de FPGA: vendedor, foro, IP, webcast (en inglés)
- JCRA: Congreso español sobre Computación Reconfigurable y Aplicaciones (En español)
- Fabricantes: Actel, Altera, Atmel, Cypress, Lattice, QuickLogic, Xilinx. (en inglés)
- Portal sobre FPGAs Argentina
- Fpga Libres Fpga Libres
- FPGA Database
Recursos
[editar]- Arquitectura de las FPGA y CPLD (inglés)
- ¿Cómo funcionan la lógica programable? (inglés)
- FPGA Central: Vendor, Forum, IP, Webcast (inglés)
- Almacén FPGA FAQ (inglés)
- Altera Tutorials and Lab Exercises (Inglés). - Archivos en VHDL y Verilog HDL.
- Lista de sistemas y tarjetas FPGA (inglés)
- FPGA Tutoriales (inglés)
- DSP-FPGA.com Revista de electrónica (inglés) Archivado el 7 de octubre de 2007 en Wayback Machine.
- OpenFPGA Archivado el 10 de julio de 2007 en Wayback Machine.
- Simple Bus Architecture
Archivado el 10 de julio de 2007 en Wayback Machine.
- OpenCores.org - Código abierto de algunas IP (Intelectual Property) (inglés)
- Diseño de FPGA desde cero (inglés)
- Diseño digital utilizando lógicas programables
- Conceptos claves del lenguaje VHDL
- Simulador de códigos HDL usando el compilador de C (en inglés)
- Diseño Digital para FPGA, con herramientas libres
Utilidades
[editar]- Altium Designer - Utilidad de diseño de Altera, Xilinx, Actel, y otras familias FPGA/CPLD
- Quartus - Utilidad de diseño para los dispositivos Altera
- ISE - Utilidad de diseño para los dispositivos Xilinx
- ispLEVER - Paquete de aplicaciones para los dispositivos Lattice
- LogicSim - Herramienta de simulación FPGA
- ModelSim - Simulador de diferentes lenguajes de programación hardware HDL/Verilog
- Synplify - Herramienta de síntesis FPGA
- Yosys - Herramienta libre para síntesis en FPGA
- Arachne-pnr - Herramienta libre de emplazado y rutado para FPGA de Lattice
- Icestorm - Documentación y utilidad de configuración para FPGA de Lattice. Junto a Yosys y Arachne-pnr forman un conjunto de herramientas libres para cerrar el ciclo de diseño completo, obteniendo el fichero de configuración (bitstream) a partir de código en Verilog
- Icarus Verilog Archivado el 7 de diciembre de 2020 en Wayback Machine. - Simulador libre para Verilog
- SBA System Creator - Herramienta para generar SoC basado en SBA.
- Gtkwave - Visualizador libre de señales