Всё что содержит RAM как правило рано или поздно сбивается...
Кто и как обеспечивает живучесть своих изделий на базе FPGA?
TailWind
Sep 8 2006, 10:00
Нееее
Всё что содержит программу и программистов рано или поздно сбивается ;)))
А FPGA должна быть точно выверена, иначе это фуфло ;)
Что понимается под словом "выверена"?
Дело в том, что если речь идёт о системах жизнеобеспечения например, то лучше уж перестраховаться чем недостраховаться.
То, что возможны глюки при разработке программы, это понятно...
И то что супервизор может осложнить поиск глюка - это тоже понятно...
Но всётаки на контроллерах и DSP все делают супервизоры и это не считается плохим тоном.
TailWind
Sep 8 2006, 10:42
Цитата(sdv @ Sep 8 2006, 14:14)

Что понимается под словом "выверена"?
Я имею в виду верификацию с максимальным покрытием.
Иными словами TestBench хороший ;)
Цитата(sdv @ Sep 8 2006, 14:14)

Но всётаки на контроллерах и DSP все делают супервизоры и это не считается плохим тоном.
Да. Если программа улетает куда-нибудь не туда, они подают reset или прерываение.
вроде в названии темы фигурируют и супервизор и сторожевой таймер - так и давайте разбирать отдельно
супервизор - действительно при провалах/просадках напряжения питания будет нелишним перезаливать прошивку в плис
стор.таймер - мначала надо решить как определять подвисоны - т.е. какая хитрая схема внутре плисы будет принимать решение о том - зависли или еще работать можно. хотя если это не софт-процессор, на котором крутится программа, то непонятно зачем вообще к плису wdt нужен
Serge V. Kior
Sep 8 2006, 11:32
Я если надо обеспечить надежность (космос, оборона и т.п.) Ставлю Actel, у которого конфигурация хранится либо во Flash (если не RadHARD) либо вообще однократно программируется (В случае RadHARD).
В остальном полностью согласен с предыдущими ораторами.
Единственное дополнение, что все это справедливо только для полностью синхронных дизайнов.
DSIoffe
Sep 8 2006, 13:34
А я ставлю симпатичную такую хреньку: MAX6369KA-T, это watchdog маленький. И сбрасываю его периодически из ПЛИС. Если его не сбросить - сами понимаете, что будет. Плюс он при подаче питания выдерживает очень полезную паузу. Программируется внешними логическими уровнями.
DSIoffe, а что за сфера применения ваших устройств?
я к тому, что чтоже там такого может произойти, что плис не выдаст сигнала сброса wdt?!. если тока клок пропадёт=) (утрирую канешн)
еще вопрос: у вас wdt заведен на ресет вашей внутренней начинки плис или на перезаливку прошивки?
ЗЫЖ дух просвящения овладел мною :)
Вроде бы Xilinx в Mars PathFinder использовал периодическую реконфигурацию FPGA.
DSIoffe
Sep 8 2006, 14:14
to DokaСфера, как сфера, вот здесь можно посмотреть:
http://www.silar.spb.ru/c/s2x_r.htm. Извиняюсь за корявость сайта, хоть и не я виноват. В ПЛИС запихан NIOS. Всё как у людей.
WDT заведён на реконфигурацию.
Духу привет.
MAX6369KA-T, это watchdog маленький. И сбрасываю его периодически из ПЛИС
А кто его сбрасывает в интервале конфигурации и инициализации ПЛИСС?
Цитата(Serge V. Kior @ Sep 8 2006, 15:32)

Я если надо обеспечить надежность (космос, оборона и т.п.) Ставлю Actel, у которого конфигурация хранится либо во Flash (если не RadHARD) либо вообще однократно программируется (В случае RadHARD).
Это несколько неверное положение, даже отводящее дискуссию в сторону.
Самое основное заключается в том, что монитор питания нужен именно Flash-FPGA, выход которого (выход монитора) должен использоваться в качестве Reset-а для кристалла (и естественно использоваться в проекте). Иначе есть шанс, что схема вообще не стартует (это встречается на практике, никаких ссылок на соответствующие документы Actel у меня нет, так что выполнить просьбу их предоставить я не могу).
Что касается SRAM-FPGA, то например у Альтеры эту функцию уже несет связка FPGA – “конфигурационный чип” (см. раздел “Power-on reset” в документе Configuration Devices for SRAM-Based LUT Devices).
Это несколько неверное положение, даже отводящее дискуссию в сторону.
Как я понял, в Flash-FPGA по включению питания произвольное соотояние триггерных ячеек.
Хотите все в ноль установить, ставьте монитор.
Неужели Вы хотите сказать, что от конструкции
reg [3:0] ct
ct <= ct + 1'b1 в какие то дни недели по включению я не получу на выходе реакции делителя.
А если не стартует, так схему посмотрите. Почему при состоянии управляющего триггера в нуле схема работает, а в состоянии по включению питания в 1 не работает. В конце концов можно тумблером питания комплекса пощелкать. Туда сюда, туда сюда.
Что касается SRAM-FPGA, у Альтеры эту функцию уже несет связка FPGA – “конфигурационный чип” , то он отрабатывает перезагрузку по ошибке. На сброс конфигурационой памяти (теоретически) он скорее всего не расчитан.
Цитата(sazh @ Sep 9 2006, 08:33)

Неужели Вы хотите сказать, что от конструкции
reg [3:0] ct
ct <= ct + 1'b1 в какие то дни недели по включению я не получу на выходе реакции делителя.
Такая конструкция заработает (хотя не обязательно остальной схеме должно быть всё равно, с какого числа начнется счет).
А вот какая-нибудь state-машина запросто может оказаться в запрещенном состоянии, из которого нет выхода.
Цитата(Джеймс @ Sep 9 2006, 11:35)

Такая конструкция заработает (хотя не обязательно остальной схеме должно быть всё равно, с какого числа начнется счет).
А вот какая-нибудь state-машина запросто может оказаться в запрещенном состоянии, из которого нет выхода.
а разве для предотвращения последнего не будет достаточным:
Код
// example:
case (cостояние)
МОДА1: a = 1;
МОДА2 : a = 2;
...
default : cостояние = МОДА1;
endcase
т.е. переход из любого запрещенного в начальное состояние на следующем такте
Цитата(Doka @ Sep 9 2006, 03:27)

Цитата(Джеймс @ Sep 9 2006, 11:35)

Такая конструкция заработает (хотя не обязательно остальной схеме должно быть всё равно, с какого числа начнется счет).
А вот какая-нибудь state-машина запросто может оказаться в запрещенном состоянии, из которого нет выхода.
а разве для предотвращения последнего не будет достаточным:
Код
// example:
case (cостояние)
МОДА1: a = 1;
МОДА2 : a = 2;
...
default : cостояние = МОДА1;
endcase
т.е. переход из любого запрещенного в начальное состояние на следующем такте
не всегда это полезно, т.к. логика выхода стейт машины из запрещенного состояния может "весить" почти как логика всех остальных переходов. И эта логика достаточно сильно роняет тактовую.
не всегда это полезно, т.к. логика выхода стейт машины из запрещенного состояния может "весить" почти как логика всех остальных переходов. И эта логика достаточно сильно роняет тактовую.
Если логика роняет тактовую, мы ее поднимем. Давайте по существу уточним.
Вы предлагаете обязательный перебор всех состояний в конструкции case заменить внешним монитором на ресет по включению питания? Кто же тогда в боевой работе автомат из запрещенного состояния выводить будет.
> Кто же тогда в боевой работе автомат из запрещенного состояния выводить будет.
А как он там окажется при боевой работе? Нет, я серьезно, не понял :)
А как он там окажется при боевой работе? Нет, я серьезно, не понял

А я не понял, почему это он по включению там может оказаться, а в работе нет. При неполном описании.
Цитата(Джеймс @ Sep 9 2006, 14:51)

> Кто же тогда в боевой работе автомат из запрещенного состояния выводить будет.
А как он там окажется при боевой работе? Нет, я серьезно, не понял :)
да легко! ;-)
при экспуатации на борту МКА использование всяких супервизоров и wdt хорошее решение по защите от SEU.
Всё что содержит RAM как правило рано или поздно сбивается...
Кто и как обеспечивает живучесть своих изделий на базе FPGA?
Можно поставить супервизор на ядро питания ПЛИС. Ресет супервизора (с открытым стоком) на nConfig
(Altera). Эт если от сбоя по питанию защищаться. В довесок можно воспользоваться сигналами ПЛИС, отвечающими за конфигурацию и инициализацию. На внешней логике реализовать функцию
initdone & confdone. При успешной загрузке это лог 1. (Я на нее светодиод вешаю).
По идее при сбросе конфигурационной памяти это должно упасть в ноль. Можно добавить синхронный одновибратор, внешний, формирующий короткий импульс на nConfig (открытый сток) по перепаду initdone & confdone из единицы в ноль. Это просто мысли вслух.
Цитата(sazh @ Sep 9 2006, 14:55)

А как он там окажется при боевой работе? Нет, я серьезно, не понял.
А я не понял, почему это он по включению там может оказаться, а в работе нет. При неполном описании.
Если описание неполное, то значит гарантировать вообще ничего нельзя. Это проблема разработчика. Я например использую HDL designer и визуальное представление state-машин. За тем, чтобы описание было полным (по логике работы) следит генератор кода. А default я могу использовать, могу нет (у HDL Designer-а это опция “Recovery State”).
Почему state-машина может не оказаться в разрешенном состоянии при включении питания, уже написано выше.
P.S. Я конечно не учитываю влияние спец. факторов, излучений и связанных с ними мер, которые нужно принимать. Это все-таки уже другая тема...
Цитата(sazh @ Sep 9 2006, 05:46)

не всегда это полезно, т.к. логика выхода стейт машины из запрещенного состояния может "весить" почти как логика всех остальных переходов. И эта логика достаточно сильно роняет тактовую.
Если логика роняет тактовую, мы ее поднимем. Давайте по существу уточним.
Вы предлагаете обязательный перебор всех состояний в конструкции case заменить внешним монитором на ресет по включению питания? Кто же тогда в боевой работе автомат из запрещенного состояния выводить будет.
давайте уточним, я ничего не предлагаю, я всего лишь сказал свое мнение о способе описания КА, когда автомат описываеться указанным уважаемым Doka образом. Т.к. в этом случае будет сформированна лишняя логика переходов из некорректных состояний в определнное состояние. Это может нивелировать весь смысл какого нибудь "хитрого" способа кодирования состояний. например то же самое one-hot кодирование.
Легко исследовать, как влияет добавление этого перехода, можно в симплифае, описав автомат, используя перечисляемые типы и атрибут симплифая syn_encoding который, через задание параметра safe имплементирует это.
Также хотелось бы добавить что описывая автомат, используя перечисляемые типы данных (VHDL, SystemVerilog), в принципе нельзя перебрать все возможные состояния, т.к. неизвестна имплементация автомата.
Я считаю что: ни в "боевой" работе, ни после включения автомат не должен находится в некорректном состоянии. это должно решаться грамотным описанием автомата и построением окружения автомата, особено что касается метастабильности входов и синхронизации сигнала сброса.
А для систем, в которых цена сбоя очень высока применение различных мониторов и т.д. должно быть обязательным.
Serge V. Kior
Sep 9 2006, 17:50
Цитата(Джеймс @ Sep 8 2006, 23:44)

Цитата(Serge V. Kior @ Sep 8 2006, 15:32)

Я если надо обеспечить надежность (космос, оборона и т.п.) Ставлю Actel, у которого конфигурация хранится либо во Flash (если не RadHARD) либо вообще однократно программируется (В случае RadHARD).
Это несколько неверное положение, даже отводящее дискуссию в сторону.
Самое основное заключается в том, что монитор питания нужен именно Flash-FPGA, выход которого (выход монитора) должен использоваться в качестве Reset-а для кристалла (и естественно использоваться в проекте). Иначе есть шанс, что схема вообще не стартует (это встречается на практике, никаких ссылок на соответствующие документы Actel у меня нет, так что выполнить просьбу их предоставить я не могу).
Если честно, то я не совсем понял, что вы понимаете под Reset-ом кристала для Actel, так как в отличии от FLASH-FPGA других производителей конфигурация производится на этапе программирования,
и при подаче питания FPGA уже является сконфигурированной.
Так что Actel позволяет реализовывать проекты вообще без сигнала сброса (что мною лично было проверено).
И вообще интересно посмотреть, на прошивку, которая без сигнала Reset не стартует ;-)
По поводу запрещенных состояний автомата. Наша команда уже имела кучу удовольствия при разработке данного дивайса (http://www.videoscan.ru/page/788). Там не только автоматы в запрещенные состояния прыгали :-)
Монитор питания пришлось выбросить из схемы так как он нормально работать устройству не давал
Могу привести еще пяток подобных примеров.
Так что можно писать код не думая об устойчивости и ставить WDT, супервайзеры и т.д. , а можно наоборот.
Ps. Я не против мониторов питания и WDT как таковых и ставлю их, если в этом возникает разумная необходимость
PPs. Я за надежность. А 70% надежности системы это 100% Code Coveradged Testbench.
Если честно, то я не совсем понял, что вы понимаете под Reset-ом кристала для Actel, так как в отличии от FLASH-FPGA других производителей конфигурация производится на этапе программирования, и при подаче питания FPGA уже является сконфигурированной.
Так что Actel позволяет реализовывать проекты вообще без сигнала сброса (что мною лично было проверено).Совершенно верно, кристалл уже запрограммирован. НО, в каком состоянии окажутся триггеры – неизвестно. Хорошо, если для конкретного проекта (простого или сложного) это оказывается не важно. Но, - на это надеяться нельзя. А получить прошивку, которая не всегда будет стартовать при работе с Flash-FPGA (без принудительного внешнего сброса при подаче питания) очень просто, – любой проект со state-машиной, закодированной “one-hot”.
Для Flash-FPGA нужно следовать принципу ASIC:
“Reset All Sequential Elements”.http://www.chipdesignmag.com/fpgadeveloper/august2005.htmlЗамечу еще, что эта проблема не имеет отношения к качеству разработки RTL и верификации.
Что касается того, верить этому или нет... Решение всегда остается за разработчиком.
Я только лишь поделился опытом. А к Видеоскану отношусь очень уважительно!
При высказывании критики просьба указывать, используются или нет Flash-FPGA в проектах.
Ссылки.
A Power-On Reset (POR) Circuit for Actel DevicesGenerating Power on Reset for CoreMP7The state of a system at startup is an important consideration in designing most types of circuits. It is
usually desirable to provide an input signal at startup to reset synchronous circuitry. Otherwise, the system
may initially operate in an unpredictable fashion because flip-flops are not designed to power-on in any
particular state.
Harbour
Sep 10 2006, 05:19
Например у Альтеры в некоторых (Cyclone) SRAM девайсах есть специальная схема, которая постоянно вычисляет CRC config-memory, и в случае несовпадения выдает сигнал на зарезервированую ногу. Всякие примитивные watchdog'и смысла не имеют, так как никто не гарантирует, что при сбое откажет сразу вся FPGA - watchdog вполне может продолжать работать дальше.
Serge V. Kior
Sep 10 2006, 09:31
Цитата(Джеймс @ Sep 10 2006, 01:55)

Ссылки.
A Power-On Reset (POR) Circuit for Actel DevicesGenerating Power on Reset for CoreMP7The state of a system at startup is an important consideration in designing most types of circuits. It is
usually desirable to provide an input signal at startup to reset synchronous circuitry. Otherwise, the system
may initially operate in an unpredictable fashion because flip-flops are not designed to power-on in any
particular state.ОК. Полностью согласен с приведенными цитатами. Просто для меня была не совсем понятна фраза по повуду "старта" кристалла. Я Actel стал использовать только для того, чтобы при пропадании притания небыло гимороя с загрузкой. И я собственно полемизировал больше на эту тему.
Я никого не агитировал, что надо делать _все_ схемы без ресета. Я говорил о том, что схема сброса не
нужна самому Actel-у для того чтобы начать работу.
Сам я reset всегда завожу btw имменно в соответствии с POR_Circuit_AN.pdf (кроме примера приведенного в предыдущем посте, но это исключение из правила).
Можно сказать что это супервайзер :-)
Собственно топик не о ресете. Был задан вопрос по поводу надежности решений на RAM-FPGA, а также путей и способов повышения этой надежности, на что я предложил кардинальное решение проблемы: использовать в системах требующих повышенной надежности FLASH-FPGA или OTP-FPGA, где как класс отсутствует проблема запуска чипа и возможности деградации дизайна как такового в процессе работы.
TailWind
Sep 10 2006, 11:17
Чего фантазировать то?
Если это космос или жизнеобеспечение,
устройства перед выпуском проходят испытания!
На просадку питания, температуру, спец-воздействия...
Может оказаться что во время сбоя логичней не реконфигурировать ПЛИС,
а включать пожарную сигнализацию ;)))
Цитата(Harbour @ Sep 10 2006, 12:19)

Например у Альтеры в некоторых (Cyclone) SRAM девайсах есть специальная схема, которая постоянно вычисляет CRC config-memory, и в случае несовпадения выдает сигнал на зарезервированую ногу. Всякие примитивные watchdog'и смысла не имеют, так как никто не гарантирует, что при сбое откажет сразу вся FPGA - watchdog вполне может продолжать работать дальше.
Вот здесь можно об этом почитать
http://www.altera.com/literature/an/an357.pdf
В итоге пришел к такому выводу:
Внутри FPGA будет заложен тест охватывающий по максимуму работу схемы.
Результатом теста будет сигнал для сторожевого таймера.
Ну и само собой поставлю супервизор по питанию.
Кроме всего прочего хочу повесить в схему энергонезависимый элементик пишущий лог по сбросам, дабы было проще искать источники глюков в системе в целом.
В итоге пришел к такому выводу:
Внутри FPGA будет заложен тест охватывающий по максимуму работу схемы.
Результатом теста будет сигнал для сторожевого таймера.
Ну и само собой поставлю супервизор по питанию.
Кроме всего прочего хочу повесить в схему энергонезависимый элементик пишущий лог по сбросам, дабы было проще искать источники глюков в системе в целом.
////////////////////////////////////////////////
Конечно можно поставить сторожа добро сторожить. А кто самого сторожа сторожить будет.
Если поставить супервизор по питанию. Есть вероятность перезагрузки кристалла, даже когда этого не требуется. С какими последствиями, Вам виднее.
Тестовая схема внутри FPGA. Невозможно протестировать по полному охвату без введения дополнительных элементов, в которых нет необходимости (например мультиплексоры), которые будут влиять на временные параметры устройства. Тогда зачем. Это функция стендового оборудования.
Сторожевой таймер. По первому включению все контакты ввода вывода в третьем состоянии и подтянуты к vcc i/o (обычно, на новых кристаллах). Загрузочное ПЗУ еще пусто. Переодический сброс кристалла по этому поводу долго будет Вам не давать законфигурировать кристалл. Будете утверждать, пакет глючит. А когда все же запрограммируете ПЗУ, нужно будет рассчитать время прохождения теста, чтобы запрограммировать время реакции таймера на ожидание сброса.
Что интересно, например на примере семейства MAXII, которые Альтера позиционирует как будущее CPLD. Рекомендуется использовать и в медицине. Это структура FPGA с загрузчиком на кристалле.
Так вот в кристалле уже нет доступа к сигналам, отвечающим за успешную конфигурацию и инициализацию кристалла. Видимо фирма уверена, что сбой конфигурационной памяти менее вероятен, чем сбой в системе по причине внешних факторов.
vladec
Sep 11 2006, 06:22
WDT нужен в первую очередь в случаях медленного нарастания напряжения питания или сильного его дребезга, например при горячем включении. Мы используем MAX823 (с разными уровнями срабатывания от TEUK до LEUK) - пятиногий SOT-23 без дополнительных компонентов, выход "ОК" внешний ресет и вход WDT. Единственная проблема, если FPGA входит в контур JTAG программирования, то на время программирования надо иметь возможность блокировать WDT, например отрывая в воздух его WDT-вход или подавая на него внешнюю частоту в несколько мегагерц.
DSIoffe
Sep 11 2006, 09:21
Цитата
А кто его сбрасывает в интервале конфигурации и инициализации ПЛИСС?
А никто. У него период сброса можно выставить больше времени загрузки, и даже намного больше.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.