T05-PLA-und-Gatter
PLA & Gatter
Zusammenfassung
Ein Programmable Logic Array (PLA) ist eine zweistufige Hardware-Realisierung einer Booleschen Funktion: Eine AND-Plane erzeugt Produktterme (Minterme/Implikanten), eine OR-Plane kombiniert diese zu Ausgängen. PLAs implementieren direkt die DNF (disjunktive Normalform). Die Gatter-Bibliothek (AND, OR, NOT, NAND, NOR, XOR, XNOR) bildet die Basis für mehrstufige Realisierungen, wobei NAND und Inverter in CMOS-Technologie direkt realisierbar sind. Der Pentium-FDIV-Bug (1994) war ein vergessener PLA-Eintrag im Dividierer. Die Klausur fragt PLA-Konstruktion, den Pentium-Bug und den Zusammenhang zwischen PLA-Größe und Geschwindigkeit ab (A3b/c/d, 9 Punkte).
Exam-Relevanz
| Teil | Punkte | Thema |
|---|---|---|
| A3b | 3 | PLA aus Funktionstabelle bestimmen, kleinster PLA, Variablenlimit |
| A3c | 3 | Intel Pentium PLA: vergessene Einträge, PLA nach Korrektur kleiner |
| A3d | 3 | PLA-Größe vs. Geschwindigkeit, Bedeutung für ReTI-Hardware |
Total A3b–d: 9 Punkte. Zusammen mit A3a (Widerspruchsbeweis, 7P) ergibt das die vollen 16P von Aufgabe 3.
Gatter-Bibliothek
Standardgatter (STD)
AND2
| AND2 | ||
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
OR2
| OR2 | ||
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
NOT (Inverter)
| NOT | |
|---|---|
| 0 | 1 |
| 1 | 0 |
NAND2
| NAND2 | ||
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
NOR2
| NOR2 | ||
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 0 |
XOR2
| XOR2 | ||
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
XNOR2
| XNOR2 | ||
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Funktionale Vollständigkeit
- NAND allein ist funktional vollständig: Alle Booleschen Funktionen
lassen sich ausschließlich mit NAND-Gattern realisieren. - Ebenso ist NOR allein funktional vollständig.
- NOT aus NAND:
- AND aus NAND:
- OR aus NAND:
(De Morgan)
CMOS-Technologie (Transistor-Level)
Complementary Metal Oxide Semiconductor: Verwendet p-Kanal- und n-Kanal-Transistoren komplementär.
| Transistor | leitet bei | sperrt bei |
|---|---|---|
| p-Kanal | ||
| n-Kanal |
CMOS-Inverter (NOT):
- p-Kanal oben (zur Spannungsquelle
= logische 1) - n-Kanal unten (zur Masse = logische 0)
- Eingang
an beiden Gates - Bei
: n-Kanal leitet Ausgang = 0 - Bei
: p-Kanal leitet Ausgang = 1
CMOS-NAND (2 Eingänge):
- n-Kanal-Transistoren in Reihe (seriell)
Ausgang = 0 nur wenn beide leiten ( ) - p-Kanal-Transistoren parallel
Ausgang = 1 wenn einer leitet ( oder ) - Transistoranzahl: 4 (2 p-Kanal + 2 n-Kanal)
CMOS-NOR (2 Eingänge):
- n-Kanal-Transistoren parallel
Ausgang = 0 wenn einer leitet - p-Kanal-Transistoren in Reihe
Ausgang = 1 nur wenn beide leiten - Transistoranzahl: 4
Wichtige Eigenschaft: Zu jedem p-Kanal-Transistor gibt es einen komplementären n-Kanal-Transistor. Es gibt niemals einen leitenden Pfad von
AND und OR gibt es nicht direkt in CMOS — sie werden aus NAND/NOR plus Inverter zusammengesetzt.
PLA (Programmable Logic Array)
Definition
Ein PLA ist eine zweistufige Hardware-Struktur zur Realisierung Boolescher Funktionen in DNF (disjunktiver Normalform).
Struktur
Eingänge x₁, x₂, ..., xₙ
│ │ │
▼ ▼ ▼
┌─────────────────────┐
│ AND-Plane │ ← erzeugt Produktterme (Implikanten)
│ (Product Terms) │
└─────────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────┐
│ OR-Plane │ ← kombiniert Produktterme zu Ausgängen
└─────────────────────┘
│ │
▼ ▼
Ausgänge f₁, f₂, ..., fₘ
Funktionsweise
-
AND-Plane: Jeder Eingang
und dessen Negation werden in die AND-Plane geführt. Jede "Zeile" der AND-Plane bildet einen Produktterm (ein Monom / Implikant), indem ausgewählte Literale UND-verknüpft werden. Ein fehlender Eingang in einer Zeile bedeutet "don't care" für diese Variable. -
OR-Plane: Die Produktterme werden in Spalten geführt. Jeder Ausgang
ist die ODER-Verknüpfung ausgewählter Produktterme. So entsteht die DNF. -
Programmierung: Ein PLA wird "programmiert", indem Verbindungen in der AND-Plane und OR-Plane gesetzt oder weggelassen werden. In der Diagrammdarstellung sind gesetzte Verbindungen als Punkte markiert.
Beispiel
Für
- AND-Plane erzeugt zwei Produktterme:
und - OR-Plane kombiniert sie:
- Kosten (siehe unten):
(Literale pro Term + 1) + Anzahl Ausgänge (Anzahl Produktterme + 1)
Warum "zweistufige Logik"?
Ein PLA hat genau zwei Logikebenen: AND und OR. Die Tiefe (depth) ist somit konstant 2 (bzw. 3 inklusive Inverter für negierte Literale). Dies steht im Gegensatz zu mehrstufigen Realisierungen mit beliebigen Gatter-Bibliotheken, die tiefere (aber potenziell kleinere) Schaltkreise erzeugen können.
PLA-Größe minimieren
- Der kleinste PLA wird durch Minimierung der DNF erreicht (Minimalpolynom).
- Verfahren: Karnaugh-Veitch-Diagramme oder Quine-McCluskey.
- KV-Diagramme funktionieren gut bis ca. 4–6 Variablen (darüber wird es unübersichtlich).
- Quine-McCluskey skaliert exponentiell (
) und ist für große nicht praktikabel.
Pentium-Bug
Was passiert ist
Der Intel Pentium FDIV-Bug (entdeckt 1994) war ein Fehler in der Gleitkomma-Divisionseinheit (FPU) des Intel Pentium-Prozessors. Bei bestimmten Operanden lieferte der FDIV-Befehl falsche Ergebnisse.
Ursache
Die Divisionseinheit verwendete ein PLA zur Implementierung der Lookuptabelle für den SRT-Divisionsalgorithmus. Intel hatte bei der Programmierung des PLA einige Einträge vergessen (fehlende Zeilen in der AND-Plane), wodurch für bestimmte Eingaben falsche Quotientenbits berechnet wurden.
Folgen
- Intel musste ca. 5 Millionen Pentium-Prozessoren austauschen (Kosten: ~475 Millionen Dollar).
- Der Vorfall ist ein klassisches Beispiel für die Wichtigkeit von Hardware-Verifikation.
Warum war der PLA nach der Korrektur kleiner?
Nach dem Bug-Fix wurde der PLA kleiner, nicht größer. Grund: Die fehlenden Einträge wurden nicht einfach hinzugefügt — stattdessen wurde die gesamte Tabelle neu minimiert. Durch die Minimierung der DNF (Reduktion auf wesentliche Primimplikanten) wurde die Anzahl der Produktterme reduziert, was zu einem kleineren PLA führte. Der ursprüngliche (fehlerhafte) PLA war also nicht minimal — er war schlecht optimiert und zusätzlich unvollständig.
Verbindung zu PLA/Hardware-Verifikation
- Ein PLA muss alle Eingaben korrekt abdecken. Fehlende Einträge
falsche Ausgaben für nicht abgedeckte Fälle. - Hardware-Verifikation (z.B. formale Verifikation, Äquivalenzchecking) hätte den Fehler gefunden.
- Das Beispiel zeigt: Ein fehlerhafter PLA kann manchmal richtig rechnen (für die meisten Eingaben) und nur für spezielle Eingaben falsch — was den Fehler schwer erkennbar macht.
Kosten & Tiefe von Schaltkreisen
Schaltkreis-Definition
Ein Schaltkreis ist ein 5-Tupel
Kosten
Die Kosten zählen die Anzahl der Gatterknoten (nicht die Eingänge oder Konstanten). Für PLAs gibt es spezifischere Kostenfunktionen:
PLA-Kostenfunktionen
Sei
wobei
Kostenbeispiel
Gegeben
- Produktterme:
(2 Literale), (2 Literale), (1 Literal) Produktterme, Ausgänge
Tiefe
Die Tiefe entspricht der Graph-Tiefe des azyklischen Graphen
- Für ein PLA:
(AND-Ebene + OR-Ebene), evtl. 3 mit Inverter-Ebene. - Für mehrstufige Schaltkreise:
kann größer sein, aber die Kosten können kleiner sein.
Trade-off: Größe vs. Geschwindigkeit
- Kleinere PLA
schneller: Weniger Produktterme bedeuten kürzere Signalwege und weniger Gatter-Verzögerung. Die Tiefe bleibt zwar konstant 2, aber die Verzögerung innerhalb einer Ebene wächst mit der Anzahl der Verbindungen (Kapazität, Leitungslänge). - Größerer PLA
langsamer: Mehr Produktterme mehr Verbindungen höhere Kapazität größere Verzögerung. - Für die ReTI-Implementierung in Hardware: Ein kleinerer PLA bedeutet weniger Chip-Fläche, geringerer Energieverbrauch und schnellere Ausführung. Dies ist besonders wichtig, da die ReTI als Modellrechner in Hardware gegossen werden soll — jede eingesparte Transistorfläche zählt.
Typische Klausuraufgabe
A3b — PLA aus Funktionstabelle (3 Punkte)
Gegeben sei eine Funktionstabelle für eine Boolesche Funktion. Erklären Sie in ca. 3 Sätzen, wie man daraus ein PLA bestimmt. Wie kann der kleinste PLA ermittelt werden? Bis zu wie vielen Variablen funktioniert solch eine Minimierung?
Antwort:
- Aus der Funktionstabelle werden die ON-Menge abgelesen und die Minterme als Produktterme in die AND-Plane des PLA eingetragen; die OR-Plane verknüpft alle Minterme zum Ausgang.
- Der kleinste PLA wird durch Minimierung der DNF (Minimalpolynom) bestimmt, z.B. mittels Karnaugh-Veitch-Diagramm oder Quine-McCluskey, wobei überflüssige Produktterme entfernt werden.
- KV-Diagramme funktionieren praktisch bis ca. 4–6 Variablen; Quine-McCluskey skaliert exponentiell und ist für große
nicht praktikabel.
A3c — Intel Pentium PLA (3 Punkte)
Intel nutzte für einen Dividierer ein PLA und hatte dabei einige Einträge vergessen. Nach Korrektur war der PLA kleiner. Warum?
Antwort: Die fehlenden Einträge führten zu falschen Divisionsergebnissen (FDIV-Bug). Bei der Korrektur wurde das PLA nicht einfach ergänzt, sondern die gesamte Logik neu minimiert. Durch die Minimierung der DNF (Reduktion auf wesentliche Primimplikanten) wurde die Anzahl der Produktterme reduziert, was zu einem kleineren PLA führte. Der ursprüngliche PLA war also nicht minimal optimiert.
A3d — PLA Größe und Geschwindigkeit (3 Punkte)
Ist ein kleinerer PLA schneller oder langsamer? Warum? Was bedeutet ein kleinerer PLA für die Implementierung der ReTI in Hardware?
Antwort: Ein kleinerer PLA ist schneller, da weniger Produktterme und Verbindungen zu geringerer Kapazität und kürzeren Signalwegen führen. Die Tiefe bleibt zwar konstant (zweistufig), aber die Verzögerung innerhalb der Ebenen sinkt. Für die ReTI-Hardware-Implementierung bedeutet ein kleinerer PLA: weniger Chip-Fläche, geringerer Energieverbrauch und höhere Taktfrequenz.
Übungsblätter
| Blatt | Aufgabe | Thema | Punkte |
|---|---|---|---|
| Blatt05 | 2 | Schaltkreis zeichnen, symbolische Simulation | 5 |
| Blatt05 | 3 | CMOS-Realisierung: |
4 |
| Blatt05 | 4 | Eindeutigkeit der Belegung |
3 |
| Blatt06 | 4 | Gatter nur mit NAND realisieren (AND, NOT, OR, NOR, XOR, XNOR), Kosten |
7 |
| Blatt07 | 2 | PLA aus Abbildung: Polynome, Kosten, Hypercube, KV-Diagramm | 6 |
Quellen
- k311-Kombinatorische_Schaltkreise_Gatter_Transistoren — Gatter, Wahrheitstabellen, CMOS, Transistoren
- k312-Kombinatorische_Schaltkreise_Definition — Schaltkreis-Definition, Semantik, Kosten, Tiefe
- Exam — Aufgabe 3b/c/d: PLA, Pentium-Bug, PLA-Größe
- probeklausur — Aufgabe 3b/c/d: identische Aufgaben
- Blatt05 — Schaltkreis, CMOS-Realisierung
- Blatt06 — NAND-Realisierung aller Gatter
- Blatt07 — PLA-Übung, Kostenberechnung
Priorität
CRITICAL. A3b–d liefern 9 der 16 Punkte von Aufgabe 3 und sind konzeptionell (kein langes Rechnen). Beherrsche:
- PLA-Struktur (AND-Plane → OR-Plane) und DNF-Zusammenhang.
- CMOS-Grundlagen: p-Kanal leitet bei 0, n-Kanal bei 1; NAND = n seriell / p parallel.
- Pentium-Bug: vergessene PLA-Einträge, Neu-Minimierung
kleinerer PLA. - Kosten:
= Verbindungen, = Produktterme. Tiefe = längster Pfad. - Kleinerer PLA = schneller (weniger Kapazität, kürzere Wege).