Dispositivos lógicos programables
Dentro de una FPGA no hay compuertas AND ni OR: hay memorias de 16 o 64 bits que guardan tablas de verdad. Una AND y la función más enredada de seis variables ocupan lo mismo.
01Del circuito fijo al programable
Con compuertas sueltas de la serie 74, cada cambio del diseño es una placa nueva. Un dispositivo lógico programable (PLD) invierte el orden: el fabricante vende un integrado con muchos recursos lógicos genéricos sin conectar, y quien diseña decide después, con un archivo de configuración, qué función cumple cada uno y cómo se conectan entre sí. El mismo chip puede ser un contador por la mañana y un controlador de motor por la tarde.
La página de la tecnicatura sobre memorias y dispositivos programables presenta la idea. Acá se ve cómo está hecho cada tipo por dentro, por qué la FPGA terminó dominando y cómo se pasa de un archivo HDL como los de la unidad anterior a un chip funcionando.
02Arreglos AND-OR: PROM, PLA y PAL
Toda función combinacional se puede escribir como suma de productos, así que los primeros PLD son dos planos de compuertas: un plano AND que arma los productos de las entradas y sus complementos, y un plano OR que los suma para cada salida. Lo que distingue a cada familia es qué plano se puede programar:
| Dispositivo | Plano AND | Plano OR | Consecuencia |
|---|---|---|---|
| PROM | Fijo: todos los mintérminos | Programable | Cualquier función, pero el plano AND crece como \(2^n\): sirve para pocas entradas |
| PLA | Programable | Programable | La más flexible, y la más lenta y cara: dos planos de fusibles en serie |
| PAL, GAL | Programable | Fijo: cada salida suma un número fijo de productos | Rápida y barata; si una función necesita más productos que los disponibles, no entra |
La GAL es la PAL con celdas borrables eléctricamente en lugar de fusibles, y le agrega a cada salida una macrocelda: un flip-flop que se puede usar o saltear, un control de polaridad y la posibilidad de realimentar la salida al plano AND. Con eso una sola GAL22V10 aloja un contador o una máquina de estados chica, y durante años fue el pegamento lógico de todas las placas con microprocesador.
03CPLD
Un CPLD (complex PLD) pone varios bloques del tipo PAL en el mismo chip y los une con una matriz de interconexión central. Hereda las virtudes de la PAL:
- No volátil: la configuración está en celdas EEPROM o flash y el chip funciona desde el primer microsegundo después de encenderlo.
- Tiempos predecibles: toda señal cruza la misma matriz, así que el retardo de entrada a salida es casi el mismo para cualquier camino y figura en la hoja de datos antes de diseñar.
Su límite es el tamaño: la estructura de sumas de productos no escala más allá de unos cientos de macroceldas. Hoy se usa para lógica de arranque y secuenciado de fuentes, decodificación de direcciones y tareas de «pegamento» donde hace falta que la lógica esté viva antes que todo lo demás.
04FPGA: tablas de verdad en memoria
La FPGA (field-programmable gate array) abandona la suma de productos. Su elemento básico es la LUT (look-up table): una memoria chica de \(2^k\) bits con \(k\) entradas de dirección. Guardando en ella la tabla de verdad deseada, la LUT implementa cualquier función de \(k\) variables con el mismo retardo, sea una AND o la función más enredada:
Con \(k = 4\) son 16 bits de configuración y 65 536 funciones distintas; las familias actuales usan LUT de 6 entradas, de 64 bits. Una función de más variables se parte con la expansión de Shannon, que separa según una de las variables y elige con un multiplexor:
Cada cofactor es una función de cuatro variables, que entra en una LUT4, y el multiplexor que los elige viene incorporado en la celda. Alrededor de las LUT, la FPGA tiene:
| Recurso | Qué es |
|---|---|
| Bloque lógico (CLB, LAB) | Un grupo de LUT, cada una con su flip-flop a la salida, más cadenas de acarreo dedicadas para sumar rápido |
| Interconexión | Una grilla de pistas y llaves programables que ocupa la mayor parte del silicio y aporta buena parte del retardo |
| Memoria en bloque (BRAM) | Bloques de algunos kilobits, de doble puerto, para FIFO, tablas y búferes |
| Bloques DSP | Multiplicadores y acumuladores cableados, para filtros y procesamiento de señales |
| PLL y relojes | Síntesis de frecuencias y árboles de reloj de bajo desfasaje que llegan a todos los flip-flops |
| Bloques de entrada y salida | Pines configurables en tensión y norma: LVCMOS, LVDS, a veces transceptores de varios Gb/s |
A la izquierda, las 16 celdas de memoria de la LUT; a la derecha, el árbol de multiplexores que elige una según las entradas. Elegís una función y la LUT se carga con su tabla de verdad, o tocás una celda para cambiar ese bit. Las cuatro entradas mueven el camino resaltado hasta la salida.
La configuración de todas las LUT, las llaves de interconexión y los bloques especiales forma el bitstream. En la mayoría de las FPGA esa configuración vive en celdas SRAM: se pierde al apagar y el chip la vuelve a leer de una memoria flash externa en cada encendido, lo que tarda entre algunos milisegundos y algunas décimas de segundo. Hay familias con configuración en flash, que arrancan al instante, y con antifusibles, programables una sola vez y resistentes a la radiación, para uso espacial.
05Cuál conviene
| PAL, GAL | CPLD | FPGA | |
|---|---|---|---|
| Estructura | Un arreglo AND-OR | Varios arreglos AND-OR con matriz central | Miles a millones de LUT con interconexión en grilla |
| Capacidad | Decenas de compuertas | Cientos a pocos miles | Miles a millones de celdas |
| Configuración | No volátil | No volátil | Casi siempre SRAM, cargada al encender |
| Retardo | Fijo | Fijo y predecible | Depende de la ubicación y del ruteo: hay que analizarlo |
| Uso típico | Reemplazo de lógica discreta, equipos antiguos | Arranque, decodificación, secuenciado de fuentes | Procesamiento de señales, video, comunicaciones, prototipos de circuitos integrados |
06Del HDL al chip
La herramienta del fabricante lleva la descripción al dispositivo en etapas, y cada una puede fallar por su cuenta:
- Síntesis: traduce el HDL a una red de compuertas, flip-flops, sumadores y memorias genéricas. Acá aparecen los latches no deseados y los registros que se optimizaron.
- Mapeo: reparte esa red en los recursos del dispositivo: LUT, flip-flops, BRAM, DSP.
- Ubicación y ruteo (place and route): elige en qué celda física va cada elemento y por qué pistas se conectan. Es la etapa más lenta, y la que decide los retardos.
- Análisis de tiempos: suma los retardos de cada camino entre flip-flops y los compara con el período de reloj pedido en el archivo de restricciones. Si algún camino no llega, hay que rediseñar o bajar la frecuencia, igual que con el camino crítico de la unidad de lógica secuencial.
- Bitstream: genera el archivo de configuración y se lo carga al chip o a su flash.
El archivo de restricciones es tan parte del diseño como el HDL: asigna cada señal a un pin, fija su norma eléctrica y declara la frecuencia de cada reloj. Sin él la herramienta ubica los pines al azar y no sabe qué velocidad tiene que cumplir.
07Dónde aparece en la electrónica
| Caso | Por qué un dispositivo programable |
|---|---|
| Placa con microprocesador | Un CPLD genera los selectores de chip y el orden de encendido de las fuentes |
| Radio definida por software | La FPGA filtra y demodula en paralelo muestras que llegan a cientos de millones por segundo |
| Cámaras y video | Recibe el sensor, corrige cada píxel y convierte entre interfaces en tiempo real |
| Control de convertidores de potencia | Genera PWM con resolución de nanosegundos y protecciones que actúan en un ciclo |
| Diseño de circuitos integrados | Se prueba el diseño en FPGA antes de pagar la fabricación del ASIC |
| Equipos que se actualizan en el campo | Un nuevo bitstream cambia el hardware sin cambiar la placa |
08En el laboratorio
Con una placa económica (las de la familia iCE40 funcionan con herramientas libres: Yosys, nextpnr e icestorm), describir un contador que haga parpadear un LED a 1 Hz a partir del reloj de la placa. Escribir el archivo de pines, sintetizar, cargar y medir la frecuencia con el osciloscopio.
Sintetizar el detector de secuencia de la unidad anterior y anotar cuántas LUT y cuántos flip-flops usa. Cambiar la asignación de estados a one-hot y comparar las dos cifras.
Sintetizar un sumador de 32 bits entre registros y pedir una frecuencia de reloj cada vez más alta hasta que el análisis de tiempos falle. Abrir el informe y ubicar el camino que no llega: debe ser la cadena de acarreo.
09Errores frecuentes
- Olvidar el archivo de restricciones. Los pines quedan donde la herramienta quiere y el análisis de tiempos no sabe qué frecuencia verificar.
- Dar por bueno un diseño porque simula. Si el análisis de tiempos muestra caminos que no llegan, en la placa va a fallar de forma intermitente.
- Generar relojes con lógica. Dividir el reloj con un contador y usar esa salida como reloj de otros flip-flops rompe el árbol de reloj; se usa el PLL o una habilitación de reloj.
- Suponer que la FPGA arranca al instante. Una FPGA SRAM tarda en cargar su configuración, y mientras tanto sus pines no hacen lo que el diseño dice.
- Contar compuertas en lugar de LUT. Una AND de dos entradas y una función complicada de seis ocupan lo mismo: una LUT.
10Autoevaluación
¿Qué plano es programable en una PAL y cuál en una PROM?
En la PAL se programa el plano AND y el OR es fijo; en la PROM el plano AND es fijo (genera todos los mintérminos) y se programa el OR.
¿Cuántos bits tiene una LUT de seis entradas y cuántas funciones distintas puede implementar?
\(2^6 = 64\) bits, y \(2^{64}\), unos \(1{,}8 \times 10^{19}\), funciones distintas.
¿Qué valor de configuración (INIT) tiene una LUT4 cargada con una AND de sus cuatro entradas?
Solo la dirección 1111, la 15, vale 1: el valor es 16'h8000.
¿Por qué un CPLD tiene retardos más predecibles que una FPGA?
Porque toda señal cruza la misma matriz central de interconexión; en la FPGA el retardo depende de dónde la herramienta ubicó cada celda y de las pistas que eligió para unirlas.
¿Qué pasa con la configuración de una FPGA basada en SRAM al cortar la alimentación?
Se pierde. Al volver a encender, el chip lee el bitstream de una memoria flash externa, y hasta que termina no cumple la función diseñada.
11Para ampliar
- Clive Maxfield. The Design Warrior's Guide to FPGAs. Newnes, 2004. La historia de los PLD y la arquitectura de las FPGA contadas desde adentro, con un lenguaje llano.
- Stephen Brown y Zvonko Vranesic. Fundamentals of Digital Logic with VHDL Design. 3.ª ed., McGraw-Hill, 2009. Los arreglos PLA, PAL y la estructura de las LUT, con la expansión de Shannon aplicada a su síntesis.
- Pong P. Chu. FPGA Prototyping by Verilog Examples. Wiley, 2008. El flujo completo, del HDL a la placa, con restricciones, análisis de tiempos y periféricos reales.