Was passiert, wenn ein FPGA eingeschaltet und nicht konfiguriert ist?

10

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.

Sarg
quelle
1
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 glaube nicht ...
m.Alin
Ich sehe ein Phänomen auf einer benutzerdefinierten FPGA-Karte, auf der ein Programmierfenster von 20 bis 30 Sekunden angezeigt wird. Wenn ich in diesem Fenster nicht programmiere, kann ich nicht erfolgreich programmieren. Das zentrale Thema meiner Frage ist nicht die Zeitdauer, sondern das Verständnis des Phänomens.
Boffin
Können Sie überhaupt eine Verbindung zum Gerät herstellen? Oder schlägt es einfach fehl, wenn Sie versuchen zu programmieren? Was ist der Fehler, den der Programmierer gibt?
embedded.kyle
1
Programmieren Sie das FPGA direkt über JTAG oder laden Sie zuerst den Flash-Chip und lassen das FPGA dann darüber konfigurieren?
Ajs410
@fpga_boffin, könnten Sie diese Details bitte zu Ihrer Frage hinzufügen?
Jon L

Antworten:

7

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:

Der vorprogrammierte statische Ruheverbrauch des Geräts ist der Stromverbrauch, den das FPGA vor dem Programmieren des Geräts verbraucht. Für den Stromverbrauch im Ruhezustand 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 verbrauchen und möglicherweise die Stromversorgung abschalten kann, wodurch verhindert wird, dass die Karte sich selbst und das System erfolgreich initialisiert.
Der FPGA-Anbieter muss daher Transistoren mit geringer statischer Aufladung sorgfältig entwerfen.

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:

Die statische oder ruhende Leistung 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 des FPGA-Kerns gezogen wird.

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.

embedded.kyle
quelle
6

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.

ajs410
quelle
Ihre Antwort sagt nichts über den internen Zustand des FPGA vor Schritt 5 aus, was OP wissen möchte.
Stevenvh
Schritt 2. Löschen Sie die Konfigurations-Latches. Schritt 3, Warten auf INIT_B. Ich diskutiere auch, welche Art von Entscheidung das FPGA treffen kann, wenn es feststellt, dass keine Konfigurationsdaten geladen werden müssen (INIT_B wird niedrig, um einen CRC-Fehler anzuzeigen).
Ajs410
1
Ich entschuldige mich, das Datenblatt, auf das ich mich bezog, stammt aus dem Jahr 2005 und wurde 2009 aktualisiert. Wenn Sie meinen Kommentar jedoch gründlich gelesen hätten, 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.
Ajs410
0

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

  • Die E / A-Pins sind schwach auf VCCIO hochgezogen (um ICs mit Aktiv-Low-Chip-Freigabeleitungen vom Bus fernzuhalten).
  • der CONF_DONE Ausgang wird nach unten gezogen (Sie dies auf den Reset - Pin anderer ICs sie in zurückgesetzt zu halten , bis eine Konfiguration sowie Wiederherstellung verbinden können sie auf bekannten Zustand , wenn Neukonfiguration geladen ist), und
  • 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 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.

Simon Richter
quelle