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?