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.