Es ist bei weitem nicht alles so kompliziert, wie es aussieht.
Einem Gatter-Äquivalent, mit dem die Komplexität digitaler Schaltungen
angegeben wird, entspricht ein NAND-Gatter mit genau zwei Eingängen.
Grund: man kann jede digitale Schaltung nur mit NAND-Gattern aufbauen.
Auf eine vierer-LUT (LUT4) kann eine beliebige Funktion mit 1-4
Eingängen abgebildet werden. Kleinste und somit eher verschwenderische
Schaltung ist ein Inverter (=1 NAND-Gatter, so eine Zählweise würde die
FPGA-Hersteller schlecht aussehen lassen...). Grösste abbildbare
Schaltung ist ein 16-Bit-SRAM-Speicher (=32 NAND-Gatter, das entspricht
eher den Vorstellungen der FPGA-Hersteller...). Reale FPGA-Schaltungen
bewegen sich immer zwischen 1-32 NAND-Gattern pro LUT4.
Früher (Cyclone1/2, Spartan1/2 und Co.) bestanden die Logikzellen immer
aus einer LUT4 und einem Flipflop (LUT4+FF-Logikzelle). Aktuelle
FPGA-Logikzellen sind größer und flexibler, deren LUTs können zu einer
LUT mit 5-6 Eingängen oder zu zwei LUTs mit 4-5 Eingängen konfiguriert
werden (als Beispiel). In beiden Fällen steht pro Logikzelle nur ein FF
zu Verfügung. Es gibt also Konfigurationen, bei denen einer LUT ein FF
fehlt! Um die Vergleichbarkeit zu früheren FPGA-Generationen und zu
Konkurenz sicher zu stellen, behielt man die
LUT4+FF-Logikzellenzählweise. Deshalb werden die Kapazitäten aktueller
FPGAs zusätzlich noch als LUT4+FF-Logikzellen angegeben. Dabei
entspricht eine LUT6+FF-Logikzelle etwa zwei LUT4+FF-Logikzellen.
Bei System-Gatter-Zählweise fliessen in die NAND-Gatter-Zählung nicht
nur Logikzellen sondern auch RAM-Blöcke, Multiplizierer und sonstige
Logikressourcen mit ein. Verwendet man bei einem Design diese Ressourcen
nicht, ist diese System-Gatter-Zählweise um Faktor 3-5 unrealistisch.
Gruß,
Valerij