Вы действительно можете сломать ПЛИС, запрограммировав ее неправильно?

26

Вы действительно можете сломать ПЛИС, неправильно запрограммировав ее?

Я действительно программист. Ни для кого не секрет, что если ваше программное обеспечение неверно, вы можете уничтожить все виды важных данных и, возможно, даже разбить всю машину. Но действительно сложно физически повредить компьютер, просто запрограммировав его.

(Существует бесконечное количество инструкций Halt-and-Catch-Fire, или возможность перепрошить системную прошивку, чтобы заглушить материнскую плату, или запрограммировать неправильные значения в графическую карту, чтобы поджарить ваш монитор. Но все это, кажется, именно : слухи. И все о давно устаревшем оборудовании. Кажется, действительно очень сложно сломать современное компьютерное оборудование при плохом программировании.)

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

Например, вы могли бы написать некоторый VHDL, запрашивающий, чтобы два выхода были связаны вместе. Если бы они выводили разные логические уровни, я думаю, что это могло бы что-то поджарить. (Я надеюсь, что ваш инструмент синтеза будет кричать, чтобы вы этого не делали ... но я не знаю, реализуют ли такие инструменты этот уровень проверки ошибок.)

Также кажется вполне возможным случайно выбрать неправильную модель FPGA в инструменте синтеза, и, таким образом, в итоге вы пытаетесь запрограммировать ваш чип с помощью битового потока, предназначенного для какой-то совершенно другой модели. Я не знаю, что это будет делать, но я подозреваю, что это будет «плохо».

В этом отношении, вы могли бы определенно подключить чип FPGA к остальной части цепи неправильно. Например, если вы перепутаете номера выводов, вы можете столкнуться с тем, что плата пытается запустить вывод ввода-вывода, который также пытается использовать сама FPGA. Как правило, контакты ввода / вывода имеют какую-либо «защиту» от такой ошибки? Или чип просто поджарится?

MathematicalOrchid
источник
3
Некоторые FPGA имеют функции безопасности, которые позволяют загружать только зашифрованный и подписанный поток битов из внешней памяти. Ключи хранятся в ПЛИС и программируются только один раз. Если вы включили такую ​​функцию случайно или потеряли ключи, у вас, по сути, есть «кирпичная» ПЛИС.
Фило
2
«Но действительно сложно физически повредить компьютер, просто запрограммировав его». ты так думаешь? Когда-то давно драйвер должен был управлять головками жестких дисков - это означает, что вирус может играть на ваших жестких дисках с днем ​​рождения. BIOS управляет вентиляторами, позволяя ему вызвать повреждение из-за перегрева (может быть встроена некоторая защита, но если вы нагреете ее достаточно быстро, ее нельзя будет сохранить). BIOS может даже решить подать 20 В на ваш процессор .... Программное обеспечение может очень легко быть причиной повреждения компьютеров, если вы знаете, какое программное обеспечение использовать.
UKMonkey
1
@JoL , связанные :) retrocomputing.stackexchange.com/questions/6614/...
UKMonkey
2
@UKMonkey youtube.com/watch?v=CsQd2n99zS4
Джошуа
2
@UKMonkey В зависимости от того, как настроена ваша система, я вполне уверен, что вы можете плавить любой процессор с достаточным усилием. Большинство компьютеров - AFAIK, которые не имеют чисто пассивного охлаждения, - имеют возможность управлять системой охлаждения. Вы можете отключить термическое регулирование, другую линию защиты, через BIOS, что подразумевает, что это может быть сделано программно ядром. В этом конкретном случае это должно быть преднамеренно, но вполне возможно.
Фонд Моника иск

Ответы:

31

Также кажется вполне возможным случайно выбрать неправильную модель FPGA в инструменте синтеза, и, таким образом, в итоге вы пытаетесь запрограммировать ваш чип с помощью битового потока, предназначенного для какой-то совершенно другой модели.

Обычно программное обеспечение для программирования запрашивает деталь, которая запрограммирована на предмет номера детали, и отказывается программировать в потоке битов, предназначенном для другой модели ПЛИС.

Сама часть также обычно отказывается запускаться, если она запрограммирована с битовым потоком, который не совсем правильной длины (и очень редко битовые потоки для разных чипов имеют одинаковую длину).

Вы могли бы определенно неправильно подключить чип FPGA к остальной части схемы. Например, если вы перепутаете номера выводов, вы можете столкнуться с тем, что плата пытается запустить вывод ввода-вывода, который также пытается использовать сама FPGA.

Это наиболее вероятный способ повредить ПЛИС неправильным программированием.

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

Как правило, контакты ввода / вывода имеют какую-либо «защиту» от такой ошибки? Или чип просто поджарится?

Выходные контакты «часто» выдерживают короткое замыкание в течение нескольких секунд или даже минут. Но ничего не гарантировано.

Фотон
источник
1
Интересный. Обычно для ПЛИС требуется активное охлаждение? О, я полагаю, это целый вопрос сам по себе. (И я предполагаю , что ответ зависит от многих вещей - таких , как купили ли вы £ 15 или £ 15 000 FPGA с!)
MathematicalOrchid
4
@MaturgicalOrchid, не обязательно активное охлаждение, но радиаторы и нагнетаемый воздух довольно распространены. Поставщики ПЛИС обычно предоставляют очень сложную электронную таблицу, чтобы помочь определить (на основе детали, конструкции, тактовой частоты и т. Д.), Какой большой радиатор и какой большой вентилятор необходимы.
Фотон
3
@MaturgicalOrchid Я использовал FPGA в качестве счетчика частоты для измерения прямоугольных волн до 250 МГц. Это требует охлаждения , как я измерил часы 220 МГц, но вместо создания надлежащего охлаждения я просто сделал так , чтобы не измерить дольше , чем 5 секунд. Он потреблял 5 Вт при 220 МГц, а ИС составляла около 2 см ^ 2. Стало очень жарко, очень быстро.
Гарри Свенссон
@HarrySvensson Это похоже на сумасшедшее количество тепла для частотомера.
user253751
1
@HarrySvensson Это все еще безумие, что это должно занять 5 Вт.
user253751
20

За некоторыми отмеченными исключениями, инструменты, как правило, не дают вам доступа к фактическим кремниевым примитивам, поэтому инженеру конечного пользователя сложно загрузить электрически неверный дизайн * в ПЛИС на основе SRAM, за исключением, возможно, непреднамеренного обнаружения инструмента ошибка.

Флэш-ПЛИС, возможно, могут перепрограммироваться из-за определенных недопустимых нагрузок. OTP FPGA неявно «повреждаются» даже при действительной загрузке конфигурации, поскольку ее невозможно изменить.

В конечном счете, то, что ближе всего к тому, о чем вы, похоже, спрашиваете, и к вашему примеру с HCF, - это конфигурация, которая создает непереносимый тепловой стресс. Энергопотребление напрямую зависит от тактовой частоты и громкости * активности используемой логики, поэтому, если вы можете заставить инструменты бесполезно переключать большинство триггеров на чипе с максимальной тактовой частотой (есть способы ...), тогда вы можете произвести довольно эффективный обогреватель, который превосходит большинство систем охлаждения для обычного использования. Тогда это просто вопрос, если что-то защитно отключает это, прежде чем готовить. И, конечно, в инструментах есть модели оценки мощности, которые, скорее всего, достаточно предсказуемы, если вы не врете им о предоставленном тактовом сигнале.

(* Существует один интересный класс электрических неполадок, которые вы можете вызвать, обманывая инструменты, и это не обязательно физически разрушительно, но все же удивительно. Если вы используете часы, отличные от тех, о которых вы говорили, или просто нестабильные, Вы можете нарушить синхронизацию установки адреса в ячейках ОЗУ синхронного блока и сделать что-то вроде закорачивания их и повреждения их содержимого - так, например, вы можете увидеть содержимое чего-то, обозначенного ПЗУ в проекте, которое фактически изменяется во время выполнения, просто пытаясь чтобы прочитать его с плохими часами. Но я не считаю , что это физически разрушительное)

Крис Страттон
источник
2
Вы можете зацепить каждый флоп вместе с инвертором между ними и генерировать много тепла. Есть ли в ПЛИС защитные схемы для модуляции часов, если они становятся слишком горячими? Дерево часов часто находится вне их контроля.
Бен Джексон
@BenJackson: Разве дерево часов не является более или менее жестким, когда каждый элемент логики может выбирать из нескольких разных деревьев? Сам источник синхронизации может быть вне их контроля, но они могут просто отключить буферы дерева часов, если он станет слишком горячим. Или я думаю, они могли бы отключить питание.
Майкл
5

Скорее всего, это нарушение текущего рейтинга GPIO из-за того, что он уже нажал на булавку. Некоторые FPGA имеют настраиваемые ограничения тока или изменяемые драйверы вывода, так что это может помочь или навредить вам, если вы не правильно настроите карту портов. В любом случае, перед программированием вам следует дважды проверить список портов, так как ошибки, такие как замена выводов, могут занять несколько часов, лучше опередить ошибки и точно знать, для чего предназначена прошивка. (если вам не нравится трепет от поиска ошибки)

HDL сами по себе обычно не позволяют подключать два выхода к одному и тому же проводу и прекратят синтезировать и заставят вас исправить ошибку, если у вас есть код, который это делает.

Одно место, которое может вызвать проблемы, это двунаправленные порты, но на них должны быть установлены ограничивающие резисторы тока.

Скачок напряжения
источник
Повторно « подключите два выхода к одному проводу ». Разве вы не можете соединить выходы двух буферов с тремя состояниями вместе, если пообещаете инструменту синтеза никогда не включать оба одновременно? Может ли инструмент проверить, что вы сдерживаете свое обещание, даже если логика, управляющая «включением» буферов, очень запутана?
Эдгар Бонет
@ EdgarBonet Да, вы можете вызвать конфликты таким образом. Нет необходимости в том, чтобы логически принудительно выводить выходные данные позволяли быть взаимоисключающими, если какая-либо логика (которая может включать в себя логику с полным состоянием и / или аппаратное / программное обеспечение, внешнее по отношению к ПЛИС) приводит к активизации двух конфликтующих OE, ничто не может остановить это, если только логика для OE была явно закодирована, чтобы предотвратить это.
Родни
@EdgarBonet Вы можете, но обычно трехсторонние провода являются внешними по отношению к ПЛИС, так как вам нужен драйвер / трансивер, и они есть на GPIO. Я никогда не проектировал с тремя состояниями в ПЛИС, и я не думаю, что аппаратное обеспечение в ПЛИС поддерживает три состояния. Вы можете включить два буфера одновременно, физический дизайн должен помешать вам сжечь их.
скачок напряжения
4

Как и в случае микроконтроллеров, вы всегда можете превысить максимальный общий ток для каждого банка ввода-вывода, потребляя максимальный ток (или больше) от каждого контакта. Если FPGA не имеет встроенной защиты от такой ситуации, это может привести к повреждению.

Другой возможностью является создание комбинаторной петли, которая либо периодически становится метастабильной, либо колеблется с гораздо более высокой частотой, чем та, на которую рассчитана матрица ПЛИС (несколько ГГц). Это приведет к очень локальному перегреву, который может привести к физическому повреждению, прежде чем сработает тепловая защита всей микросхемы. То есть, если существует такая защита: если перегрев не приводит к отключению, вы можете просто придумать очень энергозатратная схема и пусть она работает при недостаточном охлаждении.

Динамическая реконфигурация может также обойти защиту от недопустимой конфигурации внутренних примитивов, которая может применяться инструментами разработки в случае статической конфигурации. Например, вы можете настроить ФАПЧ таким образом, чтобы он превышал его максимальную внутреннюю частоту, или питал одну и ту же линию межсоединения одновременно двумя источниками, или заставлял вывод из высоковольтного блока ввода-вывода использовать свой низковольтный приемопередатчик, такой как LVDS. ,

Дмитрий Григорьев
источник