Вы действительно можете сломать ПЛИС, неправильно запрограммировав ее?
Я действительно программист. Ни для кого не секрет, что если ваше программное обеспечение неверно, вы можете уничтожить все виды важных данных и, возможно, даже разбить всю машину. Но действительно сложно физически повредить компьютер, просто запрограммировав его.
(Существует бесконечное количество инструкций Halt-and-Catch-Fire, или возможность перепрошить системную прошивку, чтобы заглушить материнскую плату, или запрограммировать неправильные значения в графическую карту, чтобы поджарить ваш монитор. Но все это, кажется, именно : слухи. И все о давно устаревшем оборудовании. Кажется, действительно очень сложно сломать современное компьютерное оборудование при плохом программировании.)
С ПЛИС вы (по крайней мере, номинально) соединяете отдельные цепи вместе. Кажется вполне вероятным, что в случае ошибки может возникнуть физический ущерб.
Например, вы могли бы написать некоторый VHDL, запрашивающий, чтобы два выхода были связаны вместе. Если бы они выводили разные логические уровни, я думаю, что это могло бы что-то поджарить. (Я надеюсь, что ваш инструмент синтеза будет кричать, чтобы вы этого не делали ... но я не знаю, реализуют ли такие инструменты этот уровень проверки ошибок.)
Также кажется вполне возможным случайно выбрать неправильную модель FPGA в инструменте синтеза, и, таким образом, в итоге вы пытаетесь запрограммировать ваш чип с помощью битового потока, предназначенного для какой-то совершенно другой модели. Я не знаю, что это будет делать, но я подозреваю, что это будет «плохо».
В этом отношении, вы могли бы определенно подключить чип FPGA к остальной части цепи неправильно. Например, если вы перепутаете номера выводов, вы можете столкнуться с тем, что плата пытается запустить вывод ввода-вывода, который также пытается использовать сама FPGA. Как правило, контакты ввода / вывода имеют какую-либо «защиту» от такой ошибки? Или чип просто поджарится?
Ответы:
Обычно программное обеспечение для программирования запрашивает деталь, которая запрограммирована на предмет номера детали, и отказывается программировать в потоке битов, предназначенном для другой модели ПЛИС.
Сама часть также обычно отказывается запускаться, если она запрограммирована с битовым потоком, который не совсем правильной длины (и очень редко битовые потоки для разных чипов имеют одинаковую длину).
Это наиболее вероятный способ повредить ПЛИС неправильным программированием.
Другим способом может быть программирование очень ресурсоемкого проекта и запуск его на высокой частоте (чтобы потреблялась высокая мощность), а затем запуск его на ПЛИС без надлежащего радиатора.
Выходные контакты «часто» выдерживают короткое замыкание в течение нескольких секунд или даже минут. Но ничего не гарантировано.
источник
За некоторыми отмеченными исключениями, инструменты, как правило, не дают вам доступа к фактическим кремниевым примитивам, поэтому инженеру конечного пользователя сложно загрузить электрически неверный дизайн * в ПЛИС на основе SRAM, за исключением, возможно, непреднамеренного обнаружения инструмента ошибка.
Флэш-ПЛИС, возможно, могут перепрограммироваться из-за определенных недопустимых нагрузок. OTP FPGA неявно «повреждаются» даже при действительной загрузке конфигурации, поскольку ее невозможно изменить.
В конечном счете, то, что ближе всего к тому, о чем вы, похоже, спрашиваете, и к вашему примеру с HCF, - это конфигурация, которая создает непереносимый тепловой стресс. Энергопотребление напрямую зависит от тактовой частоты и громкости * активности используемой логики, поэтому, если вы можете заставить инструменты бесполезно переключать большинство триггеров на чипе с максимальной тактовой частотой (есть способы ...), тогда вы можете произвести довольно эффективный обогреватель, который превосходит большинство систем охлаждения для обычного использования. Тогда это просто вопрос, если что-то защитно отключает это, прежде чем готовить. И, конечно, в инструментах есть модели оценки мощности, которые, скорее всего, достаточно предсказуемы, если вы не врете им о предоставленном тактовом сигнале.
(* Существует один интересный класс электрических неполадок, которые вы можете вызвать, обманывая инструменты, и это не обязательно физически разрушительно, но все же удивительно. Если вы используете часы, отличные от тех, о которых вы говорили, или просто нестабильные, Вы можете нарушить синхронизацию установки адреса в ячейках ОЗУ синхронного блока и сделать что-то вроде закорачивания их и повреждения их содержимого - так, например, вы можете увидеть содержимое чего-то, обозначенного ПЗУ в проекте, которое фактически изменяется во время выполнения, просто пытаясь чтобы прочитать его с плохими часами. Но я не считаю , что это физически разрушительное)
источник
Скорее всего, это нарушение текущего рейтинга GPIO из-за того, что он уже нажал на булавку. Некоторые FPGA имеют настраиваемые ограничения тока или изменяемые драйверы вывода, так что это может помочь или навредить вам, если вы не правильно настроите карту портов. В любом случае, перед программированием вам следует дважды проверить список портов, так как ошибки, такие как замена выводов, могут занять несколько часов, лучше опередить ошибки и точно знать, для чего предназначена прошивка. (если вам не нравится трепет от поиска ошибки)
HDL сами по себе обычно не позволяют подключать два выхода к одному и тому же проводу и прекратят синтезировать и заставят вас исправить ошибку, если у вас есть код, который это делает.
Одно место, которое может вызвать проблемы, это двунаправленные порты, но на них должны быть установлены ограничивающие резисторы тока.
источник
Как и в случае микроконтроллеров, вы всегда можете превысить максимальный общий ток для каждого банка ввода-вывода, потребляя максимальный ток (или больше) от каждого контакта. Если FPGA не имеет встроенной защиты от такой ситуации, это может привести к повреждению.
Другой возможностью является создание комбинаторной петли, которая либо периодически становится метастабильной, либо колеблется с гораздо более высокой частотой, чем та, на которую рассчитана матрица ПЛИС (несколько ГГц). Это приведет к очень локальному перегреву, который может привести к физическому повреждению, прежде чем сработает тепловая защита всей микросхемы. То есть, если существует такая защита: если перегрев не приводит к отключению, вы можете просто придумать очень энергозатратная схема и пусть она работает при недостаточном охлаждении.
Динамическая реконфигурация может также обойти защиту от недопустимой конфигурации внутренних примитивов, которая может применяться инструментами разработки в случае статической конфигурации. Например, вы можете настроить ФАПЧ таким образом, чтобы он превышал его максимальную внутреннюю частоту, или питал одну и ту же линию межсоединения одновременно двумя источниками, или заставлял вывод из высоковольтного блока ввода-вывода использовать свой низковольтный приемопередатчик, такой как LVDS. ,
источник