Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Непонятные глюки Cyclone 3
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Serg_Sm
Здравствуйте.
Собственно проблема:
Есть 2 платы на каждой из которых установлены ПЛИС Cyclone 3 (EPC35E144C7), режим загрузки AS (через EPCS4). Платы соединены оптикой - транссиверы на 125Мбит, скорость передачи 120МБит. У первой платы USB интерфейс (Full-Speed).
Тактирование каждой платы идет от генератора 48МГц, задействована PLL (normal mode) на которой получаем два клока по 120МГц (один со сдвигом на 90 градусов).
Платы пока в тестировании, так что приходится с ними часто работать перешивать и т.п.

Перед НГ сделал можно сказать бета-версию прошивок обеих плат - работают без проблем (прокачал не одну сотню МБайт данных), всякие ситуации с потерей связи по оптике/включениями в разном порядке тоже проверил. И в пятницу к вечеру у меня все заработало - довольный ухожу на выходные (девайс остался выключенным). Прихожу в понедельник - работать не хочет ни в какую, сбои сразу после включения.
Продолбался полдня. Откатился на старые версии прошивок (частота 90МГц) - работает, ради интереса зашил последние версии - опять работает!
И так в течение недели все работало нормально, после выходных опять ситуация повторилась. Вначале думал, на ошибку в логике, но никакими другими путями этот сбой не возникает.
После НГ ситуация повторилась - здесь я был более готов и пробовал найти причину сбоя, но кроме того, что сбоит после старта не нашел: поскольку перепрошил 2 плату (первую не трогал) чуть измененной прошивкой (поменял только назначение тестовых выходов) - все опять заработало без проблем! Причем до этого полдня сбой стабильно проявлялся.

Начал подозревать, что сбоит EPCS4, оставил платы поваляться пару суток на полке. Сейчас включил - сбоит. Сделал верификацию (успешная) и examine прошивки второй платы - все сбои устранились.

Короче я в недоумении. Пока одна мысль - заменить EPCS4 на второй плате, может к чему-нибудь приведет.
Жду советов в искоренении данной проблемы.
SM
Смахивает на какие-то висящие в воздухе (третьем состоянии) неподтянутые ножки, от накопления/стекания заряда на которых что-то происходит значимое.
Serg_Sm
Вот кстати большая часть ножек в ПЛИС у меня не используется и висит в воздухе. Читал как-то, что нужно все неиспользуемые ножки подключать к земле или питанию - насколько это обязательно? Или их все сконфигурировать как выходы и на "0" - достаточно будет? Может в проекте какую-нибудь галочку поставить для указания явной судьбы неподключенных ножек?
SM
Цитата(Serg_Sm @ Jan 13 2010, 13:38) *
Или их все сконфигурировать как выходы и на "0" - достаточно будет? Может в проекте какую-нибудь галочку поставить для указания явной судьбы неподключенных ножек?


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

Но я больше не про I/O пины, а про всякую служебку. Например - если у Вас стоит USB-шник CY7C68013 - то у него есть нога "reserved", которую по даташиту надо на землю. Если забыть - будет нечто типа Вашего. Ну и подобные примеры с подобными ногами. И непропаи по питательным/земляным ногам...
Builder
Я-бы ещё внимательно перепроверил пайку и качество платы, было как-то на PCI плате, то работала, то нет.
А оказался брак изготовителя в переходных, пропайка всех переходных вылечила плату полностью.
Не помешало-бы перепроверить времянки и на предмет асинхронщины, т.к. может давать эффекты, связанные с фазой луны.
SM
Ага. +1. Дефект платы тоже очень вероятен, проходили.
vmp
Как еще одна гипотеза - температурная зависимость. Например теплая плата работает, а холодная - нет (времянки на грани работоспособности). Или при разной температуре плат получаются разные частоты и платы не входят в синхронизацию.
Serg_Sm
Из всего вышеперечисленного есть следующие гипотезы:
1) Накопление/стекание заряда на неподключенных ножках. Очень вероятно, но тяжело диагностировать и исправлять. Сюда же можно отнести
не совсем правильное подключение компонент на плате (вроде не такого, а там хз).
2) Глюк EPCS4. Маловероятно, но на всякий случай поменяю.
3) Логические сбои. Маловероятно при таких начальных условиях. Если бы сбоило, то всегда (сейчас сбои случайными не назовешь).
4) Дефект платы/разводки. Маловероятно при таких начальных условиях. Если бы сбоило, то всегда. Хотя земля на брюхе циклона может быть плохо пропаяна - уже сталкивался, правда тогда вообще ничего не работает. Отдам на тщательную пропайку.
5) Температурная зависимость. Изначально предполагал её, но поскольку полдня работает со сбоями, а после перепрошивки глюки сразу исчезают - не в этом дело.

Подскажите, где в квартусе установить галочку, чтобы все неиспользуемые ножки как на ноль подтягивались?
Stewart Little
Цитата(Serg_Sm @ Jan 13 2010, 16:47) *
Подскажите, где в квартусе установить галочку, чтобы все неиспользуемые ножки как на ноль подтягивались?

Assignment - Device - Device and Pin options - Unused Pins.
Но там по умолчанию и так должно стоять "As output driving ground".
Serg_Sm
Цитата(Stewart Little @ Jan 13 2010, 17:01) *
Assignment - Device - Device and Pin options - Unused Pins.
Но там по умолчанию и так должно стоять "As output driving ground".

Стояло "Input tri-stated with weak pull-up". Поменял на выходы соединенные с землей. Только результаты всех изменений в понедельник будут известны.

PS: Пины для программирования отдельно указаны "input tri-stated".
des00
Цитата(Serg_Sm @ Jan 13 2010, 07:47) *
5) Температурная зависимость. Изначально предполагал её, но поскольку полдня работает со сбоями, а после перепрошивки глюки сразу исчезают - не в этом дело.

для надежности я бы еще дунул фризером на всё, а потом погрел феном плису %)
SM
Цитата(Serg_Sm @ Jan 13 2010, 16:47) *
5) Температурная зависимость. Изначально предполагал её, но поскольку полдня работает со сбоями, а после перепрошивки глюки сразу исчезают - не в этом дело.


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

А EPCS-ку можете исключить сразу. Лучше попробуйте вместо перепрошивки подержать ПЛИСку в полном сбросе какое-то время (типа nconfig на земле), чтобы остыла, или вообще без питания.
Serg_Sm
Цитата(SM @ Jan 13 2010, 21:35) *
Как раз наоборот - один из потенциальных признаков темп. зависимости - во время перепрошивки кристалл успевает сменить темп-ру относительно его рабочего состояния.

А EPCS-ку можете исключить сразу. Лучше попробуйте вместо перепрошивки подержать ПЛИСку в полном сбросе какое-то время (типа nconfig на земле), чтобы остыла, или вообще без питания.


Это что, он за 2 суток не охлаждается? Не верится. Я пробовал платы выкладывать на улицу -10 градусов, потом тестил - никаких сбоев. На горячую тоже все в норме.
А вот насчет полного сброса - очень вероятно. Поскольку кажется не сам факт манипуляций с прошивкой, а подключенный USB-Blaster восстанавливает работоспособность. А он как раз ПЛИС в сбросе и держит.
des00
Цитата(Serg_Sm @ Jan 14 2010, 00:11) *
Это что, он 2 суток охлаждается? Не верится. Я пробовал платы выкладывать на улицу -10 градусов, потом тестил - никаких сбоев.

да степень охлаждения здесь не сильно причем. у вас же где то синхра ломается, задержки поплыли, что то встало не так и вперед. А при перезагрузки начальные условия входа в синхронизм другие вот и начинает работать %) Констрены проекта проверяли на ваши условия по температуре, перегреву, охлаждению?
alevnew
Опишу свою ситуацию, как было. Симптомы примерно такие же - девайс работает часами, но при включении с утра отказывается работать - передает через кипарис по USB несколько килобайт и виснет намертво.
А как "разработается", то работает часами smile.gif.
Короче решил проблему, дело было в следующем:
схема такая - плис циклон 2 + кипарис (USB мост).
схема тестирования - из SDRAM, подключенного к плис, 32 мега, данные через USB идут на комп. На компе тестирующая прога - просто читает данные из ОЗУ.

Когда я прописывал ОЗУ случайными числами - все читалось ОК.
А после включения в ОЗУ были почти все единицы, и поэтому сбоило (это потом до меня дошло). Когда я прописывал ОЗУ единицами, то сбои были стабильными.
Причина была банальна - плохая земля между ПЛИС и кипарисом. Плата была двуслойка.
Кинул землю дополнительными проводами - проблема исчезла.
Убил несколько дней, пока нашел причину.
Serg_Sm
Похоже глюк пропал, по крайней мере на 90% уверен, что он бы проявился если бы был.
Перед этим поменяли EPCS4, неиспользуемые выводы переназначил на "As output driving ground" и пропаяли брюхо циклона (пропаяно правда оно было хорошо).
Вроде бы все (надеюсь).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.