У меня есть цепочка JTAG, соединяющая 4 спартанских 6 FPGA, которые я программирую, используя ISE iMPACT. Программное обеспечение может успешно программировать любое строгое подмножество 4 ПЛИС подряд и в любом порядке. Однако, когда я пытаюсь запрограммировать все четыре FPGA, вывод DONE последней FPGA не поднимается до высокого уровня, и программирование не выполняется.
Что может быть причиной этого странного поведения?
Ноты:
- После программирования трех FPGA бит INIT_B регистра состояния для четвертой FPGA равен 0, хотя вывод INIT_B высокий. Прямо перед программированием третьей FPGA этот бит был равен 1. Это говорит о том, что четвертая FPGA заблокирована.
- При программировании с помощью SelectMap я могу без проблем программировать все четыре ПЛИС.
- Когда я программирую три из ПЛИС с помощью SelectMap, четвертый все еще не может быть запрограммирован с использованием JTAG.
- Каждый из четырех готовых выводов подтягивается к резисторам от 3V3 до 4,7 кОм, а затем связывается вместе.
Вещи, которые я пробовал :
Отключение одной из ПЛИС от цепи позволяет запрограммировать оставшиеся 3 ПЛИС.
Замена подтягивающего резистора 4,7 кОм последней ПЛИС на резистор 330 Ом не решает проблему.
"The first device in a serial daisy chain is the last to be configured."
Вы имеете в виду последний в цепочке или последний, который будет настроен (первый в цепочке)? Не могли бы вы предоставить схему?"If the Spartan-6 device is configured via JTAG, the configuration instructions occur independent from the mode pins."
DONE
контакты связаны друг с другом. Для JTAG программирование нескольких устройств называется цепью сканирования границы. ВChapter 3: Boundary-Scan and JTAG Configuration
, единственное упоминание оDONE
булавке -"If JTAG is the only configuration mode, then PROGRAM_B, INIT_B, and DONE can be tied High to a 330 resistor."
Так лиDONE
булавка низкая единственная проблема? Это правильно программировать?Ответы:
DONE
Штифт в не используются при программировании JTAG и может быть связана с высокими:Однако, если используется последовательное программирование, все
DONE
контакты должны быть связаны друг с другом иDriveDone
должны быть отключены для всех устройств, кроме первого:Если оба должны быть использованы, есть два варианта:
В вашем случае, я думаю,
DONE
лучше всего подключить их и завязать их все вместе, отключив пин-код.Все номера страниц относятся к Руководству пользователя.
источник
INIT_B
установили высокий уровень иINIT_B
бит в регистре состояния равен 0, это будет означать сбой оборудования для меня. Если вы не можете запрограммировать этот чип независимо, что, я думаю, вы сказали, что могли бы. При программированииDONE
вывод становится High-Z, поэтому я не знаю, что делает регистр состояния в этот момент. Если LSB предыдущего регистра состояния FPGA равен 1, то это указывает на ошибку CRC в этом устройстве, которая может помешать программированию следующего.Оказалось, виновником была
INIT_B
булавка. Несмотря на то, что он был вытянут высоко, так как первые несколько FPGA были запрограммированы,INIT_B
штифт постепенно вытягивался все ниже и ниже из-за внутреннего опускания.После того, как были запрограммированы три FPGA,
INIT_B
вывод был вытянут достаточно низко, чтобы четвертая FPGA интерпретироваласьINIT_B
как логический низкий уровень, тем самым предотвращая программирование четвертого FGPA с помощью JTAG.источник
INIT_B
штифт должен быть подтянут, а не опущен после программирования.