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?
Antworten:
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).
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.
Ausgangspins überstehen "oft" einen Kurzschlusszustand für einige Sekunden oder sogar Minuten. Aber nichts ist garantiert.
quelle
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)
quelle
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.
quelle
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 .
quelle