Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с проектом на Xilinx XC2S150
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Pavel81
ПЛИС и ПЗУ включены в jtag-цепочку. Если ПЛИС пустая, то при после программирования выходы остаются в "нуле". Если записываю свой проект, в котором CLKDLL, то после программирования вылезает "1", длиной около 100 мкс. Кто сталкивался с подобным? Как бороться? (Проект фактически ничего в себя не включает, только вывод GND с некоторых ножек и генератор меандра на vhdl).
Kompot
Цитата(Pavel81 @ Feb 4 2009, 16:40) *
ПЛИС и ПЗУ включены в jtag-цепочку. Если ПЛИС пустая, то при после программирования выходы остаются в "нуле". Если записываю свой проект, в котором CLKDLL, то после программирования вылезает "1", длиной около 100 мкс. Кто сталкивался с подобным? Как бороться? (Проект фактически ничего в себя не включает, только вывод GND с некоторых ножек и генератор меандра на vhdl).


А ну-ка медленно и по порядку.

1. Что и с кем в цепочке? Сама ФПГА и ее конфигурационная флэшка? Это нормально, если не накосячить.
2. Схему сами рисовали или это КИТ? Плату сами делали\разводили или это КИТ?
3. Какие конкретно входы остаются в нуле?
4. А если проект без CLKDLL (они довольно капризны) ?
5. В симуляторе делали post P&R симуляцию? В Моделсиме?

Знаете ли Вы, что образы для заливки флэшки и ФПГА сильно отличаются?
Pavel81
1) Цепочка такая: внешний порт JTAG - ПЗУ - ПЛИС. Всё сделано по рекомендации Xilinx и определяется в Impact, проходит проверку и шьётся.

2. Схему рисовал сам, вот она (в состоянии, максимально минимизированном для возникновения бага):



Не в нуле остаются и не входы, а выход. Выходят из нуля на 94 мкс после программирования ПЛИС из ПЗУ, когда не должны этого делать просто по схеме, выход там MR_A1A2_ext.

4. Не вижу смысла, всегда применял CLKDLL и никогда меня не подводила.

5. Моделировать это не нужно. Но моделировал блок, который выдаёт меандр в 517 нс, так вот, он в моделях во всех нормальный, а на практике формируется, но только после той "гадкой" единицы в 94 мкс.

отличия *.bit и *.mcs естественно мне известны. я шью только ПЗУ, потом сбрасываю схему, перед анализом.
Kompot
Цитата(Pavel81 @ Feb 4 2009, 20:06) *
1) Цепочка такая: внешний порт JTAG - ПЗУ - ПЛИС. Всё сделано по рекомендации Xilinx и определяется в Impact, проходит проверку и шьётся.
Хорошо.

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

Не в нуле остаются и не входы, а выход. Выходят из нуля на 94 мкс после программирования ПЛИС из ПЗУ, когда не должны этого делать просто по схеме, выход там MR_A1A2_ext.
Они Вам ничего не должны. Нулем "по схеме" они обязаны стать только после конфигурации.

4. Не вижу смысла, всегда применял CLKDLL и никогда меня не подводила.
Не будьте так категоричны. Уберите CLKDLL , и посмотрите.

5. Моделировать это не нужно. Но моделировал блок, который выдаёт меандр в 517 нс, так вот, он в моделях во всех нормальный, а на практике формируется, но только после той "гадкой" единицы в 94 мкс.
Может, Вы забыли использовать по назначению сигнал LOCK от CLKDLL?


отличия *.bit и *.mcs естественно мне известны. я шью только ПЗУ, потом сбрасываю схему, перед анализом.
Это уже хорошо. Тогда попробуйте зашить битстрим в ФПГА напрямую. Вдруг Вы какую-то опцию неправильно установили при генерации .mcs



Посмотрите двухлучевым осциллографом временнОе соотношение сигнала от ФПГА "загрузка закончена" (идет на загрузочную флэшку) и вашего земляного вывода. Во время конфигурации поведение вывода определено в даташите. Обязано упасть в лог. 0 только ПОСЛЕ окончания загрузки прошивки.

Вообще странно. То есть если не используете CLKDLL, то все нормально? Вот возможно момент, когда CLKDLL Вас подвела...
Pavel81
Смотрел логическим анализатором. Единицы пропадают после того, как сигнал Done от ПЗУ станет = '1'. Получается, что проблема возникает в процессе конфигурации ПЛИС. Внешний синхросигнал и прошедший CLKDLL тоже появляются после этого момента. Непонятно, в чём причина выползания этих единиц при конфигурации ПЛИСа.
Pavel81
В прикреплённом файле схема включения микросхем в цепочку JTAG.
Kompot
Да неважно, как они у Вас включены в цепочку, раз грузится и работает.

Вы должны понимать, что "There are no way to control I/O until the end of the configuration process, unfortunately. You can use DONE signal to control external devices at startup. "


Вот объяснение и возможное решение для Spartan 3. Возможно, подойдет и Вам.

If pin HSWAP_EN is low, all the I/O pins will have pull-up resistors (a few kilo-ohms) during configuration.
If pin HSWAP_EN is high, all the I/O pins will float (high-impedance) during configuration.

You could tie HSWAP_EN high to float the I/O pins during configuration, and then install your own weak pull-down resistors to hold the I/O pins low during configuration.

Вот у человека та же проблема:
http://www.edaboard.com/ftopic263021.html

Похоже, что ни JTAG, ни CLKDLL тут ни при чем.


Настораживает Ваша фраза "всегда пользуюсь CLKDLL". То есть не новичок в ФПГА. Тогда почему Вы никогда не сталкивались с произвольным поведением пинов во время конфигурации? Любой, кто использует ПЛИС, первым делом наступает именно на эти грабли.
Pavel81
Спасибо за ответы. Просто раньше никогда не было проблем с подобным, а теперь прибор должен держать железно пины в нуле, а то ракета не вовремя улетит или не улетит вообще :-D
Pavel81
Помогло подтягивание зла резистором 4.7 кОм к земле. Теперь мой импульс запуска именно такой, какой надо, оконечник запускается. Ещё раз спасибо за решение моей проблемы, Kompot!
Kompot
Цитата(Pavel81 @ Feb 5 2009, 19:02) *
Помогло подтягивание зла резистором 4.7 кОм к земле. Теперь мой импульс запуска именно такой, какой надо, оконечник запускается. Ещё раз спасибо за решение моей проблемы, Kompot!



Ээээ... Всегда пожалуйста.
Только согласитесь, проблемы-то по большому счету и не было rolleyes.gif

Удачи!
Pavel81
Цитата(Kompot @ Feb 5 2009, 18:10) *
Только согласитесь, проблемы-то по большому счету и не было rolleyes.gif
Проблема была. Просто раньше состояние выводов до конфигурации было мне не критично и я просто не обращал на это внимание. А тут меня натолкнули на этот пиндосский форум, где я вно описывают решение проблемы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.