Was passiert, wenn ein FPGA „programmiert“ wird?


13

Soweit ich weiß, besteht der Programmiervorgang für ein FPGA aus zwei Teilen:

  1. Codiere die Hardwarebeschreibung in Bits, die das FPGA verstehen kann (dh schreibe etwas HDL und kompiliere es)
  2. Laden Sie die kompilierte HDL auf das FPGA.

Meine Frage ist: "Was macht der FPGA mit dem kompilierten HDL?". Im Moment stelle ich mir FPGAs als "formbare Hardware" vor, bei der Drähte und Logikgatter nach Ihren Wünschen geformt werden können. Eines der schönen Dinge ist, dass die Formbarkeit dauerhaft ist: FPGAs können neu programmiert werden.

Wie interpretieren FPGAs kompiliertes HDL? Wie wird eine dauerhafte Formbarkeit erreicht?


4
Es ist eigentlich nicht permanent - der FPGA-Bitstrom muss bei jedem Einschalten aus dem EEPROM neu geladen werden. CPLDs haben dieses Problem nicht und einige FPGAs verfügen über ein integriertes EEPROM, das ihren Bitstream bei jedem Start lädt.
AngryEE

2
Ich denke, er meint "Formbarkeit ist dauerhaft", dh das Programm selbst ist nicht dauerhaft.
Ajs410

Antworten:


23

Nach Ihrer anderen Frage zu urteilen, sind Sie ein Xilinx-Typ. Ich empfehle daher dringend, das Datenblatt für Ihren Xilinx-Chip zu erhalten und das Kapitel Funktionsbeschreibung aufzurufen. Für den Spartan 3-Chip, den ich verwende, sind es 42 Seiten mit viel Spaß beim Lesen. Es enthält genaue Informationen zu den Komponenten in einem FPGA - den IOBs, CLBs, Slices, LUTs, dem Block-RAM, den Multiplikatoren, dem Digital Clock Manager, dem Clock Network, Interconnect und einigen grundlegenden Konfigurationsinformationen. Sie müssen diese Informationen verstehen, wenn Sie wissen möchten, wie eine "kompilierte HDL" aussieht.

Wenn Sie mit der Architektur Ihres FPGA vertraut sind, können Sie diesen Prozess verstehen. Zunächst wird Ihr HDL-Design durch die Synthese-Engine geleitet, die Ihr HDL zu RTL macht. Anschließend verarbeitet der Mapper die Ergebnisse der Synthese und "mappt" sie auf die verfügbaren Teile der FPGA-Architektur. Dann führt der Router Place And Route (PAR) durch, um herauszufinden, wohin diese Teile führen und wie sie verbunden werden. Schließlich werden die Ergebnisse von PAR in eine BIT-Datei umgewandelt. In der Regel wird diese BIT-Datei dann auf eine Art und Weise transformiert, sodass sie in einen Flash-Chip geladen werden kann, sodass das FPGA beim Einschalten automatisch programmiert werden kann.

Diese Bitdatei beschreibt das gesamte FPGA-Programm. Zum Beispiel bestehen die CLBs in einem Spartan 3 aus Slices, die aus LUTs bestehen, die nur 1-Bit-SRAMs mit 16 Adressen sind. Die BIT-Datei enthält also genau die Daten, die in die einzelnen Adressen des SRAMs eingegeben werden. Eine andere Sache, die die BIT-Datei enthält, ist, wie jeder Eingang der LUT mit der Verbindungsmatrix verbunden ist. Die BIT-Datei enthält auch die Anfangswerte, die sich im RAM des Blocks befinden. Es wird beschrieben, was mit den Set- und Reset-Pins jedes Flip-Flops in jedem Slice verbunden ist. Es wird beschrieben, wie die Tragekette verbunden ist. Es wird die Logikschnittstelle für jedes IOB (LVTTL, LVCMOS, LVDS usw.) beschrieben. Es werden alle integrierten Pull-Up- oder Pull-Down-Widerstände beschrieben. Grundsätzlich alles.

Bei Xilinx wird der Speicher des FPGAs gelöscht, wenn die Konfiguration gestartet wird (dh PROG_B wird aktiviert). Sobald der Speicher gelöscht ist, geht INIT_B hoch, um anzuzeigen, dass die Phase abgeschlossen ist. Die BIT-Datei wird dann entweder über JTAG oder die Flash-Chip-Schnittstelle geladen. Sobald das Programm geladen ist, wird das globale Setzen / Zurücksetzen (GSR) gepulst, wodurch alle Flip-Flops in ihren Ausgangszustand zurückgesetzt werden. Der DONE-Pin geht dann hoch, um anzuzeigen, dass die Konfiguration abgeschlossen ist. Genau einen Taktzyklus später wird das Global Three-State-Signal (GTS) freigegeben, wodurch die Ausgänge angesteuert werden können. Genau einen Taktzyklus später wird die globale Schreibfreigabe (Global Write Enable, GWE) freigegeben, sodass die Flip-Flops ihren Zustand als Reaktion auf ihre Eingaben ändern können. Beachten Sie, dass auch dieser letzte Konfigurationsprozess in Abhängigkeit von den in der BIT-Datei gesetzten Flags leicht neu angeordnet werden kann.

BEARBEITEN:

Ich sollte auch hinzufügen, dass der Grund, warum das FPGA-Programm nicht permanent ist, darin besteht, dass die Logikstruktur aus einem flüchtigen Speicher (z. B. SRAM) besteht. Wenn also der FPGA die Stromversorgung verliert, ist das Programm vergessen. Deshalb benötigen sie zB Flash-Chips als nichtflüchtigen Speicher für das FPGA-Programm, damit es beim Einschalten des Geräts geladen werden kann.


6

Das Kompilieren der HDL führt zu einem Bitmuster, das angibt, welche Verbindungen im FPGA aktiviert werden sollen. Das FPGA muss die HDL nicht mehr interpretieren. Das Bitmuster wird in ein Flash / EEPROM des seriellen Ladegeräts programmiert und beim Booten in das FPGA verschoben, um die erforderlichen Verbindungen herzustellen.


1
SYNTHESIS bedeutet drei Ausdrücke: 1. Generierung einer Netzliste 2. Optimierung der Gate-Ebene 3. Technologiezuordnung.
Standard Sandun

4

Das Ergebnis der Kompilierung ist ein Bitstrom (buchstäblich ein Bitstrom), der nach dem Einschalten geladen wird. Dies verschiebt sich durch das FPGA, das in einigen Speicherzellen (Latches) gespeichert ist. Diese Zellen sind mit verschiedenen logischen Einheiten, Multiplexern, Nachschlagetabellen, RAM-Blöcken, Leitmatrizen verbunden und bilden die sogenannte "Konfiguration". Sobald der Bitstrom geladen ist, beginnt das FPGA zu arbeiten - die Bits in den Konfigurations-Latches "sagen" jedem kleinen Teil des FPGA, wie es zu arbeiten ist.

EDIT 24. April 2012: Die Flip-Flops, die ich erwähnte, sind nicht für die Nachschlagetabellen oder die Konfiguration von ihnen. Wie @ ajs410 sagte, befinden sich diese im RAM, der noch weniger Transistoren enthält. Die Flip-Flops dienen zum Speichern der Daten aus der LUT, wenn dieser Speicher aktiviert ist.


Wie viel von der Schaltung in einem typischen FPGA ist tatsächlich Logik und Routing, und wie viel ist Programmierunterstützung?
Supercat

Technisch sind die "Speicherzellen" Flip-Flops, keine Latches. Dh sie sind flankengetriggert.
Brian Carlton

@ BrianCarlton: Werden Flip-Flops wirklich für alle Programmspeicherzellen verwendet? Nach meinem Verständnis benötigen Flip-Flops etwas in der Größenordnung von 12-16 MOSFETs pro Bit; Im Gegensatz dazu erfordern andere vollständig statische Techniken zum Zwischenspeichern von Daten nur 5-8.
Supercat

1
Eine LUT besteht typischerweise aus SRAM. Die Flip-Flops sind an den Ausgang des SRAM angeschlossen.
Ajs410

1
@supercat: Ich habe gehört, dass 90% eines FPGAs Routing ist ... der Rest ist Logik und Konfiguration - kann jedoch keine Referenz schnell finden :(
Martin Thompson

1

Der Standardbegriff lautet "Konfiguration" und nicht "Programmierung" für ein FPGA. Das FPGA ist normalerweise ein SRAM-basiertes Gerät. Ein SRAM speichert Bits, die anzeigen, welche Verbindungen innerhalb der "Logikstruktur" der Vorrichtung gebildet und unterbrochen sind. Bei der Konfiguration wird ein Bitstrom an den FPGA gesendet, der in diesen SRAM schreibt. Wenn das SRAM-basierte FPGA ausgeschaltet wird, werden die SRAM-Daten gelöscht, und wenn das FPGA eingeschaltet wird, muss es erneut konfiguriert werden.

Jetzt wissen Sie, dass es verschiedene Methoden zum "Konfigurieren" und FPGA gibt und daher verschiedene Dateiformate existieren, die diesen "Bitstrom" enthalten. Letztendlich sind die Struktur dieser Dateien und die Einzelheiten zur genauen Konfiguration des FPGA für die Herstellung urheberrechtlich geschützt, und diese Informationen werden niemals weitergegeben. Das allgemeine Prinzip bleibt jedoch für alle FPGAs gleich.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.