Jump to content

    

Xilinx Kintex-7 XC7K70T не определяется по JTAG

Но ПЛИС все равно не определяется оп прежнему. Однако, если поставить щуп осциллографа на линию TCK JTAG, то ПЛИС нормально определяется. Сигналы JTAG проходят через КМОП-буферы SN74LVC2G34DCK. Судя по осциллограммам проходят нормально.
В SN74LVC2G34 - 2 канала,.. причём не самых быстрых... а в JTAG интерфейсе: 3 линии идёт к ПЛИС - может быть разбежка между буферами - они же не обязаны быть идентичными.

Посмотрите, правильные ли Вы получаете диаграммы TDI/TMS/TCK под ПЛИС ?

 

Исследование схем Xilinx привело нас к использованию SN74AVC / SN74ALVC буферов для JTAG - они вносят меньшую задержку, чем SN74LVC. Естественно, для одного направления передачи данных (TDI, TMS, TCK) мы стараемся использовать общий буфер (SN74AVC8T245).

 

Был у нас интересный случай: после подачи питания на плату iMPACT правильно определял всю цепочку Xilinx ПЛИС (8 шт. Virtex-6 или Virtex-7 не помню), а потом ничего не мог сделать. Оказалось, что TMS (вход буфера) залип на землю, а по включению питания в выходные каскады JTAG интерфейса записывается IDCODE ПЛИС - поэтому идентификация проходила росно 1 раз.

 

Также был другой неприятный случай: развалился блокировочный конденсатор под буфером, да так, что выглядел целым, пока не стали его отпаивать - становишься осциллографом под ПЛИС на TMS и TCK - всё работает, убираешь щупы - глючит.

 

Кстати, а какой JTAG Вы испольуете ?

Share this post


Link to post
Share on other sites
Также был другой неприятный случай: развалился блокировочный конденсатор под буфером, да так, что выглядел целым, пока не стали его отпаивать - становишься осциллографом под ПЛИС на TMS и TCK - всё работает, убираешь щупы - глючит.

..кстати - а блокировочные конденсаторы на буферах есть(физически)?

И ещё - где-то на форуме был случай, у человека цифровой сигнал был проложен рядом с плохоработающим DC/DC - тот помехи наводил на цифру из-за плохой разводки и цифра тоже работала только тогда когда её щупом осцилографа трогали. Иголки помех что стояли на цифровой линии сглаживались входной ёмкостью осцилографа и всё работало.

А ещё помню - подтягивающие резисторы может быть неправильных номиналов , вместо Ком , Момы.

Share this post


Link to post
Share on other sites
Также был другой неприятный случай: развалился блокировочный конденсатор под буфером, да так, что выглядел целым, пока не стали его отпаивать - становишься осциллографом под ПЛИС на TMS и TCK - всё работает, убираешь щупы - глючит.

 

Кстати, а какой JTAG Вы испольуете ?

Блокировочный конденсатор - это конденсатор фильтрующий питание микросхемы буфера?

Использую XILINX PLATFORM CABLE II.

Я установил конденсатор 100пФ между TCK_O и GND. Теперь все работает нормально. Но причина не ясна.

Share this post


Link to post
Share on other sites
Блокировочный конденсатор - это конденсатор фильтрующий питание микросхемы буфера?

Да. На Вашей схеме это будут C1 и C2.

 

Share this post


Link to post
Share on other sites

Теперь нужно рассмотреть фронт TCK_O осциллографом как рекомендовали под "микроскопом".

Есть ли признаки отражения на нем, на фронте.

Также попробовать поставить последовательный резистор (вместо конденсатора) на этом сигнале

(согласно предложенным здесь рекомендациям в случае отражения).

Share this post


Link to post
Share on other sites
А ещё помню - подтягивающие резисторы может быть неправильных номиналов , вместо Ком , Момы.

Сталкивался с подобным лично, но более 10 лет назад: резисторы 0805 имели маркировку как 5.1кОм,.. а по результатам измерения 51кОм. Отдел закупки потом кровожадные разборки клеил с поставщиками.

Share this post


Link to post
Share on other sites

Скорее всего, наводки от быстрых фронтов соседей. И могут быть не только, и даже не столько от наплатных источников, сколько от кабелька между адаптером и разъемом на плате. У вас они как соединены: в виде flying leads (отдельными проводочками), или в виде ribbon cable (ленточный плоский кабель)?

 

И еще: в свете такого предположения идея разместить по соседству на разъеме TCK и TDO - плохая (вообще-то, она плохая по любым меркам). Надо было с двух сторон TCK землями или питанием обложить.

 

И еще. TDO тоже нуждается в последовательном согласовании. Кстати, это тоже может повлиять на ситуацию с TCK (поскольку, кроме прочего, уменьшит скорость нарастания фронтов на TDO).

 

В SN74LVC2G34 - 2 канала,.. причём не самых быстрых... а в JTAG интерфейсе: 3 линии идёт к ПЛИС - может быть разбежка между буферами - они же не обязаны быть идентичными.

 

Исследование схем Xilinx привело нас к использованию SN74AVC / SN74ALVC буферов для JTAG - они вносят меньшую задержку, чем SN74LVC. Естественно, для одного направления передачи данных (TDI, TMS, TCK) мы стараемся использовать общий буфер (SN74AVC8T245).

Ну, это вряд ли. Выставление сигналов в JTAG происходит по спаду TCK, а восприятие - по фронту. Так что при fTCK "без фанатизма" (1-6 MHz) разница в задержках никакого влияния не должна оказывать. Тем более, что ТС снижал частоту TCK. И то, кстати, что это не помогло - еще один аргумент в пользу версии о наводках с фронтов.

 

Был у нас интересный случай: после подачи питания на плату iMPACT правильно определял всю цепочку Xilinx ПЛИС (8 шт. Virtex-6 или Virtex-7 не помню), а потом ничего не мог сделать. Оказалось, что TMS (вход буфера) залип на землю, а по включению питания в выходные каскады JTAG интерфейса записывается IDCODE ПЛИС - поэтому идентификация проходила росно 1 раз.

Что-то здесь не так. Или не совсем точно описано. А как же TAP с залипшим TMS=0 проходил ветку DR-Capture-Shift-Update? Да он бы дальше RT-IDLE не ушел бы.

 

И еще насчет наводок. Они должны быть видны хотя бы в каком-то остаточном виде. Особенно если вы включите щуп в режиме 1:10. Кстати, а вы в каком режиме пробника смотрели TCK_O? 1:10 или 1:1? Если последнее - обязательно попробуйте 1:10.

Share this post


Link to post
Share on other sites

В данном случае, согласно приведенной электрической схеме, кабель состоит из отдельных проводов.

Тогда для уменьшения наводок между сигналами необходимо сделать витые пары (провод сигнала+ провод земли) каждому сигналу.

Другой вариант- использовать плоский кабель с разьемом 14 контактов (в комплекте программатора есть), на плате

тогда необходим такой разьем. В этом случае решение витой пары уже присутствует (порядка 7 контактов- земля между сигналами).

Share this post


Link to post
Share on other sites

Самое простое, что можно попробовать - убрать буферы, поставив вместо них проходные резисторы где-то на 15 Ом.

У вас одна ПЛИС, одно питание - зачем нужна буферизация?

Share this post


Link to post
Share on other sites
У вас одна ПЛИС, одно питание - зачем нужна буферизация?

..чтобы статикой не пожечь дорогую ПЛИС по сравнению с дешёвыми буферами.

Или чтобы не пожечь её же если "земляной" провод с программатора отпадёт случайно, а комп и плата к примеру будут сидеть на разных розетках.

Share this post


Link to post
Share on other sites
..чтобы статикой не пожечь дорогую ПЛИС по сравнению с дешёвыми буферами.

Или чтобы не пожечь её же если "земляной" провод с программатора отпадёт случайно, а комп и плата к примеру будут сидеть на разных розетках.

Ну, 7K70T - еще не самая дорогая ПЛИС :) А JTAG-интерфейс, как правило, не для использования конечным пользователем.

На практике, за годы использования JTAG-а ни один Xilinx не выбило статикой по JTAG-порту.

 

Хотя в целом буферизация вещь полезная, для единственной ПЛИС навешивание буферов скорее всего не оправдано.

Share this post


Link to post
Share on other sites
Я установил конденсатор 100пФ между TCK_O и GND. Теперь все работает нормально. Но причина не ясна.

Причина практически ясна. Алга вам все верно ответил.

Скорее всего линия TCK не согласована и на ней возникает отражение, что приводит к лишним тактам по TCK.

Если осциллографом видите на TCK перегиб или полку на уровне половины питания, то это оно и есть.

Когда вы становитесь щупом, то вносите ёмкость и давите эту иголку.

Варианы борьбы с этим тоже стандартны:

во-первых надо было трассировать эту линию с учетом волнового сопротивления (кстати TMS TDI TDO это не касается, потому что это синхронные сигналы).

во-вторых последовательное терминирование - на выходе буфера поставить сопротивление ~25-40 Ом.

в-третьих ближе к ноге плис поствить ёмкость чтобы подавить иголку. Обычно хватает ~15пФ.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this