Kann man ein FPGA tatsächlich kaputt machen, indem man es falsch programmiert?


26

Können Sie tatsächlich brechen ein FPGA , indem sie es falsch programmiert?

Ich bin wirklich ein Software-Typ. Es ist kein Geheimnis, dass Sie, wenn Ihre Software falsch ist, alle möglichen wichtigen Daten zerstören und möglicherweise sogar die gesamte Maschine zum Absturz bringen können. Aber es ist wirklich schwierig, einen Computer nur durch Programmierung physisch zu beschädigen .

(Es gibt endlose Unmengen von Hinweisen auf "Halt and Catch Fire" oder die Möglichkeit, die Systemfirmware neu zu installieren, um das Motherboard zu beschädigen, oder falsche Werte in die Grafikkarte zu programmieren, um Ihren Monitor zu braten. Aber all dies scheint genau das zu sein.) : Gerüchte. Und alles über veraltete Hardware. Es scheint wirklich sehr, sehr schwer zu sein, moderne Computer mit schlechter Programmierung zu beschädigen.)

Mit einem FPGA verdrahten Sie (zumindest nominal) einzelne Schaltkreise. Es erscheint durchaus plausibel, dass es im Fehlerfall zu Sachschäden kommen kann.

Beispielsweise könnten Sie eine VHDL schreiben, die anfordert, dass zwei Ausgänge miteinander verbunden werden. Wenn sie unterschiedliche Logikpegel ausgeben, stelle ich mir vor, das würde wahrscheinlich etwas braten. (Ich würde hoffen, dass Ihr Synthese-Tool Sie anschreien würde, dies nicht zu tun ... aber ich weiß nicht, ob solche Tools tatsächlich diese Ebene der Fehlerprüfung implementieren.)

Es scheint auch durchaus möglich zu sein, versehentlich das falsche FPGA-Modell im Synthesizer auszuwählen und so zu versuchen, Ihren Chip mit einem Bitstream zu programmieren, der für ein völlig anderes Modell bestimmt ist. Ich weiß nicht, was das tun würde, aber ich vermute, es wäre "schlecht".

In diesem Fall können Sie den FPGA-Chip definitiv falsch an den Rest der Schaltung anschließen. Wenn Sie beispielsweise die Pin-Nummern verwechseln, versucht die Karte möglicherweise, einen E / A-Pin anzusteuern, den auch das FPGA selbst anzusteuern versucht. Haben die I / O-Pins normalerweise einen "Schutz" gegen einen solchen Fehler? Oder brät der Chip nur?


3
Einige FPGAs verfügen über Sicherheitsfunktionen, mit denen nur verschlüsselte und signierte Bitströme aus dem externen Speicher geladen werden können. Die Schlüssel werden im FPGA gespeichert und sind nur einmal programmierbar. Wenn Sie eine solche Funktion versehentlich aktivieren oder die Schlüssel verlieren, verfügen Sie im Wesentlichen über ein "gemauertes" FPGA.
Filo

2
"Aber es ist wirklich schwierig, einen Computer nur durch Programmierung physisch zu beschädigen." das denkst du? Es war einmal eine Aufgabe des Treibers, die Festplattenköpfe zu kontrollieren - was bedeutet, dass ein Virus auf Ihren Festplatten alles Gute zum Geburtstag spielen kann. Das BIOS steuert die Lüfter, sodass sie durch Überhitzung beschädigt werden können (es ist möglicherweise ein gewisser Schutz eingebaut, aber wenn Sie es schnell genug erhitzen, kann es nicht gespeichert werden). Das BIOS kann sogar entscheiden, 20 V in Ihre CPU einzuspeisen. Software kann sehr leicht für die Beschädigung von Computern verantwortlich sein, wenn Sie wissen, mit welcher Software Sie spielen müssen.
UKMonkey



2
@UKMonkey Abhängig von der Konfiguration Ihres Systems bin ich mir ziemlich sicher, dass Sie jede CPU mit genügend Aufwand zum Schmelzen bringen können. Die meisten Computer - AFAIK alles, was nicht rein passiv gekühlt wird - können das Kühlsystem steuern. Sie können das Thermal Throttling, eine weitere Verteidigungslinie, über das BIOS deaktivieren, was impliziert, dass es programmgesteuert vom Kernel ausgeführt werden kann. In diesem speziellen Fall müsste es beabsichtigt sein, aber es ist definitiv möglich.
Fund Monica Klage

Antworten:


31

Es scheint auch durchaus möglich zu sein, versehentlich das falsche FPGA-Modell im Synthesizer auszuwählen und so zu versuchen, Ihren Chip mit einem Bitstream zu programmieren, der für ein völlig anderes Modell bestimmt ist.

In der Regel fragt die Programmiersoftware das zu programmierende Teil nach seiner Teilenummer ab und weigert sich, einen für ein anderes FPGA-Modell bestimmten Bitstream zu programmieren.

Das Teil selbst lehnt im Allgemeinen auch den Start ab, wenn es mit einem Bitstream programmiert ist, der nicht genau die richtige Länge hat (und es ist sehr ungewöhnlich, dass Bitstreams für verschiedene Chips die gleiche Länge haben).

Sie könnten den FPGA-Chip definitiv falsch an den Rest der Schaltung anschließen. Wenn Sie beispielsweise die Pin-Nummern verwechseln, versucht die Karte möglicherweise, einen E / A-Pin anzusteuern, den auch das FPGA selbst anzusteuern versucht.

Dies ist die wahrscheinlichste Möglichkeit, ein FPGA mit falscher Programmierung zu beschädigen.

Eine andere Möglichkeit besteht darin, ein sehr ressourcenintensives Design zu programmieren und mit einer hohen Frequenz auszuführen (so dass viel Strom verbraucht wird) und es dann auf einem FPGA ohne ausreichenden Kühlkörper auszuführen.

Haben die I / O-Pins normalerweise einen "Schutz" gegen einen solchen Fehler? Oder brät der Chip nur?

Ausgangspins überstehen "oft" einen Kurzschlusszustand für einige Sekunden oder sogar Minuten. Aber nichts ist garantiert.


1
Interessant. Ist es üblich, dass FPGAs eine aktive Kühlung benötigen? Oh, ich nehme an, das ist eine ganz eigene Frage. (Und ich denke, die Antwort hängt von vielen Dingen ab - z. B. davon, ob Sie ein 15-Pfund- oder ein 15.000-Pfund-FPGA gekauft haben!)
MathematicalOrchid,

4
@MathematicalOrchid, Nicht unbedingt aktive Kühlung, aber Kühlkörper und Druckluft sind ziemlich häufig. Die FPGA-Anbieter stellen in der Regel eine sehr komplexe Tabelle zur Verfügung, um zu bestimmen (basierend auf dem Teil, dem Design, der Taktfrequenz usw.), wie groß ein Kühlkörper und wie groß ein Lüfter sein muss.
Das Photon

3
@MathematicalOrchid Ich habe ein FPGA als Frequenzzähler zum Messen von Rechteckwellen bis 250 MHz verwendet. Es benötigte Kühlung , wie ich einen 220 - MHz - Takt gemessen, sondern eigentliche Einrichtung Kühl Ich habe nur um sicher zu nicht mehr messen als 5 Sekunden. Es verbrauchte 5 W bei 220 MHz und der IC war ungefähr 2 cm 2 groß. Es wurde sehr schnell sehr heiß.
Harry Svensson

@HarrySvensson Das scheint eine verrückte Menge an Wärme für einen Frequenzzähler zu sein.
user253751

1
@HarrySvensson Es ist immer noch verrückt, dass das 5 Watt dauern sollte.
user253751

20

Mit wenigen Ausnahmen haben Sie mit Tools im Allgemeinen keinen Zugriff auf die eigentlichen Siliziumprimitive. Daher ist es für einen Endbenutzer-Ingenieur schwierig, ein elektrisch ungültiges Design * in ein SRAM-basiertes FPGA zu laden, außer wenn Sie möglicherweise versehentlich ein Tool entdecken Fehler.

Flash-basierte FPGAs können möglicherweise durch bestimmte ungültige Ladevorgänge in ihrer Neuprogrammierbarkeit beeinträchtigt werden. OTP-FPGAs werden implizit durch eine gültige Konfigurationslast "beschädigt" , da sie niemals geändert werden können.

Letztendlich wäre das, was dem, wonach Sie zu fragen scheinen, und Ihrem HCF-Beispiel am nächsten kommt, eine Konfiguration, die eine unerträgliche thermische Belastung erzeugt. Der Stromverbrauch hängt ganz direkt von der Taktrate und der Lautstärke * der verwendeten Logik ab. Wenn Sie also die Werkzeuge dazu verleiten können, die meisten Flip-Flops auf dem Chip bei maximalem Takt (es gibt Möglichkeiten ...) unnötig umzuschalten, können Sie produzieren Eine ziemlich effektive Heizung, die die meisten Kühlsysteme für den normalen Gebrauch übertreffen würde. Dann ist es nur eine Frage, ob etwas es schützend abschaltet, bevor es kocht. Und natürlich gibt es in den Tools Modelle zur Leistungsschätzung, die wahrscheinlich eine vernünftige Prognose liefern, wenn Sie sie nicht über das bereitgestellte Taktsignal belügen.

(* Es gibt eine interessante Klasse von Problemen mit der Elektrik, die Sie verursachen können, wenn Sie die Werkzeuge anlügen. Diese sind nicht unbedingt physisch destruktiv, aber dennoch überraschend. Wenn Sie eine Uhr füttern, die sich von Ihrer Vorstellung unterscheidet oder einfach instabil ist, Sie können das Adress-Setup-Timing auf den synchronen Block-RAM-Zellen verletzen und die Kurzschlüsse und den Inhalt der Zellen beschädigen. So können Sie beispielsweise feststellen, dass sich der Inhalt eines bestimmten ROMs im Design zur Laufzeit ändert, indem Sie einfach versuchen es mit einer schlechten Uhr zu lesen , aber ich glaube nicht, dass dies physisch destruktiv ist)


2
Sie können jeden Flop mit einem Wechselrichter dazwischen verketten und viel Wärme erzeugen. Verfügen FPGAs über Schutzschaltungen, um die Uhr zu modulieren, wenn sie zu heiß werden? Der Uhrenbaum befindet sich häufig außerhalb ihrer Kontrolle.
Ben Jackson

@BenJackson: Ist der Clock-Baum nicht mehr oder weniger fest verdrahtet, sodass jedes Logic-Element zwischen mehreren verschiedenen Bäumen auswählen kann? Die Clock-Quelle selbst kann sich ihrer Kontrolle entziehen, sie kann jedoch einfach die Clock-Tree-Puffer ausschalten, wenn es zu heiß wird. Oder sie könnten die Versorgung abschalten.
Michael

5

Am wahrscheinlichsten ist es, die aktuelle Bewertung von GPIOs zu verletzen, indem ein Pin angesteuert wird, der bereits angesteuert wird. Einige FPGAs verfügen über einstellbare Strombegrenzungen oder veränderbare Ausgabetreiber. Dies kann Ihnen also entweder helfen oder schaden, wenn Sie Ihre Port-Map nicht richtig erstellt haben. Sie sollten Ihre Port-Liste trotzdem vor dem Programmieren überprüfen, da das Beheben von Fehlern wie dem Vertauschen von Pins Stunden in Anspruch nehmen kann. Es ist am besten, den Fehlern einen Schritt voraus zu sein und genau zu wissen, was die Firmware tun soll. (es sei denn, Ihnen gefällt der Nervenkitzel, einen Fehler zu finden)

HDLs alleine lassen normalerweise nicht zu, dass Sie zwei Ausgänge an denselben Draht anschließen. Sie hören auf zu synthetisieren und korrigieren Ihren Fehler, wenn Sie Code haben, der dies tut.

Ein Ort, der Probleme verursachen könnte, sind bidirektionale Ports, auf denen Sie jedoch Strombegrenzungswiderstände haben sollten.


Erneutes " Verbinden von zwei Ausgängen mit derselben Leitung ": Können Sie die Ausgänge von zwei Puffern mit drei Zuständen nicht miteinander verbinden, wenn Sie dem Synthesizer versprechen, niemals beide gleichzeitig zu aktivieren? Kann das Tool überprüfen, ob Sie Ihr Versprechen halten, auch wenn die Logik zum Aktivieren der Puffer sehr kompliziert ist?
Edgar Bonet

@EdgarBonet yup Sie können auf diese Weise Konflikte verursachen. Es ist nicht erforderlich, die Ausgabe so zu erzwingen, dass sie sich gegenseitig ausschließt. Wenn eine Logik (die eine Statuslogik und / oder Hardware / Software außerhalb des FPGAs enthalten kann) dazu führt, dass zwei in Konflikt stehende Betriebsumgebungen aktiv werden, kann sie nur durch Die Logik für die Betriebsumgebungen wurde explizit codiert, um dies zu verhindern.
Rodney

@EdgarBonet Sie können, aber normalerweise befinden sich die drei Statusdrähte außerhalb des FPGA, da Sie einen Treiber / Transceiver benötigen und diese auf GPIOs zu finden sind. Ich habe in einem FPGA noch nie mit threestate entworfen und ich glaube nicht, dass Hardware in einem FPGA drei Zustände unterstützt. Sie können zwei Puffer gleichzeitig einschalten. Das physische Design sollte verhindern, dass Sie sie verbrennen.
Voltage Spike

4

Wie bei Mikrocontrollern können Sie den maximalen Gesamtstrom pro E / A-Bank immer überschreiten, indem Sie einen maximalen Strom (oder mehr) von jedem Pin abziehen. Dies kann zu Schäden führen, es sei denn, der FPGA verfügt über einen integrierten Schutz vor solchen Situationen.

Eine andere Möglichkeit besteht darin, eine kombinatorische Schleife zu erstellen, die entweder periodisch metastabil wird oder mit einer viel höheren Frequenz oszilliert als die FPGA-Struktur (mehrere GHz). Dies führt zu einer örtlich begrenzten Überhitzung, die physischen Schaden anrichten kann, bevor der chipweite Wärmeschutz einsetzt. Vorausgesetzt, es liegt ein solcher Schutz vor: Wenn eine Übertemperatur nicht zum Abschalten führt, können Sie sich einfach einen einfallen lassen sehr leistungshungrige Schaltung und lassen Sie es mit unzureichender Kühlung laufen.

Die dynamische Neukonfiguration kann auch den Schutz vor ungültiger Konfiguration interner Grundelemente umgehen, die von den Entwicklungstools im Falle einer statischen Konfiguration erzwungen werden können. Sie können beispielsweise eine PLL so konfigurieren, dass ihre maximale interne Frequenz überschritten wird, oder dieselbe Verbindungsleitung von zwei Quellen gleichzeitig speisen oder einen Pin von einer Hochspannungs-E / A-Bank erzwingen, um ihren Niederspannungs-Transceiver wie LVDS zu verwenden .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.