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

 
 
> Может ли FPGA частично "зависнуть" ?, чудеса, да и только ...
Demeny
сообщение Feb 20 2012, 10:55
Сообщение #1


Знающий
****

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



Есть плата с FPGA Xilinx Spartan-3E-500, кристалл заполнен на 98%. Логика, зашитая в FPGA, управляется процессором ARM по параллельной ISA-подобной шине. "Прошивка" давно отлажена и обкатана на огромной серии плат и никаких проблем с ней никогда не было, всё работало без проблем.
Но вот выпущен очередной релиз плат (другим производителем, но топология та же) , с которыми происходят странные вещи. На 80% плат прошивка в FPGA через какое-то время (от 15 мин до нескольких часов) частично перестаёт выполнять свои функции, как бы "зависает". Со стороны процессора всё выглядит ОК - регистры пишутся-читаются, команды отдаются, но ... логика FPGA не работает, причём только часть - другая (существенно большая часть) продолжает исправно молотить и выполнять, что требуется.
Идентичный софт на идентичной плате другого производителя (с тем же блоком питания, если что ...) молотит без проблем сутками. Потребляемый ток всеми вариантами плат не отличается, перегревов нет, напряжения питаний в норме. Сигнал DONE наличествует как до, так и после сбоя.
Я теряюсь в догадках - что тут может быть, куда копать и что смотреть ?


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


Знающий
****

Группа: Свой
Сообщений: 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
Torpeda
сообщение Feb 23 2012, 15:20
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424



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


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


1) автомат сработает неправильно если:
- какие-либо сигналы на его входах асинхронны клоку (напр. внешний ресет....)
- set-up\hold тайминги не выполнились (например изза нештатного PVT (Process Voltage Temperature), т.е. не того что задан при SP&R )
- джитер\скважность клока не такие как при SP&R.
- шум по питанию.
- FPGA тоже бывают битые (имеют stack-at fault) (хотя при 80-% плат тот-же отказ, врядли)

2) Синтезатор делает синтез с учётом PVT corner. STA кстати то-же.
И напр. новая FPGA хоть и того-же типа может иметь слегка другую временную зависимость от PVT на 3-м году выпуска.... Это должно учитываться в новой версии FPGA CAD....

3) А как можна плату в нормальное состояние вернуть? Никак, ресетом, поверофом....
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Demeny   Может ли FPGA частично "зависнуть" ?   Feb 20 2012, 10:55
- - des00   глючащий модуль порты на выводы плиса имеет ?   Feb 20 2012, 10:59
|- - Demeny   Цитата(des00 @ Feb 20 2012, 14:59) глючащ...   Feb 20 2012, 11:14
|- - des00   Цитата(Demeny @ Feb 20 2012, 06:14) Да, и...   Feb 20 2012, 12:04
- - litv   в Chipscope то что видно?   Feb 20 2012, 11:54
- - MrYuran   Цитата(Demeny @ Feb 20 2012, 14:55) Я тер...   Feb 20 2012, 12:02
- - iosifk   Цитата(Demeny @ Feb 20 2012, 14:55) Но во...   Feb 20 2012, 12:03
|- - maksimp   Цитата(iosifk @ Feb 20 2012, 16:03) И это...   Feb 20 2012, 16:28
- - Demeny   Цитата(litv @ Feb 20 2012, 15:54) в Chips...   Feb 20 2012, 12:57
|- - des00   Цитата(Demeny @ Feb 20 2012, 06:57) Но по...   Feb 20 2012, 13:06
||- - disel   Цитата(des00 @ Feb 20 2012, 16:06) иначе ...   Feb 20 2012, 13:10
|||- - des00   Цитата(disel @ Feb 20 2012, 07:10) Это ес...   Feb 20 2012, 13:12
|||- - disel   Цитата(des00 @ Feb 20 2012, 16:12) хмм, е...   Feb 20 2012, 13:22
||- - Demeny   Цитата(des00 @ Feb 20 2012, 17:06) вы же ...   Feb 20 2012, 13:59
||- - vadimp61   Цитата(Demeny @ Feb 20 2012, 17:59) Когда...   Feb 20 2012, 14:05
|- - Builder   Цитата(Demeny @ Feb 20 2012, 15:57) Да, э...   Feb 21 2012, 06:24
- - disel   А спидгрейт у плис такой же как и всех других плат...   Feb 20 2012, 13:05
- - Shivers   Я бы взял старую плату и перепаял с нее ПЛИС на но...   Feb 20 2012, 14:05
- - ViKo   Имел место случай, когда плата промывалась хрен зн...   Feb 20 2012, 16:36
- - IEC   Недавно выпаивал CPLD Alteta. Шилась, все работал...   Feb 21 2012, 07:13
|- - Shivers   Цитата(IEC @ Feb 21 2012, 10:13) Недавно ...   Feb 21 2012, 08:57
- - XVR   Еще можете попробовать пересинтезировать проект (и...   Feb 21 2012, 09:11
|- - des00   Цитата(Demeny @ Feb 21 2012, 08:12) Может...   Feb 21 2012, 13:18
||- - Demeny   Цитата(des00 @ Feb 21 2012, 17:18) перехо...   Feb 21 2012, 13:22
||- - des00   Цитата(Demeny @ Feb 21 2012, 08:22) То, ч...   Feb 21 2012, 13:26
||- - VladimirB   Цитата(Demeny @ Feb 21 2012, 16:22) То, ч...   Feb 21 2012, 13:55
|- - Джеймс   Цитата(Demeny @ Feb 21 2012, 16:12) Может...   Feb 21 2012, 13:34
|- - XVR   Цитата(Demeny @ Feb 21 2012, 17:12) Интер...   Feb 21 2012, 15:53
- - VslavX   У меня на Циклоне 2 был случай - слетала PLL (выхо...   Feb 21 2012, 15:20
- - alevnew   Цитата(maksimp @ Feb 20 2012, 22:28) И то...   Feb 24 2012, 05:59
- - Torpeda   Цитата(Demeny @ Feb 20 2012, 13:55) ... п...   Feb 24 2012, 13:27
- - dsmv   Насчёт Spartan-3: Первые партии микросхем позволя...   Feb 24 2012, 13:41


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

 


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


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