Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: JTAG цепоча не работает
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
admin
На новой плате размещал 2 ПЛИС Altera EP20K160EQC144 и 2 EPC2.Решил не ставить кучу разьемов для каждого JTAG а соединить их все последовательно.

Вот пришел момент когда плату запаяли ручками (питание, плисы, резсторы обвязки и кондерсаторы по питанию) и стали включать.

Короче ничего не заработало - устройства при сконировании JTAG не видятся.
После 2ух дней ковыряния, лазения осцилографом и отлавливания разных глюков на 2ой плате был получен положительный результат, но после того как плату просушили от отсатков флюса результат испарился. smile3046.gif

Что имею: соединение по JTAG (JTAG->FPGA1->EPC2->FPGA2-EPC2->JTAG)

не колдуя особо приведу схему включения JTAG которую использовал в множестве своих проектов до этого и кусок PCB платы на котором видно как идут проводники между ПЛИС и EPC.

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

когда пробуешь делать поиск устройств в JTAG цепочке и трогаешь разьемы EPC руками, то бывает все находится, а бывает находится целая сотня неизвестных устройств.


Где косяк может быть? Видимо сигналы где-то плохие, но найти где и что мне пока не удалось, да особо и нечем.
В распоряжении пока тестер и старый совковый осцилограф.
admin
вот еще пару моментов отснятых более крупно.

кто работал - поделитесь кто как огранизовывал длинные JTAG цепочки.
какие резисторы и где.

у меня в одном случае как-то это вобще без подтягивающих резисторов заработало, но потом перестало.
vetal
По наличию разьемов для epc могу предположить, что дело именно в них.
Бы один случай, когда пришлось у панельки plcc84 все контакты подгибать для обеспечения надежного контакта. Потом решили, что вместо панельки будут монтажники, и выкинули их(панельки) из платы.
admin
2 vetal

так как EPC надо все время перетыкать - то работаем на разьемах, причем давно и проблем вроде пока нет. blink.gif Все звонили, контакт хороший.
3.14
А пробовали с небольшой емкостью (от десятков пФ до сотен пФ) на TCK играться? Думаю дело в рассогласовании.
admin
3.14
пробовал играться с резисторами подтягивающими на питание или на землю сигналов JTAG, ставил 1к, 10к - один хер.

с кондером не пробовал. куда его? приведи пример.

был бы прибор нормальный цифровой - посмотрел бы что реально в линии.
своим C1-55 вижу только что короткий момент как такты идут - вроде идут.
данные разглядеть и их характеристики не удается. smile3046.gif видно что где-то не очень хорошие уровни и срезы. может осцилографффф....
3.14
2 udofun
Какая частота TCK (полагаю идет с LPT), если около мегагерца, для начала можешь смело поставить пару кондеров ~500пФ поближе к входам TCK у ПЛИС. Если не поможет, попробуй увеличить до ~700пФ и добавить кондеры ~300пФ на входы TDI.
Возможно это перекос TDI-TCK , если так, то должно вылечиться.
bms
Вообще-то в Вашей схеме допущена ошибка - сигнал TCK работает на кучу потребителей, это неправильно. К тому же не видно никаких попыток хоть как-то согласовать сигнал с нагрузкой. По хорошему любой синхросигнал работающий на несколько микросхем надо размножать на специальных микросхемах-размножителях и подавать на каждый приёмник - свой. Т.е. линия должна состоять из одного источника и одного приёмника. И даже такую передачу нужно согласовывать. То, что в даташитах часто приводят схемы где всё работает от одного источника - на самом деле не является полноценной электрической схемой, там только лишь показан принцип - не более. На практике все синхросигналы (независимо от рабочих частот) надо разводить по всем правилам ВЧ-дизайна. Дело в том, что современные микросхемы обладают очень быстрыми входами, и реагируют на любой дребезг на фронтах (старые микросхемы к этому не чувствительны, просто не успевают отреагировать на короткий всплеск напряжения, поэтому зачастую те же схемы там работают нормально), а в Вашей схеме дребезга на фронтах просто не может не быть, если отыщите хороший осцилл - обязательно их увидите.
Кроме того плата разведена мягко говоря "не здорово", проблемы те же - пренебрежение правилами ВЧ-дизайна, что только ухудшает картину.
Описанные Вами временные "всплески" работоспособности как раз указывают на то что всё дело в неверном использовании сигнала TCK.

Что можно сделать... попытайтесь пустить TCK через буфер размножитель, поставьте согласующие резисторы на этот буфер. Для 50-Омной линии это обычно 33 Ома. Не забудте про задержку сигнала в буфере, её возможно придётся компенсировать.
bms
Совсем забыл... для того чтобы увидеть дребезг на фронтах - совсем не обязательно искать хороший осциллограф, Вы можете просимулировать нужные цепи встроенным пикадовским симулятором (с использованием IBIS-моделей применяемых микросхем), либо в HyperLynx (что предпочтительнее). Там же можно подобрать необходимые согласующие цепи. Практика показывает, что корректное моделирование даёт довольно точные результаты.
vetal
Может ли помочь в данном случае применение серии abt вместо hc(как я подозреваю) в качестве источника сигнала + небольшие конденсаторы(как советовал 3.14) по каждому входу tck?
sazh
кто работал - поделитесь кто как огранизовывал длинные JTAG цепочки.
какие резисторы и где.''
Если все это на одной плате - должно работать по рекомендованной схеме как JTAG так и режима загрузки от EPC2. Примеры имеются. (Конечно JTAGу должно быть уделено при разводке большее внимание)
Вашим осциллографом лучше не анализировать форму сигнала. Достаточно его наличия.
Попробуйте подтянуть TDO к VCC. В старых даташитах так и было.
Повесить кондесаторы 0.1 мкф на разъем JTAG (на EPC2 каждом не увидел)
VIO зачем на питании (если байтбластер MV)
Отключите высокочастотные генераторы на плате (могут влиять на JTAG)
Поинтересуйтесь, каким припоем паяли (может на барахолке с кислотой купили)
Если ставить буфер, то конечно только 3.3 вольтовые (abt запитывается от 5 вольт)
bms
Цитата(vetal @ Aug 22 2005, 02:17)
Может ли помочь в данном случае применение серии abt вместо hc(как я подозреваю) в качестве источника сигнала + небольшие конденсаторы(как советовал 3.14) по каждому входу tck?
*


Насчёт конденсаторов - применение конденсаторов, да ещё и нескольких лишь усилит неоднородности в линии передачи сигнала - а это значит что общая картина станет хуже. В одном конкретном приёмнике - возможно получится хороший фронт, но на остальных будет что угодно но не "рабочий" фронт. Вы легко сможете в этом убедиться применив всё то же моделирование.
admin
до моделирования руки не дошли к сожалению (когда же я им займусь.... давно пора все правильно делать), но сейчас принимаюсь за очередную попытку завести схему.

о результатах напишу.
3.14
Цитата(bms @ Aug 29 2005, 09:39)
Насчёт конденсаторов -  применение конденсаторов, да ещё и нескольких лишь усилит неоднородности в линии передачи сигнала - а это значит что общая картина станет хуже. В одном конкретном приёмнике - возможно получится хороший фронт, но на остальных будет что угодно но не "рабочий" фронт. Вы легко сможете в этом убедиться применив всё то же моделирование.

Не надо усложнять, это не 120 мегагерцовая шина, указанная величина конденсаторов завалит любую интерференцию отражений на градиентах импеданса, а разница сдвинет фронт клока относительно данных.
3.14
Цитата(udofun @ Aug 29 2005, 16:14)
до моделирования руки не дошли к сожалению (когда же я им займусь.... давно пора все правильно делать)...
*

Моделирование в твоем случае вряд ли поможет sad.gif
Двухслойка - импеданс линии как "гамбургер", HyperLynx и прочие его роста проги не учтут (ICX сможет, но просто перетащить из PCAD не получится).
admin
в процессе разборок было установленно следующее.

есть цепочка FPGA-EPC-FPGA-EPC = JTAG

Если коротим TDO-TDI на любой из EPC или на обоих, то все находится, определятеся и так далее. Все работает!! Причем EPC могут стоять или не стоять в панельках.
Из минусов - приходится жертвовать программированием одной из микросхем.
(Как только включаем в схему 2 микросхемы - все прекращает работать).

кондерсаторы-резисторы менять не пробовал.

У кого какие мысли?


UPD
Цитата
Двухслойка - импеданс линии как "гамбургер

плата 4 слоя - внутренние GND и VCC3.3
admin
вобщем правдами неправдами добился я чтобы работало и прошивалось все в конфигурации
FPGA-EPC-FPGA
2ую EPC пришлось из JTAG исключить.
Gorby
Я про Ксилинксы буду. Раньше использовал CPLD. Там было очень критично иметь правильную подтяжку TCK на питание. Причем до смешного: 5.1 К - не работает, 10 К - работает, 15 К- не работает.
Теперь на FPGA перешел - Спартан 2, Спартан 3. Так я ВСЕГДА соединяю в одну цепочку только однотипные микросхемы. То есть два спартана на один JTAG разъем и две конфиг. EEPROM - на другой. Уже четвертая плата с таким раскладом и нигде не было проблем.
А для общего развития поглядите как нибудь на спецификацию JTAG. Я плакалъ (с). Как вам сдвиговые регистры длиной 56000 бит и прочие хитрости. Кстати, я так и не понял, как им удается работать более чем с одной микросхемой в цепочке - команды-то подаются на все чипы одновременно. (да, я знаю, что данные пропускаются через регистр). Хотя конечно вижу, что работает... Не исключено, что разные микросхемы понимают команды несколько по-другому.
bms
Цитата(3.14 @ Aug 29 2005, 16:18)
Цитата(bms @ Aug 29 2005, 09:39)
Насчёт конденсаторов -  применение конденсаторов, да ещё и нескольких лишь усилит неоднородности в линии передачи сигнала - а это значит что общая картина станет хуже. В одном конкретном приёмнике - возможно получится хороший фронт, но на остальных будет что угодно но не "рабочий" фронт. Вы легко сможете в этом убедиться применив всё то же моделирование.

Не надо усложнять, это не 120 мегагерцовая шина, указанная величина конденсаторов завалит любую интерференцию отражений на градиентах импеданса, а разница сдвинет фронт клока относительно данных.
*



А здесь дело не в частоте сигнала как такового, а в скорости нарастания фронта. Ведь здесь важен именно чистый фронт. Если частота у вас пусть даже 1МГц, но фронты резкие - то без согласования на краях Вы получите "дребезг" со всеми вытекающими отсюда последствиями. Когда говорят о согласовании - речь идёт не о простом завале фронтов, речь идёт о компенсации отражений - принципиально разные вещи. И простое применение конденсатора здесь ничего не даст, особенно когда сигнал от одного источника расходится в несколько приёмников. Просто поставить конденсаторы тут нельзя - они начнут играть между собой, хотя конечно можно заняться подбором и заставить схему работать при помощи ёмкостей, но на другой плате будет другой набор паразитов - и что вы опять будете всё заново подбирать? Я сам сталкивался с тем, что на частоте 10МГц получал фатальные отражения, проблему решил исключительно согласованием линии передачи.
3.14
Цитата(Gorby @ Sep 2 2005, 14:18)
Кстати, я так и не понял, как им удается работать более чем с одной микросхемой в цепочке - команды-то подаются на все чипы одновременно. (да, я знаю, что данные пропускаются через регистр). Хотя конечно вижу, что работает... Не исключено, что разные микросхемы понимают команды несколько по-другому.
*

Например цепочка из трех с длиной инструкций комманд 8 бит. Пусть надо во всторой подать команду "0х00", тогда надо дополнить этот байт с двух сторон 0xFF (это команда BUPASS, которая должнай быть абсолютно у всех JTAG устройств), получится 0xff00ff. Итак получается, что первый и третий чип получили команду BUPASS. А это значит что их сдвиговые регистры данных замкнуты вход-выход (через регистр). После этого если надо записать в регистр команд второго устройства, нужно дополнять по одному биту спереди и сзади.
3.14
Цитата(bms @ Sep 2 2005, 15:33)
А здесь дело не в частоте сигнала как такового, а в скорости нарастания фронта. Ведь здесь важен именно чистый фронт. Если частота у вас пусть даже 1МГц, но фронты резкие - то без согласования на краях Вы получите "дребезг" со всеми вытекающими отсюда последствиями. Когда говорят о согласовании - речь идёт не о простом завале фронтов, речь идёт о компенсации отражений - принципиально разные вещи. И простое применение конденсатора здесь ничего не даст, особенно когда сигнал от одного источника расходится в несколько приёмников. Просто поставить конденсаторы тут нельзя - они начнут играть между собой, хотя конечно можно заняться подбором и заставить схему работать при помощи ёмкостей, но на другой плате будет другой набор паразитов - и что вы опять будете всё заново подбирать? Я сам сталкивался с тем, что на частоте 10МГц получал фатальные отражения, проблему решил исключительно согласованием линии передачи.
*

Извините, Вы только пишете или еще и читаете, или читаете только что сами пишете?
Амплитуда отражения прапорциональна градиенту импеданса, в данном случае, максимальное отражение будет от этих "банальных" конденсаторов, дальше будет чистота и покой.
khach
Цитата(udofun @ Aug 19 2005, 21:32)
3.14
был бы прибор нормальный цифровой - посмотрел бы что реально в линии.
своим C1-55 вижу только что короткий момент как такты идут - вроде идут.
*

Если часто с такими проблемами приходиться возиться- собери к C1-55 вот такую приблуду
1-GHz Sampling Oscilloscope Front End,
и через делитель 1:50 ( резистор в 2.5К на конце 50 омного кабеля)
спокойно наблюдай фронты повторяющегося сигнала ( на JTAG загоняешь тестовый меандр).
bms
Цитата(3.14 @ Sep 2 2005, 16:10)
Извините, Вы только пишете или еще и читаете, или читаете только что сами пишете?
Амплитуда отражения прапорциональна градиенту импеданса, в данном случае, максимальное отражение будет от этих "банальных" конденсаторов, дальше будет чистота и покой.
*


И пишу и читаю всё - не сомневайтесь.

Речь идёи не о том, чтобы отразить что-то от чего-то, а о том, чтобы отражений НЕ БЫЛО совсем, а если без них никак - то их нужно где-то поглощать. Конденсатор - элемент сугубо реактивный и если он что-то отразил - то уже никакой "чистоты и покоя" нет. То что он отразил - ушло в линию, к другим приёмникам (или куда это делось по Вашему?? закон сохранения энергии пока никто не отменял). И там какое-то время живёт, переотражаясь от точки к точке, постепенно затухая, пока не затухнет совсем. Вот для того чтобы затухало быстрее, ставят не конденсаторы, а резисторы. Поглощать энергию (в данном случае это отражённая волна) может только активное сопротивление.

Никто никогда не гасит отражённые волны просто конденсаторами. Если их и ставят они всегда идут в связке с резисторами. Схемы могут быть разные и зависят от потребностей, но это всегда не просто ёмкость, это ёмкость (конденсатор)+потери (резистор).
Хотя на практике чаще всего достаточно применять только резисторы.
3.14
2 bms
Извините за тон, чего то я перегнул cheers.gif
Может я и не прав, в своих "простых" советах (насчет физики процессов, спору нет), просто у меня подобные случаи то же случаются, и лечатся исключительно конденсаторами , т.к. трабл похоже в разбеге фазы CLK и TDI. Хотя выходные буфера и очень скоростные, какой то жудкой интерференционной картины на них не наблюдается (конечно я понимаю, что в принципе не смогу увидеть осциллом реальную картину).
И вот еще, как Вы сами пишете
Код
Конденсатор  - элемент сугубо реактивный и если он что-то отразил - то уже никакой "чистоты и покоя" нет. То что он отразил - ушло в линию, к другим приёмникам (или куда это делось по Вашему?? закон сохранения энергии пока никто не отменял). И там какое-то время живёт, переотражаясь от точки к точке, постепенно затухая, пока не затухнет совсем.
Например имеем не согласованную линию с конденсатором раположенным не далеко от нагрузки. Ведь по логике, переотражения будут возникать на сегменте источник - конденсатор, или я что то упустил?
bms
Цитата(3.14 @ Sep 25 2005, 16:56)
2 bms
Извините за тон, чего то я перегнул  cheers.gif
Может я и не прав, в своих "простых" советах (насчет физики процессов, спору нет), просто у меня подобные случаи то же случаются, и лечатся исключительно конденсаторами , т.к. трабл похоже в разбеге фазы CLK и TDI. Хотя выходные буфера и очень скоростные, какой то жудкой интерференционной картины на них не наблюдается (конечно я понимаю, что в принципе не смогу увидеть осциллом реальную картину).
И вот еще, как Вы  сами пишете
Код
Конденсатор  - элемент сугубо реактивный и если он что-то отразил - то уже никакой "чистоты и покоя" нет. То что он отразил - ушло в линию, к другим приёмникам (или куда это делось по Вашему?? закон сохранения энергии пока никто не отменял). И там какое-то время живёт, переотражаясь от точки к точке, постепенно затухая, пока не затухнет совсем.
Например имеем не согласованную линию с конденсатором раположенным не далеко от нагрузки. Ведь по логике, переотражения будут возникать на сегменте источник - конденсатор, или я что то упустил?
*


Ок, нет проблем.

Насчёт Вашего вопроса... если имеется линия источник-конденсатор-приёмник, то отражения будут бегать не только на сегменте источник-конденсатор, они будут везде, во всей линии. Всё что соединено с конденсатором будет "болтаться", хотя и в разной степени. И чем дальше установлен конденсатор от приёмника - тем хуже будет для приёмника. Всё дело в том, что как только Вы добавляете ничем не скомпенсированный конденсатор в СОГЛАСОВАННУЮ линию - она тут же перестаёт быть согласованной. Согласование это ведь равенство 3-х импедансов: источника, линии передачи и нагрузки. Добавление конденсатора эквивалентно тому, что у линии передачи изменились параметры (ведь любую линию передачи можно разложить в ряд LC-компонентов).
Другое дело, что можно добиться чтобы в определённом месте линии (у приёмника) амплитуда этих отражений была приемлемой (ниже порога срабатывания). Так например работает последовательное согласование, когда у источника ставится резистор. Номинал выбирается так, чтобы сумма выходного импеданса источника и самого резистора равнялись волновому сопротивлению линии. Тогда с одной стороны достигается согласование (правда только на передающем конце) и отражённая от приёмника волна добежав опять до передатчика погаситься на согласованной нагрузке источник+резистор. Т.е. она НЕ вернётся в приёмник и ничего там не испортит (картину портит ведь именно сумма прямой+отражённый сигналы). Это конечно не согласование в чистом виде (нагрузка так и осталась не согласованной), но простая и очень эффективная мера в борьбе с "дребезгом" на приёмном конце. Расплатой за это будет неимоверный дребезг на передатчике, что легко увидеть подключив осцилл к резистору согласования. Но поскольку важно чтоб правильно сработал приёмник - то передатчик пусть себе "дребезжит". Это в идеале, в жизни конечно полностью ничего не гасится и какая-то часть всё же отразиться опять в приёмник, но это уже будут копейки по сравнению с тем, что было бы без резистора.
Но эта схема не будет работать для одного источника и нескольких приёмников, т.к. появляется ещё несколько путей для распространения отражённых сигналов (по числу приёмников).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.