¿Es posible que un FPGA se configure "parcialmente"?

4

Tengo una placa espartana 6 que diseñé y tengo algunos problemas de configuración. Estoy usando SPI flash para programar el fpga (por ejemplo, yo uso jtag para escribir el flash y el flash escribe el fpga). El esquema que utilicé para la configuración se puede encontrar en la página 42 de UG380 de xilinx. enlace

La mayoría de las veces puedo programar el dispositivo sin problemas usando la interfaz jtag (programando directamente el fpga) o el flash spi (programando indirectamente el fpga): todo sale como se espera. Sin embargo, hay instancias en las que parece que el fpga no se configura correctamente a pesar del hecho de que el pin realizado es alto (tengo un indicador LED en el pin y he monitoreado con un alcance). Esto se manifiesta de diferentes maneras. Entre otras cosas esta placa maneja un dac VGA. Escribí un banco de pruebas para dirigir barras de color a un monitor. El 75% de las veces, si reinicio la placa (presionando un botón que hace que program_b low), las barras de color se encienden como se esperaba. El 25% del tiempo no saco nada del vga dac. Parece que algunos de los pines que impulsan el dac no se activan (el 75% de las veces, todo funciona correctamente si lo hacen). Además del dac, tengo un led de prueba que conduzco con el msb de un contador, que simplemente divide el reloj del sistema de 100 MHz para que parpadee ~ dos veces por segundo. Ese pin parece aparecer sin problemas cada vez.

Teniendo en cuenta estas observaciones, me pregunto si es posible que a veces el fpga no esté configurado correctamente, o quizás esté parcialmente configurado (por ejemplo, el pin que conduce el led aparece sin problemas, los pines que conducen el dac no lo hacen) . Las guías del usuario de xilinx indican que el enrutamiento de la configuración es bastante sensible, en particular, el reloj de configuración debe terminarse correctamente. Me pregunto si es posible que exista un problema de diseño, lo que hace que fpga a veces dañe la configuración. No estoy muy familiarizado con la forma en que realmente funciona la configuración (especialmente en lo que respecta a la verificación); siempre ha "funcionado" en mis tableros anteriores, pero me parece extraño que el pin hecho esté alto cada vez sin ningún problema. , pero sigo viendo este comportamiento.

    
pregunta Doov

1 respuesta

5

Realmente no es posible que el FPGA salga de la rutina de inicio con una configuración dañada, ya que confirma el CRC de la configuración después de que se haya cargado la configuración completa, pero antes de que intente iniciarse. Si no coincide, entonces el pin HECHO permanece bajo y puede verificar lo que sucedió leyendo los bits de estado sobre JTAG.

Como parece que la configuración siempre se completa con el pin DONE (DONE) liberado y su salida de reloj dividida está funcionando, supongo que es posible que tenga un problema de metastabilidad o de inicialización en su diseño que aún no haya detectado.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas