(translation 2024-12-29)
Boolesche Algebra und logische Grundgatter
Wir beginnen (die Reise) mit drei sehr grundlegenden logischen Funktionen (oder Operationen), die trotz ihrer Einfachheit bereits gültige Anweisungen einer regulären CPU sind:
NICHT, UND und ODER
Logische Funktionen – auch Operationen genannt, der Autor wird hier beide Begriffe synonym verwenden – können auf verschiedene Weise beschrieben werden. Am häufigsten werden sie implizit als Boolesche Gleichung beschrieben, sie können aber auch explizit in einer Wahrheitstabelle erklärt werden.
Eine Wahrheitstabelle ist eine Tabelle mit einer Spalte für jede Eingabe und einer Spalte für jede Ausgabe. Sie zeigt also die Ausgabe bzw. die Ausgaben der Funktion für alle möglichen Kombinationen von Eingaben. Sie kann auch Spalten mit Zwischenwerten enthalten.
Die in dieser Lektion gezeigten Wahrheitstabellen sind im Allgemeinen sehr klein und zeigen nur Kombinationen von zwei Eingaben, obwohl alle Funktionen, die Eingaben verbinden, auf eine beliebige Anzahl von Eingaben erweitert werden können.
Boolesche Gleichungen können in Wahrheitstabellen umgewandelt werden und umgekehrt. Später werden wir auch Karnaugh-Diagramme vorstellen, eine Möglichkeit, die Boolesche Logik auf grafische Weise zu optimieren.
NOT
Die Not-Operation, auch als Inversion bezeichnet, wird als \[\overline{A} = \neg A = Q\] bezeichnet
A |
Q |
0 |
1 |
1 |
0 |
Die Not-Operation ist die einzige mit nur einem Eingang, sie kann nicht erweitert werden.
Dementsprechend ist die Gate-Level-Implementierung auch unter dem Namen Inverter bekannt. Trotz seiner scheinbar einfachen Funktionalität gibt es viel über den Inverter zu sagen, sowohl in Bezug auf die Logik als auch auf die Implementierung. Daher wird der Autor ihm in naher Zukunft einen eigenen Beitrag widmen.
UND
Die Und-Operation, auch als Konjunktion bezeichnet, wird als \[A \land B = Q\] bezeichnet
A |
B |
Q |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
ODER
Die Oder-Operation, auch als Disjunktion bezeichnet, wird als \[A \lor B = Q\] bezeichnet
A |
B |
Q |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
Obwohl die Boolesche Algebra an sich ein interessantes Gebiet ist, werden wir das Thema hier nur kurz streifen, gerade genug, um ein Gefühl dafür zu bekommen und zu verstehen, wie man mit Booleschen Formeln arbeitet.
Note
|
Wenn Sie an einer tieferen Betrachtung interessiert sind, die Induktion und Beweisführung bietet, verweise ich Sie auf die entsprechende Literatur (Quellen am Ende aufgeführt). |
Die Gesetze der Booleschen Algebra sind in der folgenden Tabelle aufgeführt:
Gesetz |
∧ (Konjunktion, UND-Operator) |
∨ (Disjunktion, ODER-Operator) |
Kommutativgesetz |
\[p \land q = q \land p\] |
\[p \lor q = q \lor p\] |
Assoziativgesetz |
\[p \land (q \land r) = (p \land q) \land r = pqr\] |
[p \lor (q \lor r) = (p \lor q) \lor r = p \lor q \lor r\] |
Absorptionsgesetz |
\[p \land (p \lor q) = p\] |
\[p \lor (p \land q) = p\] |
Distributivgesetz |
\[p \lor (q \lor r) = (p \land q) \lor (p \land r) = pq \lor pr\] |
\[p \lor (q \lor r) = (p \lor q) \lor (p \lor r) = (p \lor q)(p \lor r)\] |
neutrale Elemente |
\[p \land 1 = p\] |
\[p \lor 0 = p\] |
Komplementärelement |
[p ∧ Ωp = 0] |
[p ∨ Ωp = 1] |
Reference |
Hans-Jochen Bartsch |
Taschenbuch Mathematischer Formeln, 20. Auflage, S. 27- 28 |
Die ersten beiden in der Tabelle genannten Gesetze, das Kommutativgesetz und das Assoziativgesetz, kennen Sie wahrscheinlich intuitiv oder aus der Schule.
Wie Sie sehen, kann jedes Gesetz sowohl auf Konjunktionen als auch auf Disjunktionen angewendet werden, ohne dass es Ausnahmen gibt.
Das Kommutativgesetz besagt, dass die Reihenfolge der Variablen für die Operation neutral ist und vertauscht werden kann, ohne dass sich das Ergebnis der Operation ändert.
Das Assoziativgesetz besagt, dass Klammern austauschbar sind. Konjunktionen können ohne Operator zusammengefasst werden.
Das Absorptionsgesetz ist Ihnen wahrscheinlich nicht aus der Schule bekannt, da es nur in der Logik verwendet wird und in der Schulmathematik keine Entsprechung hat.
Das Distributivgesetz wiederum ist aus der Schule bekannt. Es besagt, dass Variablen/Operationen außerhalb von Klammern auf alle Variablen in der Klammer angewendet werden müssen.
Das Gesetz der neutralen Elemente ist wiederum etwas Besonderes in der booleschen Algebra. Die logische Eins entspricht „wahr“, und daher sind p und wahr gleich „wahr“, ebenso wie die logische Null „falsch“ ist und daher p oder falsch gleich p ist.
Das Komplementärgesetz impliziert, dass es zu jedem Element (Variable) p ein komplementäres Element (Variable) p gibt, so dass die Konjunktion zu einer logischen Null führt, während die Disjunktion zu einer logischen Eins führt.
An dieser Stelle muss der Autor etwas weiter ausholen, da einige praktische Probleme auf elektrischer Ebene einige Überlegungen auf ihrer logischen Ebene erfordern: Auf der Implementierungsebene (für eine elektrische Implementierung) ist es eher ungewöhnlich, UND, ODER und NICHT direkt zu verwenden, stattdessen werden die inversen Funktionen NAND und NOR verwendet.
NAND und NOR
Die NAND-Operation wird als \[\overline{A \land B} = Q\] bezeichnet, während die NOR-Operation als \[\overline{A \lor B} = Q\] aufgeführt ist-
NAND |
NOR |
Wie Sie sehen können, sind die Ergebnisse für diese beiden Funktionen genau das Gegenteil ihres jeweiligen Komplements (NAND ⇐⇒ AND, NOR ⇐⇒ OR). In diesem Sinne empfiehlt der Autor dem Leser, die entsprechenden Wahrheitstabellen als Übung zu erstellen.
Der De-Morgan-Satz
Zusätzlich zu den oben eingeführten grundlegenden Axiomen gibt es den De-Morgan-Satz, den wir benötigen, um NAND und NOR einfach umzuwandeln. Der Einfachheit halber zeigen wir nur für zwei Elemente, aber der Satz ist unabhängig von einer beliebigen Anzahl von Elementen/Eingaben.
\[\overline{p_1 \land p_2} = \overline{p_1} \lor \overline{p_2}\]
A |
B |
\[\overline{A}\] |
\[\overline{B}\] |
\[\overline{AB}\] |
\[\overline{A} \lor \overline{B}\] |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
\[\overline{p_1 \lor p_2} = \overline{p_1} \land \overline{p_2}\]
A |
B |
\[\overline{A}\] |
\[\overline{B}\] |
\[\overline{AB}\] |
\[\overline{A} \lor \overline{B}\] |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
Jetzt sind wir endlich gerüstet, um mit dem elektrischen Teil/der Beschreibung fortzufahren.
Umsetzung auf elektrischer Ebene
Zunächst stellen wir einige gängige elektronische Komponenten und ihre Symbole vor, die in elektrischen Schaltplänen verwendet werden.
Die Diode
Wir beginnen unsere Reise mit einem vereinfachten Schaltkreisentwurf für „und“ und „oder“, der als verdrahtete Logik bezeichnet wird. Dieser Schaltkreisentwurf ist so einfach, dass es nicht einmal möglich ist, einen Inverter darin zu implementieren.
verdrahtet und |
verdrahtet oder |
# diodes: 2 |
# diodes : 2 |
Wie Sie sehen können, ist diese Schaltung nicht kompliziert – selbst Laien auf dem Gebiet der Elektronik sollten in der Lage sein, die wesentlichen Teile zu identifizieren – die Eingänge sind jeweils mit einer Diode verbunden. Eine Diode ist ein einfacher Halbleiter, der als Einweg-Strasse für elektrischen Strom fungiert. Halbleiter sind eine Gruppe von Materialien (hier sind aufgrund ihrer chemischen Eigenschaften nur Silizium und Germanium nützlich), nicht wirklich leitfähig, aber auch kein Isolator. Tatsächlich hängt die Leitfähigkeit des Materials von der beabsichtigten Verunreinigung seiner Kristallgitterstruktur mit Elementen der fünften Hauptgruppe ab, bei einem n(egativ)-dotierten Material bzw. der dritten Hauptgruppe für ein p(ositiv)-gepunktetes Material. Dieser Vorgang wird als Dotierung bezeichnet. Für den interessierten Leser hier ein Link zu allen physikalischen Hintergründen, die der Autor zu faul war zu wiederholen, da sie oft und besser bereits im Internet erklärt werden ;-) .
Alles, was wir jetzt wissen müssen, ist, dass eine Diode aus einem Substrat (in den meisten Fällen heute Silizium) besteht, das auf der einen Seite n-dotiert und auf der anderen Seite p-dotiert wird, wodurch dazwischen ein pn-Übergang entsteht, der als Einwegbarriere fungiert: Elektronen können von der n-Seite zur p-Seite strömen, aber nicht umgekehrt.
Die zweite Komponente der oben gezeigten Schaltkreise ist ein Widerstand, dessen einziger Zweck darin besteht, den fließenden Strom zu reduzieren. Für „wire-and“ ist er als Pull-up-Widerstand verdrahtet, während er für „wire-or“ als Pull-down-Widerstand verdrahtet ist. „Wire-and“ erreicht nur dann einen ausreichend hohen Pegel, wenn alle Eingänge einen hohen Pegel aufweisen. Ähnlich verhält es sich mit „wire-or“, das nur dann einen niedrigen Pegel aufweist, wenn keiner der Eingänge einen hohen Pegel annimmt. Um zu verhindern, dass Strom vom Pull-up-Widerstand zum Ausgang der vorherigen Schaltung (Draht und) bzw. Strom von einem Eingang zurück zum anderen Eingang (Draht-oder) fließt, sind die Dioden vorhanden.
Ein Problem dieser Anordnung, auf das wir definitiv irgendwann stoßen werden, ist, dass das Signal beim Fließen vom Eingang zum Ausgang abgeschwächt wird und es keine Möglichkeit gibt, das Signal wiederherzustellen, sodass der Signalpegel am Ausgang von der nachfolgenden Schaltung möglicherweise nicht richtig erkannt wird. An dieser Stelle möchte der Autor eine Anmerkung zu einem subtilen Detail in der Terminologie machen: Obwohl es oft als Verstärkung beschrieben wird, möchten wir hier festhalten, dass wir hier einen „intelligenten“ Signalverstärker wollen, der den Signalpegel des Eingangssignals erkennt und wiederherstellt, im Gegensatz zu einem „dummen“ Verstärker, der lediglich das Eingangssignal verstärkt.
Dioden sind also ein gutes Bauteil, z. B. nützlich, wenn Teile der Schaltung vor elektrostatischer Entladung geschützt werden sollen (ESD), doch für unsere Logik ist es nicht ausreichend.
Was wäre, wenn wir ein Bauteil hätten, das das Signal verstärken kann, sodass wir Schaltkreise entwerfen könnten, die auch die Signalpegel damit wiederherstellen? Glücklicherweise gibt es ein solches Bauteil, das im nächsten Abschnitt vorgestellt wird.
Der MOSFET-Transistor
Der Transistortyp, den wir hier vorstellen und verwenden möchten, ist ein MOSFET (Metall-Oxid-Halbleiter-Feldeffekttransistor) – im Gegensatz zum klassischen Bipolartransistor. Wie der Name schon sagt, ist ein MOSFET ein Transistor (oder Halbleiter), bei dem der Laststrom durch die Stärke des elektrischen Feldes gesteuert werden kann, das am Gate-Eingang erzeugt wird
Das obige Bild skizziert die Hauptstruktur eines MOSFET auf dem Silizium. Source und Drain sind beide mit einem eigenen n-Wannen-Substrat verbunden, während das dazwischenliegende Gate durch eine dünne Siliziumdioxidschicht isoliert ist. Es gibt einen vierten Anschluss, „Bulk“, der zum Substrat führt, in diskreten MOSFETs, die mit der Source verbunden sind, aber im Moment ist dieser nicht relevant. Hinter der Funktionsweise eines MOSFET steckt eine Menge komplexer Physik. Alles, was wir im Moment wissen wollen, ist, dass beim Anlegen einer Spannung an das Gate ein elektrisches Feld induziert wird, das einen Kanal zwischen Source und Drain erzeugt und den Elektronenfluss von Source zu Drain ermöglicht. Je höher die Gatespannung, desto größer (breiter) der Kanal, desto mehr Elektronen fließen (natürlich bis zu einer bestimmten Grenze). Und wenn die Gate-Spannung Null ist, ist auch der Kanal nicht vorhanden.
Nachfolgend sind häufig verwendete Symbole für MOSFETs, die in elektrischen Schaltplänen verwendet werden, sowie einige andere, die wir aufgrund des Kurses benötigen, dargestellt. Einige haben mehr als nur eines, insbesondere der MOSFET hat eine Reihe verschiedene Symbole, die die Unterschiede in der physischen Komponente widerspiegeln.
Mit dem eingeführten MOSFET-Element und einem einzelnen Widerstand, einem Element, das den Stromfluss reduziert, können wir direkt eine Inverterschaltung implementieren, wie in der obigen Abbildung dargestellt. Die Source ist mit der Erde verbunden und der Drain ist mit dem Inverterausgang und auch mit der Spannungsquelle über einen hochohmigen Widerstand verbunden. Das Gate ist der Eingang des Inverters. Wenn die Spannung am Gate niedrig eingestellt ist, leitet der MOSFET nicht und somit ist das am Ausgang verfügbare Potenzial ausreichend für eine logische Eins. Wenn eine Spannung an das Gate angelegt wird, wird der Drain-Source-Pfad des MOSFET leitfähig, das am Ausgang verfügbare Potenzial bricht zusammen und fließt über den Drain-Source-Pfad ab.
Auf elektrischer Ebene hat der Inverter zwei verschiedene Aufgaben zu erfüllen
-
Auffrischen des Signals (Pegel), das der Inverter von der vorhergehenden Schaltung erhält
-
Tatsächliches Invertieren des Signals
Es gibt auch integrierte Schaltkreise, die als Puffer oder Treiber bezeichnet werden und ausschließlich der ersten genannten Aufgabe gewidmet sind. Wir werden dies in einem späteren Blogbeitrag/einer späteren Lektion besprechen. Hier wollen wir uns nur auf den logischen Teil des Invertierens des Signals konzentrieren, obwohl beide Funktionen gleich wichtig sind, weshalb sie in einem Schaltkreis kombiniert werden Schaltung kombiniert werden. Natürlich müssen die logischen Signale auch in anderen logischen Schaltungen – wie und und oder – aufgefrischt werden, aber in den meisten Fällen wird diese Aufgabe ausschließlich von diesen Inverterstufen erledigt, danach oder davor.
Im Symbol wird die erste Aufgabe, das Auffrischen des Signals (Pegel), durch das Dreieck angezeigt, während der kleine Kreis die eigentliche Invertierungsfunktion kennzeichnet.
NMOS NAND |
NMOS NOR |
# transistor: 2 |
# transistor: 2 |
Jetzt wird klar, warum die Umkehrfunktion von UND und ODER auf Gatterebene einfacher ist als die ursprüngliche Funktion. Weil man anschließend eine Inverterschaltung hinzufügen muss, wodurch sich die Anzahl der Transistoren erhöht.
Ein großer Nachteil der Implementierung ist der hohe Stromverbrauch, der durch den Pull-up-Widerstand verursacht wird. Schauen wir uns an, ob es eine Möglichkeit gibt, dieses Problem zu lösen. Was wäre, wenn es einen Transistor mit der Bezeichnung PMOS mit einer komplementären Struktur gäbe – p-Wannen auf einem n-dotierten Substrat – für unsere bisher verwendete NMOS-Schaltung?
Wenn wir diese anstelle des Widerstands für den Pull-up-Pfad verwenden, können wir die Verlustleistung drastisch reduzieren. Wie Sie sich denken können, gibt es diese Technik, bei der beide Transistortypen kombiniert werden, und sie wird CMOS ( kurz für Complementary Metal Oxid Semiconductor) genannt.
CMOS NAND |
CMOS NOR |
# Transistor: 4 |
# Transistor: 4 |
Jetzt wird klar, woher die CMOS-Technologie ihren Namen hat: Wie wir in der Implementierung von NAND und NOR in der CMOS-Technologie sehen können, ist die obige P-Schaltung genau das Komplement der unteren N-Schaltung. Für den Inverter war diese Eigenschaft aufgrund der Symmetrie einfach nicht erkennbar. Aber wir können auch den Nachteil der CMOS-Technologie erkennen: Die Anzahl der Transistoren verdoppelt sich, was den Aufwand und die Komplexität des Herstellungsprozesses erhöht (komplexere Masken und Layouts, mehr Verarbeitungsschritte aufgrund unterschiedlicher Transistortypen, nmos und pmos auf einem Wafer) und der integrierten Schaltung als Endprodukt.
Die Toolchain, der CMOS-Prozess und die damit verbundenen Technologien sind jedoch bereits seit Jahrzehnten weiter- entwickelt und ausgereift, sodass dies heute keine Rolle mehr spielt. Tatsächlich hat Google kürzlich sogar das SkyWater Open Source PDK 130 veröffentlicht, ein sogenanntes Process Design Kit, das Elektrotechnikern eine Tool (Chain) zur Verfügung stellt, um Designs für anwendungsspezifische integrierte Schaltkreise (ASICS) zu erstellen, die dann direkt mit einem 130-nm-Prozess hergestellt werden können. Mehr dazu gibt es unter hier auf Hackaday.
Das war ein erster kleiner Einblick in die Boolesche Logik und ihre Implementierung auf Silizium. Natürlich steckt noch viel mehr dahinter als nur ein Referenzdesign, auch haben wir uns noch nicht mit ESD-Messungen und Schutzschaltungen für die Ein- und Ausgänge befasst.
Im nächsten Beitrag werfen wir einen Blick auf die Exklusiv-Oder-Verknüpfung (XOR).