Tengo una cadena JTAG que conecta 4 FPGA Spartan 6 que programo usando ISE iMPACT. El software puede programar cualquier subconjunto estricto de los 4 FPGA seguidos con éxito y en cualquier orden. Sin embargo, cuando intento programar los cuatro FPGA, el pin HECHO del último FPGA no sube y la programación falla.
¿Qué podría estar causando este extraño comportamiento?
Notas:
- Después de programar tres de los FPGA, el bit INIT_B del registro de estado para el cuarto FPGA es 0, aunque el pin INIT_B es alto. Justo antes de programar el tercer FPGA, ese bit era 1. Esto sugiere que el cuarto FPGA se ha bloqueado.
- Al programar con SelectMap, puedo programar los cuatro FPGA sin ningún problema.
- Cuando programo tres de los FPGA con SelectMap, el cuarto todavía no se puede programar con JTAG.
- Cada uno de los cuatro pines hechos se levanta a 3V3 a través de resistencias de 4.7K Ohm, y luego se unen.
Cosas que he probado :
Desconectar uno de los FPGA de la cadena permite que los 3 FPGA restantes aún estén programados.
Cambiar la resistencia pull-up de 4.7K Ohm del último FPGA por una resistencia de 330 Ohm no resuelve el problema.
"The first device in a serial daisy chain is the last to be configured."
¿Quieres decir el último en la cadena o el último en configurarse (primero en la cadena)? ¿Podría proporcionar un esquema?"If the Spartan-6 device is configured via JTAG, the configuration instructions occur independent from the mode pins."
DONE
pasadores están unidos entre sí. Para JTAG, la programación de múltiples dispositivos se llama Boundary-Scan Chain. EnChapter 3: Boundary-Scan and JTAG Configuration
, la única mención delDONE
pin es"If JTAG is the only configuration mode, then PROGRAM_B, INIT_B, and DONE can be tied High to a 330 resistor."
¿Entonces elDONE
pin low es el único problema? ¿Se programa correctamente?Respuestas:
El
DONE
pin no se usa durante la programación de JTAG y se puede atar alto:Sin embargo, si se utiliza la programación en serie, todos los
DONE
pines deberían estar unidos yDriveDone
desactivados para todos los dispositivos, excepto el primero:Si se van a utilizar ambos, hay dos opciones:
En su caso, creo que conectarlos y atarlos a todos mientras deshabilita el
DONE
pin es la mejor manera de hacerlo.Todos los números de página hacen referencia a la Guía del usuario
fuente
INIT_B
alto y elINIT_B
bit en el registro de estado es 0, eso indicaría una falla de hardware para mí. A menos que pueda programar ese chip de forma independiente, lo que creo que dijo que podía. ElDONE
pin pasa a High-Z durante la programación, así que no sé qué hace el registro de estado durante ese punto. Si el LSB del registro de estado FPGA anterior es 1, eso indica un error CRC en ese dispositivo que puede impedir la programación del siguiente.Resultó que el culpable era el
INIT_B
alfiler. Aunque se tiró alto, ya que se programaron los primeros FPGA, elINIT_B
pasador se tiró gradualmente hacia abajo y hacia abajo debido a un desplegable interno.Después de que se programaron tres FPGA, el
INIT_B
pin se tiró lo suficientemente bajo como para que el cuarto FPGA se interpreteINIT_B
como un bajo lógico, evitando así que el cuarto FGPA se programe con JTAG.fuente
INIT_B
pin se levante en lugar de bajar después de la programación.