реклама на сайте
подробности

 
 
> Ошибки в работе JTAG, в чем возможная причина ?
Demeny
сообщение May 19 2009, 06:49
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Есть плата, на которой установлены в единой JTAG цепочке Spartan 2 (XC2S150) и загрузочная флэшка для него XCF01S, первым в цепочке Spartan, затем Flash. Кабель фирменный на LPT, Xilinx Parallel IV Download Cable.
Проблема заключается в том, что с помощью кабеля битстрим не удаётся корректно загрузить в Spartan - процедура загрузки отрабатывает до 100%, после чего выноcится приговор "Program Failed" и в окне сообщений пишется что-то типа "Pin Done not drive High". Однако пин Done подтянут к 3.3 В резистором 330 Ом, согласно рекомендациям Xilinx, на нем также висит светодиод через ключевой транзистор.
Что примечательно - таких проблем нет с флэшкой, которая вторая в цепочке, загрузка по JTAG в неё сгенерированного из битстрима файла всегда проходит правильно, после этого в процессе включения Spartan из неё отлично грузится, зажигая при этом светодиод Done.
Верификация битстрима из Spartan-a (при включении в проекте такой опции) показывает огромное количество ошибок (около 250 000 различий), причем число это одно и то же от проверки к проверке, и меняется только при изменении самого битстрима (коррекции проекта). Это говорит о том, что звоны и шумы тут, видимо, ни при чём.
Цепочку прозванивал, всё пропаяно хорошо, она нормально инициализируется, можно читать ID, статусы - всё ОК. А вот заливка битстрима не идёт. В чём может быть причина ?


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
RKOB
сообщение May 20 2009, 06:18
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 17-03-05
Пользователь №: 3 422



Ваш случай: http://www.xilinx.com/support/answers/20047.htm
Go to the top of the page
 
+Quote Post
Demeny
сообщение May 20 2009, 10:32
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(RKOB @ May 20 2009, 10:18) *

К сожалению, это не то. В моем случае пин DONE не поднимается, а там описан случай, когда DONE High, но FPGA не стартует (ноги в Z-состоянии).


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение May 22 2009, 23:51
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



Цитата(Demeny @ May 20 2009, 14:32) *
К сожалению, это не то. В моем случае пин DONE не поднимается, а там описан случай, когда DONE High, но FPGA не стартует (ноги в Z-состоянии).

1. Тоже возился на днях. Связка Spartan-IIE и XCS01S. Только кабель digilent. Та же фигня. Битстрим в ПЛИС с кабеля - фигу (DONE в '0'). С флэшки грузится.
Соображения такие:
1) Режим загрузки Boundary Scan со своими значениями M0...M2 введен неспроста... Если у вас отладочная плата, то джамперами установите этот режим (если не отладочная плата, то этот вариант пропускаем smile.gif ).
2) У вас нога PROGRAM от ПЛИС с ногой CF флэшки соединена? Может здесь причина? В даташите написано, что при загрузке битстрима по житагу PROGRAM должна быть притянута к '1'. А нога CF как раз через житаг в ноль устанавливается. Посмотрите осциллом ногу PROGRAM во время загрузки битстрима с кабеля. Если в ноль где-то переходит, возможно, проблемма в этом (в этом случае TAP-контроллер сбрасывается со всеми вытекающими). Тогда попробуйте CF оторвать, а PROGRAM оставить на резисторе подтяжки.
3) В моей вышеупомянутой связке был косячок - сигнал CCLK был соединен с другой пиной ПЛИС. Эта пина оказалась DOUT (до загрузки ПЛИС выход). В итоге сигнал CCLK был кривоват - не опускался до 0В, а только до 1В. При этом ПЛИС не грузилась (хотя флэш и при таком клоке исправно выдавала данные ). И причем можно было с кабеля битстрим загрузить. Когда я этот косячок исправил - ПЛИС с кабеля грузится перестала. В связи с этим можно попробовать как-нибудь флэшку временно "парализовать" - оторвать от нее CCLK или еще как-нибудь. Может поможет.
И кстати, а зачем вам по житагу битстрим в ПЛИС грузить? Ресурс флэши жалеете? (это я так спрашиваю, из любопытства rolleyes.gif). А то я не стал париться (ну не получилось, ну и ладно) - прошивал флэш, щупом коротил PROGRAM на '0' (чтоб питанием не щелкать - остальные узлы не тормозить)...
Go to the top of the page
 
+Quote Post
Demeny
сообщение Jun 15 2009, 07:11
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(Student Pupkin @ May 23 2009, 03:51) *
1) Режим загрузки Boundary Scan со своими значениями M0...M2 введен неспроста... Если у вас отладочная плата, то джамперами установите этот режим (если не отладочная плата, то этот вариант пропускаем smile.gif ).

Вроде как Boundary Scan должен быть доступен всегда, независимо от установок M0...M2. Вот цитата из даташита: "Configuration through the boundary-scan port is always available, independent of the mode selection. Selecting the boundary-scan mode simply turns off the other modes."
Цитата(Student Pupkin @ May 23 2009, 03:51) *
2) У вас нога PROGRAM от ПЛИС с ногой CF флэшки соединена? Может здесь причина? В даташите написано, что при загрузке битстрима по житагу PROGRAM должна быть притянута к '1'. А нога CF как раз через житаг в ноль устанавливается. Посмотрите осциллом ногу PROGRAM во время загрузки битстрима с кабеля. Если в ноль где-то переходит, возможно, проблемма в этом (в этом случае TAP-контроллер сбрасывается со всеми вытекающими). Тогда попробуйте CF оторвать, а PROGRAM оставить на резисторе подтяжки.

Да, CF соединена с PROGRAM, но при загрузке по JTAG в FPGA там всегда 1, лог. 0 там проскакивает, если при заливке во флэшь выбрать опцию "Load FPGA", что вобщем-то логично - после заливки флэши инициируется загрузка битстрима в FPGA.

Вобщем, более пристальное исследование показало вот что - если флэшка, из которой грузится FPGA и которая вторая в цепочке JTAG, пустая - загрузка битстрима в FPGA по JTAG проходит совершенно беспроблемно, верифицируется успешно через Readback и пин DONE поднимается. Но если во флэшке залит валидный битстрим для FPGA - загрузка по JTAG никогда не проходит - пин DONE падает, INIT_B в лог. нуле, по CCLK из FPGA прет клок порядка 4 МГц - видимо, FPGA впадает в бесконечный цикл загрузки битстрима по Master Serial, в этом состоянии попытка заливки битстрима по JTAG ничего не меняет и верификация (readback)показывает одно и то же большое число ошибок.
Создается впечатление, что после инициализации конфигурации по JTAG два битстрима мешают друг другу - один льется по Master Serial из флэшки, другой по JTAG.
Тем не менее решение проблемы нашлось ! В параметрах битстрима я увеличил скорость со стандартной 4 до 10, сгенерировал из него новый файл для флэшки, залил его во флэш - и о чудо - проблема разрешилась. Теперь загрузка по JTAG проходит без проблем, даже если во флэшке уже есть другой битстрим.
Решение найдено полуслучайным путем, возможно, эксперты в JTAG разъяснят причину такого поведения связки FPGA-Flash.


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 07:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01418 секунд с 7
ELECTRONIX ©2004-2016