User manual
Field Programmable Gate Array (FPGA) 23
Die Auswirkungen von Glitches können in synchronen Schaltungsdesigns durch nachgeschaltete D-Flipops
verhindert werden. Die Idee dabei ist, dass die Ausgänge der kombinatorischen Schaltungsteile, bestehend
aus diversen Gattern unterschiedlicher Laufzeit, erst dann gültige Zustände annehmen müssen, wenn die
Taktanke die Ausgangswerte in die D-Flipops übernimmt. In der Zeit zwischen zwei Taktanken können
im kombinatorischen Teil durch Laufzeiteffekte beliebig viele Glitches auftreten, da diese Zwischenzustände
nicht durch das nachgeschaltete D-Flipop beachtet werden.
Das Verfahren, die Ausgänge von kombinatorischen Schaltungsteilen immer mit D-Flipops zu versehen, ist
eines der wesentlichen Grundlagen für stabile, digitale Schaltungsdesigns in komplexen, freiprogrammier-
baren FPGAs (siehe Kap. 4.8.3 auf Seite 23).
4.8 Programmierbare Logikbausteine
Herkömmliche, nicht-programmierbare Logik-Bausteine haben eine fest denierte Funktion. Ihr könnt diese
Bausteine als integrierte Schaltkreise (Integrated Circuit = IC) kaufen. Diese Art Bausteine sind auch in den
Logik-Bricks verbaut. Einer der bekanntesten Logik-Bausteine ist das NAND-Gatter mit der Typenbezeich-
nung 7400 (TTL-Technologie) bzw. 4011 (CMOS-Technologie). Im Gegensatz dazu erhalten PLDs (Program-
mable Logic Devices), also programmierbare Logik-Bausteine ihre Funktion erst nach der Herstellung durch
entsprechende Programmierung des Schaltungsentwicklers (auch Personalisierung genannt). Manche Chip-
Hersteller stellen kostenfreie Software-Tools für Schaltungsentwurf, Implementierung (Place & Route) und
Simulation zur Verfügung.
Diejenigen, die sich etwas tiefer mit diesem spannenden Thema – insbesondere den FPGA-Bausteinen – be-
schäftigen möchten, nden im Folgenden ein groben Überblick (in aufsteigender Komplexität):
4.8.1 Programmable Array Logic (PAL) bzw. Generic Array Logic (GAL)
Ein PAL stellt ein programmierbares UND-Array mit einem festen ODER-Array dar. Ein GAL ist im Gegensatz
zu einem PAL wiederbeschreibbar. Die Personalisierung erfolgt mit Hilfe eines Programmiergeräts durch den
Schaltungsentwickler. Technologischer Nachfolger ist der CPLD (siehe nächstes Kapitel).
4.8.2 Complex Programmable Logic Device (CPLD)
Ein CPLD besteht aus Blöcken, die untereinander verbunden werden können. Zentrales Element ist die so-
genannte programmierbare logische Anordnung (PLA), die aus einem UND-Array und einem ODER-Array
besteht, wobei beide Arrays programmierbar sind. Außerdem gibt es Ein- und Ausgangsblöcke sowie eine
programmierbare Rückkopplung. In der Regel ist für jeden I/O-Pin auch ein Flipop enthalten. Diese UND/
ODER-Matrix erlaubt beliebige kombinatorische Verknüpfungen. Aufgrund seines Aufbaus können beim
CPLD – im Gegensatz zum FPGA – die Durchlaufzeiten stets exakt bestimmt werden. Ein weiterer Unter-
schied zum FPGA ist die dauerhafte Programmierung durch den Schaltungsentwickler, sodass die Funktiona-
lität auch nach Abschalten der Versorgung erhalten bleibt. Der CPLD muss nicht bei jedem Start des Geräts
neu geladen werden.
4.8.3 Field Programmable Gate Array (FPGA)
Ein FPGA besteht ähnlich wie ein CPLD aus untereinander vernetzten Blöcken, jedoch sind diese komple-
xer. Auch die Möglichkeiten, diese Blöcke untereinander zu verbinden, sind gegenüber dem CPLD stark
erweitert. Durch spezische Konguration der intern vorhandenen Elemente können in einem FPGA völlig
verschiedene Schaltungen und Funktionen realisiert werden. Diese reichen von Schaltungen geringer Kom-
plexität, wie z. B. einem einfachen Synchronzähler oder Decoder, bis hin zu hochkomplexen Schaltungen
wie Speicher-Controller und digitaler Signalverarbeitung. Moderne FPGAs enthalten oft auch integrierte
Funktionsblöcke wie RAM, PLLs oder ganze CPU-Kerne.
FPGAs werden in allen Bereichen der Digitaltechnik eingesetzt, vor allem aber dort, wo es auf schnelle
Signalverarbeitung und hohe Flexibilität bei Änderungen ankommt. So sind auch nachträglich Änderungen
oder Verbesserungen an der implementierten Schaltung möglich, ohne teure und zeitintensive Hardware-
Änderungen vornehmen zu müssen. Diese hohe Flexibilität ist ideal für Prototypen und die kostengünstige
Fertigung von kleinen und mittleren Serien.
Die Personalisierung erfolgt "im Feld" beim Anwender entweder durch Auslesen der Kongurationsdaten
aus einem externen nichtüchtigen Speicher wie z. B. einem PROM (Programmable Read Only Memory) – in
diesem Fall ist der FPGA "Master" – oder durch Download der Daten vom Rechner in den FPGA (Slave-Mo-
dus). Nach dem Einschalten der Versorgungsspannung ist der FPGA zunächst "dumm". Erst nach Abschluss
der sogenannten Kongurationsphase von einigen Millisekunden ist der Baustein betriebsbereit. FPGAs
können in der Schaltung ohne Programmiergerät jederzeit umkonguriert werden.