Was passiert, wenn ein FPGA eingeschaltet und unkonfiguriert bleibt?

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 eine lange Zeit unprogrammiert (einige Minuten bis Stunden nach dem Einschalten), dh kein Bitstream darauf, ist das schlecht für das Gerät? Wird empfohlen, immer etwas Bitstream auf einem eingeschalteten FPGA zu haben? Wie ist die allgemeine Meinung dazu?

Unterscheiden sich die Ergebnisse auf verschiedenen Geräten oder Herstellern (Xilinx vs. Altera vs. andere)?


Zusätzliche Information:

Ich habe ein benutzerdefiniertes SoC-Board, das ein Xilinx Virtex-6 FPGA verwendet. Ich habe auch einen Xilinx ML605, den ich zu Referenzzwecken verwende.

Benutzerdefiniertes Board: Ich schalte das Board ein. Ich bemerke, 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 das Board aus- und wieder einschalten, bevor ich es erneut versuche. Bei einem ML605 passiert das nicht.

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.

Sie betonen in Ihrer Frage und in Ihrer Bearbeitung den "langen Zeitraum". Ist es wirklich wichtig, ob es ein paar Sekunden oder ein paar Stunden sind? ich denke nicht das es geht..
Ich sehe ein Phänomen auf einem benutzerdefinierten FPGA-Board, bei dem ich ein Programmierfenster von 20 bis 30 Sekunden bekomme. Wenn ich in diesem Fenster nicht programmiere, kann ich nicht erfolgreich programmieren. Das zentrale Thema meiner Frage ist nicht die Zeitdauer, sondern das Phänomen zu verstehen.
Kannst du dich überhaupt mit dem Gerät verbinden? Oder schlägt es einfach fehl, wenn Sie versuchen zu programmieren? Welchen Fehler gibt der Programmierer aus?
Programmieren Sie das FPGA direkt über JTAG oder laden Sie zuerst den Flash-Chip und lassen dann das FPGA darüber konfigurieren?
@fpga_boffin, könnten Sie diese Details bitte zu Ihrer Frage hinzufügen?
Die Altera-FPGAs setzen ihren Pin beim Einschalten auf drei Zustände. Sie verlassen diesen Zustand erst, wenn das Gerät konfiguriert wurde.

Antworten (3)

Dies ist eine interessante Frage. Aus eigener Erfahrung habe ich FPGAs stundenlang in einem unprogrammierten Zustand eingeschaltet gelassen, während ich den Rest der Schaltung überprüfte, wenn eine neue Platine aus dem Montagehaus kam. Ich habe keine nachteiligen Auswirkungen dadurch bemerkt. Aber darüber habe ich ehrlich gesagt noch nie nachgedacht.

Ich habe mich umgesehen, um zu versuchen, eine Empfehlung von einem FPGA-Hersteller zu finden, konnte aber keine finden. Die einzige Aussage, die ich zu diesem Zustand gefunden habe, stammt aus einem Lattice-Whitepaper und betrifft das Design des FPGA selbst und nicht, wie es verwendet werden sollte:

Der Stromverbrauch des vorprogrammierten statischen Ruhegeräts ist die Menge an Strom, die vom FPGA verbraucht wird, bevor das Gerät programmiert wird. Für den Ruhestromverbrauch des Geräts befindet sich das FPGA in einem nicht programmierten Zustand, wurde jedoch mit Strom versorgt. Es ist wichtig, dass das Gerät während dieser Zeit keinen nennenswerten Strom verbraucht, da das FPGA-Gerät konzeptionell übermäßig viel Strom ziehen und möglicherweise die Stromversorgung abschalten könnte, wodurch die Platine daran gehindert wird, sich selbst und das System erfolgreich zu initialisieren.
Der FPGA-Lieferant muss daher sorgfältig Transistoren entwerfen, die einen geringen statischen Stromverbrauch aufweisen, ohne Kompromisse in Bereichen eingehen zu müssen, in denen eine höhere Leistung erforderlich ist (z. B. I/O und SERDES)

Xilinx erwähnt ebenfalls, was der Ruhestrom ist, damit Sie Ihr Netzteil entsprechend auslegen können. Erwähnt jedoch nicht, welche Auswirkungen es auf das Gerät hat, es in einem solchen Zustand zu belassen:

Die statische oder Ruheleistung wird hauptsächlich vom Transistorleckstrom dominiert. Wenn dieser Strom in Datenblättern aufgeführt ist, wird er als ICCINTQ aufgeführt und ist der Strom, der durch die VCCINT-Versorgung gezogen wird, die den FPGA-Kern versorgt.

Ich wäre sehr daran interessiert zu hören, ob jemand Schäden an einem Gerät erlitten hat, weil er es in einem Ruhezustand belassen hat. Aber ich denke, solange das Netzteil richtig auf das Gerät abgestimmt ist, sollte es kein Problem geben.

Ich beziehe mich auf das Datenblatt von Spartan 3 , da dies das FPGA ist, mit dem ich am besten vertraut bin.

Wenn Sie sich Kapitel 2 (Funktionsbeschreibung) ansehen, finden Sie im Abschnitt "Konfiguration" ein paar Flussdiagramme. Abbildung 27 (Seite 50) zeigt das Ablaufdiagramm für das Laden aus Flash. Abbildung 28 zeigt das JTAG-Flussdiagramm.

Hier ist eine kurze Zusammenfassung.

1) Warten Sie, bis Vccint, Vccaux und Vcco die erforderlichen Pegel erreichen.

2) Konfigurationsverriegelungen löschen

3) Warte, 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-Modus-Pins. Dies bestimmt, ob Sie über JTAG oder Flash laden, und wenn Flash, ob das FPGA oder das Flash der Master ist.

5) Konfigurationsdatenrahmen laden.

6) Verifiziere, dass der CRC für die Datenrahmen korrekt ist. Wenn es NICHT korrekt ist, treibt das FPGA INIT_B auf Low, um einen CRC-Fehler anzuzeigen, und es bricht den Start ab.

Schritt 5 ist wahrscheinlich Ihre eigentliche Frage: Was passiert, wenn nichts geladen werden kann? Nun, Sie sollten nicht zu Schritt 5 kommen , 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 zum Programmieren des FPGA ging, würde er mit ziemlicher Sicherheit PROG_B behaupten (indem er ihn niedrig fährt), was dazu führt, dass der FPGA zurückgeht zu Schritt 2.

Wenn ich Sie wäre, würde ich das INIT_B-Signal während des Einschaltens überwachen, um zu sehen, was passiert. Wenn es niedrig beginnt, hoch geht und dann wieder niedrig wird, hat das FPGA die Startsequenz abgebrochen, und Sie müssen wahrscheinlich PROG_B aktivieren, um das FPGA zurückzusetzen.

Ihre Antwort sagt nichts über den internen Zustand des FPGA vor Schritt 5 aus, was OP wissen möchte.
Schritt 2. Löschen Sie die Konfigurationssperren. Schritt 3, Warten auf INIT_B. Ich diskutiere auch, welche Art von Entscheidung das FPGA treffen kann, wenn es feststellt, dass keine Konfigurationsdaten zu laden sind (INIT_B geht auf Low, um einen CRC-Fehler anzuzeigen).
Entschuldigung, das Datenblatt, auf das ich mich bezog, stammte aus dem Jahr 2005 und wurde 2009 aktualisiert. Hätten Sie meinen Kommentar jedoch gründlich gelesen, hätten Sie ihn finden können. Kapitel 2, Funktionsbeschreibung, unter der Überschrift Konfiguration. Der Link wurde aktualisiert, um auf das neueste Datenblatt sowie die neuen Seitenzahlen zu verweisen.

Die Default-Konfiguration ist möglichst passiv ausgelegt, um das Gerät universell einsetzbar zu machen.

Für die Altera Cyclone-Serie (mit der ich die meiste Erfahrung habe) bedeutet dies

  • die I/O-Pins werden schwach auf VCCIO hochgezogen (um ICs mit Active-Low-Chip-Enable-Leitungen vom Bus fernzuhalten),
  • der CONF_DONE-Ausgang wird auf Low gezogen (Sie können dies mit dem Reset-Pin anderer ICs verbinden, um sie zurückgesetzt zu halten, bis eine Konfiguration geladen wurde, und sie bei der Neukonfiguration in den bekannten Zustand zurückversetzen).
  • die Takteingänge werden nicht an die Taktnetzwerke weitergeleitet.

Andere FPGA-Typen sollten ähnlich ruhig sein und nicht invertierte und invertierte Ausgänge bereitstellen, die den Konfigurationsstatus für den Rest der Platine anzeigen.

Es ist harmlos, das Gerät in diesem Zustand zu belassen, da der Kern ziemlich von der Außenwelt isoliert ist und nur die Klimmzüge möglicherweise einen kleinen Strom durch sie führen.