Das juktive Normalform, das heißt, die Disjuktive,
also sprich, oder Verknüpfung von Minterm und Minterm,
ist halt die Unverknüpfung aller Schaltvariablen, die eben entweder normal oder negiert vorkommen.
Und als zweites dann quasi noch die konjunktive Normalform,
die quasi Äquivalent dazu aufgebaut ist. Das heißt,
die Unverknüpfung von Maxterm, die wiederum quasi alle Schaltvariablen entsprechend oder verknüpft haben.
Gut, die dritte Form oder dritte Art von Normalform,
die man dann eigentlich kennt, ist die sogenannte Read-Muller-Form.
Das ist also die additive Verknüpfung à la Read-Muller-Therme mit dem Funktionswert 1.
Die Theorie dazu basiert eben auch wieder auf dieser Rechnung in dem Körper GF2 beziehungsweise auch N,
wo ich eben sage,
ich habe als Verknüpfung und quasi als multiplikative Verknüpfung und XO,
beziehungsweise eben, also es ist exklusiv oder als additive Verknüpfung und wie gesagt,
bei den Remalle-Formen habe ich dann eben immer die XO-Verknüpfung dieser entsprechenden Basisfunktionen.
Wie sieht das aus beziehungsweise wie heißen diese Basisfunktionen für Sag
mal erst mal, wird eigentlich rekursiv gebildet, das Ganze.
Ohne Variablen habe ich eben nur die Menge mit dem Element 1,
mit einer Variablen wäre das dann eben eins und die Variable X1. Für zwei Variablen hätte ich dann eins,
X1, X2 und eben mit einem logischen Ohnverknüpft,
X2 und X1 und für drei Variablen entspreche das dann letztendlich
Dieser Menge von Basisfunktionen. Generell gilt für diese Basisfunktionen,
also wenn ich jetzt beliebig viele Variablen habe,
dass ich das Ganze dadurch rekursiv bilde,
dass ich sage,
ich nehme eben die schon bestehenden Basisfunktionen und hänge dann eben nochmal die entsprechenden Basisfunktionen hinten ran,
die dann eben nochmal multiplikativer sind,
sie voll dann mit einem und mit der neuen Variablen ergänzt worden sind.
Das sieht man hier
ganz gut
Nicht, also bei zwei Variablen habe ich eins,
X1, X2 und X2 und X1,
denn jetzt kommt eben noch die drei dazu,
das wäre dann also demzufolge jetzt dreimal eins,
ist dieser Term, X3 mal X1,
ist dann dieser Term, X3 mal X2,
ist dieses hier und X3 mal X2 und X1,
wäre dann eben hier dieser letzte Term.
Das wäre also das rekursive Verfahren,
wie man jetzt für diese Friedmala Form, die Basisfunktion erzeugt.
Und jetzt kann man im Prinzip mit Umrechnung der Bulschnalgebra aus
einem gegebenen Ausdruck dann eine Tridmala kodierten Ausdruck machen.
Beispiel hier unten werde ich gleich erläutern. Grundsätzlich für diese Umrechnung
benutzt man im Prinzip jetzt drei Tricks. Und zwar,
dass ich also eine Negation ersetze durch den entsprechenden Thermen XO1,
was ja genau zu einer Negation führen würde. Eine Oder-Verknüpfung,
also eine Disfunktion, kann ich eben bilden,
indem ich dann sage, statt A oder B entspreche,
dass dann eben A, XOB, XOA und B,
was also im Prinzip dann nichts anderes ist,
als dass diese eine zusätzliche Fall A und B eben quasi hier mit diesem letzten Therm wieder rausgenommen wird.
Und was man dann eben bei der Umformung auch noch ausnutzt,
das eben gilt für eine variable A,
XOA,
ist dann
gleich null
Ich nehme das Beispiel für so eine Umformung,
hätte ich jetzt eben hier eine Funktion von drei Variablen,
von X1, 2 und 3,
als X1 nicht oder X2, das entsprechend geklammert und X3.
Und hier wird jetzt eben als erstes quasi jetzt hier dieses Oder ersetzt,
indem ich dann also hier diesen Ausdruck bilde.
Das heißt, ich hätte dann eben statt des X1
nicht oder X2, X1 nicht, ups,
XO,
X-O, X-I, Entschuldigung, X-I, nicht.
Und X-2. Anschließend wird dann quasi hier im nächsten Schritt die Negation
aufgelöst, indem ich also jetzt diesen ersten Ausdruck anwende.
Das heißt, für das X-I nicht habe ich dann eben
hier in Klammern 1 X-O, X-I beziehungsweise hier genauso.
Anschließend kann man diese Klammern letztendlich wegfallen lassen. Hier hinten
wird jetzt Dieser Ausdruck und X2 quasi destributiv ausgerechnet. Das heißt,
da erhalte ich dann eben X2 und eins, also X2,
exklusiv oder X1 und X2, was dann eben dieser Ausdruck ist.
So, anschließend kann ich eben hier an dieser einen Stelle ausnutzen,
X2, exklusiv oder X2 ist gleich Null,
kann das wegfahren lassen, verhalte dann eben entsprechend jetzt diesen Endausdruck,
der dann quasi in Redmaler Form so dastehen würde.
Eine andere Methode zur Umrechnung,
also anstatt das jetzt quasi Algebrage mit Pulschalgebra zu machen,
wäre dann auch wieder über eine Matrix-Multiplikation.
Und zwar benutze ich da dann also eine Umrechnung zwischen
der Funktion F bzw. ihrer Funktionstabelle und der Redmaler Form.
Dazu wird dann
eine Transformationsmatrix erstellt
Die sich dann eben auf diese Rittmaler-Basisfunktionen bezieht. Und
diese Transformationsmatrix kann ich dann eben mit der Funktion multiplizieren.
Und das ergibt mir dann eben einen Koeffizienten Vektor, der Rittmaler-Basisfunktion.
Und dann kann ich mir eben die entsprechenden Basisfunktionen dazu aussuchen.
Ich werde das gleich nochmal anhand eines Beispiels kurz zeigen. Ansonsten,
wie gesagt, also hier jetzt nur der Hinweis darauf,
wie das Ganze dann letztendlich mathematisch passiert.
Weiteres könnte man also beispielsweise in den Vorlesungsunterlagen von Klaus
Von der Heile von 2005 nachlesen. So,
diese Transformationsmatrix sieht im Prinzip so aus,
dass sie auch wieder über so ein Rekursives Verfahren gebildet wird.
In der ersten Stufe ist es eben genau die Eins,
die in der nächsten Stufe quasi in so eine Art Dreiecksmatrix,
also sprich hier die 3-1 sind da eine Null,
eine Stufe weiter eben entsprechend größer.
A3 wird dann so aussehen und die rekursive Vorschrift ist halt eben immer,
dass ich quasi so eine 3-Ad-X-Matrix-Bilde,
indem ich also hier jetzt die jeweils eine Stufe kleineren Matrizen
habe und dann in der rechten oberen Ecke quasi die Null stehen habe.
Gut, ist jetzt natürlich sehr theoretisch, dazu also mal
ein kurzes Beispiel, wie das aussieht. Angenommen,
wir hätten hier jetzt also eine Schaltfunktion von drei Variablen,
die hatte ich also sonst noch schon immer irgendwie als Beispiel genommen,
wo jetzt eben irgendeiner beliebigen Kombination von extra extra und X1,
also hier zwei A sind und hier eine Eins irgendwie zugeordnet
werden als Ausgangswert
Und entweder, ich würde jetzt die Therme,
beispielsweise in desjuktiver Normalform aufschreiben,
entsprechend umrechnen oder ich kann das dann eben auch mit dieser Matrix-Multiplikation machen,
würde ich dann eben als Ergebnis zu diesem Ausdruck kommen,
wie man hier auch schon sieht, ist das jetzt hier ein Ausdruck,
der eigentlich jetzt hier nur aus zwei Thermen besteht,
also in diesem Fall etwas kompakter ist,
als es beispielsweise desjuktive oder eine konjunktive Normalform
Im Beispiel sieht das so aus,
wenn ich die Funktionstabelle nehme, quasi jetzt in der Kurzschreibweise.
Das ist dieser Vektor hier oben, entspricht letztendlich nichts anderem,
als hier den jeweiligen Ergebnissen der Funktion, also 000111110010.
Genau das habe ich hier. Wenn ich dann diese Matrix A3
aufgestellt habe und das dann eben entsprechend mit diesem Vector hier multipliziere.
Das heißt, boah, wie man das dann also in
der diskreten Mathematik nur gelernt hat. Ich zeile,
mal spalte und dann jeweils die entsprechenden Elemente hier ausrechnet,
erhalte ich quasi hier als Ergebnis genau zwei Einstherme.
Nämlich einmal an dritter Stelle und hier an letzter Stelle.
Und das sind jetzt eben genau die Indizes,
die ich brauche, um jetzt von den Riedmaler Basisfunktionen
eben die entsprechenden Basisfunktionen auszuwählen
In diesem Fall mit drei Variablen wäre das also hier diese Menge.
Und an dritter Stelle habe ich hier das X2 stehen.
Und an letzter Stelle X3 und X2 und X1.
Und das sind dann eben diese beiden Therme,
die dann also letztendlich mit dieser Transumformung in diese Rüdmaler-Form rauskommen.
Also dieser Vektor, der bei dieser Matrix-Multiplikation rausgekommen ist,
sind dann im Prinzip die Indizes für diese Basisfunktion,
sprich bei einer Null kommen die Basisfunktion nicht vor.
Bei einer 1 kommen sie entsprechend vor
Gut, damit erhält man dann eben genau dieses Ergebnis.
Das heißt, das jetzt als Riedmaler-Normalform. Gut,
andere, jetzt hatte ich ja schon vorgestellt,
also im Prinzip die mathematischen Verfahren,
beziehungsweise wenn man das jetzt also funktional beschreibt, andere Möglichkeiten,
Schaltfunktionen zu beschreiben, wären im Prinzip sowas wie grafische Darstellungen.
Dazu kann man dann im Prinzip Entscheidungsbäume nehmen,
wo die... Ah, schöne Störung.
Ja. Da hat noch jemand anders ein Funkmikrofon,
das ist also auch gut,
also hier ist alles ausgeschaltet,
aber okay
Gut, also im Prinzip eine grafische Darstellung,
wo ich dann eben letztendlich die Schaltfunktion als einen Baum aufzeichne.
Jeder Knoten ist dabei dann einer Schaltvariablen zugeordnet. Also eine andere Möglichkeit,
um Schaltfunktionen zu beschreiben, ist dann im Prinzip über grafische Darstellung,
also was wie Bäume, wo ich dann immer zwei Verzweigungen habe,
die eine Verzweigung ist quasi entsprechend einer Null oder Force-Verzweigung,
die andere dann ebenentsprechend einer 1 oder Truhverzweigung.
Und entsprechend der Anzahl der Variablen habe ich dann eben
auch entsprechend viele Knoten in meinem Baum.
Denn wenn ich das jetzt eben als vollständigen Baum aufbaue,
habe ich damit dann auch wirklich meine komplette Funktionstabelle realisiert.
Vorteil bei dem Ganzen ist, dass man also sehr einfach war,
sagen wir mal, der Mensch ist natürlich irgendwo visuell geprägt.
Grafisch dann also sehen kann, wo habe ich redundante Knoten
und kann die dann eben auch entsprechend versuchen zusammenzufassen bzw. dort in den Bäumen dann auch Optimierung vorzunehmen. Als Beispiel,
wie sowas aussieht, sei es also hier so eine multiplexe Funktion genannt,
wo ich also hier zum Beispiel jetzt eben sage,
ups, sage A und C nicht oder B und C,
also sprich letztendlich deswegen multiplexer, wähle ich mit dem C aus, ob ich eben A oder B zum Ausgang durchschalte.
Als so ein Entscheidungsbaum aufgezeichnet,
würde es dann eben so aussehen, wie das sei,
also hier entsprechend auf der Folie zu sehen ist,
nicht wo ich dann eben jetzt irgendwie willkürlich gezeichnet,
also beispielsweise dann eben rot für 1, 2,
0 habe, grün für einen Zweig 1 und dann eben sage,
für jede der Variablen habe ich dann eben eine Ebene von Verzweigung in diesem Baum drin und kann dann eben jetzt für einen bestimmten Vektor,
dann eben sagen beispielsweise Adleich 0, B gleich 1,
C gleich 0 und ich erhalte dann eben als Ergebnis in diesem Fall dann eben hier diesen Wert null.
Nicht anhand der Funktionstabelle kann man sich das dann eben entsprechend ausrechnen,
beziehungsweise dann eben aufschreiben. Er hält dann so einen Baum.
Und was man hier jetzt eben auch schon sieht,
sind dann eben beispielsweise hier solche Knoten, wo ich also sehe,
hier unten bei C ist es eigentlich egal,
ob ich dann also null oder eins entsprechend habe.
Das Ergebnis ist immer null,
nicht demzufolge
Könnte man an diesen Knoten eben auch entfernen, genauso hier auf der anderen Seite.
Nicht, und so sieht man dann, wie man jetzt
eben wirklich grafisch in so einem Entscheidungsbaum arbeiten kann.
Daraus abgeleitet gibt es dann auch so etwas wie eine Normalform,
aus dem englischen Akronym heraus gebildet, dann ROBDD,
reduced ordered bynary decision Diagram, oder ein bisschen kürzer im Deutschen,
binäres Entscheidungsdiagramm, ist eben eine Variante so eines Baums,
wie ich ihn gerade vorgestellt habe,
wo ich dann eben eine vorab jetzt irgendwie willkürlich getroffene Ordnung dieser Knoten mit reingebracht habe.
Deswegen eben Ordert. Und wo dann eben auch redundante Knoten
entfernt worden sind. Und daher dann das reduced.
Und für eine gegebene Ordnung mit entsprechenden Reduktionen ist so
ein ROB-DD dann eben eine Normalform der Funktion
Es ist jetzt natürlich gemahnt, also hier so auch
noch jetzt gegen das Ding gegen anzuschreien, aber okay.
Ich hoffe mal, dass sie das irgendwann nochmal gibt,
beziehungsweise ich versuche jetzt mal weiterzumachen. Gut,
in dieser Formulierung, also jetzt mit solchen Barney Decision Diagrams,
Diagrams hat man das eben entsprechend sehr oft,
dass viele Funktionen vergleichsweise kompakt darstellbar sind. Das heißt,
wenn ich N-Variablen habe, kommt man eben in Größenordnung,
so bis N-Quadratknoten hin, Ausnahme beim Multiplizierer,
da habe ich dann wirklich den Worst Case,
dass ich dann auch zwei hoch Endknoten brauche.
Grundsätzlich ist das aber eigentlich, sagen wir mal,
das Standardverfahren, was man eben benutzt,
um sehr große Schaltfunktionen dann zu manipulieren,
beziehungsweise das macht man natürlich dann,
außer man bekommt sowas in eine Übungsaufgabe,
wobei ich glaube,
also das wird nicht als Übungsaufgabe kommen
Das macht er natürlich dann auch nicht mehr als Mensch von Hahn,
sondern das lässt man dann also auch per Algorithmus irgendwo vom Computer machen.
Beispiel dafür wäre dann eben, wenn ich jetzt also diese Funktion hier nehme,
A und B und C oder A und B nicht oder A
nicht und B oder A nicht und B nicht und C nicht.
Nicht wäre das als Entscheidungsbaum erstmal aufgezeichnet entsprechend. So etwas,
wenn ich das jetzt eben zusammenfasse, das heißt,
ich habe jetzt eben wirklich nur meine beiden Ausgänge 0 und 1
und Was man hier dann zum Beispiel also auch schon sieht,
ist, dass wenn ich... Hier entsprechend, dass B habe,
also zu diesem Knoten gelaufen bin und hier also unabhängig von dem C bin,
also immer als Ergebnis eins erhalte, kann ich diesen Knoten wegfahren lassen.
Nicht, dass es dann quasi in diesem reduzierten Baum,
dadurch Sicht war, dass eben hier diese Kante gar nicht mehr über C läuft,
sondern eben direkt zu dem Ergebnis eins geht,
was quasi dann eben diesem und diesem Pfad zusammen entspricht.
Nicht, also das jetzt nur so als Beispiel, wie das Ganze letztendlich aussieht. Hier noch ein paar andere Beispiele,
trivial Funktion, F von X ist gleich X,
also bei einer Null erhalte ich eine Null,
bei der 1, na 1,
hier jetzt eine Funktion A und B oder C,
entsprechend zusammengefasst, sowas wie die Parität,
zeichnet sich jetzt eben zum Beispiel jetzt bei mehreren Eingangsvariablen dadurch aus,
dass ich sage, bei einer Eins wechsle ich ja immer die Parität.
Nicht, das erkennt man an eben hier in diesem Beispiel daran,
dass die Eins ja also quasi in diesem hier immer durch die grüne Linie markiert ist,
dem zuvor gewechsel ich dann jedes Mal,
wenn eine Variable eine Eins hat, die Parität,
wenn sie null hat,
bleibt die Parität eben gleich und je nachdem,
wo ich dann hier bin,
laufe ich dann eben entweder zur Null oder zu Eins
Nachteil bei diesen ROB-DDs ist, dass die Art und Weise
wie einfach oder wie kompliziert diese Bäume letztendlich sind.
Davon abhängig ist, wie die Variablen geordnet sind.
Also hier habe ich jetzt eben zwei Funktionen, F&G,
beziehungsweise in dem Sinne ist es eigentlich identische Funktion,
nämlich einmal als X1 und X2 oder X3 und X4 oder X5 und X6 und hier das Gleiche,
nur entsprechend die Indize ist jetzt etwas fernmutiert.
Und wenn ich das jetzt eben allzu ein ROB-DD mit dieser Ordnung von X1 bis X6 mache,
nicht dann wäre die Funktion F eben entsprechend der linke Baum,
der noch vergleichsweise einfach und übersichtlich aussieht.
Und die Funktion gehe dann, der rechte Baum,
wo man dann also vergleichsweise wenig sieht.
Versuche ich erstmal so weiterzumachen, solange wie es geht.
Müssen wir sehen. Ja, also wie gesagt,
also eine andere Möglichkeit eben zur Minimierung von Schaltfunktionen an eben sowas Grafisches,
wie eben diese AOB-DDs. Letztendlich sieht es aber eben so aus,
dass man für die möglichen Realisierungsvarianten jetzt für irgendeine Schaltfunktion oder für ein Schaltnetz,
also natürlich sehr viele oder letztendlich funktional gesehen eigentlich unendlich viele Lösungen zur Verfügung hat.
Und um jetzt eben zu sagen,
also das ist jetzt die beste oder die günstigste Lösung,
muss man dann eben wirklich auch den Kontext betrachten,
wo soll diese Schaltfunktion eingesetzt werden, beziehungsweise wird die technisch realisiert,
weil da dann eben letztendlich sehr viele unterschiedliche Kriterien reinspielen.
Nicht, also einige sind hier unten jetzt einfach erstmal nur so beispielhaft aufgelistet,
also ich kann sowas nehmen, wie jetzt irgendwelche Hardwarekosten,
wo ich einfach erstmal stumpf zähle, wie viele Guarda brauche ich,
um jetzt irgendwas zu realisieren und setze dann eben Gatta jetzt mit irgendeinem Kostenfaktor an.
Ich kann sagen, Ja gut,
also das mit diesem Kostenfaktor stimmt eigentlich nicht so ganz,
weil in der technischen Realisierung, beispielsweise jetzt in Seemos-Technologie,
habe ich eben irgendwie sowas wie Nantgarter und Norgatta vergleichsweise einfach.
Sowas wie ein exklusiv oder was jetzt von der Schaltfunktion her
ja Asama oder von der Logik erstmal auch vergleichsweise einfach aussieht,
kriege ich aber eben nicht als einzelne Skater realisiert,
sondern das ist dann eben vergleichsweise aufwendig.
Deswegen sollte man dann eben für eine technische Umsetzung sowas
wie nennt oder Norgatta beispielsweise jetzt für eine Zimos-Technologie verwenden.
Nicht dann sind Geschwindigkeitsüberlegungen eigentlich auch immer noch wichtig,
weil ich kann jetzt eben sagen,
wenn ich jetzt eine Schaltfunktion habe oder nachher eben ein größeres Schaltnetz,
um jetzt beispielsweise ein Adira aufzubauen,
und das also jetzt für 32 Bit zwei Komplimentzahlen mache,
kann ich sagen,
ich kann das also mit der und der Umsetzung oder der und der Schaltfunktion so machen, dass es möglichst klein ist, ist dann aber eben vergleichsweise langsam.
Das heißt, ich kann es jetzt eben nicht benutzen,
um es dann also beispielsweise jetzt,
also hier mit meinem 3-Giga-Herz getagten Prozessor irgendwie dort umzusetzen,
sondern da muss ich dann eben andere Realisierungen dieser Schaltfunktion beziehungsweise nachher dann eben des Schaltnetzes wählen,
die dann eben deutlich weniger Stufen oder logische Elemente in der Tiefe,
also quasi im Durchlauf vom Eingang zum Ausgang haben.
Dafür dann aber eben letztendlich nicht minimal sind.
Nicht Überlegungen zur Testbarkeit können da also mit reinspielen.
Also da geht es im Prinzip um die Idee,
also wie verhalte ich mich jetzt mit Redundanzen, die jetzt bei der Realisierung möglich sind.
Wenn ich sage, ich möchte also jetzt eine Schaltung möglichst fehlersicher machen,
dann kann man natürlich sagen, okay, da werden Redundanzen eingebaut.
Wenn ich jetzt sage, ich möchte eine Schaltung haben,
wo ich jetzt überhaupt erst mal feststellen kann, dass die vernünftig funktioniert.
Also jetzt im Sinne der Funktion nach der Fertigung,
dass dort eben keine Fertigungsfehler drin sind. Nicht,
da muss dann dann eben jetzt wieder ganz andere Anforderungen ranstellen,
wo ich dann eben beispielsweise dann versuchen muss, eben genau solche Redundanzen wieder zu vermeiden.
Nicht Robustheit, auch nur als Stichwort nicht. Also wenn ich sage,
ich habe jetzt eben irgendeine Schaltung, sicherheitsrelevanten Teilen mitfliegt,
also beispielsweise jetzt an Bord eines Flugzeugs,
dann sollte die eben einigermaßen sicher dann also auch gegen beispielsweise ionisierende Strahlung geschützt sein,
sprich, dass der Flieger dann eben auf Reiseflughöhe dann eben nicht irgendwie anfängt,
also auf einmal sein Landemanöver selbstständig zu machen oder sich der Autopilot ausschaltet,
nicht wären, ich sag mal so bei Consumer-Geräten eben davon ausgehe,
dass sie eben nur in normalen Betriebstemperaturbedingungen,
also sprich Raumtemperatur plus minus irgendwas zugelassen sind und alles,
was darüber hinausgeht,
interessiert er nicht weiter.
Gut, das heißt, da gibt es dann eben
sehr vielfältige Anforderungen jetzt eben an so eine technische Realisierung,
die sich dann aber eben auch dahingehend auswirken, wie ich dann also letztendlich irgendeine Schaltfunktion minimiere oder was ich da dann als in Anführungszeichen Optimum betrachte. Gut,
eine andere Klasse von Minimierung oder Minimierungsverfahren,
die wir dann also auch noch entsprechend einsetzen werden,
sind dann, wie gesagt, allgebranche Minimierungsverfahren,
wo ich im Prinzip jetzt mit den Gesetzen der Bullschen Argebar rumrechne,
bei diesen Argebranchenverfahren ist jetzt natürlich die Sache für sehr kleine Schaltfunktionen,
kann man das noch ganz gut machen,
im Großen und Ganzen ist aber diese Umrechnung von irgendwelchen Ausdrücken etwas,
wo man letztendlich nur durch ausprobieren, also sprich das,
was dann eine Mathematiker horistische Verfahren nennt, zu einer Lösung kommt,
weil also das Problem oder der Problemraum, das geht jetzt so ein bisschen in die Informatiktheorie, nennt sich dann nämlich NP vollständig.
Das heißt, wenn ich eben entsprechend große Anzahlen von Variablen habe,
kann ich jetzt eben nicht einfach sagen,
ich probiere mal eben alle möglichen Lösungen durch und sage dann,
das ist die beste Wahl eben dieses aller möglichen Lösungen durchprobieren,
wird eben einfach schon viel zu aufwendig und das kann man dann eben nicht mehr machen,
sondern Ähm, man versucht dann eben im Prinzip mit so einem Ausprobierverfahren eben,
in Anführungszeichen, möglichst gute Lösungen zu finden und sagt dann,
okay,
also damit kann ich jetzt einigermaßen leben.
Und das soll dann funktionieren. Da gibt es dann eben auch verschiedene unterschiedliche Algorithmen.
Werde ich jetzt aber hier im Prinzip dann auch nicht weiter vorstellen.
Algebranche Minimierung, wie sieht sowas im Prinzip aus?
Also angenommen, ich hätte jetzt Hier diese Schaltfunktion in disjunktiver Normalform.
Nicht also vier Variablen. Jetzt hier beschrieben durch die vier Mintherme hier.
Und jetzt versuche ich dann eben einfach mir auszusuchen, okay,
wo kann ich jetzt nach den Rechnerregen der Buhl schon Algebor versuchen, was zusammenzufassen.
Und das fängt mir jetzt eben irgendwo an, zusammenfassend benachbarter Thermen nicht.
Also wenn ich hier die oberen beiden nehme,
sieht man, okay, das Ganze ist also unabhängig von
X-0. Also weil da unterscheiden die sich, kann ich dann letztendlich ausklammern.
Erhalten werden eben X-0 nicht oder X-0, dem zuvor weglassen.
Das heißt, damit erhalte ich diesen einen Term hier.
Nicht anschließend nehme ich jetzt also, habe ich die hier abgefrühstückt.
Jetzt nehme ich also hier irgendeinen anderen Term, den ich noch nicht hatte.
Kann eben gucken, womit könnte ich den zusammenfassen.
Beispielsweise jetzt mit dem hier drunter, unabhängig von X-1,
liefert das Ganze dann eben hier diesen zweiten Term und so weiter und so fort.
Das heißt also wirklich, man sucht sich jetzt hier beliebig
immer irgendwelche Therme aus.
Er hält dann jetzt hier irgendwie so
eine Lösung
Und versuche dann eben auch in der Lösung dann noch
nach genau dem gleichen Verfahren dann eben entsprechend weiter umzuformen,
bis man dann eben beispielsweise jetzt bei diesem Ausdruck landet,
in der Hoffnung, dass der jetzt also möglichst optimal ist.
Gut, vor so kleine Schaltfunktionen, wie das,
was sich hier bislang vorgestellt habe,
gibt es dann aber etwas deutlich Besseres.
Und das sind dann eben grafische Minimierungsverfahren.
Dazu wird die Schaltfunktion in ein KV-Diagramm eingezeichnet oder umgesetzt
Das heisst, ich interpretiere die Schaltfunktion dann eben entweder als
desjunktive Normalform und fasse alle Einstherme zusammen oder ich interpretiere das
als konjunktive Normalform und fasse alle null Therme zusammen.
Bei diesem Zusammenfassen bildet man dann quasi in dem KV-Diagramm
jetzt über benachbarte Felder oder Gruppen benachbarter Felder dann eben
sogenannte Schleifen und wenn man die dann eben entsprechend abliest,
hat man dann quasi seine minimierten Schaltfunktionen.
Grundidee, wie gesagt, die Fähigkeit des Menschen,
dass man dann also doch gewisse Strukturen dort hoffentlich schnell sieht.
Und wie gesagt, bis zu fünf oder sechs
Variablen kann man damit mit diesem Verfahren arbeiten.
Wenn ich jetzt Schaltfunktionen hätte, mit mehr Variablen,
wäre man da also auch hoffnungslos überfordert. Wobei,
dann muss man sagen,
das ist dann also auch eine Aufgabe,
an die man dann also lieber einen Computer und einen
geeigneten Algorithmus ranlässt und das nicht mehr selber macht
Gut, wie sieht das jetzt aus mit diesem KV-Diagramm? Ich hatte das ja schon mal vorgestellt,
im letzten Kapitel relativ am Anfang,
als es um den einschrittigen Kot ging,
also in einem Grecode oder beispielsweise um Grecodes,
wo die Variablen, wie man hier dann auch sieht,
quasi immer so angeordnet sind,
dass auf benachbarten Feldern sich eben die Werte der Variablen
genau nur um ein einziges Bit unterscheiden
Also da war es ja dann die Aufgabe,
dass man gesagt hat, um jetzt also einen einschrittigen Code zu finden,
um jetzt einen einschrittigen Code zu finden,
bilde ich dann eben hier in diesem KV-Diagramm sowas wie jetzt
irgendwie einen Pfad und lese dann eben ab.
Also in diesem Fall ist also hier binär aufgezeichnet,
über welche Codewörter das läuft und das ist dann eben ein einschrittiger Code.
Und wie gesagt, diese Diagramme kann man dann eben
auch nehmen, um Schaltfunktionen entsprechend zu minimieren
Generell sind KVD-Arame jetzt eben für zwei bis vier Variablen. Also hier zwei Variablen,
hier drei, hier eine Version mit vier Variablen,
so erst mal zu zeichnen für die Fälle von fünf bzw. sechs Variablen,
bildet man dann entweder zwei von diesen vier mal vier
Diagrammen oder eben vier Stück von diesen Diagrammen,
wobei dann kann man sich eben auch schon vorstellen,
dann wird das ganz vergleichsweise oder fängt dann also dann doch
deutlich an,
unübersichtlicher zu werden
Gut, wie arbeitet man damit jetzt also im Prinzip mit Schaltfunktionen?
Die Funktionswerte werden dann eben einfach in die zugehörigen Felder der KV-Diagramme eingetragen. Das heißt,
dort habe ich dann eben die jeweiligen Ergebnisse der Funktion,
also sprich 0 oder 1 stehen, wenn die Funktionen nicht vollständig spezifiziert ist,
kann man dann eben so ein Sternchen als Don't Care eintragen.
Das ist etwas, was sie dann also nachher auch noch ein bisschen kurz vorstellen werde. Also Beispiel wäre zum Beispiel sowas wie ein Eine BCD-Kodierung,
wo ich jetzt eben sage, ich brauche vier Bit,
belege eben die Fälle von null bis neun und alles,
was danach kommt, also sprich hexagezimal gesprochen dann,
also von A bis F wird jetzt bei der BCD-Kodierung nicht weiter verwendet,
nicht und dafür könnte ich dann eben,
wenn ich damit jetzt irgendwie arbeiten sollte in so einem KV-Diagramm,
dann eben irgendwelche Don't Cars an den entsprechenden Stellen eintragen und je nachdem,
wie es dann für die Minimierung besser passt,
kann ich mir dann eben aussuchen,
ob ich an der Stelle eine Null oder eine Eins annehme,
war ich quasi annehme,
implizit diese Eingangskombination kommt nie vor.
Gut, damit kann man dann eben, wie gesagt,
also für drei bis sechs Eingänge seine Funktion aufzeichnen.
Bei fünf Eingängen habe ich eben zwei solcher vier mal vier bei sechs,
vier von denen, hatte ich ja eben schon kurz gesagt und man kann damit dann eben entsprechend gut seine Strukturen sehen.
Wie sieht das aus? Das heißt, wie trage ich jetzt also aus so einer Funktionstabelle die Werte in das KV-Diagramm ein. Das ist also hier jetzt mal für Beispiele mit zwei beziehungsweise mit drei Variablen angedeutet,
wo ich dann eben quasi entsprechend diesen Funktionswert von 0-0 dann eben hier bei dieser Beschriftung für X-0 beziehungsweise X-1 dann eben an diese Stelle eintragen würde,
nicht den nächsten für 0-1 dann eben an dieser Stelle,
hier den von 1-0 und hier den von 1-1 und goodbye drei Variablen hätte ich dann eben hier den ersten,
also den ersten Wert,
also von 0-0-0,
die hier den von 0-0-1 da den von 0-1-0,
da den von 0-1-1 und dann eben die unteren vier dann eben hier,
hier in dem letzten Kästchen und der von 1-1-1-1 eben an entsprechend dieser Stelle.
So, wenn ich jetzt hier wirklich eine Funktion habe,
wäre das, also für diese beiden Beispielfunktionen dann quasi,
dass man die KV-Diagramme, so wie das da angedeutet ist,
dann eben entsprechend mit seinen Werten füllt.
Das heißt, letztendlich ist das Ganze dann
nichts anderes als eine 2D oder zweidimensionale Darstellung
so einer Funktionstabelle
So, hier nochmal ein größeres Beispiel, also eine Funktion,
die jetzt als disjunktive Normalform mit vier Thermen beschrieben ist,
nicht und für den ersten Therm X reinigt,
X2 nicht, X1 nicht X0 nicht,
müsste ich dann eben quasi jetzt hier, wenn ich das eintrage,
eben raussuchen, wo sind die entsprechenden Indizes hier überall null,
ich hier entsprechend diese Energierung drin habe.
Mir hinlasse es genau bei diesem Kästchen jeder Fall.
Das heißt also, diese eins entspricht genau. Dem Term,
nicht hier dieser zweite Term, X3 nicht und X2 nicht.
Heißt, die sind beide null. Das heißt,
ich befinde mich hier in der ersten Zeile und dann habe
ich eben noch X1 nicht oder X1 und X0 nicht.
Nicht nur X1, X0 nicht, ist dann eben hier hinten.
Das heißt, damit diese eins ist in dem Zufolge
der zweite Term
Ja, und entsprechend verfährt man dann eben hier mit den anderen Thermen,
die dann eben diesen, beziehungsweise letzte dann eben diesen Wert ergeben.
Gut, das ist so eine Sache. Denkt mir,
das kann man üben, beziehungsweise wenn man das ein paar Mal gemacht hat,
dann geht das also relativ einfach, das dann also auch entsprechend abzulesen.
Nicht, da kann man sich eben einfach immer nur merken,
man muss jetzt hier einfach bei diesen Indizes immer nur sehen,
da wo eine Negierung oder Negation in dem,
in der disnotiven Normalform ist,
habe ich eben hier als Index 0,
da wo nicht negiert ist,
habe ich dann eben hier entsprechend dann eben
eine A1 stehen
Damit kann man das dann relativ einfach machen. Gut,
die Minimierung sieht dann folgendermaßen aus. Aufgrund dieser Sortierung habe ich
ja eben bei benachbarten Feldern immer nur ein einziges Mitunterschied.
Das heißt, wenn jetzt zwei übernachbarte Felder jeweils eine Eins haben,
dann unterscheiden die sich auch nur in genau diesem einen einzigen Bild.
Das heißt, unabhängig davon,
ob dieses Bit Null ist oder dieses Bit 1 ist,
liefern die das gleiche Ergebnis.
Das heißt, ich kann das eben
genau rausnehmen
Beziehungsweise kann dann eben sagen, die Funktion hängt dann eben
von dieser einen Variablen letztendlich nicht ab.
Ich rein mathematisch gesehen, kann man dann,
oder Algebrage gesehen, kann man dann eben auch sagen,
diese zugehörigen Minterme können dann rechnerisch auch oder könnten an ihrem rechnerisch zusammengefasst werden.
So, das Ganze kann ich jetzt eben ausweiten und kann sagen,
ich mache das jetzt nicht nur für zwei benachbarte Felder,
sondern ich mache das ja dann eben auch für vier benachbarte Felder,
indem ich schleifen bilde,
die dann also quasi viermal eins,
einmal vier oder zweimal zwei
Felder groß sind
Beziehungsweise man kann das daneben auch für Achterfelder machen.
Das einzige, was eben gelten muss, diese Gruppengröße ist
dann im Prinzip immer jeweils eine Zwei-Appotenz. Das heißt,
ich kann jetzt also nicht beliebige nebeneinander liegende einzeln irgendwie zusammenfassen,
sondern das müssen dann schon zwei, vier, acht,
16, was soll immer sein.
Gut, was ich ja auch schon bei dem einschrittigen Codes gezeigt hatte,
also in dem KV-Diagramm,
dass man sich im Prinzip das Ganze auch immer außen herum verbunden vorstellen kann.
Wenn ich denen zufolge, kann ich also
auch solche Therme immer außenrum bilden
Und was dann auch immer gilt, bei der Minimierung,
die schleifen, dürfen sich natürlich auch noch beliebig überlappen.
Also auch das stört nicht weiter. Gut,
wie sieht das jetzt hier für die Beispiele aus?
Bei der ersten Funktion hier mit den zwei Variablen habe ich
also hier diese beiden Einsen,
könnte daraus dann also hier grün angedeutet dann eben genau diese Schleife erzeugen,
was dann eben letztendlich nichts anderes ist
als diese beiden Zahlen der Funktionstabelle
Von einer Minimierung her gesehen, kann ich dann eben daraus ableiten.
Gut, das Ganze ist unabhängig von X-0. Also egal,
ob X-0-0 ist oder X-0-1 ist,
habe ich immer hier das Ergebnis.
Das heißt, die Funktion ist dann eben nichts anderes als X-1.
Hier in diesem zweiten Beispiel würde man dann quasi hier mit diesen 3-1,
also hier eine grüne und eben die blau gezeichnete zweier Schleife jeweils bilden,
was dann eben in der Funktionstabelle entsprechend diesen Einträgen entspricht und die grüne Schleife ist dann eben nichts anderes,
als dass ich jetzt hier unabhängig von X-0 bin.
Das ist das, woran sich, also diese beiden Felder unterscheiden.
Das heißt, ich habe X-2 nicht und X-1.
Das ist also dieser Term. Und in der blauen Schleife
ist es eben unabhängig von X-2.
Und ich hätte jetzt eben X-1 und X-0 nicht
Nicht,
das wäre dann das Ablesen von Schleifen aus solchen KV-Diagrammen,
für die ist etwas größere Beispiel jetzt mit den vier Thermen,
das ich gerade eben noch gebracht hatte,
würde man dann eben auch zwei Schleifen bilden,
nämlich einmal diese Grüne, die dann quasi hier außenrum geht,
wo ich das also mit dieser eins zusammenfasse und ihm hier diese eine blaue und wenn man jetzt hier raus dann eben die Werte abliest,
wäre das dann im Prinzip jetzt eben hier unabhängig von X1,
das heißt, ich hätte X3 nicht.
Und X2 nicht. Damit bin ich jetzt in dieser Zeile
. Und außerdem X0 nicht. Das heißt, diese
beiden Nullen. Das ist also dann die grüne Schleife.
Und bei der blauen Schleife wäre das dann demzufolge X3. Und
nämlich diese beiden Zahlen hier, also die beiden Einsen.
Und X1 und X0, womit ich dann also quasi jetzt
genau diese Spalte hier ausgewählt hätte
Gut, und damit hätte man jetzt eben hier als Minimierte
disjunktive Form für diesen Therm dann quasi diese Funktion,
was man dann jetzt eben über so ein KV-Diagramm sehr einfach ablesen könnte.
Gut, für das Ganze gibt es jetzt auch eine sehr
schöne Visualisierung beziehungsweise da kann man sich das dann also nochmal
in Ruhe selber ausprobieren oder eben vielleicht auch bei irgendwelchen Übungsaufgaben verwenden,
wobei das eine Kleinigkeit einzusetzen.
Dort, wenn die Eingangsvariablen also völlig anders durchnummeriert,
als ich das jetzt hier immer in den Beispielen drin habe,
müsste man sich denen zufolge dann nochmal zumindest gedanklich umsetzen.
Also wie gesagt, hier unter Terms Informatik Uni Hamburg.de Applets, KVD.
Wenn ich das jetzt hier also einmal starte, wenigstens das klappt noch,
landet man also hier Auf dieser einen Seite, wo das,
so wo das Ganze jetzt hier so praktisch beschrieben ist,
sieht also in diesem Fall ein KV-Diagramm mit sechs Eingangsvariablen,
also was jetzt sagen wir schon nicht mehr so ganz einfach zu überblicken ist,
was jetzt hier irgendwie zufällig gefüllt ist.
Und dann eben hier so eine zugehörige zweistufige Realisierung in Form von irgendwelchen Gattern.
Nicht was man hier aber eben machen kann. Also wie gesagt,
damit können sie dann jederzeit selber rumspielen, ist,
dass man dann eben sagt, ich kann jetzt eben hier ein neues generieren.
Also beispielsweise eine Funktion mit einem Ausgang und mit, ja gut,
meinetwegen vier Eingängen, dann wird das schon mal ein bisschen übersichtlicher.
Also in diesem Fall sind es hier die Nullen und eins sind auch erstmal willkürlich reingelegt,
aber auch die kann man quasi eher die Tour mäßig dort irgendwo eintragen.
Und hier ist jetzt noch nichts weiter minimiert,
ich kann jetzt aber hier Beispielsweise,
oder in diesem Fall könnte ich jetzt zum Beispiel sagen, gut,
also diese vier Einsen hier in dieser Zeile würden sich anbieten,
dass man die entsprechend zusammenfasst und über entsprechendes Ziehen und entsprechende Auswahl kriegt man das dann passend minimiert.
Sie dann eben auch gleich hier in den Schaltfunktionen,
wie das Ganze an ihm hier deutlich einfacher wird.
Also anschließend könnte man jetzt eben versuchen, ja,
da wird das jetzt natürlich alles ein bisschen ungünstig
Hier jetzt so eine Viererschleife, die dann außenrum verbunden ist,
also mit diesem Grünen zu bilden. So,
und jetzt hätte man im Prinzip hier noch vier einzelne einzeln übrig,
die jetzt also noch diesen Thermen hier entsprechen.
Jetzt könnte ich zumindest versuchen, also hier beispielsweise jetzt hier
noch und hier noch was zusammenzufassen und könnte die jetzt also auch noch
Mit dem hier zusammenfassen, das war es dann aber auch
jetzt für dieses Beispiel. Zumindest sehe ich da jetzt nicht,
dass man diese eins mit irgendwas anderem zusammenfassen könnte. Gut,
also wie gesagt, damit sieht man,
also wie man jetzt wirklich rein praktisch dann also mit dieser Minimierung,
mit dem KVdiram auch selber so ein bisschen rumspielen, was ausprobieren kann.
Und wie gesagt, also man kann sich damit dann natürlich
dann auch eigene Funktionen definieren oder damit arbeiten.
Also wie gesagt, das ist ganz nett,
um das dann eben wirklich so mal auszuprobieren,
beziehungsweise um diese grafische Minimierung zu verstehen.
Wie gesagt, das Ganze ist ja also sehr ausführlich beschrieben
mit entsprechendem Tutorial und, und, und.
Denkt mir da also wirklich so zum Selberlernen sehr nett.
Gut, in diesem Fall hat zumindest da mal die Technik geklappt
und ich konnte das also nochmal grafisch und live vorführen.
Ansonsten hätte ich hier jetzt nämlich nochmal die entsprechenden Screenshots,
wo also nochmal angedeutet ist, wie das Ganze funktioniert,
aber da sie das letztendlich ja gerade eben schon gesehen haben,
werde ich jetzt hier einfach mal relativ schnell durchblättern
Wie gesagt,
also hier sieht man dann immer jeweils fiktiv so eine zweistufige Realisierung,
also beispielsweise jetzt hier als desjunktive Normalform,
wo ich dann eben quasi hier immer mit dem und irgendwelche
Therme der Eingangsvariablen beziehungsweise eingangsvariablen negiert auswähle und das Ganze dann eben über ein entsprechendes oder am Ausgang zusammenfasse.
Und wenn ich jetzt eben erstmal stumpf als Kosten sowas zähle,
wie Eingänge von diesem Schaltelementen oder eben deren Anzahl,
dann sieht man eben bei nicht minimiertem Tal komme ich jetzt eben irgendwie sowas auf,
10 Grad da und 45 Eingänge.
Und wenn ich das entsprechend minimiert habe,
aber hätte ich dann eben vier Götter und Szenen-Eingänge,
also wie man dann hier auch sieht,
die Negierung zählen,
also zumindest hier jetzt
erstmal nicht mit
Wie gesagt, das ist nur so als ein Beispiel,
wie man das nutzen kann. Was ich eben ja auch schon angedeutet hatte,
die Verwendung dieser Dunt-Kehr-Therme, das heißt,
in der Praxis habe ich es eben häufig, dass Schaltfunktionen unvollständig definiert sind.
Dazu trägt man dann eben so ein Sternchen als Platzzahl da Ende sein.
KV-Diagramm oder auch in Funktionstabellen ein. Und kam dann eben bei der,
ist dann bei der,
oder andersrum ist dann bei der Minimierung eben wirklich frei,
das Ganze dann eben entweder auf Null oder auf eins zu setzen,
je nachdem, wie es besser passt,
nicht dem zufolge kann ich dann ihm die Schleifen auch so bilden,
dass sie dann natürlich dem zufolge dann auch irgendwelche Don't Cars gerne halten dürfen.
Nicht unseren Beispiel,
wie das Ganze dann eben aussieht jetzt hier für eine Funktion,
wo ich dann jetzt hier bei dieser Minimierung dann eben auch
reichlich Gebrauch von Don't Cars gemacht habe,
wäre dann quasi hier angedeutet,
wo man dann diese Sternchen dann eben auch gerade nutzt,
um jetzt also wirklich
sehr große Schleifen bilden zu können
Gut, hier ist nur noch mal kurz angedeutet,
also einer, der, ich sag mal, Standardalgorithmen,
die jetzt also immer für Minimierung von Charlotte Funktionen genommen werden,
also wie gesagt,
genaueres wäre entweder in dem Buch von Becker, Drecksdorn,
Monitor, technische Informatik oder in dem Buch von Schiffmann und Schmitz in dem Band 1 der technischen Informatik drin,
wo also im Prinzip dann so ein Algorithmus beschrieben ist,
wie jetzt Computerprogramme solche Minimierungen machen,
Nicht dazu werden die Therme dann quasi in Tabellen aufgelistet.
Anschließend innerhalb dieser Tabellen nach ihrem Hemmingabstand sortiert,
was letztendlich nichts anderes ist als das, was wir in den KV-Diagrammen machen,
weil ich da ja quasi auch immer benachbarte Therme über den Hemmingabstand 1 direkt ablesen kann.
Anschließend wird jetzt eben geguckt,
welche Therme sind quasi so von zentraler Bedeutung,
dass ihr so unverzichtbar sind,
was sich sie also wirklich als einzelne Therme irgendwo noch lassen muss,
nennt sich dann eben Premium-Tikanten und anschließend versucht man dann
eben auch wieder benachbarte Therme zusammenzufassen
Mich also auch da ist das ganze Vorgehen eigentlich eh nicht zu dem,
wie das, was sie jetzt gerade eben beschrieben hatte.
Gut, damit bin ich jetzt mit diesem Kapitel zu den Schaltfunktionen soweit durch.
Ich würde jetzt noch ganz kurz motivieren, was sich dann hinter Schaltnetzen verbirgt,
was eigentlich erst mal logisch oder funktional gesehen nichts Neues ist.
Eigentlich erst mal nur eine Weiterführung der Schaltfunktion Und zwar verstehen wir unter einem,
also jetzt erst mal als Definition,
unter einem Schaltnetz oder generell unter einer kombinatorischen Schaltung,
ein digitales System mit in Eingängen und im Ausgängen,
dessen Ausgangsvariablen sieben Zeitpunkt,
nur von den aktuellen Werten der Eingangsvariablen abhängen.
Das heißt, letztendlich ist das Ganze nichts anderes als einfach
erst mal nur ein Bündel von mehreren Schaltfunktionen. Das heißt,
ich habe jetzt eben Schaltfunktionen, nicht nur eine,
sondern vielleicht auch mehrere, die dann aber teilweise vielleicht auch gemeinsame Variablen haben.
Und ich habe dann eben anders als das,
oder als in Erweiterung dessen, was ich gerade eben vorgestellt habe,
dann eben nicht vielleicht nur einen Ausgang, sondern noch mehrere.
Formal gesehen kann ich das Ganze als Vector-Funktion beschreiben,
nicht wo ich eben aus einem Eingangsvektor,
wie ein Ausgangsvektor Y errede
Wichtig bei dem Ganzen ist nur,
das ist im Prinzip dieser untere Teilsatz dann noch mit,
ein Schaltnetz darf keine Rückkopplung enthalten.
Das heißt, formal gesehen eben keiner dieser Ausgänge darf gleichzeitig
auch als Eingang fungieren. Das kommt dann nämlich im nächsten Kapitel,
nennt sich Schaltwerk und wird dann nämlich benutzt,
um Informationen zu speichern
Da sind wir aber noch nicht. Deswegen jetzt erstmal,
also wie gesagt, diese einfache Variante Schaltnetz, also nichts anderes als ein ganzes Bündel von Schaltfunktionen.
Mit dem Begriff verbindet man häufig aber auch noch ein bisschen was anderes. Nämlich sowas wie die technische Realisierung,
wo ich dann sage, ähnlich wie das,
was ich hier eben schon bei diesem KV-Diagramm habe, dass ich sage,
Schaltnetz ist im Prinzip irgendwo so eine grafische Darstellung von irgendwelchen einfachen Gattern,
also irgendwie oder Gatter und Gatter,
die jetzt eben irgendwie mit Leitung so und so miteinander verbunden sind.
Nicht daher dann eben auch eher dieser Begriff des Netzes. Nicht,
das heißt, mit dem Begriff hat man dann eben oft dann
sowas wie so eine Struktur aus irgendwelchen einfachen Gatter-Funktionen und diese
einfachen Gatter-Funktionen sind dann eben wirklich so die trivialen und oder nennen,
XR mit auf Vergleich meistens, also vergleichsweise wenig Eingängen.
Am Ende dieses 11. Kapitels werde ich dann auch noch ein bisschen auf Zeit verhalten bzw. sogenannte Gutterlaufzeiten eingehen,
weil mit diesem Begriff der technischen Realisierung geht natürlich dann auch gleich einher,
dass man sagt, na gut,
irgendwann soll das Ganze ja eben wirklich sowas wie ein Adierwerk in meiner CPU,
in meinem Rechner sein, was dann irgendwo technisch umgesetzt wird.
Und das braucht eben für diese Addition eine gewisse Zeit.
Und wie man dann eben zu diesen Zeiten beziehungsweise zu diesen Zeitbedingungen kommt, beziehungsweise was sich dahinter verbirgt, dann von der Idee her, werde ich dann eben noch entsprechend etwas weiter beleuchten. Gut,
zu den Schalssymbolen bzw. Schalennetzen Jetzt am Anfang werde ich also auch noch mal kurz vorstellen,
also ein paar elementare Symbole, einfache Gatter,
dann so ein bisschen was zu Kombinationen ausgattern und ich denke mir dann,
Freitag, dann eben noch genauer einige typische Schaltnetze vorstellen,
beziehungsweise ich denke mir,
damit würde ich dann also diese Woche jetzt oder so weit,
wenn ich diese Woche dann nicht mehr komme,
dann eben auch Schaltnetze für arathmetische, logische Operationen,
also sprich alles, was wir,
also eingangs der Rechnerstrukturen vorlesen irgendwann mal gemacht haben,
nicht wo es also darum ging, also Zahlendarstellungen,
wie wird jetzt eben irgendwie addiert, Wie sieht das aus,
wo ich da dann eben noch mal ein bisschen wirklich auf die technische Realisierung,
also sprich auf so einen Zusammenschluss von solchen Gattern,
die dann eben beispielsweise in Adira realisieren,
eingehen werde?
Gut, in dem Zusammenhang möchte ich dann eben auch nur kurz
schon motivieren, beziehungsweise dann auch gleich motivieren zum Selber ausprobieren.
Das, was jetzt hier als Darstellung immer genommen wird,
sind dann eben sogenannte Schalpläne oder auch Skematics
Im Englischen. Das heißt also, hier wird jetzt also nicht
wie in der Bulschen Allgebre jetzt mit irgendwelchen Formeln gerechnet,
sondern man zeichnet also wirklich die Schaltung,
wo ich dann eben mehr oder minder genormte Symbole für irgendwelche Komponenten habe.
Ich kann sagen, mal so Schaltpläne sind ja nur etwas,
was in der Elektrotechnik oder in der Schaltungstechnik doch vergleichsweise allgegenwärtig ist.
Da gibt es also eben irgendwelche genormten Symbole für Spannungs- und Stromquellen,
für Messgeräte, irgendwelche Schale da. Ich habe da so was wie Widerstände,
Konsatoren, Spulen, Dioden, verschiedenste Arten von Transistoren,
je nachdem welche Technik ich da jetzt wieder zugrunde lege.
Und all das sind jetzt also irgendwie die schönen Sachen,
mit denen sich also die Elektrotechniker freuen dürfen,
wo man als Informatiker dann immer steile Haare bekommt und sagt,
um Gottes Willen, Differenzialgleichungssysteme, fieseste Mathematik.
Das, was wir nun brauchen, beziehungsweise hier einsetzen werden,
ist natürlich wieder die heile digitale Welt. Das heißt,
alles hier unten, wo ich also Ströme und Spannungen betrachte,
interessiert mich, beziehungsweise ich werde es also vielleicht also nochmal kurz motivieren,
wo es dann nochmal um die technische Realisierung von irgendwelchen Gattern geht.
Nicht aber jetzt hier im folgenden betrachten wir also wirklich jetzt Gatter als rein digitale Schaltelemente,
wo ich dann eben sowas wie irgendwelche logischen Grundoperationen habe,
also und, und, oder, wo ich dann eben irgendwie sowas habe wie speichernde Elemente.
Das heißt, da kann ich jetzt eben irgendwo ein Bit
ablegen und das bleibt dann dort irgendwo gespeichert.
Und die sind dann über entsprechenden Linien,
also quasi äquivalent jetzt für irgendwelche Drehte miteinander verbunden.
Und wenn man dann eben entsprechend jetzt größere Schaltungen aufbaut oder
größere Schaltnetze realisiert, hat man dann eben auch die Möglichkeit,
das Ganze dann quasi hierarchisch zu machen.
Das heißt, ich kann dann eben aus einzelnen Gattern dann sagen,
wenn ich die so und so zusammenschalte,
erhalte ich von der Funktion her so was wie ein Volladierer.
Nicht und wenn ich die entsprechend zusammenschalte, erhalte ich dann
eben von der Funktion her so etwas wie ein 32-Bit, dir Netz.
Nicht genauso kann man dann eben auch sagen,
nicht also auch hier ist dann eben nicht nach unten hin,
also bei der technischen Realisierung dann eben nicht Ende der Fahnenstange,
sondern letztendlich ist also beispielsweise jetzt bei der technischen Realisierung als CMOs-Schaltung
dann eben so ein Nantgard da dann eben aus so und so viel Most-Transistoren,
die miteinander verschadet sind,
zusammengesetzt.
Gut, das jetzt als Einleitung zu den Schaltnetzen
Ich werde dann am Freitag dann also nochmal die Schalssymbole vorstellen,
beziehungsweise das, womit sie dann also auch in der nächsten Zeit
noch so ein bisschen arbeiten und also auch gerne noch selber rumprobieren sollen.
Das ist dann eben auch so ein Java-Programm,
mit dem man dann eben solche Schaltungen beziehungsweise solche Schaltnetze realisieren kann,
ausprobieren kann und dann eben wirklich über so einen simulativen Zugang damit
vergleichsweise einfach und anschaulich arbeiten kann.
Gut,
dann bis Freitag und trotz aller technischen Probleme