Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Spartan6. Проект загружается, но не стартует.
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
ovs_pavel
День добрый коллеги. Никак не могу подружиться с 6-ым спартаном. Вообщем о проблеме.
В цепь JTAG последовательно включены сначала ПЛИС, затем XC6SLX45-3FGG676I, затем конфигуратор XCF16PFSG48C.
При подаче питания эти 2 м/сх обнаруживаются по цепи JTAG. Идентификаторы м/сх считываются, т.е. все вроде работает.
1. Зашиваем проект (bit-файл) в ПЛИС по JTAGу.
iMPACT выдает:
----------------------------------------------------------------------
INFO:iMPACT - Current time: ?? 28. ??? 12:2PROGRESS_START - Starting Operation.
Maximum TCK operating frequency for this device chain: 15000000.
Validating chain...
Boundary-scan chain validated successfully.
'1': Programming device...
LCK_cycle = NoWait.
LCK cycle: NoWait
done.
'1': Reading status register contents...
[0] CRC ERROR : 0
[1] IDCODE ERROR : 0
[2] DCM LOCK STATUS : 1
[3] GTS_CFG_B STATUS : 1
[4] GWE STATUS : 1
[5] GHIGH STATUS : 1
[6] DECRYPTION ERROR : 0
[7] DECRYPTOR ENABLE : 0
[8] HSWAPEN PIN : 1
[9] MODE PIN M[0] : 1
[10] MODE PIN M[1] : 1
[11] RESERVED : 0
[12] INIT_B PIN : 1
[13] DONE PIN : 1
[14] SUSPEND STATUS : 0
[15] FALLBACK STATUS : 0
INFO:iMPACT:2219 - Status register values:
INFO:iMPACT - 0011 1100 1110 1100
INFO:iMPACT:579 - '1': Completed downloading bit file to device.
INFO:iMPACT:188 - '1': Programming completed successfully.
LCK_cycle = NoWait.
LCK cycle: NoWait
INFO:iMPACT - '1': Checking done pin....done.
'1': Programmed successfully.
PROGRESS_END - End Operation.
Elapsed time = 5 sec.

Вообщем проект залился, но на тестовых пинах все время нули, т.е. как будто ПЛИС в состоянии сброса. Посмотрел на состояние сигнала DONE (оттянут на +3,3В), ведет себя как и положено, т.е. во время прошивки в состоянии 0, а после уходит в состояние 1.

2. Пробовал прошивать конфигурашку. Ситуация абсолютно аналогичная (ПЛИС с конфигурашки грузится как master serial). С конфигурашки идет CCLK, данные (посмотрел) также сигнал DONE сначала в 0, а после заливки прошивки с конфигурашки уходит в 0. Но ПЛИС молчит((.
Boris_TS
Была такая засада у Xilinx: DONE должен перейти в устойчивую '1' за 1 такт CCLK, иначе ПЛИС становится раком. Может быть это как раз Ваш случай ?
Было 2 варианта преодоления этого: повесить на DONE резистор в 330 Ом или включить DONE_DRIVE_HIGH в опциях BitGen'а (мне всегда больше нравился 2 вариант – он надёжнее работает).
ovs_pavel
Цитата(Boris_TS @ Aug 28 2012, 14:06) *
Была такая засада у Xilinx: DONE должен перейти в устойчивую '1' за 1 такт CCLK, иначе ПЛИС становится раком. Может быть это как раз Ваш случай ?
Было 2 варианта преодоления этого: повесить на DONE резистор в 330 Ом или включить DONE_DRIVE_HIGH в опциях BitGen'а (мне всегда больше нравился 2 вариант – он надёжнее работает).



Да в том то и дело что и резистор 330 Ом стоит на месте (может по расстоянию далеко от ПЛИС, около 5 см), и опцию Drive Done Pin High включил. Рекомендуете посмотреть на длительность фронта сигнала Done?

Тут же не совсем тогда ясен вопрос прошивки через JTAG, т.е. загрузки bit-файла. Я в установках кабеля (cable setup) снижал рабочую частоту JTAG до 1,5МГц. Ситуация та же самая.
ovs_pavel
Больше никаких идей нет??
des00
Цитата(ovs_pavel @ Aug 28 2012, 12:08) *
Больше никаких идей нет??

может дело не в житаге ? ноги не те стоят, тактовой нет и т.д. ? самый простой способ проверить : блинкер + чипскоп.
ovs_pavel
Цитата(des00 @ Aug 28 2012, 22:18) *
может дело не в житаге ? ноги не те стоят, тактовой нет и т.д. ? самый простой способ проверить : блинкер + чипскоп.


На счет тактовой - я уже константы подаю на тестовые сигналы. Полазил по зарубежным сайтам - они рекомендуют тоже самое что и Boris_TS:

There are a handful of problems that might prevent a Xilinx Virtex series FPGA from operating correctly after the DONE pin goes High:
1. A slow rise time on the DONE pin
2. An incorrect startup clock
3. Insufficient clock cycles to complete the startup sequence
4. Contention between DONE signals on configured vs. unconfigured devices

А можно поподробней про "самый простой способ" или ссылку как его использовать (описание). Модуль чипскоп как то пробовал, но он мне не понравился (хотя использовал только для просмотра внутренних сигналов во время отладки проекта). А вот про "блинкер" что то не слышал.
des00
Цитата(ovs_pavel @ Aug 28 2012, 12:42) *
На счет тактовой - я уже константы подаю на тестовые сигналы.

если ошибки в пинах нет, тогда это проблема загрузки.

Цитата
А можно поподробней про "самый простой способ" или ссылку как его использовать (описание). Модуль чипскоп как то пробовал, но он мне не понравился (хотя использовал только для просмотра внутренних сигналов во время отладки проекта). А вот про "блинкер" что то не слышал.

да самые банальные проверки, выдать частоту на светодиод (blinker) и посмотреть работу делителя частоты в нем чипскопом. Если фпга загрузилась и молчит по внешним портам, то внутри она будет хлопать если есть тактовая. Если не находиться инстанс чипскопа значит фпга не загрузилась, если не хлопает чипскоп, значит тактовой нет. Но похоже что это не ваш вариант.
Flood
Входы/выходы могут не работать, например, из-за проблем с Vccio. Также стоит проверить физическое наличие клока на плате.
Блинкер - видимо, простейший проект, мигалка выходом (светодиодом) от основной частоты + поставить чипскоп на клок и мигающую ножку.
После загрузки проекта запустить анализатор чипскопа и смотреть, что он скажет насчет присутствия ядра ILA и его функциональности.
ovs_pavel
Цитата(Flood @ Aug 28 2012, 22:53) *
Входы/выходы могут не работать, например, из-за проблем с Vccio. Также стоит проверить физическое наличие клока на плате.
Блинкер - видимо, простейший проект, мигалка выходом (светодиодом) от основной частоты + поставить чипскоп на клок и мигающую ножку.
После загрузки проекта запустить анализатор чипскопа и смотреть, что он скажет насчет присутствия ядра ILA и его функциональности.


Понятно. Да я уже попытался отойти от внешней частоты (хотя она подается, по крайней мере идет от генератора). Подаю на тестовые сигналы (их 16 штук) различные константы, т.е. вообще отошел от частоты, простая логика. Во время заливки прошивки в ПЛИС по JTAGу на этих пинах состояние "1", т.е. пока идет программирование они в Z-состоянии как и положено, а после прошивки переходят в состояние 0, вне зависимости от того что я задал на них.
Насчет ошибки в пинах, не могли же ошибиться в разводке всех 16-ти пинов.

И еще по потреблению тока тоже интересный момент. Во время прошивки потребление - 300мА. После прошивки - 600мА. Далее через несколько секунд опять 300мА.
Вот такие чудеса. Сколько работаю (уже скоро 12 лет) такого не было ни разу. Даже Virtex5, куда более сложный девайс и то без проблем.
Flood
Положение неиспользуемых ножек после программирования можно задавать в файле конфигурации (Pulldown, pullup, HiZ) - попробуйте разное.
Прыжок потребления - очень странно, похоже на сброс конфигурации. Стоит проверить все напряжения питания ПЛИС, включая IO и MGT (если это 45T).
Считайте регистр состояния после сброса потребления на 300мА. Возможно, конфигурация слетела (дрожит INIT ?).
ovs_pavel
Цитата(Flood @ Aug 28 2012, 23:13) *
Положение неиспользуемых ножек после программирования можно задавать в файле конфигурации (Pulldown, pullup, HiZ) - попробуйте разное.
Прыжок потребления - очень странно, похоже на сброс конфигурации. Стоит проверить все напряжения питания ПЛИС, включая IO и MGT (если это 45T).
Считайте регистр состояния после сброса потребления на 300мА. Возможно, конфигурация слетела (дрожит INIT ?).


Спасибо, завтра попробую.
ovs_pavel
День добрый. Как и предположил Boris, стоял не тот номинал резистора по сигналу DONE (хотя по перечню и схеме - 330Ом, поставили таки 4,7кОм). Перепаял ((((. И пошли новые глюки. Теперь стала дурить цепочка JTAG. Выдает такой баян:

Attempting to identify devices in the boundary-scan chain configuration...
INFO:iMPACT - Current time: ?? 29. ??? 11:4PROGRESS_START - Starting Operation.
Identifying chain contents...'0': : Manufacturer's ID = Xilinx xcf16p, Version : 13
INFO:iMPACT:1777 -
Reading C:/Xilinx/12.3/ISE_DS/ISE/xcfp/data/xcf16p.bsd...
INFO:iMPACT:501 - '1': Added Device xcf16p successfully.
----------------------------------------------------------------------
----------------------------------------------------------------------
'1': : Manufacturer's ID = Xilinx xc6slx45, Version : 4
INFO:iMPACT:1777 -
Reading C:/Xilinx/12.3/ISE_DS/ISE/spartan6/data/xc6slx45.bsd...
INFO:iMPACT:501 - '1': Added Device xc6slx45 successfully.
----------------------------------------------------------------------
----------------------------------------------------------------------
'2': : Manufacturer's ID = Unknown
INFO:iMPACT:501 - '1': Added Device UNKNOWN successfully.
----------------------------------------------------------------------
----------------------------------------------------------------------
'3': : Manufacturer's ID = Unknown
INFO:iMPACT:501 - '1': Added Device UNKNOWN successfully.
----------------------------------------------------------------------
----------------------------------------------------------------------
'4': : Manufacturer's ID = Unknown
INFO:iMPACT:501 - '1': Added Device UNKNOWN successfully.
----------------------------------------------------------------------
----------------------------------------------------------------------
'5': : Manufacturer's ID = Unknown
INFO:iMPACT:501 - '1': Added Device UNKNOWN successfully.
----------------------------------------------------------------------
... до 31
----------------------------------------------------------------------
ERROR:iMPACT - A problem may exist in the hardware configuration. that the cable, scan chain, and power connections are intact, that the specified scan chain configuration matches the actual hardware, and that the power supply is adequate and delivering the correct voltage.
----------------------------------------------------------------------

Хотя вчера все по цепи JTAG определялось ОК. Сейчас сижу перепроверяю JTAG. Хотя вроде бы м/сх он находит (если посмотреть в начале списка, то там как раз и есть мои м/сх, но далее идет брею).
Boris_TS
Цитата(ovs_pavel @ Aug 29 2012, 12:40) *
Хотя вчера все по цепи JTAG определялось ОК. Сейчас сижу перепроверяю JTAG. Хотя вроде бы м/сх он находит (если посмотреть в начале списка, то там как раз и есть мои м/сх, но далее идет бред).

Проверьте TMS и TDI, обычно такое из-за этих сигналов бывает.

Есть, конечно, и более мерзкий вариант, хоть на него не сильно похоже, но всё равно изложу: у нас в Virtex-6 была конкуренция между 2 процессами загрузки JTAG и Master Select MAP:
1. JTAG посылал команду #Program.
2. ПЛИС сбрасывалась, и считывала состояние ножек M[2:0].
3. согласно состоянию M[2:0] ПЛИС начинала грузиться с Platform Flash XL.
4. а тут, как раз, и JTAG созревал до загрузки.
Вылечили добавлением перемычки на одну из M[2:0] ножек для выбора режима загрузки: JTAG / Master Select MAP.
ovs_pavel
Посмотрел все сигналы JTAG. TCK, TMS и TDO есть, а вот TDI нет. Снял кабель программирования и прозвонил пин TDI на землю на плате. Оказалось КЗ (1,5 Ома). Т.е. вход ПЛИС TDI закорочен. Ведь чтобы контакт так выгорел вроде не похоже. Обыяно сопротивление побольше. Да и ПЛИС не потребляет ток, не разогревается.
Пока меня не было на плату устанавливали (допаивали) два банка памяти и видимо (возможно разогрели ПЛИС) что то под ПЛИСой коротит. Поэтому видимо по TDO информация о ПЛИС и конфигурашке считывается, а далее по TDI данные не проходят и iMPACT выдает такой баян. Попробую завтра попросить, чтобы прогрели ПЛИС, может, если это что то вроде кусочка припоя, расплавится к какому либо пину под ПЛИС. Ведь сначала работы этого не было. Либо на рентген тащить и смотреть что под ПЛИСой находиться.
Flood
Если там именно 1,5 Ом, а не 0 Ом, то это больше похоже на выгоревший контакт. На разных режимах и разной полярности звонится одинаково?
ovs_pavel
Цитата(Flood @ Aug 29 2012, 22:46) *
Если там именно 1,5 Ом, а не 0 Ом, то это больше похоже на выгоревший контакт. На разных режимах и разной полярности звонится одинаково?


При разной полярности звонится одинаково. Пытался замерять сопротивление при разной длине от ПЛИС, как от предполагаемого источника КЗ, (но есть только одно переходное отверстие), результат примерно одинаков. Может не хватает точности тестера. А на счет 1,5 Ом, так сопротивление самих щупов примерно 1,3 Ома. Остальное это длина дорожки.

У меня был случай выгорания (или вообще невозможности программирования одного из пользовательских контактов ПЛИС, сейчас уже и не припомню). Но его сопротивление я тогда не замерял((.
Boris_TS
Цитата(ovs_pavel @ Aug 29 2012, 23:33) *
У меня был случай выгорания (или вообще невозможности программирования одного из пользовательских контактов ПЛИС, сейчас уже и не припомню). Но его сопротивление я тогда не замерял((.

Мы замеряли... правда на Virtex-5/6.
Т.к. оно у нас горело по разным причинам, то и сопротивления были разные, от глухого 0 до где-то 3-4 Ом.
Во входах обычно прогорали на к/з VCCO clamp diod'ы, так что можете еще и к VCCO прозвонить - может станет чуть яснее что и как сдохло.
Flood
JTAG ножки могут гореть при наличии Vref на JTAG колодке выше реального напряжения Vccaux или Vcco конфигурационного банка (в зависимости от типа микросхемы), например, на колодке 3,3В, а Vcco 2,5В; от статики; от отсутствия общей земли прибора и ПК с программирующим интерфейсом. Буржуи, кстати, часто буферизуют все выходящие на разъемы сигналы JTAG.
Boris_TS
Цитата(Flood @ Aug 30 2012, 12:22) *
...от отсутствия общей земли прибора и ПК с программирующим интерфейсом.

Угу. Есть такое дело.
Поэтому супостат и говорит: сначала подключайте головку программатора к Вашему устройству, а только потом через USB к PC.
ovs_pavel
Вечер добрый. Вообщем сегодня поднял ПЛИСину. При отпайки ПЛИС оторвали враги две дорожки. Разъем звонится перестал. Позвонил ПЛИСину (вывод TDI на землю) - КЗ. Получается выгорел лишь один контакт. Все остальное в норме. Как получилось, непонятно. Вроде всегда аккуратно, да и ПЛИСину чтобы убить хотя бы статикой надо постараться. До этого ни разу не было такого.


Цитата(Flood @ Aug 30 2012, 12:22) *
JTAG ножки могут гореть при наличии Vref на JTAG колодке выше реального напряжения Vccaux или Vcco конфигурационного банка (в зависимости от типа микросхемы), например, на колодке 3,3В, а Vcco 2,5В; от статики; от отсутствия общей земли прибора и ПК с программирующим интерфейсом. Буржуи, кстати, часто буферизуют все выходящие на разъемы сигналы JTAG.


Вот уже подумываю о том чтобы в будущих схемах буфера по JTAGу закладывать, на всякий случай от дурака.
ovs_pavel
В продолжении борьбы с 6-ым спартаном. Плату отремонтировали (перепаяли ПЛИС). КЗ пропало. В цепи JTAG все видится (и конфигурашка, и ПЛИС). Но ситуация с программированием осталась на старом месте. Т.е. проект заливается. DONE становиться в состояние 1, но проект на стартует. Уже все проверил. На DONE стоит резистор в 330 Ом. Опция DONE_DRIVE_HIGH включена. По питанию помех нет. Прошивка конфигурашки с верификацией проходит нормально. Поднимал скорость JTAGа до максимальной - 12МГц. Все ОК.
Сейчас решили собрать третью плату на которой только ПЛИС, два стабилизатора (3,3 и 1,2В) и разъем. Чтобы исключить вообще все. Ну конечно и кондеры по питанию. Даже не знаю где еще копать.

А у кого либо были случаи закупки "левых" 6-ых спартанов? Просто не знаю на что уже и думать. Питание Vccaux по даташиту допускает установку 3,3В... В этом же не может быть причина?
Flood
Что показывает чипскоп?
Bad0512
Цитата(ovs_pavel @ Sep 3 2012, 13:13) *
В продолжении борьбы с 6-ым спартаном. Плату отремонтировали (перепаяли ПЛИС). КЗ пропало. В цепи JTAG все видится (и конфигурашка, и ПЛИС). Но ситуация с программированием осталась на старом месте. Т.е. проект заливается. DONE становиться в состояние 1, но проект на стартует. Уже все проверил. На DONE стоит резистор в 330 Ом. Опция DONE_DRIVE_HIGH включена. По питанию помех нет. Прошивка конфигурашки с верификацией проходит нормально. Поднимал скорость JTAGа до максимальной - 12МГц. Все ОК.
Сейчас решили собрать третью плату на которой только ПЛИС, два стабилизатора (3,3 и 1,2В) и разъем. Чтобы исключить вообще все. Ну конечно и кондеры по питанию. Даже не знаю где еще копать.

А у кого либо были случаи закупки "левых" 6-ых спартанов? Просто не знаю на что уже и думать. Питание Vccaux по даташиту допускает установку 3,3В... В этом же не может быть причина?
Попробуйте "CONFIG VCCAUX=3.3;" в UCF файле - вдруг поможет...
Flood
По-идее эта настройка влияет на выбор источника референса для 2,5V IO-стандартов, если таковые применяются в проекте. Но сделать ее точно не повредит.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.