Eu tenho uma cadeia JTAG conectando 4 Spartan 6 FPGAs que eu programo usando o ISE iMPACT. O software pode programar qualquer subconjunto estrito dos 4 FPGAs seguidos com êxito e em qualquer ordem. No entanto, quando tento programar todos os quatro FPGAs, o pino DONE do último FPGA não aumenta e a programação falha.
O que poderia estar causando esse comportamento estranho?
Notas:
- Após programar três dos FPGAs, o bit INIT_B do registro de status para o quarto FPGA é 0, embora o pino INIT_B esteja alto. Logo antes de programar o terceiro FPGA, esse bit era 1. Isso sugere que o quarto FPGA foi bloqueado.
- Ao programar com o SelectMap, posso programar todos os quatro FPGAs sem nenhum problema.
- Quando programa três dos FPGAs usando o SelectMap, o quarto ainda não pode ser programado usando o JTAG.
- Cada um dos quatro pinos prontos é puxado para resistores de 3V3 a 4,7K Ohm e, em seguida, amarrados.
Coisas que tentei :
Desconectar um dos FPGAs da cadeia permite que os 3 FPGAs restantes ainda sejam programados.
A troca do resistor pull-up de 4.7K Ohm do último FPGA por um resistor de 330 Ohm não resolve o problema.
"If the Spartan-6 device is configured via JTAG, the configuration instructions occur independent from the mode pins."
DONE
pinos estão amarrados. Para o JTAG, a programação de vários dispositivos é chamada Cadeia de varredura de limites. Em Chapter 3: Boundary-Scan and JTAG Configuration
, a única menção do DONE
pino é "If JTAG is the only configuration mode, then PROGRAM_B, INIT_B, and DONE can be tied High to a 330 resistor."
Então, o DONE
pino baixo é o único problema? Programa corretamente?
"The first device in a serial daisy chain is the last to be configured."
Você quer dizer o último da cadeia ou o último a ser configurado (o primeiro da cadeia)? Você poderia fornecer um esquema?