Catto / Mapa de Temas · Técnicas Digitales I 3er nivel
Técnicas Digitales I · 96 h · Contenido 4 de 4

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.

PAL y GAL CPLD FPGA LUT Bitstream

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:

DispositivoPlano ANDPlano ORConsecuencia
PROMFijo: todos los mintérminosProgramableCualquier función, pero el plano AND crece como \(2^n\): sirve para pocas entradas
PLAProgramableProgramableLa más flexible, y la más lenta y cara: dos planos de fusibles en serie
PAL, GALProgramableFijo: cada salida suma un número fijo de productosRá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:

\[ \begin{gathered} \text{bits de la LUT} = 2^k \ \text{funciones posibles} = 2^{2^k} \end{gathered} \] Cada combinación de las \( k \) entradas es una dirección; cada una de las \( 2^k \) celdas puede valer 0 o 1 por su cuenta.

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:

\[ \begin{gathered} f(x_4, \dots, x_0) = \ \overline{x_4}\; f\big|_{x_4 = 0} \;+\; x_4\; f\big|_{x_4 = 1} \end{gathered} \] \( f|_{x_4=0} \) y \( f|_{x_4=1} \) son los cofactores: la función con \( x_4 \) fijada en 0 y en 1.

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:

RecursoQué 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ónUna 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 DSPMultiplicadores y acumuladores cableados, para filtros y procesamiento de señales
PLL y relojesSíntesis de frecuencias y árboles de reloj de bajo desfasaje que llegan a todos los flip-flops
Bloques de entrada y salidaPines configurables en tensión y norma: LVCMOS, LVDS, a veces transceptores de varios Gb/s
Laboratorio · una LUT de cuatro entradas por dentro

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, GALCPLDFPGA
EstructuraUn arreglo AND-ORVarios arreglos AND-OR con matriz centralMiles a millones de LUT con interconexión en grilla
CapacidadDecenas de compuertasCientos a pocos milesMiles a millones de celdas
ConfiguraciónNo volátilNo volátilCasi siempre SRAM, cargada al encender
RetardoFijoFijo y predecibleDepende de la ubicación y del ruteo: hay que analizarlo
Uso típicoReemplazo de lógica discreta, equipos antiguosArranque, decodificación, secuenciado de fuentesProcesamiento 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:

  1. 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.
  2. Mapeo: reparte esa red en los recursos del dispositivo: LUT, flip-flops, BRAM, DSP.
  3. 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.
  4. 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.
  5. 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

CasoPor qué un dispositivo programable
Placa con microprocesadorUn CPLD genera los selectores de chip y el orden de encendido de las fuentes
Radio definida por softwareLa FPGA filtra y demodula en paralelo muestras que llegan a cientos de millones por segundo
Cámaras y videoRecibe el sensor, corrige cada píxel y convierte entre interfaces en tiempo real
Control de convertidores de potenciaGenera PWM con resolución de nanosegundos y protecciones que actúan en un ciclo
Diseño de circuitos integradosSe prueba el diseño en FPGA antes de pagar la fabricación del ASIC
Equipos que se actualizan en el campoUn nuevo bitstream cambia el hardware sin cambiar la placa

08En el laboratorio

Actividad 1 · Primer diseño en una placa

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.

Actividad 2 · Leer el informe de recursos

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.

Actividad 3 · Encontrar el camino crítico

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.
Desarrollo del contenido «Dispositivos lógicos programables» de Técnicas Digitales I (tercer nivel), según el diseño curricular de Ingeniería Electrónica, Plan 2023 — Ordenanza N° 1849 del Consejo Superior de la UTN. Volver al Mapa de Temas · catto.ar