FPGA: Bitstream vs. SRAM Object File

2

¿Cuál es la diferencia entre el flujo de bits y el archivo de objetos SRAM?

Entiendo que ambos son productos de la compilación de diseño de FPGA. Me parece que el archivo de objetos SRAM es lo que se carga en el FPGA para la programación.

Entonces, ¿para qué es el flujo de bits? ¿O son esos nombres diferentes para la misma cosa?

    
pregunta octoback

1 respuesta

4

Son nombres diferentes para lo que esencialmente es el mismo contenido.

Hay tres "tipos" principales de FPGA, al dividir cómo implementan su lógica: basada en SRAM, basada en Flash y anti-fusible, siendo el primero el más común (principalmente Altera y Xilinx). Los FPGA basados en SRAM están 'en blanco' / no-configurados cada vez que los enciende, y deben cargar sus datos de configuración desde algún lugar, generalmente un IC de memoria externa o un procesador externo. Coloquialmente, la mayoría de los ingenieros se refieren al contenido que se va a cargar allí como bitstream : un blob binario de datos digitales que representa la conectividad y el enrutamiento de los recursos lógicos en el FPGA (y en modelos más avanzados) , llevará a lo largo de los contenidos iniciales de RAM, etc.). Durante el desarrollo, los ingenieros pueden usar el formato JIC (como ejemplo de Altera) con más frecuencia, ya que lo cargarán dinámicamente en JTAG durante el desarrollo a través de una herramienta USB como ByteBlaster. En producción, podemos usar los formatos binarios para instalar en el dispositivo de configuración SPI en la PCB.

Este flujo de bits tiene muchos, muchos formatos que van desde formatos específicos del proveedor hasta formatos un tanto estandarizados. Si revisa las opciones de la herramienta de programación (programador Quartus II o IMPACT, por ejemplo), verá opciones como JAM, SVF, STAPL, TTF, JIC, BIN, BIT, etc. Algunas de ellas son específicas del proveedor, otras Son estándares (como SVF y STAPL). Los formatos como SVF son legibles en texto sin formato: los datos de configuración se registran como una secuencia de macros y están destinados a ser entregados a través de JTAG. Otros, como un archivo BIN o BIT sin procesar, es un blob binario destinado a ser flasheado 1: 1 en un dispositivo de memoria flash.

Los FPGA basados en Flash son similares (por ejemplo, Actel IGLOO), pero almacenan sus datos de configuración en el mismo FPGA: el acto de programar la matriz establece el diseño no volátil en el dispositivo . Estos datos también se conocen como flujo de bits y, al menos para los dispositivos Actel, aparecen en formato SVF, STAPL y PDB (propietario). Estos FPGA se consideran 'en vivo durante el encendido', ya que no hay necesidad de cargar una configuración desde una fuente externa. Muchos CPLD también están basados en flash, para reducir el recuento parcial de piezas en la lista de materiales y para respaldar su uso como control de secuencia cerebral de baja potencia, como el de secuencia cerebral, para un sistema más complejo.

Finalmente, solo para completar la mención, los dispositivos antifusibles solo pueden ser programados una vez por un dispositivo de programación especializado que en realidad fusiona enlaces dentro del dispositivo con alto voltaje. Siempre están encendidos en el momento del encendido y generalmente tienen una alta seguridad de diseño, ya que no hay configuración para leer o fisgonear; el dispositivo se encuentra físicamente en el estado en el que debe estar. Todavía me refiero a lo que pongo en estos dispositivos como flujo de bits, para lo que vale, pero son no reprogramables.

Básicamente, sí, son nombres diferentes para el mismo contenido. Algunos son de texto plano, algunos son binarios. Algunos están destinados a un dispositivo de almacenamiento flash, otros están destinados a la configuración JTAG en tiempo de ejecución (como JIC, Configuración indirecta JTAG). Todos ellos pueden representar el diseño y el estado de los elementos lógicos internos o elementos de memoria en el dispositivo.

Algunos tipos comunes en una forma no exhaustiva:

  • SVF - Formato de vector serie. Formato de texto sin formato que es muy detallado y contiene macros JTAG que guían a un programador tonto a través del proceso.
  • XSVF: versión mejorada de SVF que permite estructuras de control y otras mejoras
  • STAPL - inicialmente Altera, ahora JESD-71. Permite bucles, macros y estructuras de control, reduciendo el tamaño del archivo. Texto sin formato.
  • JAM - Evolucionado / adoptado como STAPL, texto sin formato.
  • JIC - Configuración indirecta de JTAG
  • SOF - Archivo de objetos SRAM, un archivo binario generalmente de las herramientas Altera para dispositivos SRAM
  • POF: archivo de objeto de programa, un archivo binario generalmente de las herramientas Altera para dispositivos flash (como sus CPLD)
  • RBF: archivo binario sin formato, generalmente de Altera. análogo a las salidas binarias en bruto de Xilinx u otros proveedores.
  • TTF: archivo de texto tabular, una versión codificada en decimal / texto sin formato del RBF.
  • BIN: extensión sobreutilizada que podría ser de cualquiera de las mil herramientas, pero es utilizada por las herramientas de diseño de Xilinx para un flujo de bits en bruto sin encabezado
  • BIT: (en general) la herramienta de diseño Xilinx genera un formato binario, con un encabezado / encabezado
  • PDB - formato binario Actel

Para configurar un dispositivo de memoria real, se pueden usar muchos de los formatos comunes: MCS, HEX, SREC (S19), etc. Estos no apuntan directamente al FPGA.

    
respondido por el Krunal Desai

Lea otras preguntas en las etiquetas