Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не шьётся Spartan2
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
MPetrovich
Всем доброго времени суток. Не удается прошить XC2S300E по JTAG. Все время выскакивает ошибка - программатор Platform Cable USB2 не видит микросхему. Перерыл уже кучу доков - ничего не смог найти. Может кто поможет?
MegaVolt
Цитата(MPetrovich @ Aug 20 2018, 17:25) *
Всем доброго времени суток. Не удается прошить XC2S300E по JTAG. Все время выскакивает ошибка - программатор Platform Cable USB2 не видит микросхему. Перерыл уже кучу доков - ничего не смог найти. Может кто поможет?

Напишите хоть что он выдаёт когда не хочет шить? Так шанс на помощь сильно возрастёт.
iosifk
Цитата(MPetrovich @ Aug 20 2018, 17:25) *
программатор Platform Cable USB2 не видит микросхему.

Проверьте, что программатор имеет доступ к bsdl-файлу на данную микросхему.
Попробуйте считать с микросхемы ID и убедитесь, что в файле ID соответствует тому, что считали из микросхемы.
MPetrovich
Цитата(MegaVolt @ Aug 20 2018, 14:34) *
Напишите хоть что он выдаёт когда не хочет шить? Так шанс на помощь сильно возрастёт.

iMPACT:2130 - Boundary-scan chain test failed . Please check tdi->tdo connection between device:'1' ( 'xc2s300e') and the cable .
A problem may exist in the hardware configuration.
Check 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.

Цитата
Проверьте, что программатор имеет доступ к bsdl-файлу на данную микросхему.
Попробуйте считать с микросхемы ID и убедитесь, что в файле ID соответствует тому, что считали из микросхемы.

Программатор вообще не может произвести ни одной операции, поскольку не видит микросхемы ПЛИС
serj1979
Цитата(MPetrovich @ Aug 21 2018, 08:25) *
iMPACT:2130 - Boundary-scan chain test failed . Please check tdi->tdo connection between device:'1' ( 'xc2s300e') and the cable .
A problem may exist in the hardware configuration.
Check 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 контакты, земля/питание)?
Только на одной микросхеме проявляется такой эффект?
Jury093
Цитата(MPetrovich @ Aug 21 2018, 08:25) *
Программатор вообще не может произвести ни одной операции, поскольку не видит микросхемы ПЛИС

потыкайте осциллом в интерфейс, там 4-5 сигналов, хотя бы поймете куда дальше смотреть..
MPetrovich
Цитата(serj1979 @ Aug 21 2018, 06:44) *
Может действительно дело в "неконтакте" (JTAG контакты, земля/питание)?

Сигналы от JTAG смотрел оссцилом на ногах оснастки. Все в наличии. Даже TDO дергается один раз к земле.
Контактов земли и питания до фига и все они между собой звонятся(ну за исключением VCCIO конечно, там по банкам звонятся) и даже если есть неконтакт в одном соединении, то оно дублируется многократно.
Цитата
Только на одной микросхеме проявляется такой эффект?

Нет на всех. Их у меня два десятка.
serj1979
Цитата(MPetrovich @ Aug 21 2018, 10:05) *
Нет на всех. Их у меня два десятка.

Контакты конфигурирования интерфейса программирования (M0 M1 M2) для JTAG?
с PROGRAM и INIT всё хорошо?

В догонку
раздел Configuration
https://www.xilinx.com/support/documentatio...heets/ds077.pdf

MPetrovich
Цитата(serj1979 @ Aug 21 2018, 07:22) *
Контакты конфигурирования интерфейса программирования (M0 M1 M2) для JTAG?
с PROGRAM и INIT всё хорошо?

Да. Пробовал и 101 и 100. Да и вообще, если верить док-ции, то JTAG доступен всегда вне зависимости от состояния M0...M2. Просто когда включен именно режим JTAG, то остальные интерфейсы недоступны.

makc
Цитата(MPetrovich @ Aug 21 2018, 10:05) *
Сигналы от JTAG смотрел оссцилом на ногах оснастки. Все в наличии. Даже TDO дергается один раз к земле.
Контактов земли и питания до фига и все они между собой звонятся(ну за исключением VCCIO конечно, там по банкам звонятся) и даже если есть неконтакт в одном соединении, то оно дублируется многократно.

Нет на всех. Их у меня два десятка.


У Вас есть согласующий резистор на линии TCK? Если нет, то вполне возможно дело в нем. Можно попробовать его прилепить "на соплях" + снизить частоту JTAG.
_4afc_
Цитата(MPetrovich @ Aug 21 2018, 11:05) *
Нет на всех. Их у меня два десятка.


Если платы нового типа - может длинные провода JTAG до платы или по плате.
Сигналы JTAG притянуты к питанию резисторами?

Я пользуюсь исключительно Digilent jtag hs2, там нет проводов.

PS: а без клоков этот тип ПЛИС должен общаться по JTAG ?
MPetrovich
Цитата(makc @ Aug 21 2018, 10:44) *
У Вас есть согласующий резистор на линии TCK? Если нет, то вполне возможно дело в нем. Можно попробовать его прилепить "на соплях" + снизить частоту JTAG.

Резистора нет, но и никакого упоминания о нем ни разу не попадалось мне в документации. Не очень понимаю смысла в таком резисторе - по факту получится линия задержки: последовательный резистор и входная емкость контакта. Частота JTAG итак самая низкая из возможных - 750кГц
Цитата
может длинные провода JTAG до платы или по плате.

А какая длина допустима по Вашему? Частота то уж итак низкая - 750кГц.
Цитата
Сигналы JTAG притянуты к питанию резисторами?

Специально не притянуты, но (если мне не изменяет память) у этих выводов вроде бы должны быть внутренние подтяжки.
Цитата
а без клоков этот тип ПЛИС должен общаться по JTAG ?

Это как? Там вроде бы наоборот нужно в настройках проекта сделать тактирование именно от ТСК при использовании JTAG.
makc
Цитата(MPetrovich @ Aug 21 2018, 14:54) *
Резистора нет, но и никакого упоминания о нем ни разу не попадалось мне в документации. Не очень понимаю смысла в таком резисторе - по факту получится линия задержки: последовательный резистор и входная емкость контакта. Частота JTAG итак самая низкая из возможных - 750кГц


На самом деле нет, упоминания есть. Например в XAPP058 есть фраза:
Цитата
5.The integrity of the JTAG TCK signal is critical. Apply clock distribution and termination
design practices to the TCK signal.


Согласующий резистор на выходе является одним из способов согласования волнового сопротивления линии. Исходя из моей практики - это нужно. Причем даже на 750 кГц бывали случаи, когда не работало до установки согласующего резистора в линию (как можно ближе к выходу кабеля, для начала попробовать 50 Ом).
_4afc_
Цитата(MPetrovich @ Aug 21 2018, 15:54) *
А какая длина допустима по Вашему? Частота то уж итак низкая - 750кГц.


0 мм. Там не в частоте дело. Что-то другое. То ли драйвер TDO хреновый, то ли иголки наводятся, то ли важны фронты, то ли подтяжка вверх...

Цитата(_4afc_ @ Sep 1 2016, 13:10) *
У нас плисины на модулях. В одних мамках шьются на ура, в других ни в какую, в третьих через раз на низкой скорости.
Походу зависит от разводки. Причём где шьётся - можно даже проводами удлиннить JTAG - будет работать.


Цитата(MPetrovich @ Aug 21 2018, 15:54) *
Это как? Там вроде бы наоборот нужно в настройках проекта сделать тактирование именно от ТСК при использовании JTAG.


У меня просто плисины ещё всегда тактируются и сбрасываются RC цепочкой. Может это важно...

PS: кстати попробуйте поиграться, поставьте не 750кГц, а 3МГц и т.д - мне в таких случаях помогало.

PPS: кстати однажды удалось подружиться с одной платой пропустив все сигналы через буферы.

PPPS: Возможно вообще важен порядок сигналов в разъёме: TMS,TDI,TDO,TCK,GND,VDD - рабочий
MPetrovich
Цитата
в XAPP058 есть фраза:

Есть))) Специально проверил. Только относится она по моему к случаю, представленному на рисунке чуть выше этой фразы. А изображена там схема прошивки цепочки ПЛИСов да еще с мультиплексором на пути ТСК. Возможно в этом случае "целостность цепи сигнала ТСК" будет действительно критичной.
В моем случае я шью напрямую одну ПЛИС и вряд ли согласование по сопротивлению будут столь критичны.
Безусловно, я опробую последовательное включение резистора по ТСК, благо это вовсе не сложно)))
А есть ли еще какие-нибудь соображения у знатоков? Просто хотелось бы сразу опробовать разные варианты, могущие разрешить ситуацию.
serj1979
Цитата(MPetrovich @ Aug 21 2018, 15:34) *
Просто хотелось бы сразу опробовать разные варианты, могущие разрешить ситуацию.

Да фиг знает... программатор точно исправен, другие ПЛИСины шьёт?
Конденсаторы земля/питание стоят?
Шьёте Impactом из WebPack(версия какая)?
MPetrovich
Шью Impactом. Программатор до этой ПЛИСины (пару недель назад) работал нормально. Никто кроме меня им не пользуется)))
makc
Цитата(MPetrovich @ Aug 21 2018, 15:34) *
Есть))) Специально проверил. Только относится она по моему к случаю, представленному на рисунке чуть выше этой фразы. А изображена там схема прошивки цепочки ПЛИСов да еще с мультиплексором на пути ТСК. Возможно в этом случае "целостность цепи сигнала ТСК" будет действительно критичной.


Такие проблемы бывают и в совсем простых конфигурациях, типа Вашей. Поэтому правило общее и этому стоит уделять внимание, чтобы не иметь проблем в будущем при отладке.

Цитата
В моем случае я шью напрямую одну ПЛИС и вряд ли согласование по сопротивлению будут столь критичны.


В варианте соединения типа точка-точка тоже есть место для получения отраженного сигнала и результата в виде звона на линии, если нет согласования по импедансу. Можете попробовать взять любой пакет моделирования, тот же HyperLynx, промоделировать и посмотреть. Кстати, если есть возможность, то посмотрите форму сигнала TCK. Может быть это наведет на какие-то мысли.

vladec
В моей практике раньше случались такие проблемы при длинном кабеле переходника от программатора до разъема на плате
Yuri124
Можно попробовать сигналы TCK, TDI, TDO от программатора до разъема на плате завести витыми парами (каждый сигнальный проводник свит с земляным проводником,а земляные - с каждой стороны подключены к земляным контактам разъема). Но, конечно, еще и от разводки сигналов JTAG по плате может зависеть - как расположена возвратная земля по отношению к сигнальным трассам. Но это больше на мегагерцах сказывается.
Ну и предложение включить в разрыв TCK резистор несколько десятков Ом поддержу - подавит возможный звон от отражений.
iosifk
Цитата(MPetrovich @ Aug 21 2018, 17:12) *
Шью Impactом. Программатор до этой ПЛИСины (пару недель назад) работал нормально. Никто кроме меня им не пользуется)))

Как я понял Вы ID прочитать не можете. Значит проблемы все же аппаратные. А что написано в bsdl-файле о максимальной частоте TCK? Как тут указывали, можно просто сделать небольшой переходник с согласующими резисторами.
И еще. Как там с питанием. Может быть у древнего спартанца 5 вольт питание, а у бластера можно подавать только 3?
MPetrovich
Нажмите для просмотра прикрепленного файла
Прикрепил фото сигналов JTAG на осциллографе. Сверху вниз: TCK; TDI; TDO; TMS
Опробовал подключение различных сопротивлений последовательно с ТСК. Результат тот же - JTAG не видит м/сх.
По осциллограмме видно, что ТСК вполне приличной формы с минимальными звонами. Да и остальные сигналы тоже.

Цитата(iosifk @ Aug 22 2018, 08:33) *
Как я понял Вы ID прочитать не можете.

Да. И поскольку ID читается в начале каждой операции, то ни одной операции я не могу совершить через JTAG
Цитата
А что написано в bsdl-файле о максимальной частоте TCK?

Честно сказать ни разу не пользовался данными из bsdl-файла. Да и ниже 750кГц я по любому не смогу опуститься.
Цитата
Как тут указывали, можно просто сделать небольшой переходник с согласующими резисторами.

пробовал - пофиг...
Цитата
И еще. Как там с питанием. Может быть у древнего спартанца 5 вольт питание, а у бластера можно подавать только 3?

Питание ядра 1,8 вольт, питание переферии 1,2...3,6 вольт. Я использую 3.3В
iosifk
Цитата(MPetrovich @ Aug 22 2018, 16:16) *
Прикрепил фото сигналов JTAG на осциллографе. Сверху вниз: TCK; TDI; TDO; TMS
Честно сказать ни разу не пользовался данными из bsdl-файла. Да и ниже 750кГц я по любому не смогу опуститься.

Мои статьи:
JTAG тестирование. Совр Электр №2,3,4,5 за 2007

См. рис. 9. Там расписано, как выглядят диаграммы команд в сигналах JTAG.
Попробуйте найти в программе программатора только команду чтения ID. Первые 4 клока TCK переводят порт JTAG в состояние сброс. И далее по диаграммам переходов все можно отследить...
См. рис. 10... Вот как выглядит чтение ID

А в bsdl-файле написано, какой ID должен прочитаться...
Если будут вопросы по статьям, то могу ответить по скайпу голосом...
MPetrovich
Цитата
Попробуйте найти в программе программатора только команду чтения ID.

Это каким образом я вытащу из Impact команду чтения ID?
По факту первая же команда при запуске JTAG это и есть чтение ID. Только после корректного прочтения продолжается выполнение других команд.
Я осциллограмму привел больше для того, чтобы показать форму сигналов и то, что программатор их формирует. А вот ответа от м/сх кроме одиночного падения TDO в ноль нету.
iosifk
Цитата(MPetrovich @ Aug 22 2018, 16:42) *
Это каким образом я вытащу из Impact команду чтения ID?

Думаю так:
Импакт - файл - инициализация цепи.

Правда сейчас проверить не на чем...

И еще.
Output - SVF файл - создать SVF файл

Вот в этом файле можно прочесть "что отправляли" и "что получили"...
MPetrovich
В моем случае: Operation -> Initialize Chain
Опробовал. То же самое на экране осциллографа.
А можно ли закольцевать TDI->TDO, чтобы проверить программатор?
iosifk
Цитата(MPetrovich @ Aug 22 2018, 17:21) *
А можно ли закольцевать TDI->TDO, чтобы проверить программатор?

Проверить можно на любом исправном стартовом наборе.
А "закольцовывать" вообще смысла нет. Просто для этого нужно в цепь поставить триггер с TCK на тактовом... А зачем?
На исправном даете команду чтения ID. Потом сравниваете с Вашей платой. В SVF файле сразу же можно прочитать что подавали и что получили. ID и коды команд - записаны в bsdl файле...
MPetrovich
Вот что написано у меня в файле xc2s300e.bsd:
entity generated_xc2s300e is

generic (PHYSICAL_PIN_MAP : string := "X_PACKAGE");

port (TCK: in bit; TDI: in bit; TDO: out bit; TMS: in bit);

use STD_1149_1_2001.all;
attribute Component_Conformance of xc2s300e : entity is "STD_1149_1_2001";

attribute PIN_MAP of xc2s300e : entity is PHYSICAL_PIN_MAP;

constant X_PACKAGE:PIN_MAP_STRING := "TCK : 1," & "TDI : 2," & "TDO : 3," & "TMS : 4";
attribute Tap_Scan_In of TDI: signal is true;
attribute Tap_Scan_Mode of TMS: signal is true;
attribute Tap_Scan_Out of TDO: signal is true;
attribute Tap_Scan_Clock of TCK: signal is (1.0e06, BOTH);

attribute Instruction_Length of xc2s300e: entity is 2;
attribute Instruction_Opcode of xc2s300e: entity is "BYPASS (11)";
attribute Instruction_Capture of xc2s300e: entity is "01";
attribute Boundary_Length of xc2s300e: entity is 1;
attribute Boundary_Register of xc2s300e: entity is "0 (BC_1, *, control, 0)";

end xc2s300e;

Не пойму где тут указан ID?
В файл .svf у меня вообще ничего не пишется, он пуст.

Прошу прощения .svf не пустой...

// Created using Xilinx iMPACT Software [ISE - 9.2i]
TRST OFF;
ENDIR IDLE;
ENDDR IDLE;
STATE RESET;
STATE IDLE;
FREQUENCY 1E6 HZ;
TIR 0 ;
HIR 0 ;
TDR 0 ;
HDR 0 ;
TIR 0 ;
HIR 0 ;
HDR 0 ;
TDR 0 ;
TIR 0 ;
HIR 0 ;
TDR 0 ;
HDR 0 ;
TIR 0 ;
HIR 0 ;
TDR 0 ;
HDR 0 ;
TIR 0 ;
HIR 0 ;
HDR 0 ;
TDR 0 ;
makc
Цитата(MPetrovich @ Aug 22 2018, 16:16) *
Питание ядра 1,8 вольт, питание переферии 1,2...3,6 вольт. Я использую 3.3В


Банк 2 тоже запитан от 3,3 В?


Цитата(MPetrovich @ Aug 23 2018, 08:55) *
Вот что написано у меня в файле xc2s300e.bsd:


Не знаю где Вы взяли такой файл. У меня в ISE 14.7 он выглядит иначе, см. вложение.

В нем есть строки:
Код
attribute IDCODE_REGISTER of XC2S300E_BARE : entity is
    "XXXX" &    -- version
    "0000101" &    -- family
    "000100000" &    -- array size
    "00001001001" &    -- manufacturer
    "1";        -- required by 1149.1


Это и есть ID кристалла.

PS: а TDI/TDO местами не пробовали поменять? wink.gif
MPetrovich
Цитата
Банк 2 тоже запитан от 3,3 В?

Да
Цитата
Не знаю где Вы взяли такой файл. У меня в ISE 14.7 он выглядит иначе, см. вложение.

У меня ISE 9.2 и там формируется такой вот файл(пожимаю плечами) :-)
А в ISE 14.7 разве есть такой древний кристалл?
makc
Цитата(MPetrovich @ Aug 23 2018, 09:28) *
А в ISE 14.7 разве есть такой древний кристалл?


Судя по https://www.xilinx.com/support/answers/15938.html поддержка закончилась на ISE 10.1, но в 14.7 видимо есть возможность прошивать, судя по наличию bsd-файлов.
MPetrovich
Пересобрал по схеме Slave Serial - всё шьётся влёт! Тот же програматор, из той же среды. Не знаю в чём загвоздка, но проблема таким образом решилась.
Возможно сам ТАР-контроллер неисправен.
Спасибо всем, кто откликнулся.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.