So viele Antworten, dass ich nicht alle gelesen habe, weil ich jemand bin, der auf beiden Seiten des Zauns sitzt, Hardware und Software ...
Während es sich also in jeder Hinsicht um eine Programmiersprache handelt, die in andere Sprachen kompiliert wird, idealerweise auf einer niedrigeren Ebene (C zu ASM oder Maschinencode, JAVA zu Bytecode oder einer anderen Sprache oder Baugruppe oder Maschinencode usw.). Es gibt viel mehr Schritte und die Ziele sind viel vielfältiger als isa, die ebenso häufig wie unterschiedlich sind: Hinzufügen, Bewegen, Jne, Drücken, Pop usw.
Der Maschinencode für fpgas oder asics besteht nicht nur aus diskreten Transistoren, sondern aus einer Bibliothek von Dingen. Für Asics für eine bestimmte Gießerei und einen bestimmten Prozess stehen eine oder mehrere Zellbibliotheken zur Verfügung. Sie verfügen über einfache und / oder Gates, aber auch über größere und kompliziertere Dinge. Warum sollte ein Latch aus diskreten Komponenten erstellt werden, wenn die Bibliotheksautoren eine gemeinsame Größe festlegen können? diejenigen und packen es auf effiziente (Immobilien-) Weise. Wie bei jedem Compiler oder hochrangigen Autor gehen Sie die Liste der Optionen durch und wählen einige aus. einschließlich einer langen Liste von Srams verschiedener Breiten und Tiefen. Für ein FPGA sind es LUTs oder irgendwie feste generische Module, die als verschiedene Module fungieren können, die komplizierter sind als ein einfaches und / oder xor-Gate.
Die FPGA-Welt mag es, die Dinge nah an ihrer Brust zu halten, und sie versuchen, viel günstiger zu sein als asic-Tools, Zehntausende von Dollar pro Jahr statt Millionen. Und wie in jeder anderen integrierten Umgebung gibt es manchmal verschiedene Anbieter, die gekauft oder lizenziert und die Tools zusammengeklebt wurden (oft nicht sehr hübsch).
Also sind alle Schritte passiert, die andere Leute erwähnt haben. Das ist mehr als Software und die Dateiformate sind sehr proprietär und es wird nicht erwartet, dass sie dokumentiert oder unterstützt werden. Jede Version kann sich ändern. Wieder scheinen diese Leute wettbewerbsfähig und geheim zu sein (wenn sie sich öffnen würden, könnten wir deutlich bessere Tools haben und sie könnten mehr Produkt-IMO verkaufen, aber sie könnten das Support-Geld reduzieren, wovon sie vielleicht mit ihren beschissenen Tools leben) .
Wenn Leute Netlist sagen, wird der Verilog zu einer Netlist zusammengestellt. Diejenigen, die ich gesehen habe, sind auch in Verilog oder Vhdl, da diese Sprachen dies abdecken. Letztendlich zielen Sie dann auf das spezifische was auch immer, fpga, cpld, asic usw. Da das fpga ein bereits verdrahtetes / festes Ziel ist, erhalten Sie letztendlich eine Liste von Sicherungen oder Schaltern, wenn Sie so wollen, nehmen Sie eine generische Lut und verbinden Sie diesen Eingang mit das und das, was dazu beiträgt, indem Verbindungen in dem massiven Netz von Dingen geöffnet und geschlossen werden. Das ist eine ziemlich einfache Liste von Ein- und Ausfahrten. Und ich denke, es gibt möglicherweise einen jedec-Standard, der oft als Bitstream bezeichnet wird, und zumindest verwenden wir zum Laden einen Bitstream-Player.
CPLDs Im Allgemeinen programmieren Sie diese Informationen im Teil selbst, sei es ein Flash an Bord, der beim Einschalten Dinge öffnet / schließt und / oder der nichtflüchtige Speicher im Inneren schaltet sich mit den verdrahteten Elementen ein.
FPGAs haben normalerweise einen externen Flash und beim Einschalten werden die Informationen zum Verbinden von Dingen daraus geladen. Der Rest des Teils wird mit diesem Setup aufgerufen. Diejenigen, die ich über Sie kenne, können diese Informationen im eingeschalteten Zustand auch in das Teil laden und alle Verbindungen herstellen. Diese Informationen gehen jedoch verloren, wenn das Teil ausgeschaltet wird. Abhängig von Ihrem Design haben Sie möglicherweise eine andere Lösung und verwenden den Blitz nicht. Das Flash-Format ist wahrscheinlich prioprietär, ich habe nicht persönlich nachgesehen, wenn Sie über die Programmierschnittstelle, die über die fpga zum Flash geht, hereinkommen, damit es so bleibt, wie es ist, oder es könnte auf dem Weg in etwas anderes konvertiert werden. P. >
Mit Software, besonders diesmal und an diesem Ort, sind wir es gewohnt, meistens Dinge zu öffnen, etwas gute kostenlose Tools, die viele Leute benutzen. Dies bedeutet auch, dass die Dateiformate dokumentiert und etwas verbreitet sind. Einige hatten vor dieser Zeit einen Verlauf von .com und .exes, andere für andere Betriebssysteme des Tages. Aber auch hier ist die Software-Welt häufiger als die andere, die Sie idealerweise für Maschinencode oder Bytecode anstreben. Mit Logik wechseln Sie von einer höheren zu einer niedrigeren Ebene, verwenden jedoch bis zu einem gewissen Punkt dieselbe Sprache. Dann zielen Sie möglicherweise auf einen Simulator ab, der eine eigene Bibliothek von Modulen oder fpga n mit seiner Bibliothek oder fpga m mit seiner Bibliothek usw. hat. Und diese Leute schützen Informationen sehr.
Clifford und das Projekt IceStorm IMO ist der richtige Weg. Es ist bis jetzt das einzige Mal, dass ich etwas für eine fpga erstellt habe, das einfach ist, funktioniert, keine Warnungen oder Fehler, die Software-Leute oft mögen.Ich habe unzählige Nächte damit verbracht, von allen großen Anbietern ohne Vorwarnung das Einfachste für ein Fpga zu bauen ... und würde immer aufgeben.Vom Verilog bis zum programmierten Teil sind es mindestens drei separate Projekte, was bedeutet, dass es Zwischendateien gibt, die beide Seiten unterstützen müssen, damit die Dateiformate vorhanden sind.Es wird jedoch erwartet, dass es projektspezifisch ist und nicht unbedingt einer Elf-Datei ähnelt, die häufig für mehr als einen Anwendungsfall verwendet wird.
Verstehen Sie, dass die Chip-Welt einschließlich fpgas wahnsinnig teuer ist und daher geldgetrieben ist, was häufig den Verkauf von Werkzeugen und vor allem jährliche Supportverträge bedeutet.Dies bedeutet geschlossene Quelle, geschlossene Informationen, nicht öffentlich dokumentierte Dateiformate.