vadimp61 0 20 февраля, 2012 Опубликовано 20 февраля, 2012 · Жалоба Когда-то да, была переразводка, но не ПЛИСовой части, она осталась той же. Но с тех пор уже выпущена небольшая серия плат, на которых этой проблемы нет. Короче говоря, передо мной две платы разных производителей (соотв. разная закупка компонентов), сделаны по идентичным герберам. Одна глючит, другая - нет. Вот в чём фокус. Перепаяйте местами плисины, и у же будет понятно, дело в плате или в плисине. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maksimp 0 20 февраля, 2012 Опубликовано 20 февраля, 2012 · Жалоба И этот автомат становится в неизвестное или не описанное состояние из которого не прописан выход... Ну и далее он там и остается до следующего сброса... Вот это выглядит самым реалистичным. Проверьте чтобы все автоматы из всех состояний, даже из таких в которые они вроде не могут попасть, выходили в известные состояния. Например, практикуется такое что каждое состояние кодируется "1" в своём бите. Для автомата с 4 состояниями тогда законными будут "0001", "0010", "0100", "1000". И тогда в нём нужно обязательно предусмотреть выход из состояний наподобие "0000" или "1100". Ввести дополнительные операторы else if для этого например. Не знаю как ISE, а Квартус умеет сам изменять кодирование автоматов, и в том числе в небезопасную сторону. Нужно тогда найти и отключить опцию, разрешающую изменять кодирование автоматов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 20 февраля, 2012 Опубликовано 20 февраля, 2012 · Жалоба Имел место случай, когда плата промывалась хрен знает чем (водой?), и под ПЛИСой была влага. И она не работала. Продули компрессором, повыдували лишнее - заработала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Builder 0 21 февраля, 2012 Опубликовано 21 февраля, 2012 · Жалоба Да, это я понимаю... Как отловить такие наводки ? CDC да, есть небольшой грешок (1.25 вместо 1.2), но ведь работает всё это добро на таких же платах. Начинку FPGA делал не я, исходники есть, но оставлю это на крайний случай. Она тоже проверена временем и перенесена на плату в бинарном виде. Перепроверяйте всю времянку и синхронные/асинхронные стыки с внешним миром. Особенно если не Ваш проект, т.к. кто его знает что там было проверено а чего небыло. Может прошлый разработчик что-то забыл описать. Сколько раз бывает - пришла другая например партия микрух и проек поплыл, если что-то не корректно сделано. У Вас, чуть другие материалы и толщины ПП, чуть поехала времянка/наводки - и можно получить такой результат. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IEC 0 21 февраля, 2012 Опубликовано 21 февраля, 2012 · Жалоба Недавно выпаивал CPLD Alteta. Шилась, все работало, за исключением одного выходного сигнала, который не мог перейти в "1". Хотя в "Z" и "0" почти нормально. Перепаял, все заработало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shivers 0 21 февраля, 2012 Опубликовано 21 февраля, 2012 · Жалоба Недавно выпаивал CPLD Alteta. Шилась, все работало, за исключением одного выходного сигнала, который не мог перейти в "1". Хотя в "Z" и "0" почти нормально. Перепаял, все заработало. Непропай вывода, обычное дело. Хорошо если корпус QFP, всегда можно пройтись чем то острым и выявить непропай. Хуже на больших ПЛИС с БГА корпусами, в этом случае помогает тест boundary scan через житаг. По идее, непропай должен на выходном контроле прямо на производстве диагностироваться с помощью тестов житаг. Правда, если сбой на 80% плат, то вероятность такого системного непропая - ноль. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 21 февраля, 2012 Опубликовано 21 февраля, 2012 · Жалоба Еще можете попробовать пересинтезировать проект (исходники вроде у вас есть), задав ему реальные диапазоны напряжений питания FPGA и внешних температур. По умолчанию софт берет некие идеальные значения, которые могут не совпасть с вашими реальными. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Demeny 0 21 февраля, 2012 Опубликовано 21 февраля, 2012 · Жалоба Например, практикуется такое что каждое состояние кодируется "1" в своём бите. Для автомата с 4 состояниями тогда законными будут "0001", "0010", "0100", "1000". И тогда в нём нужно обязательно предусмотреть выход из состояний наподобие "0000" или "1100". Ввести дополнительные операторы else if для этого например. Не знаю как ISE, а Квартус умеет сам изменять кодирование автоматов, и в том числе в небезопасную сторону. Нужно тогда найти и отключить опцию, разрешающую изменять кодирование автоматов. Можете ли вы объяснить механизм, природу этого явления - если автомат закодирован, к примеру, состояниями "0001", "0010", "0100", "1000", и нигде в проекте ему не назначается другая константа, то КАК он может оказаться в состоянии "1100" ? Если это возможно - то так далеко можно зайти, а что, если при других операциях другим сигналам будут произвольно меняться биты ? Да и не из всех алгоритмов можно безболезненно выйти, если вдруг состояние автомата стало непредвиденным. Еще можете попробовать пересинтезировать проект (исходники вроде у вас есть), задав ему реальные диапазоны напряжений питания FPGA и внешних температур. По умолчанию софт берет некие идеальные значения, которые могут не совпасть с вашими реальными. Интересно, от напряжения питания и температуры синтезатор что-то меняет в своём синтезе ? Не знал об этом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 21 февраля, 2012 Опубликовано 21 февраля, 2012 · Жалоба Можете ли вы объяснить механизм, природу этого явления переход триггеров состояния автомата в метастабильные состояния, затем сваливание в неописанные состояния и зависание в них, в связи с отстутствием логики выхода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Demeny 0 21 февраля, 2012 Опубликовано 21 февраля, 2012 · Жалоба переход триггеров состояния автомата в метастабильные состояния, затем сваливание в неописанные состояния и зависание в них, в связи с отстутствием логики выхода. То, что будет зависание, если не описать выход из этого состояния - это мне понятно. Но почему триггер может впасть в это самое метастабильное состояние ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 21 февраля, 2012 Опубликовано 21 февраля, 2012 · Жалоба То, что будет зависание, если не описать выход из этого состояния - это мне понятно. Но почему триггер может впасть в это самое метастабильное состояние ? Вам же уже сказали %) в случае КА в 99% асинхра на управляющих входах. поройте форум на эту тему, вопросу метастабильности посвещенно было много времени %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Джеймс 3 21 февраля, 2012 Опубликовано 21 февраля, 2012 · Жалоба Можете ли вы объяснить механизм, природу этого явления - если автомат закодирован, к примеру, состояниями "0001", "0010", "0100", "1000", и нигде в проекте ему не назначается другая константа, то КАК он может оказаться в состоянии "1100" ? Очень просто. Допустим Вам нужно перейти из состояния 0001 в состояние 0010. На самом нижнем уровне у Вас есть лог. функция, устанавливающая бит 1, и лог. функция сбрасывающая бит 0. Допустим у вас приходит извне непротактированный сигнал и заходит в эту state-машину. Тогда он может успеть установить бит 1, и не успеть сбросить бит 0 (в первом случае t_setup хватило, во-втором - не хватило). Тогда автомат перейдет в запрещенное состояние 0011 и зависнет в нем. ИЛИ, вы по-честному протактировали внешний асинхронный сигнал, но синтезатор "незаметно" размножил тактирующий триггер и завел на один терм state-машины сигнал с первого триггера, на второй терм - сигнал с другого триггера. Тогда возможна та же ситуация. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirB 1 21 февраля, 2012 Опубликовано 21 февраля, 2012 · Жалоба То, что будет зависание, если не описать выход из этого состояния - это мне понятно. Но почему триггер может впасть в это самое метастабильное состояние ? У нас несколько лет назад зависала стейт-машина контроллера асинхронной NAND-флеши, хотя все состояния и выходы были прописаны и в XST стояла галочка FSM save implementation. Долго парились и чипоскопили. Вылечилось всё просто синхронизацией внешнего сигнала BUSY с флеши с внутренним клоком. Асинхронщина, однако. А у вас запросто может быть дело в других компонентах - какие нибудь кривые китайские кондёры у которых внутри ничего нету, или кренки с китайского склада. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VslavX 0 21 февраля, 2012 Опубликовано 21 февраля, 2012 · Жалоба У меня на Циклоне 2 был случай - слетала PLL (выходила кратковременно из состояния locked). Использовалось несколько выходных фаз PLL, после повторного "залочивания" PLL фазы рассинхронизировались (на произвольгый угол) и плиска шизела. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 21 февраля, 2012 Опубликовано 21 февраля, 2012 · Жалоба Интересно, от напряжения питания и температуры синтезатор что-то меняет в своём синтезе ? Не знал об этом.Меняется подсчет времянок - задержки всех внутренних элементов FPGA зависят от напряжения питания и температуры. При более широком диапазоне могут не выполнится какие нибудь констрейны Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться