Mam łańcuch JTAG łączący 4 układy FPGA Spartan 6, które programuję za pomocą ISE iMPACT. Oprogramowanie może pomyślnie zaprogramować dowolny ścisły podzbiór 4 układów FPGA w dowolnej kolejności. Jednak gdy próbuję zaprogramować wszystkie cztery układy FPGA, styk DONE ostatniego układu FPGA nie przechodzi w stan wysoki, a programowanie kończy się niepowodzeniem.
Co może być przyczyną tego dziwnego zachowania?
Uwagi:
- Po zaprogramowaniu trzech FPGA bit INIT_B rejestru stanu dla czwartej FPGA ma wartość 0, chociaż pin INIT_B jest wysoki. Tuż przed zaprogramowaniem trzeciego układu FPGA bit ten wynosił 1. To sugeruje, że czwarty układ FPGA został zamknięty.
- Podczas programowania w SelectMap mogę bez problemu zaprogramować wszystkie cztery układy FPGA.
- Kiedy programuję trzy układy FPGA za pomocą SelectMap, czwartego nadal nie można zaprogramować za pomocą JTAG.
- Każdy z czterech wykonanych pinów jest podciągany do 3V3 przez rezystory 4,7K Ohm, a następnie wiązany ze sobą.
Rzeczy, których próbowałem :
Odłączenie jednego z układów FPGA od łańcucha pozwala na zaprogramowanie pozostałych 3 układów FPGA.
Zamiana rezystora podciągającego 4,7 kOm z ostatniego układu FPGA na rezystor 330 omów nie rozwiązuje problemu.
"If the Spartan-6 device is configured via JTAG, the configuration instructions occur independent from the mode pins."
DONE
szpilki są ze sobą powiązane. W przypadku JTAG programowanie wielu urządzeń nazywa się łańcuchem skanowania granic. W Chapter 3: Boundary-Scan and JTAG Configuration
, jedyną wzmianką o DONE
szpilce jest "If JTAG is the only configuration mode, then PROGRAM_B, INIT_B, and DONE can be tied High to a 330 resistor."
Więc czy DONE
szpilka jest jedynym problemem? Czy programuje się poprawnie?
"The first device in a serial daisy chain is the last to be configured."
Czy masz na myśli ostatni w łańcuchu czy ostatni do skonfigurowania (pierwszy w łańcuchu)? Czy możesz podać schemat?