Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Неустойчивая работа JTAG
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Demeny
Столкнулся с такой проблемой, буду признателен за совет.
Есть самодельная плата с FPGA XC3S500E, конфигурируется с родной ксайлинксовской флэшки XCF04S в режиме "Master Serial" (M0=M1=M2=0). И FPGA, и флэшка объединены в единую JTAG-цепочку (TDO FPGA --> TDI Flash). Конфигурация обоих устройств через JTAG происходит неустойчиво, например, после записи битстрима по JTAG iMPACT выдаёт ошибку "Pin DONE not High after configuration" (при этом FPGA действительно не "оживает", не моргает светодиод и т. п.). Если с 3-4 раза прошивка прошла успешно, FPGA "оживает", но последующая верификация тоже происходит неустойчиво - иногда "Successful", а иногда ошибка и каждый раз разное количество несоответствий.
Те же ошибки и при заливке конфигурации (соответсвенно, подготовленной) по JTAG во флэшь.
При этом конфигурирование без JTAG из флэшки при включении питания всегда проходит успешно.
Кабель родной - XILINX Parallel Download Cable IV, им же "шью" другую плату со Spartan3 вполне успешно.
Плата 4 слоя, 2 внутр. слоя GND и +3,3 В. Схема конфигурации сделана полностью по аппнотам XILINX, с учётом VCCIO=3,3 В.
Начал проверять схему, вроде как всё в порядке - JTAG питается от 2,5 B, пин DONE подтянут к 2,5 В резистором 330 Ом, в настройках битстрима включена галка "Поднимать DONE после конфигурации", HSWAP => 10 кОм => +3,3 В, M0=M1=M2 => 10 кОм => GND, PROG_B => 4,7 кОм => 2,5 В, INIT_B => 4,7 кОм => +3,3 В.
Питание FPGA VCCINT=1,2 В, VCCAUX=2,5 В, VCCO=3,3 B
Питание флэшки VCCO=VCCINT=3,3 В, VCCJ=2,5 В.
В чём ещё могут быть "грабли" неустойчивой конфигурации по JTAG ?
Что ещё проверить ?
Al Jumper
Скорее всего виноват "звон" на цепи TCK или плохая "земля" между XILINX Parallel Download Cable IV и Вашим устройством. Иногда помогает поставит на ТСК емкость ~100 пф. Еще питание осциллоскопом гяньте.
Demeny
Цитата(Al Jumper @ Nov 19 2008, 14:38) *
Скорее всего виноват "звон" на цепи TCK или плохая "земля" между XILINX Parallel Download Cable IV и Вашим устройством. Иногда помогает поставит на ТСК емкость ~100 пф. Еще питание осциллоскопом гяньте.

Посмотрел осциллоскопом - питание нормальное в процессе конфигурирования, TCK тоже нормально. Однако эмпирически - при подключенном щупе осцилла на TCK верификация проходит без проблем. Видно, действительно нужна небольшая емкость на TCK. Интересно, с чем это может быть связано - ошибка трассировки, или ещё что ?
yuri_d
Цитата(Demeny @ Nov 19 2008, 13:56) *
Кабель родной - XILINX Parallel Download Cable IV, им же "шью" другую плату со Spartan3 вполне успешно.

А какое у Вас соединение между коробкой DLC7 (Parallel Download Cable IV) и устройсвом? Возможные варианты ribbon cable и flying wire. Если используете провода, то подобное было и у нас. Пришлось вернуться на DLC5 (Parallel Cable 3).
Demeny
Цитата(yuri_d @ Nov 20 2008, 14:48) *
А какое у Вас соединение между коробкой DLC7 (Parallel Download Cable IV) и устройсвом? Возможные варианты ribbon cable и flying wire. Если используете провода, то подобное было и у нас. Пришлось вернуться на DLC5 (Parallel Cable 3).

Соединение стандартное, идущее в поставке кабеля - ribbon cable, 14-жильный плоский шлейф. А чем в этом смысле лучше DLC5 (Parallel Cable 3) ?
yuri_d
Цитата(Demeny @ Nov 21 2008, 05:41) *
Соединение стандартное, идущее в поставке кабеля - ribbon cable, 14-жильный плоский шлейф. А чем в этом смысле лучше DLC5 (Parallel Cable 3) ?

Parallel Cable 3 хорош тем, что у него на выходе стоят довольно медленные элементы 74HC125 (схема http://toolbox.xilinx.com/docsan/xilinx4/d...appendixb.html). В результате имеем намного меньший звон из-за отражений от неоднородностей (конец линии, разветвление линии, переход с кабеля на плату).

Плоский шлейф - это хорошо. Значит его можно не рассматривать как источник проблемы.

Обратите внимание на разводку линии TCK. Её можно вести от JTAG разъёма одним проводом к первой микросхеме и вторым проводом ко второй. А можно проводом к первой микросхеме, а затем продолжить это соединение ко второй. С точки зрения отражений второй вариант лучше.

Попробуйте на конце линии поставить RC-цепочку (где R = волновому сопротивлению линии, а C=100 пФ, подбирается от 20 до 300 пФ). Просто ставить конденсатор без резистора не очень хорошо. Фронт будет завален, а отражения возрастут ещё больше.

Ещё попробуйте промоделировать поведение линии TCK. Воспользуйтесь, на пример, HyperLynx или каким-нибудь SPICE симулятором. Задача - устранить звон на линии.

И ещё одна возможность: а не проходит ли рядом с линией TCK сигнал от тактового генератора? Если проходит, то попробуйте на время программирования запредить тактовый генератор.
Demeny
Цитата(yuri_d @ Nov 22 2008, 18:42) *
Обратите внимание на разводку линии TCK.

TCK идёт сначала к Spartan-у, а от него кратчайшим путём к флэшке (через 2 via).
А из чего следует, что звон именно в TCK, а не, например, в TDI или TDO ?

И ещё одна проблема, возможно, связанная с темой топика. При подключенном кабеле схема работает более-менее, а вот при отключенном начинается какой-то хаос - плата (она на шине PCI) то работает, то при загрузке компа "сносит" видеоадаптер (требует много ресурсов) и т. п. Вроде как, по аппнотам Xilinx, не нужны подтягивающие резисторы на выделенные линии JTAG. В чём же может быть источник проблем ?
yuri_d
Цитата(Demeny @ Nov 24 2008, 12:49) *
TCK идёт сначала к Spartan-у, а от него кратчайшим путём к флэшке (через 2 via).

Это правильная топология. Всё же попробуйте RC на конце этой линии. Эксперимент на час максимум.

Цитата(Demeny @ Nov 24 2008, 12:49) *
А из чего следует, что звон именно в TCK, а не, например, в TDI или TDO ?

Звон может быть и на TDI, TDO или TMS. Но влиять на поведение JTAG этот звон может только, если он приходится на фронт сигнала TCK. А вероятность этого события намного меньше, чем просто звон (или наводки) на TCK.

Цитата(Demeny @ Nov 24 2008, 12:49) *
И ещё одна проблема, возможно, связанная с темой топика. При подключенном кабеле схема работает более-менее, а вот при отключенном начинается какой-то хаос - плата (она на шине PCI) то работает, то при загрузке компа "сносит" видеоадаптер (требует много ресурсов) и т. п. Вроде как, по аппнотам Xilinx, не нужны подтягивающие резисторы на выделенные линии JTAG. В чём же может быть источник проблем ?

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

У нас были проблемы с потерей конфигурации CPLD. С тех пор всегда ставлю подтягивающие резисторы на линии TCK и TMS.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.