TU MEJOR MAESTRO

Logo TTM

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.


Img_01

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.


Img_02

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.


Img_03

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.


Img_04

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".


Img_05

Figura 5. Carry chains



INTRODUCCIÓN

¿Qué es un FPGA?

¿Cómo funciona?

¿Qué es un HDL?

Referencia VHDL

Referencia Verilog

CIRCUITOS DIGITALES

Combinatorios

Secuenciales

Aritmética digital

PROTOCOLOS

Serial

SPI

I2C

Ethernet

PRÁCTICAS

BÁSICOS

LEDs

PWM

Motor CD

Motor PAP

INTERMEDIOS

Matriz de LEDs

Sensor ultrasónico

Display LCD

Display TFT

Display OLED

AVANZADOS

Interfaz VGA

Interfaz HDMI

Interfaz PS2

Interfaz SD