Arquitectura de un FPGA
Los FPGAs están formados por bloques lógicos configurables "CLBs" (Configurable Logic Blocks) o tambien llamados elementos lógicos "LE" (Logic Elements) que se replican cientos o miles de veces. Un bloque lógico consta de una pequeña LUT (Look Up Table) capaz de almacenar información, un Flip-Flop tipo D y un multiplexor de 2 a 1 para seleccionar si se trabaja con lógica combinatoria o secuencial. Generalmente el CLB tiene conectado a la salida del multiplexor un buffer triestado, con la finalidad de poder tener en los pines de salida señales con valores de '0' (cero lógico), '1' (uno lógico) o 'Z' (alta impedancia). En la Figura 1 se observa el diagrama general de un bloque lógico configurable.
Figura 1. Bloque lógico configurable
Una LUT es una tabla de consulta similar a una pequeña memoria RAM en donde se puede implementar cualquier función lógica sin la nececidad de tener en hardware todos los tipos de compuertas lógicas. En la Figura 2 se observa la implementación de la función lógica que describe el circuito formado por una conpuerta NAND y XNOR conectadas en cascada.
Figura 2. Look Up Table
Como se observa en la Figura 2, el uso de una LUT evita tener que implementar en hardware cada una de las compuertas lógicas y facilita la implementación de funciones lógicas más complejas.
Los FPGAs de hoy en día poseen CLBs más complejos pero comparten el mismo diseño que el bloque lógico mostrado en la Figura 1. El número de bloques lógicos y la complejidad de los mismos depende de la tecnología de fabricación, así como de la escala de integración que posee cada FPGA. Por lo general, los fabricantes de estos dispositivos dividen sus productos en familias, por ejemplo Altera tiene FPGAs de familias Cyclone, Stratix, Arria y MAX.
Interconexiones
Cada CLB puede ser conectado a otro bloque lógico a través de conexiones internas denominadas señales. Un bloque lógico puede hacer poco por si mismo, pero conectando muchos de ellas entre si se puden implementar funciones complejas. En la Figura 3 se observa como se podrían conectar los bloques logicos entre si.
Figura 3. Interconexiones entre CLBs
Por otro lado, en la Figura 4 se observa la arquitectura interna de un FPGA, en donde los bloques dibujados de color verde son son un conjunto de CLBs como los de la Figura 1. Los bloques de entrada/salida conocidos como I/O son dispositivos que permiten conectar la lógica de los CLBs con el mundo real, es decir, permiten conectar algunos bloques lógicos con salidas de colector abierto ó con entradas que estan conectadas a convertidores ADC por mencionar algunos ejemplos.
Figura 4. Arquitectura de un FPGA
Los bloques RAM son pequeñas memorias dedicadas de algunos pocos MegaBytes las cuales permiten almacenar información de manera temporal. El tiempo de lectura/escritura es bastante reducido debido a las conexiónes internas que posee el FPGA y a la poca distancia que hay entre los bloques de memoria y los CLBs. En ocasiones cuando los bloques de memoria RAM son insuficientes es posible implementar más bloques como estos pero construidos a base de los elementos lógicos o CLBs que posee el FPGA.
Finalmente las interconexiones son pistas que estan en el interior del FPGA,las cuales permiten la comunicación entre los diferentes componetes de la Figura 4. Además de las conexiones internas de proposito general los FPGAs poseen lineas dedicadas para interconectar celdas logicas que se encuentren dentro de una misma región del chip, estas lineas son más rapidas que las de proposito general, al tipo más común de líneas dedicadas se le denomina "Carry Chains".
Figura 5. Carry chains
INTRODUCCIÓN
CIRCUITOS DIGITALES
PROTOCOLOS
PRÁCTICAS
BÁSICOS
INTERMEDIOS
AVANZADOS