# Programmierbare logische Anordnung

Eine programmierbare logische Anordnung, häufig in englischsprachiger Fachliteratur als Programmable Logic Array oder kurz PLA bezeichnet, ist eine Form der programmierbaren logischen Schaltung, die aus zwei hintereinander geschalteten UND- und ODER-Matrizen besteht. Eine seltener verwendete Bezeichnung ist Fieldprogrammable Logic Array (FPLA).

## Allgemeines

Ein PLA wird zur Herstellung von Schaltnetzen und -werken für logische Funktionen in disjunktiver Form verwendet. Die UND-Matrix repräsentiert dabei die Konjunktionsterme. Die Auswahl der Konjunktionsterme erfolgt im Rahmen der Programmierung (meist mittels eines speziellen Gerätes) durch das Entfernen von Schaltgliedern aus der UND-Matrix. Die disjunktive Verknüpfung der Konjunktionsterme erfolgt mittels der ODER-Matrix. Die technische Realisierung beider Matrizen erfolgt allerdings häufig mittels NAND-Gliedern. 1986 hatten die universelleren PLAs die entwicklungstechnisch älteren PALs bereits weitgehend vom Halbleitermarkt verdrängt.
Heute werden PLAs nur noch selten eingesetzt und sind fast vollständig durch CPLDs abgelöst worden. CPLDs besitzen wie PLAs keine Einschränkungen betreffend der Verwendbarkeit der UND-/ODER-Matrizen im Eingangsbereich, sind elektrisch programmierbar und auch wieder löschbar, sind wie FPGAs in einheitlichen Hardwareprogrammiersprachen wie beispielsweise VHDL zu programmieren und besitzen darüber hinaus eine bestimmte Anzahl an Registern.

## Realisierung

Ursprünglich wurde eine Matrix aus Sicherungen (engl. fuse) verwendet, wobei beim Programmieren entsprechend dem zu programmierenden Bit-Muster, einzelne Sicherungen mit einem hohen Strom durchgebrannt wurden. Eines der Probleme dieser Technologie war, dass sich mit der Zeit einzelne Sicherungen durch Kristallisationsprozesse wieder „reparieren“ konnten.
Bei der neueren Antifuse-Technologie besteht das PLA aus einer Diodenmatrix, in welcher jede Diode ein Bit repräsentiert. Im Gegensatz zur Fuse-Technologie, wo eine leitende Verbindung unterbrochen wird, sind hier die Dioden so verschaltet, dass sie normalerweise den Strom sperren. Beim Programmiervorgang werden nun gezielt bestimmte Dioden mit einem sehr hohen Strom belastet. Diese Dioden werden dadurch zerstört und bilden so eine leitende Verbindung.
Nach dem „Brennvorgang“ des PLA werden die geschriebenen Daten durch ein Bit-Muster defekter und funktionierender Dioden repräsentiert. Diese Daten lassen sich nun beliebig oft auslesen. PLAs gehören in die Gruppe der OTP-Bauelemente.
Die Anzahl der Ein- und Ausgänge muss dabei nicht identisch sein. Ein einmal programmierter Baustein kann nicht mehr geändert werden, was in der Serienfertigung nicht weiter störend ist. Während der Entwicklungsphase elektronischer Schaltungen werden hingegen häufig so genannte GALs (Generic Array Logic) eingesetzt, die sich mehrfach löschen und neu programmieren lassen.

## Anschauliches Beispiel

Eine mögliche Programmierung wäre:
Der Motor könnte auch mit zwei in Reihe liegenden Schaltern gesteuert werden, so dass der Stromkreis nur dann geschlossen ist, wenn der Anschaltknopf UND der Sicherheitsschalter geschlossen sind. Im Beispiel soll aber der Einsatz eines PLA verdeutlicht werden. In PLAs können nun auf engstem Raum Ein- und Ausgangssignale auf sehr komplizierte Weise miteinander verknüpft werden.

## Abgrenzung und Sonderfälle

Im Sprachgebrauch hat sich der Begriff PLA bzw. GAL für den Bereich der „kleineren“ Bausteine programmierbarer Logik durchgesetzt, während sich für Bausteine „höherer“ Komplexität die Begriffe ASIC, FPGA und CPLD in Abhängigkeit von der Art der Implementierung durchgesetzt haben.
Um Sonderfälle von PLAs handelt es sich bei den folgenden programmierbaren logischen Schaltungen:
* Programmable Array Logic (PAL): Hier ist nur das UND-Array programmierbar.
* Programmable Read-Only Memory (PROM): Hier ist nur das ODER-Array programmierbar.