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.
"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. En Chapter 3: Boundary-Scan and JTAG Configuration
, la única mención del DONE
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 el DONE
pin low es el único problema? ¿Se programa correctamente?
"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?