Diferencia entre revisiones de «FPGA»

De ArduWiki
Saltar a: navegación, buscar
(FPGA Libres)
(FPGA Libres)
Línea 32: Línea 32:
 
== FPGA Libres ==
 
== FPGA Libres ==
 
* Clifford Wolf con ingeniería inversa logro hacer en Verilog todo los necesario para obtener el bitstring para enviar a la Lattice ICE 40
 
* Clifford Wolf con ingeniería inversa logro hacer en Verilog todo los necesario para obtener el bitstring para enviar a la Lattice ICE 40
* Jesús Arroyo desarrollo APIO un IDE libre
+
* Jesús Arroyo desarrollo APIO y ICEstudio un IDE libre
  
 
== Vea también ==
 
== Vea también ==

Revisión del 22:06 10 mar 2019

Una field Programmable Gate Array (FPGA) o matriz de puertas programables es un dispositivo electronico programable que contiene bloques de lógica cuya interconexión y funcionalidad puede ser configurada en el momento mediante un lenguaje de descripción especializado. La lógica programable 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.

Las FPGA se usan en aplicaciones similares a los ASIC sin embargo son más lentas, tienen un mayor consumo de energía y no pueden abarcar sistemas tan complejos como ellos. A pesar de esto, las FPGA tienen las ventajas de ser reprogramables (lo que añade una enorme flexibilidad al flujo de diseño), sus costes de desarrollo y adquisición son mucho menores para pequeñas cantidades de dispositivos y el tiempo de desarrollo es también menor.

Ciertos fabricantes cuentan con FPGA que sólo se pueden programar una vez, por lo que sus ventajas e inconvenientes se encuentran a medio camino entre los ASIC y las FPGA re Históricamente las FPGA surgen como una evolución de los conceptos desarrollados en las PAL y los CPLD.

Historia

Las FPGA fueron inventadas en el año 1984 por Ross Freeman y Bernard Vonderschmitt, cofundadores de Xilinx y surgen como una evolución de los CPLD (Complex Programmable Logic Device).

Tanto los CPLD como las FPGA contienen un gran número de elementos lógicos programables. Si medimos la densidad de los elementos lógicos programables en puertas lógicas equivalentes (número de puertas NAND equivalentes que podríamos programar en un dispositivo) podríamos decir que en un CPLD hallaríamos del orden de decenas de miles de puertas lógicas equivalentes y en una FPGA del orden de cientos de miles hasta millones de ellas.

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.

Las FPGA son el resultado de la convergencia de dos tecnologías diferentes, los PLC y los circuitos integrados de aplicación específica (ASIC). La historia de los PLC 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. Además de en computación reconfigurable, las FPGA se usan en controladores, codificadores/decodificadores y en el prototipado de circuitos VLSI y microprocesadores a medida.

Programacion

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:

  • VHDL
  • Verilog
  • ABEL

En un intento de reducir la complejidad y el tiempo de desarrollo en fases de prototipaje 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.

Fabricantes

El primer fabricante de estos dispositivos fue Xilinx y estos dispositivos se mantienen como uno de los más populares en compañías y grupos de investigación. Otros vendedores en este mercado son: Atmel, Altera, AMD, Laticce y Motorola.

FPGA Libres

  • Clifford Wolf con ingeniería inversa logro hacer en Verilog todo los necesario para obtener el bitstring para enviar a la Lattice ICE 40
  • Jesús Arroyo desarrollo APIO y ICEstudio un IDE libre

Vea también

Referencia