Ich versuche ein allgemeines Verständnis dafür zu bekommen, was passiert, wenn Sie ein FPGA für längere Zeit unprogrammiert lassen.
Angenommen, Sie haben ein FPGA und lassen es für einen langen Zeitraum (einige Minuten bis Stunden nach dem Einschalten) unprogrammiert, dh kein Bitstream darauf. Ist dies schlecht für das Gerät? Wird empfohlen, immer Bitstream auf einem eingeschalteten FPGA zu haben? Wie ist die allgemeine Meinung dazu?
Sind die Ergebnisse auf verschiedenen Geräten oder Herstellern unterschiedlich (Xilinx vs. Altera vs. andere)?
Zusätzliche Information:
Ich habe eine benutzerdefinierte SoC-Karte, die ein Xilinx Virtex-6-FPGA verwendet. Ich habe auch einen Xilinx ML605, den ich als Referenz verwende.
Benutzerdefiniertes Board: Ich schalte das Board ein. Ich stelle fest, dass ich eine kurze Zeit habe, um es mit XMD (Xilinx Microprocessor Debugger) zu programmieren. Wenn ich das 20-30-Sekunden-Fenster verliere, muss ich die Karte ausschalten und einschalten, bevor ich es erneut versuche. Dies ist bei einem ML605 nicht der Fall.
Wenn ich versuche, das benutzerdefinierte Board über XMD zu programmieren, erhalte ich Folgendes:
Error: Device Reset by JPROGRAM command, failed. INIT_COMPLETE did not go high.
Lass mich wissen was du denkst.
Antworten:
Dies ist eine interessante Frage. Aus persönlicher Erfahrung habe ich FPGAs stundenlang in einem nicht programmierten Zustand eingeschaltet gelassen, während ich den Rest der Schaltung überprüft habe, wenn eine neue Karte aus dem Montagehaus kommt. Ich habe keine nachteiligen Auswirkungen bemerkt. Aber ich habe ehrlich gesagt nie darüber nachgedacht.
Ich sah mich um, um eine Empfehlung eines FPGA-Herstellers zu finden, konnte aber keine finden. Die einzige Aussage, die ich zu diesem Status gefunden habe, stammt aus einem Lattice-Whitepaper und bezieht sich auf das Design des FPGA selbst und nicht darauf, wie es verwendet werden sollte:
Xilinx erwähnt ebenfalls den Ruhestrom, damit Sie Ihr Netzteil entsprechend gestalten können. Erwähnt aber nicht, wie sich das Gerät auf einen solchen Zustand auswirkt:
Es würde mich sehr interessieren zu hören, ob jemand ein Gerät beschädigt hat, weil es sich im Ruhezustand befindet. Aber ich denke, solange das Netzteil richtig auf das Gerät abgestimmt ist, sollte es kein Problem geben.
quelle
Ich beziehe mich auf das Spartan 3-Datenblatt , da dies das FPGA ist, mit dem ich am besten vertraut bin.
Wenn Sie sich Kapitel 2 (Funktionsbeschreibung) ansehen, enthält der Abschnitt "Konfiguration" einige Flussdiagramme. Abbildung 27 (Seite 50) zeigt das Flussdiagramm zum Laden aus Flash. Abbildung 28 zeigt das JTAG-Flussdiagramm.
Hier ist eine kurze Zusammenfassung.
1) Warten Sie, bis Vccint, Vccaux und Vcco die erforderlichen Werte erreicht haben.
2) Löschen Sie die Konfigurations-Latches
3) Warten Sie, bis INIT_B hoch geht. INIT_B ist ein Open-Drain-Ausgang, den ein externer Master niedrig halten kann, um die Konfiguration zu verzögern.
4) Sample Mode Pins. Dies bestimmt, ob Sie über JTAG oder Flash laden und ob Flash, ob das FPGA oder das Flash der Master ist.
5) Konfigurationsdatenrahmen laden.
6) Stellen Sie sicher, dass die CRC für die Datenrahmen korrekt ist. Wenn es NICHT korrekt ist, fährt das FPGA INIT_B auf Low, um einen CRC-Fehler anzuzeigen, und bricht den Start ab.
In Schritt 5 ist wahrscheinlich Ihre eigentliche Frage: Was passiert, wenn nichts geladen werden kann? Nun, Sie sollten nicht zu Schritt 5 gelangen , wenn Sie die Dinge richtig machen. Der Flash-Chip hält INIT_B niedrig, bis er bereit ist, Daten an das FPGA zu liefern. Wenn Sie JTAG verwenden, bin ich mir nicht sicher, ob Ihr JTAG-Programmierer INIT_B niedrig halten würde, aber wenn er das FPGA programmieren würde, würde er mit ziemlicher Sicherheit PROG_B aktivieren (indem er es niedrig treibt), was dazu führt, dass das FPGA zurückkehrt zu Schritt 2.
Wenn ich Sie wäre, würde ich das Signal INIT_B beim Einschalten erfassen, um zu sehen, was passiert. Wenn es niedrig startet, hoch geht und dann wieder niedrig geht, hat das FPGA die Startsequenz abgebrochen und Sie müssen wahrscheinlich PROG_B aktivieren, um das FPGA zurückzusetzen.
quelle
Die Standardkonfiguration ist so passiv wie möglich gestaltet, damit das Gerät universell einsetzbar ist.
Für die Altera Cyclone-Serie (mit der ich am meisten Erfahrung habe) bedeutet dies
Andere FPGA-Typen sollten ähnlich ruhig sein und nicht invertierte und invertierte Ausgänge bereitstellen, die dem Rest der Karte den Konfigurationsstatus anzeigen.
Das Gerät in diesem Zustand zu belassen ist harmlos, da der Kern ziemlich isoliert von der Außenwelt ist und nur die Klimmzüge einen kleinen Strom über sie haben können.
quelle