A partir del ao 1984 aparecieron los dispositivos FPGAs, basados en celdas o
bloques de entradas y salidas programables cual consiste en la subdivisin del sistema en bloques para conseguir que el nivel de complejidad de cada parte se pueda abordar, Las FPGAs actualmente tienen estructuras jerrquicas tanto en los bloques lgicos, que se agrupan en clster como en las interconexiones que estn organizadas en caminos de distinta longitud y retardo. Las FPGA tiene tres tipos diferentes de interconexin, como son las interconexiones directas entre CLBs, interconexin de propsito general (direccin horizontal y vertical) y lneas largas que son reservadas para seales crticas (reloj),
Las caractersticas que incorporan los FPGA son:
Memoria: basados en memoria RAM, disponibles para el diseador empleado para almacenar datos o funciones combinatorias complejas Bloque aritmtico: implementan funciones multiplicador- acumulador (MAC) con enteros. Microprocesador: dentro del chip hay un bloque especfico para el microprocesador Manejo de relojes: se incluyen lneas especficas rpidas para la distribucin de los relojes. Entradas-salidas especficas: para mayor velocidad se manejan lneas transceiver programables. Conversor serie-paralelo de alta velocidad: incorporan conversores serie paralelo de alta velocidad Facilidad de test on-chip: para la prueba del diseo incorpora un analizador lgico y JTAG Lenguajes de programacin: VHDL: diseado para describir sistemas elctricos digitales. VERILOG HDL: lenguaje propietario, y permite a los diseadores modelar la concurrencia de procesos inherentes a los elementos hardware. EDA: sntesis lgica automtica Ambos lenguajes permiten describir la estructura de un diseo, su participacin y la interconexin en bloques. Cuando el diseo va a ser implementado en una FPGA la herramienta debe realizar el mapeo en las celdas de la FPGA y convertirlo LUTS, en las FPGA modernas que incluyen bloques de RAM, aritmticos u otros bloques dedicados es necesario manejar las herramientas EDA
Lenguaje de alto nivel
Si bien hay una gran cantidad de lenguajes de programacin el ms empleado es el lenguaje C, esto debido al grado de difusin que tiene Otra herramienta que se emplea es Matlab, el inconveniente es para compilar directamente