реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Может ли FPGA частично "зависнуть" ?, чудеса, да и только ...
vadimp61
сообщение Feb 20 2012, 14:05
Сообщение #16


Знающий
****

Группа: Участник
Сообщений: 599
Регистрация: 28-08-08
Из: Ростов папа
Пользователь №: 39 872



Цитата(Demeny @ Feb 20 2012, 17:59) *
Когда-то да, была переразводка, но не ПЛИСовой части, она осталась той же. Но с тех пор уже выпущена небольшая серия плат, на которых этой проблемы нет.
Короче говоря, передо мной две платы разных производителей (соотв. разная закупка компонентов), сделаны по идентичным герберам. Одна глючит, другая - нет. Вот в чём фокус.

Перепаяйте местами плисины, и у же будет понятно, дело в плате или в плисине.
Go to the top of the page
 
+Quote Post
maksimp
сообщение Feb 20 2012, 16:28
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023



Цитата(iosifk @ Feb 20 2012, 16:03) *
И этот автомат становится в неизвестное или не описанное состояние из которого не прописан выход... Ну и далее он там и остается до следующего сброса...

Вот это выглядит самым реалистичным. Проверьте чтобы все автоматы из всех состояний, даже из таких в которые они вроде не могут попасть, выходили в известные состояния.
Например, практикуется такое что каждое состояние кодируется "1" в своём бите. Для автомата с 4 состояниями тогда законными будут "0001", "0010", "0100", "1000". И тогда в нём нужно обязательно предусмотреть выход из состояний наподобие "0000" или "1100". Ввести дополнительные операторы else if для этого например. Не знаю как ISE, а Квартус умеет сам изменять кодирование автоматов, и в том числе в небезопасную сторону. Нужно тогда найти и отключить опцию, разрешающую изменять кодирование автоматов.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 20 2012, 16:36
Сообщение #18


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Имел место случай, когда плата промывалась хрен знает чем (водой?), и под ПЛИСой была влага. И она не работала. Продули компрессором, повыдували лишнее - заработала.
Go to the top of the page
 
+Quote Post
Builder
сообщение Feb 21 2012, 06:24
Сообщение #19


iBuilder©
****

Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322



Цитата(Demeny @ Feb 20 2012, 15:57) *
Да, это я понимаю... Как отловить такие наводки ?
CDC да, есть небольшой грешок (1.25 вместо 1.2), но ведь работает всё это добро на таких же платах. Начинку FPGA делал не я, исходники есть, но оставлю это на крайний случай. Она тоже проверена временем и перенесена на плату в бинарном виде.
Перепроверяйте всю времянку и синхронные/асинхронные стыки с внешним миром. Особенно если не Ваш проект, т.к. кто его знает что там было проверено а чего небыло. Может прошлый разработчик что-то забыл описать.
Сколько раз бывает - пришла другая например партия микрух и проек поплыл, если что-то не корректно сделано.
У Вас, чуть другие материалы и толщины ПП, чуть поехала времянка/наводки - и можно получить такой результат.
Go to the top of the page
 
+Quote Post
IEC
сообщение Feb 21 2012, 07:13
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Недавно выпаивал CPLD Alteta. Шилась, все работало, за исключением одного выходного сигнала, который не мог перейти в "1". Хотя в "Z" и "0" почти нормально.
Перепаял, все заработало.
Go to the top of the page
 
+Quote Post
Shivers
сообщение Feb 21 2012, 08:57
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



Цитата(IEC @ Feb 21 2012, 10:13) *
Недавно выпаивал CPLD Alteta. Шилась, все работало, за исключением одного выходного сигнала, который не мог перейти в "1". Хотя в "Z" и "0" почти нормально.
Перепаял, все заработало.

Непропай вывода, обычное дело. Хорошо если корпус QFP, всегда можно пройтись чем то острым и выявить непропай. Хуже на больших ПЛИС с БГА корпусами, в этом случае помогает тест boundary scan через житаг. По идее, непропай должен на выходном контроле прямо на производстве диагностироваться с помощью тестов житаг.
Правда, если сбой на 80% плат, то вероятность такого системного непропая - ноль.
Go to the top of the page
 
+Quote Post
XVR
сообщение Feb 21 2012, 09:11
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Еще можете попробовать пересинтезировать проект (исходники вроде у вас есть), задав ему реальные диапазоны напряжений питания FPGA и внешних температур. По умолчанию софт берет некие идеальные значения, которые могут не совпасть с вашими реальными.
Go to the top of the page
 
+Quote Post
Demeny
сообщение Feb 21 2012, 13:12
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(maksimp @ Feb 20 2012, 20:28) *
Например, практикуется такое что каждое состояние кодируется "1" в своём бите. Для автомата с 4 состояниями тогда законными будут "0001", "0010", "0100", "1000". И тогда в нём нужно обязательно предусмотреть выход из состояний наподобие "0000" или "1100". Ввести дополнительные операторы else if для этого например. Не знаю как ISE, а Квартус умеет сам изменять кодирование автоматов, и в том числе в небезопасную сторону. Нужно тогда найти и отключить опцию, разрешающую изменять кодирование автоматов.

Можете ли вы объяснить механизм, природу этого явления - если автомат закодирован, к примеру, состояниями "0001", "0010", "0100", "1000", и нигде в проекте ему не назначается другая константа, то КАК он может оказаться в состоянии "1100" ? Если это возможно - то так далеко можно зайти, а что, если при других операциях другим сигналам будут произвольно меняться биты ? Да и не из всех алгоритмов можно безболезненно выйти, если вдруг состояние автомата стало непредвиденным.

Цитата(XVR @ Feb 21 2012, 13:11) *
Еще можете попробовать пересинтезировать проект (исходники вроде у вас есть), задав ему реальные диапазоны напряжений питания FPGA и внешних температур. По умолчанию софт берет некие идеальные значения, которые могут не совпасть с вашими реальными.

Интересно, от напряжения питания и температуры синтезатор что-то меняет в своём синтезе ? Не знал об этом.


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 21 2012, 13:18
Сообщение #24


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Demeny @ Feb 21 2012, 08:12) *
Можете ли вы объяснить механизм, природу этого явления

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


--------------------
Go to the top of the page
 
+Quote Post
Demeny
сообщение Feb 21 2012, 13:22
Сообщение #25


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(des00 @ Feb 21 2012, 17:18) *
переход триггеров состояния автомата в метастабильные состояния, затем сваливание в неописанные состояния и зависание в них, в связи с отстутствием логики выхода.

То, что будет зависание, если не описать выход из этого состояния - это мне понятно. Но почему триггер может впасть в это самое метастабильное состояние ?


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 21 2012, 13:26
Сообщение #26


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Demeny @ Feb 21 2012, 08:22) *
То, что будет зависание, если не описать выход из этого состояния - это мне понятно. Но почему триггер может впасть в это самое метастабильное состояние ?

Вам же уже сказали %) в случае КА в 99% асинхра на управляющих входах. поройте форум на эту тему, вопросу метастабильности посвещенно было много времени %)


--------------------
Go to the top of the page
 
+Quote Post
Джеймс
сообщение Feb 21 2012, 13:34
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 462
Регистрация: 20-01-06
Пользователь №: 13 399



Цитата(Demeny @ Feb 21 2012, 16:12) *
Можете ли вы объяснить механизм, природу этого явления - если автомат закодирован, к примеру, состояниями "0001", "0010", "0100", "1000", и нигде в проекте ему не назначается другая константа, то КАК он может оказаться в состоянии "1100" ?


Очень просто. Допустим Вам нужно перейти из состояния 0001 в состояние 0010. На самом нижнем уровне у Вас есть лог. функция, устанавливающая бит 1, и лог. функция сбрасывающая бит 0. Допустим у вас приходит извне непротактированный сигнал и заходит в эту state-машину. Тогда он может успеть установить бит 1, и не успеть сбросить бит 0 (в первом случае t_setup хватило, во-втором - не хватило). Тогда автомат перейдет в запрещенное состояние 0011 и зависнет в нем. ИЛИ, вы по-честному протактировали внешний асинхронный сигнал, но синтезатор "незаметно" размножил тактирующий триггер и завел на один терм state-машины сигнал с первого триггера, на второй терм - сигнал с другого триггера. Тогда возможна та же ситуация.
Go to the top of the page
 
+Quote Post
VladimirB
сообщение Feb 21 2012, 13:55
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 614
Регистрация: 12-06-09
Из: рядом с Москвой
Пользователь №: 50 219



Цитата(Demeny @ Feb 21 2012, 16:22) *
То, что будет зависание, если не описать выход из этого состояния - это мне понятно. Но почему триггер может впасть в это самое метастабильное состояние ?

У нас несколько лет назад зависала стейт-машина контроллера асинхронной NAND-флеши, хотя все состояния и выходы были прописаны и в XST стояла галочка FSM save implementation.
Долго парились и чипоскопили. Вылечилось всё просто синхронизацией внешнего сигнала BUSY с флеши с внутренним клоком.
Асинхронщина, однако.

А у вас запросто может быть дело в других компонентах - какие нибудь кривые китайские кондёры у которых внутри ничего нету, или кренки с китайского склада.
Go to the top of the page
 
+Quote Post
VslavX
сообщение Feb 21 2012, 15:20
Сообщение #29


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



У меня на Циклоне 2 был случай - слетала PLL (выходила кратковременно из состояния locked). Использовалось несколько выходных фаз PLL, после повторного "залочивания" PLL фазы рассинхронизировались (на произвольгый угол) и плиска шизела.
Go to the top of the page
 
+Quote Post
XVR
сообщение Feb 21 2012, 15:53
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Demeny @ Feb 21 2012, 17:12) *
Интересно, от напряжения питания и температуры синтезатор что-то меняет в своём синтезе ? Не знал об этом.
Меняется подсчет времянок - задержки всех внутренних элементов FPGA зависят от напряжения питания и температуры. При более широком диапазоне могут не выполнится какие нибудь констрейны

Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 10th July 2025 - 12:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.0152 секунд с 7
ELECTRONIX ©2004-2016