¿Qué sucede cuando un FPGA está “programado”?

12

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

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

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

¿Cómo interpretan los FPGA los HDL compilados? ¿Cómo se logra la moldeabilidad permanente?

    
pregunta Randomblue

4 respuestas

23

A juzgar por tu otra pregunta, eres un tipo de Xilinx. Así que sugiero encarecidamente que obtenga la hoja de datos de su chip Xilinx y vaya al capítulo de Descripción funcional. Para el chip Spartan 3 que uso, es de 42 páginas de lectura divertida. Detalla exactamente qué componentes están dentro de un FPGA: los IOB, los CLB, los cortes, las LUT, las RAM de bloques, los Multiplicadores, el Administrador de reloj digital, la Red de reloj, la Interconexión 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, entonces puede 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, el Mapeador procesa los resultados de Síntesis, "mapeando" en las piezas disponibles de la arquitectura FPGA. Luego, el enrutador realiza la ruta y el lugar (PAR), que determina a dónde van esas piezas y cómo conectarlas. Finalmente, los resultados de PAR se convierten en un archivo BIT. Normalmente, este archivo BIT se transforma de alguna manera para que pueda cargarse en un chip Flash, de modo que el FPGA pueda programarse 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 segmentos, que están compuestos por LUT, que son solo SRAM de 16 direcciones de 1 bit. Entonces, una cosa que contendrá el archivo BIT es exactamente qué datos se incluyen en 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 de la RAM del bloque. Describirá lo que está conectado al conjunto y restablecerá los pines de cada flip flop en cada rebanada. 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 de 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 valida PROG_B). Una vez que se borra la memoria, INIT_B pasa a nivel alto para indicar que la fase se ha completado. Luego se carga el archivo BIT, ya sea a través de JTAG o la interfaz del chip Flash. Una vez que el programa está cargado, el Conjunto / Reinicio Global (GSR) se pulsa, restableciendo todos los flip flops a su estado inicial. El pin DONE luego se pone alto, para indicar que la configuración está completa. Exactamente un ciclo de reloj más tarde, se libera la señal global de tres estados (GTS), lo que permite que las salidas se activen. Exactamente un ciclo de reloj más tarde, se habilita la función de escritura global (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 se puede reordenar ligeramente dependiendo de los indicadores que se configuran en el archivo BIT.

EDITAR:

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

    
respondido por el ajs410
6

La compilación de los resultados de HDL en 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 de serie Flash / EEPROM, y al iniciar este patrón se cambia a la FPGA, haciendo las conexiones necesarias.

    
respondido por el stevenvh
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 "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 consulta ni para la configuración de ellos. Como @ ajs410 dijo que están en la memoria RAM, hay aún menos transistores. Los flip-flops son para el almacenamiento de los datos de la LUT, si ese almacenamiento está habilitado.

    
respondido por el Martin Thompson
1

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

Ahora sepan 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 cómo se configura el FPGA con precisión son propiedad del fabricante y esta información nunca se comparte. Pero el principio general sigue siendo el mismo en todos los FPGA.

    
respondido por el quantum231

Lea otras preguntas en las etiquetas