Tengo una placa Spartan 6 que diseñé y tengo algunos problemas de configuración. Estoy usando flash SPI para programar el fpga (por ejemplo, uso jtag para escribir el flash y el flash luego escribe el fpga). El esquema que utilicé para la configuración se puede encontrar en la página 42 de UG380 de xilinx. http://www.xilinx.com/support/documentation/user_guides/ug380.pdf
La mayoría de las veces puedo programar el dispositivo sin problemas usando la interfaz jtag (programando directamente el fpga) o el spi flash (programando indirectamente el fpga); todo sale como se esperaba. Sin embargo, hay instancias en las que parece que el fpga no se configura correctamente a pesar de que el pin terminado se eleva (tengo un indicador LED en el pin y lo he monitoreado con un alcance). Esto se manifiesta de diferentes maneras. Entre otras cosas, esta placa maneja un VGA dac. Escribí un banco de pruebas para llevar barras de color a un monitor. El 75 % de las veces, si restablezco la placa (pulsando con fuerza un botón que hace que program_b sea bajo), las barras de color se encienden como se esperaba. El 25% de las veces no obtengo nada del vga dac. Parece que algunos de los pines que impulsan el dac no t alternar (el 75% de las veces todo funciona correctamente, lo hacen alternar). 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.
Dadas estas observaciones, me pregunto si es posible que a veces el fpga no esté configurado correctamente, o tal vez esté parcialmente configurado (por ejemplo, el pin que controla el LED aparece sin problemas, los pines que controlan el dac no). Las guías de usuario de xilinx indican que el enrutamiento de configuración es bastante sensible; en particular, el reloj de configuración debe terminarse correctamente. Me pregunto si es posible que haya un problema de diseño, lo que hace que el fpga falle ocasionalmente en la configuración. No estoy muy familiarizado con la forma en que realmente funciona la configuración (especialmente con respecto a la verificación), siempre "simplemente funcionó" en mis tableros anteriores, pero me parece extraño que el pin terminado suba cada vez sin problemas. , pero sigo viendo este comportamiento.
En realidad, no es posible que la FPGA salga de la rutina de inicio con una configuración corrupta, ya que confirma el CRC de la configuración después de cargar la configuración completa, pero antes de que intente iniciarse. Si no coincide, entonces el pin DONE permanece bajo y puede verificar lo que sucedió leyendo los bits de estado en JTAG.
Dado que parece que la configuración siempre se completa con el pin DONE liberado y su salida de reloj dividida está funcionando, supongo que puede tener un problema de metaestabilidad o un problema de inicialización en su diseño que aún no ha detectado.
usuario_1818839
Doov
usuario_1818839
Doov
FarhadA
martin thompson
Doov