Fundamentos de FPGAs Spartan 3E: Arquitectura, Sincronización y Diseño Lógico

Clasificado en Informática

Escrito el en español con un tamaño de 13,4 KB

1. CLBs de la Spartan 3E: Características y Funcionamiento

CLB (Bloques Lógicos Configurables)

Los CLBs están organizados en una matriz de filas y columnas. Cada CLB contiene 4 Slices.

Los Slices están organizados en parejas en una misma columna con cadena de acarreo independiente:

  • La pareja izquierda, SLICEM, soporta funciones de memoria y lógica.
  • La pareja derecha, SLICEL, soporta solo funciones lógicas.

Los Slices (tanto SLICEM como SLICEL) contienen:

  • 2 LUTs de 4 entradas (F y G).
  • 2 registros.
  • 2 multiplexores de ampliación de funciones (F5MUX y FiMUX).
  • Lógica aritmética y de acarreo.

Los SLICEM, además, incluyen:

  • 2 bloques RAM 16x1.
  • 2 registros de desplazamiento SRL16.

Cada LUT permite implementar cualquier función de 4 entradas o un multiplexor de 2:1 con enable. Combinando diferentes LUTs mediante los multiplexores F5MUX y FiMUX, se pueden obtener funciones de hasta 79 entradas.

Los CLBs disponen de cadena de acarreo y lógica dedicada que permite la implementación rápida y eficiente de distintas operaciones matemáticas.

2. DCM de la Spartan 3E: Características y Aplicaciones

Los DCMs (Digital Clock Managers) permiten controlar y manejar de forma eficiente la señal de reloj de la FPGA. La Spartan 3E dispone de entre 2 y 8 DCMs por dispositivo.

Las tres funciones principales de los DCMs son:

  • Cancelación de retardos de la señal de reloj (eliminación del Clock Skew).
  • Multiplicar o dividir la señal de reloj por una fracción del periodo.
  • Realizar distintos desplazamientos de fase de la señal de reloj.

Los DCMs permiten, entre otras cosas, acondicionar la señal de reloj (generando una nueva señal con 50% de ciclo de trabajo), ofreciendo todas o varias de las opciones posibles.

Los bloques integrantes de un DCM son:

  • DLL (Delay Locked Loop).
  • DFS (Digital Frequency Synthesizer).
  • PS (Phase Shifter).
  • Lógica de estado (Status Logic).

Cada DCM tiene cuatro posibles entradas optimizadas que lo alimentan a través de GCLK.

3. Metaestabilidad: ¿Qué es y cómo evitarla?

La metaestabilidad ocurre cuando la señal de reloj no cumple los tiempos de setup y hold, y muestrea en el cambio de dato. En este estado, la salida de un biestable puede permanecer en un valor indefinido por un tiempo prolongado, lo que puede llevar a resultados impredecibles. Tiene 3 posibles valores finales:

  • Antiguo valor.
  • Nuevo valor.
  • Valor metaestable (estado indefinido, no se sabe el resultado final con certeza).

Para reducir la posibilidad de metaestabilidad, se recomienda:

  • Utilizar relojes con flancos abruptos.
  • Emplear Flip-Flops con tiempos de setup y hold bajos.
  • Conectar Flip-Flops en cascada (sincronizadores de dos o más etapas).

4. Ejercicio: Temporizadores con Latches y Reloj de Dos Fases

(Referencia: página 15, tema 3)

Tiempos Máximos

  • tpdq1, tp FF1: Retardo de propagación del Flip-Flop 1.
  • tpdq2, tp FF2: Retardo de propagación del Flip-Flop 2.
  • tpd1, tp lógica1: Retardo de propagación de la lógica combinacional 1.
  • tpd2, tp lógica2: Retardo de propagación de la lógica combinacional 2.
  • Tc: Tiempo desde que el dato en D1 está definido hasta que el dato en D3 está definido.

La relación para el tiempo máximo es:

Tc >= (tpdq1 + tpd1 + tpdq2 + tpd2)

De donde se deduce que:

(tpd1 + tpd2) <= (Tc - (tpdq1 + tpdq2))

Esquema de la Ruta Crítica (Tiempos Máximos)

Entrada D1 a FF1 (con reloj1) con salida Q1. Entrada Q1 a lógica combinacional con salida D2. Entrada D2 a FF2 (con reloj2) con salida Q2. Entrada Q2 a lógica combinacional con salida D3. Entrada D3 a FF3 (reloj1) con salida Q3.

Gráfica de Tiempos (Tiempos Máximos)

Tenemos la entrada D1. En el flanco de subida de reloj1, después de tpdq1 (FF1), tenemos Q1 definida. Después de tpd1 (lógica1), tenemos D2 definida. En el flanco de subida de reloj2, después de tpdq2 (FF2), tenemos Q2 definida. Después de tpd2 (lógica2), tenemos D3 definida.

Tiempos Mínimos

  • tnonoverlap: Tiempo entre el flanco de bajada de reloj2 y el tiempo de subida de reloj1.
  • tccq, tp FF1: Retardo de propagación del Flip-Flop 1.
  • tcd, tp lógica: Retardo de propagación de la lógica combinacional.
  • thold: Tiempo entre el flanco de bajada de reloj2 y la aparición del dato D2 estable.

La relación para el tiempo mínimo es:

tcd >= (thold - tccq - tnonoverlap)

Esquema de la Ruta Crítica (Tiempos Mínimos)

Entrada a FF1 (con reloj1) con salida Q1. Entrada Q1 a lógica combinacional con salida D2. Entrada D2 a FF2 (reloj2) con salida.

Gráfica de Tiempos (Tiempos Mínimos)

En el flanco de subida de reloj1, después de tccq (FF1), tenemos Q1 estable. Después de tcd (lógica), tenemos D2 definida.

5. Ejercicio: ¿Qué es un LFSR y cómo crear uno de 8 bits?

(Referencia: tabla página 25, tema 4)

LFSR (Registro de Desplazamiento con Retroalimentación Lineal)

Un LFSR es un registro de desplazamiento cuya entrada es un bit proveniente de aplicar una función lineal (generalmente una XOR) a un estado anterior. El registro es determinista, por lo tanto, la secuencia de valores producidos está determinada por el estado actual y el estado anterior.

Un LFSR de N bits tiene (2^N - 1) estados posibles (excluyendo el estado de todos ceros, que es un estado trivial).

Esquema de un LFSR de 8 bits

Un registro de 8 bits (representado como un rectángulo de 8 celdas) con:

  • Entrada D1 (salida de una compuerta XOR) y entrada de reloj.
  • Salidas Q1-Q8.
  • Una compuerta XOR cuyas entradas son las salidas Q8, Q6, Q5 y Q4. La salida de esta XOR se realimenta a la entrada D1 del registro.

6. Codificación de Estados en Máquinas de Estados Finitos (FSMs)

Codificación Binaria

  • Reduce el número de biestables necesarios (recomendable si el número de estados es < 16).
  • La lógica del estado siguiente puede ser complicada y lenta.
  • Ideal para FSMs pequeñas.

Codificación One-Hot

  • Necesita un biestable por cada estado.
  • No requiere lógica de decodificación compleja.
  • Resulta en máquinas de estado más rápidas, debido a una lógica de estado siguiente más sencilla y rápida.
  • Adecuada para FSMs medianas.

Codificación Gray

  • Cambia solo 1 bit por transición de estado.
  • Es robusta y necesita menos recursos con buena velocidad.
  • Menor consumo de energía debido a un menor número de transiciones de bits.
  • Recomendada para FSMs grandes.

Ejemplo de Codificación de Estados

Estado | One_Hot | Binario | Gray
-------|---------|---------|------
S0     | 00001   | 000     | 000
S1     | 00010   | 001     | 001
S2     | 00100   | 010     | 011
S3     | 01000   | 011     | 010
S4     | 10000   | 100     | 110

7. Tipos y Usos de Memorias en FPGAs

Memoria Interna

Se presenta en forma de RAM, ROM y FIFO, utilizada para el almacenamiento de datos de volumen pequeño a medio. Suele ser de tipo distribuido o dedicada (BRAM).

  • Memoria Distribuida: Muy grande y distribuida en la FPGA; para estructuras rápidas y pequeñas.
  • Memoria Dedicada (BRAM): Funcionamiento dedicado y eficiente; ideal para tamaños de memoria medios.

Memoria Externa

Empleada para el almacenamiento de datos de gran volumen. Existen numerosos tipos y estándares. Se necesita un bloque en la FPGA que actúe como interfaz con la memoria.

  • Tipos de Memoria Externa:
    • Volátil:
      • SDRAM (almacenamiento externo, mayor densidad, más baratas, menor consumo, mayor latencia):
        • SDR
        • DDR (transfieren datos en ambos flancos de reloj)
        • DDR2
        • DDR3
        • DDR4
        • RLDRAM (mayor latencia pero más caras)
      • SRAM (interfaz sencilla, baja latencia, más cara, menor densidad):
        • Asíncrona
        • Síncrona
        • Doble puerto
        • ZBT (cambia de escritura a lectura sin ciclos adicionales)
        • PSEUDO_SRAM (DRAM con interfaz SRAM)
        • FIFO
        • QDR (transfiere datos en ambos flancos de reloj)
    • No Volátil:
      • Flash:
        • NOR (interfaz simple, rápida, fiable)
        • NAND (interfaz complicado, mayor densidad, menor precio)

8. ¿Qué son Vcco, Vref, Vccint y Vccaux?

  • Vcco: Alimenta a los drivers de salida de la FPGA y determina el margen dinámico de los pines de E/S.
  • Vref: Tensión de referencia que debe aplicarse a todos los estándares de un solo terminal, excepto LVCMOS, LVTTL y PCI.
  • Vccint: Alimenta a la lógica interna de la FPGA.
  • Vccaux: Fuente auxiliar de tensión para ciertos bloques específicos, como DCMs, JTAG, drivers diferenciales, pines de configuración y el circuito de inicialización.

9. SPI: Ventajas y Desventajas del Protocolo

Ventajas de SPI

  • Permite comunicaciones en modo full duplex.
  • Mayores tasas de transmisión que I2C.
  • No está limitado a tramas de datos de 8 bits.
  • Interfaces sencillas.
  • Los esclavos no necesitan una dirección única.
  • Menor consumo de energía que I2C.
  • No son necesarios osciladores de precisión.
  • Posibilidad de registrar entradas y salidas.

Desventajas de SPI

  • Requiere más pines que I2C.
  • Direccionamiento mediante líneas específicas (Chip Select) en vez de direccionarlos en la trama de datos.
  • No hay señal de ACK (acuse de recibo) por defecto.
  • El funcionamiento en modo multi-maestro es raro y más complejo.
  • No define un protocolo de chequeo de errores estándar.
  • Solo para distancias cortas.
  • No existe un estándar formal definido.

10. Clasificación de Cores en Diseño de FPGAs

Existen tres tipos fundamentales de cores:

Hard-Core

Corresponden a implementaciones físicas de una determinada función o módulo.

  • Optimizados para ASIC o FPGA, ofreciendo excelentes prestaciones en velocidad, área y consumo.
  • No pueden ser modificados ni eliminados una vez implementados en el dispositivo.
  • Sus prestaciones (área, consumo y velocidad) son conocidas y predecibles.
  • Se incluyen en determinadas familias de FPGAs, se haga uso de ellos o no.

Soft-Core

Corresponden a descripciones RTL (Register Transfer Level) en HDL (Hardware Description Language) sintetizable de una determinada función o módulo.

  • Son independientes de la tecnología (portables), y sus prestaciones dependen de la síntesis y la tecnología de destino.
  • Sus prestaciones (área, consumo y velocidad) son estimadas.
  • Pueden ser modificados y eliminados.
  • Permiten cierta configurabilidad en parámetros (flexibilidad), adaptándose a la aplicación concreta y optimizaciones.
  • Se incluyen como opción en determinadas familias de FPGAs.

Firm-Core

Corresponden a descripciones RTL en HDL sintetizable de una determinada función o módulo, pero optimizadas para una tecnología específica.

  • Incluyen información del diseño físico, como restricciones de posicionado y ruteado, o el empleo de células específicas.
  • Su uso es exclusivo para una determinada tecnología.
  • Ofrecen cierta flexibilidad dentro de esa tecnología específica.
  • Son predecibles en cuanto a área, velocidad y consumo.
  • Representan una opción intermedia entre los Hard-Core y los Soft-Core.

Entradas relacionadas: