¿Qué sucede cuando un FPGA está "programado"?

13

Por lo que entiendo, el proceso de programación de un FPGA viene en dos partes:

  1. Codifique la descripción del hardware en bits que el FPGA pueda entender (es decir, escriba algunos HDL y compílelos)
  2. Cargue el HDL compilado en el FPGA.

Mi pregunta es: "¿Qué hace el FPGA con el HDL compilado?". Por el momento, pienso en los FPGA como "hardware moldeable", donde los cables y las puertas lógicas se pueden moldear a lo que quieras. Una de las cosas buenas es que la capacidad de moldeo es permanente: los FPGA pueden reprogramarse.

¿Cómo interpretan los FPGAs HDL compilados? ¿Cómo se logra la capacidad de moldeo permanente?

Randomblue
fuente
44
En realidad no es permanente: el flujo de bits FPGA debe volver a cargarse desde EEPROM cada vez que se aplica energía. Los CPLD no tienen este problema, y ​​algunos FPGA tienen EEPROM incorporada que carga su flujo de bits en cada encendido.
AngryEE
2
Creo que quiere decir "la capacidad de moldeo es permanente", es decir, que el programa en sí no es permanente.
ajs410

Respuestas:

23

A juzgar por tu otra pregunta, eres un chico Xilinx. Por lo tanto, le recomiendo que obtenga la hoja de datos para su chip Xilinx y vaya al capítulo Descripción funcional. Para el chip Spartan 3 que uso, son 42 páginas de lectura divertida. Detalla exactamente qué componentes están dentro de un FPGA: los IOB, CLB, sectores, LUT, Bloque RAM, Multiplicadores, Digital Clock Manager, Clock Network, Interconnect y alguna información de configuración muy básica. Debe comprender esta información si desea saber cómo es un "HDL compilado".

Una vez que esté familiarizado con la arquitectura de su FPGA, podrá comprender este proceso. Primero, su diseño HDL se ejecuta a través del motor de síntesis, que convierte su HDL en básicamente RTL. Luego, Mapper procesa los resultados de Synthesis, "mapeándolos" en las piezas disponibles de la arquitectura FPGA. Luego, el enrutador hace lugar y ruta (PAR), que determina dónde van esas piezas y cómo conectarlas. Finalmente, los resultados de PAR se convierten en un archivo BIT. Por lo general, este archivo BIT se transforma de alguna manera para que se pueda cargar en un chip Flash, de modo que el FPGA se pueda programar automáticamente cuando se enciende.

Este archivo de bits describe todo el programa FPGA. Por ejemplo, los CLB en un Spartan 3 están compuestos por sectores, que están compuestos por LUT, que son solo SRAM de 16 bits y 1 dirección. Entonces, una cosa que contendrá el archivo BIT es exactamente qué datos van a cada dirección de la SRAM. Otra cosa que contiene el archivo BIT es cómo cada entrada de la LUT está conectada a la matriz de conexión. El archivo BIT también contendrá los valores iniciales que van dentro del bloque RAM. Describirá lo que está conectado al conjunto y restablecerá los pines de cada flip flop en cada segmento. Describirá cómo se conecta la cadena de transporte. Describirá la interfaz lógica para cada IOB (LVTTL, LVCMOS, LVDS, etc.). Describirá cualquier resistencia integrada pull-up o pull-down. Básicamente todo.

Para Xilinx, la memoria del FPGA se borra cuando se inicia la configuración (es decir, se confirma PROG_B). Una vez que la memoria está limpia, INIT_B sube para indicar que la fase está completa. El archivo BIT se carga, ya sea a través de JTAG o la interfaz de chip Flash. Una vez que se carga el programa, se activa el Global Set / Reset (GSR), restableciendo todos los flip flops a su estado inicial. El pin HECHO se pone alto para indicar que la configuración se ha completado. Exactamente un ciclo de reloj más tarde, se libera la señal global de tres estados (GTS), lo que permite controlar las salidas. Exactamente un ciclo de reloj más tarde, se libera Global Write Enable (GWE), lo que permite que los flip flops comiencen a cambiar de estado en respuesta a sus entradas. Tenga en cuenta que incluso este proceso de configuración final puede reordenarse ligeramente dependiendo de los indicadores que se establecen en el archivo BIT.

EDITAR:

También debo agregar que la razón por la cual el programa FPGA no es permanente es porque la estructura lógica está compuesta de memoria volátil (por ejemplo, SRAM). Entonces, cuando el FPGA pierde potencia, el programa se olvida. Es por eso que necesitan, por ejemplo, chips Flash como almacenamiento no volátil para el programa FPGA, de modo que pueda cargarse cada vez que se enciende el dispositivo.

ajs410
fuente
6

Compilar el HDL da como resultado un patrón de bits que indica qué conexiones dentro del FPGA deben activarse. El FPGA ya no tiene que interpretar el HDL. El patrón de bits se programa en un cargador serie / Flash / EEPROM, y al arrancar, este patrón se desplaza hacia el FPGA, haciendo las conexiones necesarias.

stevenvh
fuente
1
SÍNTESIS significa tres frases 1. Generación de lista de red 2. Optimización de nivel de puerta 3. Mapeo de tecnología.
Estándar Sandun
4

El resultado de la compilación es un flujo de bits (literalmente un flujo de bits) que se carga después del encendido. Esto cambia a través del FPGA que se almacena en algunas celdas de memoria (pestillos). Estas celdas están conectadas a varias entidades lógicas, multiplexores, tablas de búsqueda, bloques de RAM, matrices de enrutamiento y constituyen lo que se llama la "configuración". Una vez que se carga el flujo de bits, el FPGA comienza a funcionar: los bits en los pestillos de configuración "le dicen" a cada pequeño pedazo de FPGA cómo operar.

EDITAR 24 de abril de 2012: los flip-flops que mencioné no son para las tablas de búsqueda o la configuración de las mismas. Como @ ajs410 dijo que están en RAM, que es aún menos transistores. Los flip-flops son para el almacenamiento de los datos fuera de la LUT, si ese almacenamiento está habilitado.

Martin Thompson
fuente
¿Qué parte del circuito en un FPGA típico es lógica y enrutamiento reales, y cuánto es soporte de programación?
supercat
Técnicamente, las "celdas de memoria" son flip-flops, no pestillos. Es decir, están activados por el borde.
Brian Carlton el
@BrianCarlton: ¿Se usan realmente chanclas para todas las celdas de almacenamiento de programas? Según tengo entendido, las chanclas necesitan algo del orden de 12-16 MOSFET por bit; por el contrario, otras técnicas completamente estáticas para enganchar datos solo requieren 5-8.
supercat
1
Una LUT generalmente está hecha de SRAM. Los flip flops están unidos a la salida de la SRAM.
ajs410
1
@supercat: Escuché que el 90% de un FPGA está enrutando ... el resto es lógica y configuración, aunque no puedo encontrar una referencia rápidamente :(
Martin Thompson
1

El término estándar es "configuración" y no "programación" para un FPGA. El FPGA suele ser un dispositivo basado en SRAM. Una SRAM almacena bits que indican qué conexiones se forman y se rompen dentro de la "estructura lógica" del dispositivo. Cuando se produce la configuración, se envía un flujo de bits al FPGA que escribe en esta SRAM. Cuando se apaga el FPGA basado en SRAM, se borran los datos de SRAM y cuando se enciende el FPGA, deberá configurarse nuevamente.

Ahora sepa esto, son varios métodos para "configurar" y FPGA y, por lo tanto, existen diferentes formatos de archivos que contienen este "flujo de bits". Al final del día, la estructura de estos archivos y los detalles de qué tan precisamente está configurado el FPGA son propiedad de la fabricación y esta información nunca se comparte. Pero el principio general sigue siendo el mismo en todos los FPGA.

quantum231
fuente