Arquitectura, Tecnologías y Diseño de FPGAs: Optimización y Características

Clasificado en Informática

Escrito el en español con un tamaño de 5,29 KB

Arquitectura de las FPGAs

Las FPGAs (Field-Programmable Gate Arrays) se basan en diferentes arquitecturas, como "terraza", "Manhattan" (cuadrícula) y "mar de puertas". La clave de su funcionamiento reside en los bloques lógicos configurables (CLBs).

Bloques Lógicos Configurables (CLBs)

Dentro de las FPGAs, las funciones lógicas se implementan en los CLBs. Estos bloques pueden configurarse de dos maneras principales:

  • Basados en multiplexores: Mediante la conexión adecuada de las entradas de los multiplexores.
  • Basados en LUTs (Look-Up Tables): Utilizando memorias de acceso aleatorio síncronas y estáticas (bloques RAM) que actúan como tablas de consulta. Estas tablas contienen todos los resultados posibles de la función lógica a implementar.

Circuitos Dedicados en FPGAs

Además de los CLBs, las FPGAs modernas incorporan circuitos dedicados para funciones específicas, mejorando el rendimiento y la eficiencia:

  • Memorias de acceso aleatorio síncronas (bloques RAM).
  • Multiplicadores.
  • Multiplicadores-acumuladores (MAC).
  • Transceptores en serie (para comunicación de alta velocidad).
  • Circuitos PLL analógicos y DLL digitales (para la generación y gestión de señales de reloj).
  • CMT (Clock Management Tile): Circuitos de gestión del reloj, o controladores digitales del reloj, que permiten obtener distintas señales de reloj a partir de una señal de reloj original.

Tecnologías de Configuración de FPGAs

Existen diversas tecnologías para configurar las FPGAs, cada una con sus propias ventajas y desventajas:

  • Memoria activa SRAM (Static RAM):
    • Volátil (pierde la configuración al apagar el sistema).
    • Reprogramable.
    • Programable por el usuario cada vez que se enciende el sistema.
  • Antifusible:
    • No volátil (mantiene la configuración).
    • No reprogramable.
    • Mayor protección ante radiación.
    • Programable por el usuario una sola vez mediante un equipo especial.
  • Memoria pasiva EEPROM (Electrically Erasable Programmable Read-Only Memory):
    • No volátil.
    • Reprogramable.
    • Programable por el usuario.
    • Más lenta en funcionamiento (en comparación con SRAM).

Fases del Diseño con FPGAs

El proceso de diseño con FPGAs se divide en varias fases:

  1. Descripción del diseño: Se describe el comportamiento del circuito utilizando lenguajes de descripción de hardware (HDLs) como VHDL o Verilog.
  2. Compilación (y síntesis): El código HDL se traduce a una representación interna (netlist) que describe las conexiones lógicas. La síntesis optimiza esta representación. Se realiza una simulación funcional en esta etapa.
  3. Implementación: Se asignan los recursos físicos de la FPGA a la netlist. Esta fase incluye:
  • Mapping: Asignación de recursos lógicos.
  • Partitioning: Partición del diseño en bloques más pequeños (si es necesario, una posición provisional).
  • Placement: Posicionamiento definitivo de los bloques lógicos dentro de la FPGA.
  • Routing: Enrutado de las conexiones entre los bloques, estableciendo los caminos físicos para las señales. Se pueden realizar cambios físicos.
Verificación del diseño: Se realizan simulaciones (incluyendo simulación temporal con retardos) para asegurar que el diseño implementado cumple con las especificaciones.

Características de las FPGAs

  • Disponibilidad inmediata.
  • Configurabilidad.
  • Reconfigurables (en el caso de las basadas en SRAM).
  • Alta capacidad de integración.
  • Elevado número de terminales de E/S.
  • Coste medio.
  • Retardos impredecibles (debido a la variabilidad en el enrutado).

FPGAs vs. PLDs

Es útil comparar las FPGAs con los PLDs (Programmable Logic Devices):

  • FPGAs:
    • Recursos de interconexión complejos.
    • Bloques lógicos configurables (CLBs).
    • Retardos impredecibles.
  • PLDs:
    • Matriz de conexión más simple.
    • Macroceldas (estructura lógica más simple que los CLBs).
    • Retardos predecibles.

Recursos de Interconexión en FPGAs

Los recursos de interconexión son cruciales para la flexibilidad y el rendimiento de una FPGA. Un mayor número de recursos de interconexión permite conectar la salida de un CLB con la entrada de otro de manera más flexible, pero también introduce más retardo, lo que disminuye la frecuencia máxima de operación (fmax). Algunos tipos comunes de recursos de interconexión son:

  • Long lines (líneas largas).
  • Hex lines (líneas hexagonales).
  • Double lines (líneas dobles).
  • Conexiones directas.
  • Conexiones rápidas.

El equilibrio entre flexibilidad y retardo es un factor clave en el diseño de FPGAs.

Entradas relacionadas: