Saya memiliki rantai JTAG yang menghubungkan 4 Spartan 6 FPGA yang saya program menggunakan ISE iMPACT. Perangkat lunak ini dapat memprogram subset ketat dari 4 FPGA secara berturut-turut, dan dalam urutan apa pun. Namun, ketika saya mencoba memprogram keempat FPGA, pin SELESAI dari FPGA terakhir tidak menjadi tinggi, dan pemrograman gagal.
Apa yang bisa menyebabkan perilaku aneh ini?
Catatan:
- Setelah memprogram tiga FPGA, bit INIT_B dari register status untuk FPGA keempat adalah 0, meskipun pin INIT_B tinggi. Tepat sebelum pemrograman FPGA ketiga, bit itu adalah 1. Ini menunjukkan FPGA keempat telah terkunci.
- Saat pemrograman dengan SelectMap, saya dapat memprogram keempat FPGA tanpa masalah.
- Ketika saya memprogram tiga FPGA menggunakan SelectMap, yang keempat masih tidak dapat diprogram menggunakan JTAG.
- Masing-masing dari empat pin yang dilakukan ditarik ke atas hingga 3V3 hingga 4.7K Ohm resistor, dan kemudian diikat bersama.
Hal yang saya coba :
Memutuskan hubungan salah satu FPGA dari rantai memungkinkan 3 FPGA yang tersisa masih diprogram.
Mengganti resistor pull-up 4.7K Ohm dari FPGA terakhir untuk resistor 330 Ohm tidak menyelesaikan masalah.
"The first device in a serial daisy chain is the last to be configured."
Apakah maksud Anda terakhir di rantai atau terakhir yang akan dikonfigurasi (pertama di rantai)? Bisakah Anda memberikan skema?"If the Spartan-6 device is configured via JTAG, the configuration instructions occur independent from the mode pins."
DONE
pin diikat bersama. Untuk JTAG, pemrograman banyak perangkat disebut Boundary-Scan Chain. DalamChapter 3: Boundary-Scan and JTAG Configuration
, satu-satunya menyebutkanDONE
pin adalah"If JTAG is the only configuration mode, then PROGRAM_B, INIT_B, and DONE can be tied High to a 330 resistor."
Jadi apakahDONE
pin rendah satu-satunya masalah? Apakah programnya benar?Jawaban:
The
DONE
pin di tidak digunakan selama pemrograman JTAG dan dapat diikat tinggi:Namun, jika pemrograman Serial digunakan, maka semua
DONE
pin harus diikat menjadi satu dan yangDriveDone
harus dinonaktifkan untuk semua perangkat kecuali yang pertama:Jika keduanya akan digunakan, ada dua opsi:
Dalam kasus Anda, saya pikir menghubungkan mereka dan mengikat mereka semua sambil menonaktifkan
DONE
pin adalah cara terbaik untuk pergi.Semua nomor halaman merujuk pada Panduan Pengguna
sumber
INIT_B
tinggi danINIT_B
bit dalam register status adalah 0, itu akan menunjukkan kegagalan perangkat keras kepada saya. Kecuali Anda dapat memprogram chip itu secara mandiri yang menurut saya Anda bisa. TheDONE
pin pergi tinggi-Z sementara pemrograman jadi saya tidak tahu apa status register tidak selama saat itu. Jika LSB register status FPGA sebelumnya adalah 1, maka itu menunjukkan kesalahan CRC pada perangkat tersebut yang dapat mencegah pemrograman perangkat berikutnya.Ternyata pelakunya adalah
INIT_B
pin. Meskipun ditarik tinggi, karena beberapa FPGA pertama diprogram,INIT_B
pin secara bertahap ditarik lebih rendah dan lebih rendah karena internal pull-down.Setelah tiga FPGA diprogram,
INIT_B
pin ditarik cukup rendah untuk FPGA keempat untuk ditafsirkanINIT_B
sebagai logika rendah, sehingga mencegah FGPA keempat diprogram dengan JTAG.sumber
INIT_B
pin ditarik bukan ditarik setelah pemrograman.