¿Qué sucede cuando un FPGA se enciende y se deja sin configurar?

10

Estoy tratando de obtener una comprensión general de lo que sucede si deja un FPGA sin programar durante un período prolongado.

Suponga que tiene un FPGA y lo deja sin programar durante un largo período de tiempo (varios minutos a horas después del encendido), es decir, sin flujo de bits, ¿es malo para el dispositivo? ¿Se recomienda tener algo de flujo de bits en un FPGA encendido en todo momento? ¿Cuál es la opinión general al respecto?

¿Los resultados son diferentes en diferentes dispositivos o fabricantes (Xilinx vs. Altera vs. otros)?


Información adicional:

Tengo una placa SoC personalizada que utiliza un FPGA Xilinx Virtex-6. También tengo un Xilinx ML605 que utilizo como referencia.

Tablero personalizado: enciendo el tablero. Me doy cuenta de que tengo un corto período de tiempo para programarlo usando XMD (Xilinx Microprocessor Debugger). Si pierdo la ventana de 20-30 segundos, tengo que apagar y encender el tablero antes de volver a intentarlo. Esto no sucede con un ML605.

Cuando intento programar la placa personalizada sobre XMD, obtengo algo como:

Error: Device Reset by JPROGRAM command, failed. INIT_COMPLETE did not go high.

Déjame saber lo que piensas.

científico
fuente
1
Usted enfatiza en su pregunta y en su edición el "largo período de tiempo". ¿Realmente importa si son unos segundos o unas horas? No creo que lo hace ..
m.Alin
Estoy viendo un fenómeno en una placa FPGA personalizada donde obtengo una ventana de programación de 20-30 segundos. Si no programo en esta ventana, no puedo programar con éxito. El tema central de mi pregunta no es la duración del tiempo, sino comprender el fenómeno.
boffin
¿Eres capaz de conectarte al dispositivo? ¿O simplemente falla cuando intentas programar? ¿Cuál es el error que está dando el programador?
embedded.kyle
1
¿Está programando el FPGA a través de JTAG directamente, o está cargando el chip Flash primero y luego dejando que el FPGA se configure a través de eso?
ajs410
@fpga_boffin, ¿podría agregar esos detalles a su pregunta, por favor?
Jon L

Respuestas:

7

Esta es una pregunta interesante. Por experiencia personal, dejé los FPGA encendidos durante horas en un estado no programado mientras realizaba verificaciones en el resto de los circuitos cuando entra una nueva placa desde la casa de ensamblaje. No he notado ningún efecto perjudicial al hacerlo. Pero, sinceramente, nunca lo he pensado.

Miré a mi alrededor para tratar de encontrar una recomendación de un fabricante de FPGA, pero no pude encontrar una. La única declaración que encontré con respecto a este estado es de un documento técnico de Lattice y se refiere al diseño del FPGA en sí y no a cómo debe usarse:

El consumo de energía del dispositivo inactivo estático preprogramado es la cantidad de energía consumida por el FPGA antes del dispositivo que se está programando. Para el consumo de energía del dispositivo inactivo, el FPGA está en un estado no programado, pero ha sido alimentado. Es importante que el dispositivo no consuma energía significativa durante este tiempo, ya que conceptualmente el dispositivo FPGA podría consumir energía excesiva y potencialmente apagar las fuentes de alimentación, evitando que la placa se inicialice con éxito y el sistema.
Por lo tanto, el proveedor de FPGA tiene que diseñar cuidadosamente transistores que tengan una baja potencia estática.

Xilinx también menciona cuál es la corriente de reposo para que pueda diseñar su fuente de alimentación en consecuencia. Pero no menciona cuál es el efecto en el dispositivo de dejarlo en tal estado:

La potencia estática o inactiva está dominada principalmente por la corriente de fuga del transistor. Cuando esta corriente aparece en las hojas de datos, aparece como ICCINTQ y es la corriente extraída a través del suministro VCCINT que alimenta el núcleo FPGA.

Me interesaría saber si alguien ha sufrido daños en un dispositivo al dejarlo en un estado inactivo. Pero creo que siempre y cuando la fuente de alimentación coincida correctamente con el dispositivo, no debería haber ningún problema.

Embedded.kyle
fuente
6

Estoy haciendo referencia a la hoja de datos Spartan 3 , ya que ese es el FPGA con el que estoy más familiarizado.

Si mira el capítulo 2 (Descripción funcional), la sección "Configuración" tiene un par de diagramas de flujo. La Figura 27 (página 50) muestra el diagrama de flujo para cargar desde Flash. La Figura 28 muestra el diagrama de flujo JTAG.

Aquí hay un breve resumen.

1) Espere a que Vccint, Vccaux y Vcco alcancen los niveles requeridos.

2) Borrar los pestillos de configuración

3) Espere a que INIT_B suba. INIT_B es una salida de drenaje abierto que un maestro externo puede mantener bajo para retrasar la configuración.

4) Pines de modo de muestra. Esto determina si va a cargar a través de JTAG o Flash, y si Flash, si el FPGA o el Flash es el maestro.

5) Cargar marcos de datos de configuración.

6) Verifique que el CRC para las tramas de datos sea correcto. Si NO es correcto, el FPGA conducirá INIT_B bajo para indicar un error CRC y abortará el inicio.

El paso 5 es probablemente su verdadera pregunta: ¿qué sucede si no hay nada de qué cargar? Bueno, no deberías llegar al Paso 5 si estás haciendo las cosas bien. El chip Flash mantendrá INIT_B bajo hasta que esté listo para enviar datos al FPGA. Si está utilizando JTAG, entonces no estoy seguro de si su programador JTAG mantendrá bajo INIT_B, pero cuando fue a programar el FPGA, seguramente afirmará PROG_B (conduciéndolo bajo), lo que hace que el FPGA retroceda al paso 2.

Si fuera usted, buscaría la señal INIT_B durante el encendido para ver qué está sucediendo. Si comienza bajo, sube alto y luego baja nuevamente, el FPGA canceló la secuencia de inicio y probablemente necesitará afirmar PROG_B para restablecer el FPGA.

ajs410
fuente
Su respuesta no dice nada sobre el estado interno de la FPGA antes del paso 5, que es lo que OP quiere saber.
stevenvh
Paso 2. Borrar los pestillos de configuración. Paso 3, esperando INIT_B. También analizo qué tipo de decisión puede tomar la FPGA cada vez que encuentra que no hay datos de configuración para cargar (INIT_B baja para indicar un error CRC).
ajs410
1
Mis disculpas, la hoja de datos a la que hacía referencia era alrededor de 2005, y se actualizó en 2009. Sin embargo, si hubiera leído mi comentario a fondo, habría podido encontrarlo. Capítulo 2, Descripción funcional, bajo el encabezado Configuración. El enlace se ha actualizado para que apunte a la última hoja de datos, así como a los nuevos números de página.
ajs410
0

La configuración predeterminada está diseñada para ser lo más pasiva posible para que el dispositivo sea universalmente utilizable.

Para la serie Altera Cyclone (con la que tengo más experiencia) esto significa

  • los pines de E / S se tiran débilmente a VCCIO (para mantener los circuitos integrados con líneas de habilitación de chip bajo activo fuera del bus),
  • la salida CONF_DONE se baja (puede conectar esto al pin de restablecimiento de otros circuitos integrados para mantenerlos restablecidos hasta que se haya cargado una configuración, así como restaurarlos al estado conocido cuando se reconfigura), y
  • las entradas del reloj no se reenvían a las redes de reloj.

Otros tipos de FPGA deben ser igualmente inactivos y proporcionar salidas no invertidas e invertidas que indiquen el estado de la configuración al resto de la placa.

Dejar el dispositivo en ese estado es inofensivo, ya que el núcleo está bastante aislado del mundo exterior y solo los pull-ups pueden tener una pequeña corriente a través de ellos.

Simon Richter
fuente