Logische Variablen besitzen die Wertemenge {0,1}
Die technologische Umsetzung und Implementierung von logischen Zuständen {0,1} findet i.A. durch elektronische Schaltungstechnik statt.
Logische Funktionen werden mit Funktions- oder Wahrheitstabellen beschrieben, die alle Kombinationen von Logikwerten der Eingangsvariablen auf ein oder mehrere Ausgangswerte abbilden.
Den logischen Zuständen werden i.A. zwei verschiedene Spannungspegel zugeordnet, deren Werte abhängig von der Schaltungstechnologie sind.
Es werden keine festen Spannungswerte sondern Spannungsbreiche (Intervalle) verwendet, z.B. für die TTL-Technologie, die mit einer Versorgungsspannung von 5V betrieben wird
Der Grund von Spannungsintervallen liegt in einem möglichst großen Störabstand begründet, d.h. Immunität gegen Störungen, da digitale Spannungssignale bei der Technologieumsetzung tatsächlich als analoge Signale auftreten, d.h. wert- und zeitkontinuierliche Signale.
Ein nicht vermeidbares Phänomen, das Signalrauschen, welches physikalisch bedingt ist, führt immer zu einer Unsicherheit des Spannungspegels von digitalen Signalen.
Weiterhin können sich Logikpegel nihct beliebig schnell ändern (0 → 1, 1 → 0), und es gibt immer eine Zeitspanne in der sich ein technisches Logiksignal in einem undefinierten Zustand befindet!
[1]
Es gibt verschiedene Schaltungstechnologien, mit denen Digitallogikschaltungen auf Transistorebene realisiert werden können.
Bipolare Transistortechnik mit folgenden Eigenschaften:
Complementary Metall Oxide Substrate → Feldeffekt-Transistortechnik, Heute dominierender Technologieprozeß mit folgenden Eigenschaften:
Emitter-Coupled-Logic → bipolare Transistortechnik mit folgenden Eigenschaften:
Logische Grundfunktionen der kombinatorischen Logik
x | y=¬ x |
0 | 1 |
1 | 0 |
CMOS: Complimentary Metal Oxide Substrate Technologie
Die Transistorschaltung besteht aus einem sog. N-Kanal (unten) und dazu im Verhalten komplementären P-Kanal (oben) MOS-Feldeffekttransistor, mit selbstsperrenden Verhalten.
Weitere elektronische Bauelemente sind zur Implementierung im Gegensatz zu der Bipolartransistortechnik nicht erforderlich.
Das in der Digitaltechnik gewünschte Schaltverhalten {0,1} ergibt sich aus dem analogen Übertragungsverhalten der Transistoren, d.h. der Kennlinie eines N-/P-MOSFET-Transistors.
Vereinfacht kann ein Transistor als steuerbarer Schalter verstanden werden. Jedoch: Ein FET Transistor ist eine spannungsgesteuerte Stromquelle.
Dieser Anschluss ist als Ladungslieferant zu verstehen, d.h. der Quelle für elektrische Ladungsträger, den Elektronen (neg.), oder den sog. Löchern (pos.).
Gegenüber der Ladungsquelle befindet sich die Ladungssenke, über den ein Fluss von Ladungsträgern stattfinden kann.
Der Gate-Anschluss beeinflusst den Ladungstransport zwischen Source und Drain-Anschluss, und ermöglicht eine spannungsgesteuerte Stromquelle.
Der andere Zustand eines Transistors ist der leitende Zustand, bei dem ein elektrischer Strom zwischen Source und Drain-Anschluss IDS fließen kann.
Neben den drei Anschlüssen {S,G,D} gibt einen sog. Substrat-Anschluss, der mit einem fixen Potential verbunden ist.
Aus Gründen der Übersichtlichkeit verwendet man vereinfachte elektronische Transistorsymbole, die im folgenden ausschließlich verwendet werden.
Elektronische Schaltsymbole von MOSFET Transistoren
Man kann einen Inverter mit zwei Transistoren oder einem Transistor und einem Widerstand aufbauen. Überlege, was elektrotechnisch der Vorteil und der Nachteil wären.
Warum sind bipolare Transistoren gegenüber Feldeffekttransistoren in der Digitallogik unterlegen?
Welchen Nachteil haben FET Transistoren (physikalisch)
Wo kommen die für einen P-Kanal MOSFET benötigten negativen Steuerspannungen her?
Logische Funktion: Und-Verknüpfung → Konjunktion
x | y | z=f(x,y) | ¬z |
0 | 0 | 0 | 1 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 0 |
CMOS Technologie ist grundsätzlich invertierend → Inverter ist Elementarzelle der CMOS Logik!
Daher ist einfachste Implementierung eine Und Gatters ein Nicht-Und Gatter (NAND) → 4 Transistoren
Logische Funktion: Oder-Verknüpfung → Disjunktion
x | y | z=f(x,y) | ¬z |
0 | 0 | 0 | 1 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 1 | 0 |
Logische Funktion: Exklusiv-Oder-Verknüpfung → 1-Bit-Addierer!
x | y | z=f(x,y) |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Eine Logikschaltung besitzt Ein- und Ausgänge, d.h., beschrieben durch Vektoren X=(x1,x2,..,xn) und Y=(y1,y2,..,ym)
Eine Logikschaltung ist eine Netzliste aus elementaren Logikgattern (z.B. aus einer Standardbibliothek)
Ein Logiksimulator kann ereignisbasiert die Änderung der Ausgangssignale bei einer Änderung der Eingangssignale und allen inneren Signalen berechnen
Wichtig: Ein technologisches Zeitmodell für die Signalausbreitung ist erforderlich und muss vom Simulator unterstützt werden
Das Eingabemuster wird gleichzeitig auf die LUT und die zu testende Schaltung (DUT, Dvice under Test) gegeben
Ein Komparator oder bei m=1 ein EXOR Gatter wird verwendet um das Ergebnis zu evaluiren
Ein nachfolgendes Register “sampled” das Vergleichsergebnis (Assertion true/false)
Implementiere die Boolesche Gleichung eines EXOR Gatters in ReTro mit elementaren Logikgattern
Füge die Schaltung in eine Testumgebung ein (siehe Abb. 10), um die Wahrheitstabelle testen zu können.
Die Boolesche Algebra besteht aus drei Operationen:
Boolesche Werte besitzen eine Wertmenge {0,1}.
Boolesche Funktionen bilden n Variablen (n-dimensionaler Vektor) auf m Ergebniswerte (m-dimensionaler Vektor) ab:
I.A. ist m=1, d.h. Verwendung von skalaren booleschen Funktionen.
Jede m-dimensionale Boolesche Funktion kann in einen Satz aus m skalaren Funktionen zerlegt werden (ohne weitere Transformation)
Boolesche Algebra ist Hilfsmittel beim Entwurf von digitalen Schaltungen.
Eine Aufgabenstellung definiert Schaltbedingungen, die in einer Funktions-/Wahrheitstabelle dargestellt werden.
Dabei können in einer Tabelle beliebige m-dimensionale Boolesche Funktionen als Verhaltensbeschreibung dargestellt werden, d.h., wie Eingangs- auf Ausgangswerte abgebildet werden.
switch1 | switch2 | motor1 | light2 |
0 | 0 | 0 | 1 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 |
Diese Schaltbedingungen können auch durch boolesche Funktionen dargestellt werden, die aus der Funktionstabelle abgeleitet werden.
Die so gewonnenen Funktionen werden mittels Gesetzen der Booleschen Algebra umgeformt und vereinfacht, so dass eine technische Realisierung mit minimalen Aufwand erfolgen kann.
Aus Funktionstabellen werden im ersten Entwurfsschritt sog. Normalformen von logischen Funktionen abgeleitet. Man unterscheidet:
Eine Summe aus Produkttermen (SOP)
Ein Produkt aus Summentermen (POS)
ai | aj | q | |
x | x | 1 | → Teilterm |
x | x | 0 | |
Beispiel einer SOP Normalform
A | B | Q | |
0 | 1 | 1 | → (¬ A • B) |
1 | 0 | 1 | → (A • ¬ B) |
0 | 0 | 0 | |
1 | 1 | 0 | |
→ Q = (¬A•B) + (A•¬B)
Jede Boolesche Operation (+ *) wird auf Logikgatter abgebildet.
Negation werden auf Inverter abgebildet und ggfs. direkt in einer Verknüpfung integriert
Die boolesche Funktion Q führt zu folgender Digitallogikschaltung:
Jeder Teilterm besteht aus einer Oder-Verknüpfung der Eingangsvariablen, die entweder negiert oder nicht negiert im Term auftreten.
Alle Teilterme werden und-verknüpft und ergeben die boolesche Funktion:
ai | aj | q | |
x | x | 0 | → Teilterm |
x | x | 1 | |
Beispiel einer POS Normalform
A | B | Q | |
1 | 1 | 0 | → (¬ A + ¬ B) |
0 | 0 | 0 | → (A + B) |
0 | 1 | 1 | |
1 | 0 | 1 | |
→ Q = (¬ A + ¬ B) • (A + B)
Beide Normalformen sind i.A. noch redundant, d.h. sie können vereinfacht werden.
Eine Schaltmatrix mit drei Eingängen X=(A,B,C) und einem Ausgang Y soll bestimmt werden.
Immer wenn zwei Tasten gleichzeitig gedrückt werden (Xi=1,Xj=1), soll die Lampe leuchten (Y=1).
Aufgabe: Bestimmung der Funktionstabelle aus obigen Anforderungen und Vereinbarungen
Leite die Disjunktive Normalform aus der Wahrheitstabelle des technischen Beispiels ab.
Leite die Konjunktive Normalform aus der Wahrheitstabelle des technischen Beispiels ab.
|
|
Term 1:
Term 2:
Term 3:
DNF:
Term 1: , Term 2:
Term 3: , Term 4:
Term 5:
DNF:
Die boolesche Algebra kennt nur die zweiwertige Menge {0,1} zur Zustandsbeschreibung eines digitalen Wertes. Bei der technologischen Umsetzung können mehrwertige Logikzustände auftreten:
Starker logischer Wert False. Ein Signal mit diesem Wert darf mit keinem anderen starken Signal überlagert bzw. zusammengeschlossen werden (elektrisch: Kurzschluss!).
Starker logischer Wert True. Ein Signal mit diesem Wert darf mit keinem anderen starken Signal überlagert bzw. zusammengeschlossen werden.
Schwacher logischer Wert False. Schwache Signale können überlagert und mittels einer Auflösungsfunktion einen summierten Wert bilden.
Schwacher logischer Wert True. Schwache Signale können überlagert und mittels einer Auflösungsfunktion einen summierten Wert bilden.
Hochohmiger Zustand. Mehrere Signale können überlagert und einen gemeinsamen Bus bilden. Der Zustand Z entkoppelt den schreibenden (treibenden) Zugriff eines Kommunikationsteilnehmers von einer Signalleitung. Die Signalleitung kann bidirektional verwendet werden. Lesender Zugriff ist aber jederzeit möglich.
Logischer Zustand ”Don’t-Care”. Bei der Evaluierung von booleschen Funktionen können dieses Zustände ignoriert werden, mit der Möglichkeit der Logikoptimierung.
Zweiwertige Logik {0,1}
Mehrwertige Logik {0,1,L,H,Z,X,..}
Example 1.
signal x: std_logic_vector(3 downto 0);
...
process triStateDriver(we,addr)
begin
if we = ′1′ and addr=”00” then
x <= ”0000”;
elsif we = ′1′ and addr=”01” then
x <= ”0001”;
else
x <= ”ZZZZ”; −− Tristate BUS State Disconnected
end if;
end process;
Ziel der Minimierung:
Möglichst kleine Anzahl von Logikgattern bei der elektronischen Implementierung bei gleichzeitig geringer Signallaufzeit,
Man unterscheidet vier grundlegenden Verfahren:
Die KV-Diagramm-Methode ist anschaulich und intuitiv, und soll als Einstieg verstanden werden.
Es findet eine Darstellung der Funktionstabelle in Zeilen und Spalten eines Diagramms statt. Dabei sind die Diagrammfelder so angeordnet, dass sich bei einem Übergang von einem zu einem anderen Feld immer nur eine Variable ändert.
Es existieren unterschiedliche Diagramme für DNF (SOP) und KNF (POS) Darstellungen.
In jedem Feld wird der zu den Werten der Eingangsvariablen gehörende Ausgangszustand/wert Fi,j={0,1} eingetragen.
Das Diagramm ist zyklisch: der Übergang von rechten Rand zum linken, und von unteren zum oberen ist möglich → Torusoberfläche
Bei drei Eingangsvariablen reduziert sich das Diagramm um zwei Zeilen.
Folgende Schritte sind zur Ableitung einer minimalen d.h. reduzierten DNF (RDNF) notwendig:
Benachbarte Felder Fi,j=1 werden zu Flächen mit 2N Elementen zusammengefasst. Die größtmöglichen Flächen/Gruppen sollen gebildet werden.
Alle Felder müssen in mindestens einer Fläche/Gruppe erfasst werden.
Ableitung eines neuen Teilterms der RDNF aus einer Fläche/Gruppe: Produkt aus allen Variablen, die allen Feldern der Gruppe gemeinsam sind.
Die Teilterme werden summiert.
Es ist eine Reduktion von ursprünglich 49 booleschen Operationen und 8 Teiltermen auf 11 Operationen und 3 Teiltermen erfolgt! Nimmt man im Mittel 4 CMOS-Transistoren je boolescher Operation an, ergibt sich eine Verringerung der Transistoren von 196 → 44, und eine Verringerung der Chipfläche um den Faktor 2.11
Folgende Schritte sind zur Ableitung einer minimalen d.h. reduzierten KNF (RKNF) notwendig:
Verfahren nach Quine und McCluskey
Die QM-Methode ist formaler als das vorherige Diagrammverfahren. Zum Verständnis einige Definitionen:
Beispiel: .
Summenterme (der KNF) werden als Maxterme bezeichnet, wenn jede Variable einmal auftritt. Bei der vollständigen KNF ist jeder Summenterm ein Maxterm.
Ein Produktterm P heißt Implikant der booleschen Funktion Q, wenn aus P=1 ⇒ Q=1 folgt. Jeder Produktterm der DNF ist ein Implikant.
Beispiel: sowohl als auch sind Implikanten von Q.
Beispiel: Q=A•¬B•C•¬D + A•B•C + ¬A•¬B•C•¬D
Terme, in denen eine Variable komplementär auftreten, lassen sich verkürzen:
(2435) ⇒ X1X0
(2345) ⇒ X1X0
(14) →
(46) →
Verkürzte (minimierte) boolesche Funktion:
Einzelne Primterme sind möglicherweise noch redundant. Ihre Anzahl lässt sich durch Bestimmung der minimalen Überdeckung noch minimieren.
Im Beispiel: Suche der Überdeckungen zwischen Produkt- und Primtermen:
Alle Überdeckungen werden markiert (X), d.h. wenn ein Primterm vollständig in einem Minterm enthalten ist.
Alle Primterme können weggelassen werden, solange in jeder Zeile mindestens eine Überdeckung vorhanden ist. Im Beispiel ist keine weitere Reduzierung möglich!
Binary-Decision-Diagram (BDD)
Beispiel: f(x1,x2)=¬x1+¬x2
Erzeugung eines BDD’s aus BF schrittweise durch Evaluierung der einzelnen Variablen {x1,..,x2} mit den Werten {0,1}:
Jeder innere Knoten stellt eine neue (Sub-) BF dar:
Die Tatsächliche Größe und Struktur eines BDD’s hängt von der Variablenreihenfolge bei der Erzeugung ab! (Ausnahme: symmetrische BF).
Beispiel zweier BDDs erzeugt aus f(x1,x2,x3)=x1 • x2 + x3
Alternativ kann die logische Formel (in syntaktischer Notation) zunächst im ersten Schritt durch einen Parser auf einen abstrakten Syntaxbaum (AST) abgebildet werden
Im zweiten Schritt wird aus dem AST ein BDD ähnlich der Shanonzerlegung gebildet (aber es wird immer nur ein binärer Term evaluiert)
Ein OBDD ist ein BDD, in dem auf jeden Pfad alle Variablen höchstens einmal und gemäß einer vorgegebenen Ordnung getestet bzw. evaluiert werden müssen.
Die Reduktion eines (O)BDD’s hat das Ziel, die Anzahl der Pfade und Variablen zu minimieren, was in einer reduzierten und minimierten BF resultiert.
Die beiden Kanten eines Knotens v(xi) verzweigen beide auf den gleichen Nachfolgeknoten w(xj). Der Knoten v kann entfernt werden, und alle eingehenden Kanten werden auf w umgeleitet.
Zwei Knoten v(xi) und w(xi) der gleichen Variable besitzen gleiche 0- und 1-Nachfolger. Die Knoten v und w können zu einem neuen Knoten s und f zusammengefasst werden.
Für eine möglichst schnelle Suche, optimal Θ(log 2N), sollte der Baum balanziert sein, d.h. jeder Knoten hat zwei Nachfolger (außer Endknoten).
Die Höhe eines Baumes ist dann minimal H=log 2N:
Für die Balanzierung eines Baumes benötigt man zwei Rotationsoperationen:
Rechte Rotation zweier Knoten q und p. Die weiterführenden Verzweigungen werden entsprechend der Ordnungsrelation umgeordnet (linkes Bild).
Linke Rotation zweier Knoten q und p. Die weiterführenden Verzweigungen werden entsprechend der Ordnungsrelation umgeordnet (rechtes Bild).
Kombination aus Links- und Rechtsrotation führt zur Balanzierung eines linkslastigen asymmetrischen Baumes (linkes Bild).
Kombination aus Rechts- und Linksrotation führt zur Balanzierung eines rechtslastigen asymmetrischen Baumes (rechtes Bild).
Optimiere den BDD mit den eingeführten BDD Regelen
Leite die optimierte BF aus dem BDD ab.
Die Ableitung einer BF aus einem BDD wendet die inverse Shanon Zerlegung an
Bei der Ableitung einer BF aus einem BDD beginnt man bei den 0/1 Blättern und aufwärts gehend baut man für jeden Knoten eine BF bis der Wurzelknoten erreicht wurde
Beispiel: Knoten v3(x3) ist f3=¬ x3 • 0 + x3 • 1 = x3
Wenn eine Hazard (Gefahr) in einer digitalen Schaltung auftritt, führt dies zu einer vorübergehenden Änderung der Ausgabe der Schaltung [2].
D.h., ein Hazard in einer digitalen Schaltung ist eine vorübergehende Störung im idealen Betrieb der Schaltung, die nach einer unbestimmten Zeit von selbst aufgehoben wird.
Diese Störungen oder Fluktuationen treten auf, wenn unterschiedliche Wege vom Eingang zum Ausgang unterschiedliche Verzögerungen haben, und aufgrund dieser Tatsache Änderungen der Eingangsvariablen den Ausgang nicht sofort ändern, sondern am Ausgang nach einer kleinen Verzögerung erscheinen, die durch die Logikgatter verursacht wird.
In digitalen Schaltungen gibt es drei verschiedene Arten von Gefahren
Formal tritt ein statischer Hazard auf, wenn eine Änderung an einem Eingang dazu führt, dass sich der Ausgang kurzzeitig ändert, bevor er sich auf seinen korrekten Wert stabilisiert. Basierend auf dem korrekten Wert gibt es zwei Arten statischer Gefahren, wie in der folgenden Abbildung dargestellt:
Befindet sich der Ausgang aktuell im logischen Zustand 1 und nachdem der Eingang seinen Zustand geändert hat, ändert sich der Ausgang vor dem Setzen auf 1 vorübergehend auf 0, dann handelt es sich um eine Static-1-Gefahr.
Befindet sich der Ausgang aktuell im logischen Zustand 0 und nachdem der Eingang seinen Zustand geändert hat, ändert sich der Ausgang vor dem Setzen auf 0 vorübergehend auf 1, dann handelt es sich um eine Static-0-Gefahr.
Betrachten wir zuerst die Gefahr von Statik-1. Um eine statische 1-Gefahr für eine digitale Schaltung zu erkennen, werden folgende Schritte ausgeführt:
Erstelle die BF für den Ausgang der digitalen Schaltung auf, Y(A,B,C,..).
Erstelle einer K-Map für diese Funktion Y, und notiere alle angrenzenden 1-Werte.
Wenn es ein Zellenpaar mit 1-Werten gibt, das nicht in derselben Gruppe zu liegen scheint (d.h. ein Prim-Implikant), zeigt dies das Vorhandensein einer statischen 1-Gefahr an. Jedes dieser Paare ist eine statische Gefahr.
Das grün umrandete Paar von 1-Werten ist nicht Teil der gleichen Gruppierung / Paarung. Dies führt zu einer statischen Gefahr in diesem Schaltkreis.
Sobald eine statische 1-Gefahr erkannt wurde, kann sie leicht beseitigt werden, indem der Funktion (Schaltung) weitere Terme (Logikgatter) hinzugefügt werden.
Der gebräuchlichste Ansatz ist, die fehlende Gruppe in die vorhandene boolesche Funktion einzufügen, da das Hinzufügen dieses Terms die Funktion nicht beeinflusst, die Instabilität jedoch beseitigt.
Da im obigen Beispiel das grün umrandete Paar von 1-Werten die statische-1-Gefahr verursacht, fügen wir dies wie folgt als Hauptimplikant für die vorhandene Funktion hinzu:
In ähnlicher Weise müssen für statische-0-Gefahren 0-Werte anstelle von 1-Nummern berücksichtigt werden.
Wenn benachbarte 0-Werte in der K-map nicht in derselben Gruppe zusammengefasst sind, so können diese eine statische-0-Gefahr verursachen.