Ja, ich hatte in der letzten Woche ja quasi aufgehört mit dem Tal,
wo ich also jetzt einige Schaltnetze, wie man sie jetzt eben auch an den Computern einsetzt, skizziert hatte.
Da waren jetzt erstmal arathmetische Schaltnetze,
also sprich verschiedene Arten von Adierern, Ripple, Carry,
Adierra, Carry Select und Carry Luca,
Head Adierra und abschließend hatte ich dann eben auch nochmal kurz skizziert,
wie man im Prinzip dann eigentlich ähnlich,
wie man das also auch so jetzt rechnen würde,
Hardware,
Multiplizierer oder eben auch andere Schaltungen,
wie sowas wie Quadratwurzel aufbaut
Gut, hier dann, nur noch mal als Anmerkung,
also gerade bei den Multiplizieren gibt es dann also noch so einiges an Spezialitäten,
also zwei Komplimentzahlen sind dort dann nämlich,
also mit der Schaltung,
die da also vorher abgebildet war,
dann nämlich auch nicht, zu behandeln,
da muss man dann also auch noch ein bisschen was anders machen und typischerweise sind harte Multiplizierer rein technisch dann noch ein bisschen anders aufgebaut,
weil dort dann also noch einige arathmetische Tricks ausgenutzt werden
Hier nur als Stichwort, wenn man da irgendwann mal nachsehen möchte.
Bußkurierung, da geht es dann darum,
dass man quasi Gruppen von Bits zusammenfasst und dadurch schon,
also rein mathematisch gesehenen, auch wieder mit anderen Zahlen,
Basen und anderen Zahlensystemen mitrechnen kann.
Und damit kann man dann auch einiges machen. Deswegen,
also hier eigentlich nur nochmal Verweis auf einiges an Literatur.
Ich war so gerade so zu dem Thema Computerartenmetik,
gibt es da also auch relativ viel.
Gut, bevor ich jetzt zu den Ados komme,
hier auch nochmal kurz Zwei andere Beispiele für Charlottnetze,
die man also in Computern in der Regel dann auch noch findet.
Das eine ist die sogenannte, oder sind sogenannte Priority-Encoda.
Und da geht es darum, dass verschiedene Interraps, typischerweise, also unterschiedliche Prioritäten haben.
Und wenn eben mein Interrap mit einer hohen Priorität aufläuft,
dann quasi für alle mit niedrigeren Prioritäten die Interraptbehandlung geblockt ist.
Nicht rein technisch als Schaltnetz, kann man sich das dann eben so vorstellen,
dass man sagt, ich habe also beispielsweise jetzt hier
Vier unterschiedliche Eingangsvariablen, X-3 bis X-0. Das sind dann also jetzt
quasi vier Interableitungen mit niedrigster, beziehungsweise hier mit höchster Priorität.
Und wenn ich das Ganze dann eben als Schaltfunktion aufschreibe und unter Verwendung von Don Carres auf notiere,
hätte man dann eben im Prinzip die Funktion,
dass ich also hier als am Ausgang mit zwei wird quasi binär kodiert bekomme,
mit welcher Priorität ein Interrapt jetzt aufläuft und rein praktisch heißt es eben,
wenn jetzt eben einer mit der höchsten Priorität kommt,
ist es egal,
was also hier passiert.
Der Ausgang gibt dann eben immer entsprechend die drei jetzt,
also hier für die höchste Priorität und so weiter und so fort.
Nicht das Ganze könnte man dann eben auch entsprechend jetzt wieder mit KV-Diagrammen oder anders minimieren.
Er hält dann also irgendwelche Schalennetze hier als Prioritätssynchro oder für
diese Funktion, die da gerade vorgestellt wurde.
Nicht das Ganze kann man sich auch noch kaskadiert vorstellen,
dass man dann eben auch noch das dann für höhere Witz macht.
Hier dann eben so eine Schaltung,
wo das Ganze dann beispielsweise jetzt aus acht in der Ableitung
quasi hier auf den drei Ausgangsbits eben kodiert.
Von 0 bis 7, wo jetzt also hier die erste 1 gesetzt ist.
Gut, also auf die Hades Demo verzichte ich.
Eigentlich geht es nur darum, dass man gehört hat,
Prioritätsinkola, was damit gemalt ist. Eine andere Sache,
die man dann eben auch noch braucht, sind Schaltnetze, um Mitwerte zu schieben.
Im Prinzip habe ich ja auch schon bei der eingangs bei der Admetik,
also die verschiedenen Schieberoperationen, nicht also das Linksschieben,
das Arratmetische oder das logische Rechtsschieben, diese Routier-Operationen vorgestellt.
Wenn man das Ganze dann also wirklich jetzt irgendwo in Hardware umsetzt,
ist dann die Idee, dass man eben sagt,
ich habe eine Anzahl von Dateneingängen,
also hier in dem Beispiel meinetwegen jetzt
vier Stück
Genauso vier Daten, Ausgänge und kann jetzt über so
eine Kaskade aus Multiplexern quasi mit zwei Steuerleitungen auswählen,
ob die eben um Nullbit oder um Null stellen,
um eine Stelle um zwei Stellen oder um drei Stellen verschoben ausgegeben werden soll.
Nämlich in der Trick bei dieser Multiplexer-Kaskade ist halt eben letztendlich,
dass man das dann eben so stufenförmig aufbaut,
dass ich also hier quasi immer mit diesem 2 zu 1 multiplexern,
also hier einmal eben einschieben um eins ermögliche,
hier dann immer jeweils einschieben, um zwei.
Und wenn man das Ganze dann ist, also noch um
eine dritte Stufe erweitert. Nicht, dann hätte ich hier
immer jeweils das Schieben um vier Bit. Nicht,
dass ich da dann eben quasi über die Auswahl hier entsprechend dann immer
die geeigneten zweier Potenzen auswähle und dadurch dann quasi eine Art Dekodierung dieses Eingangs vektors mache.
Nicht rein praktisch, wie gesagt,
hier unten immer die Verweise auf die jeweiligen Hadesbeispiele,
wäre das dann Diese Schaltung,
wo ich jetzt also quasi hier so ein 8-Bit-Angangsvektor habe,
zurzeit wird er eben hier um null geschoben.
Das heißt, es kommt jetzt also eins zu eins so raus.
Wenn ich jetzt also hier das niederwärtigste Bit dieser Schiebeangabe entsprechend aktiviere,
hört also hier über diese erste multiplexer Stufe,
das Ganze jetzt eben quasi um einen weitergeschoben.
Alle anderen machen hier nichts. Demzufolge habe ich das jetzt
eben hier um einen verschoben. Wenn ich jetzt dieses zweite Bit anmachen würde,
na, Buchhagebar habe ich dann,
oder nach der Logik habe ich dann dementsprechend das,
also müsste ich dann verschieben, um drei Bett erreichen.
Was dann also auch hier passiert, wie man hier sieht.
Nicht das wäre dann eben entsprechend, wenn ich das jemand
zurückschalte, dann eben ein Verschieben um vier.
Und was man hier dann eben auch sieht,
also dass es in diesem Fall jetzt ein Logisches Schieben ist,
das heißt, hier wird eine Null entsprechend häufig reingeführt hat.
Und das, was dann eben hier, also an höherwichtigsten
Witz ist und dann also quasi rausgeschoben wird, verschwindet dabei.
Gut, und in der Art und Weise kann man dann
im Prinzip eigentlich alle Schieber und Rotieroperationen letztendlich implementieren,
muss dann eben nur entsprechend auswählen,
was dann dort gemacht werden soll
Gut, was man hierbei dann natürlich also auch schon sieht,
also so ein Verschieben kann ich dann zwar,
also in einer einzigen Stufe,
das heißt in einem Tagschritt letztendlich,
also dann durch die Hardware oder durch so ein Schaltnetz realisieren,
Nachteil ist es natürlich,
wenn ich jetzt also wirklich beliebige Kombinationen von Schiebeoperationen mache und dann eben auch noch alle möglichen zulasse,
dass dann also dieser Hardwareaufwand, also für diese Schaltnetze,
also wenn ich dann jetzt also irgendwie so eine 64-Bit-Vector habe und den dann um Nicht sowohl links,
also rechts schieben und dann eben um alle Wortbreiten oder um alle Stellen von 1 bis 64 dann eben auch entsprechend machen möchte,
dass es dann also eine relativ aufwendige Hardware ist.
Deswegen sieht das also in der Praxis dann auch meistens so aus, dass wenn es solche Hardware-Einheiten,
also irgendwo gibt, die dann auch gar nicht komplett alle Kombinationen abdecken,
sondern eben das, was man also typischerweise relativ häufig noch irgendwie durch arratmetische Befehle braucht.
Gut, abschließend höre ich jetzt also dieses Kapitel Schalten jetzt noch mit ein bisschen Betrachtung zu arathmetischen,
logischen Einheiten, also sprich den RUs, das,
was dann eben wirklich die eigentlichen Rechenwerke sind,
wo ich dann eben jetzt nicht nur arathmetische Operationen machen kann,
sondern eben auch noch logische Operationen,
abhängig vom Typ kann ich dann eben sagen, okay, Additionen,
so Traktionen, typischerweise mit der Zweier-Kompliment-Darstellung kennen eigentlich alle Systeme,
dann habe ich dann eben noch sowas wie ganzen Mitweisen,
logischen Operationen, gegebenenfalls dann eben noch Schiebeoperationen,
Multiplikationen, die Visionen,
das sind in der Regel dann eigentlich auch schon eigene Rechenwerke
Addition und Subtraktion hatte ich am Freitag ja schon kurz vorgestellt.
Da ist dann ja eben letztendlich die Grundidee gewesen, dass ich sage,
ich berechne quasi jetzt wie mit einem normalen Adira A plus B.
Wenn ich jetzt eben noch eine Subtraktion machen möchte,
mit x Orgattern kann man dann eben den Operanten B invertieren.
Und gleichzeitig dient dann eben diese Steuerleitung, die dies invertieren,
macht dann eben auch noch als Carrie in der niederwärtigsten Stufe.
Damit habe ich letztendlich dann B im Zwei-Kompliment dargestellt und rechne dadurch
dann eben rein technisch gesehen dann nicht A, Minus B,
sondern A plus nicht B plus 1 und habe damit dann eben entsprechend das Richtige Ergebnis.
Diese Folie hatte ich also schon mal kurz vorgestellt,
beziehungsweise das Ganze in Hades gezeigt.
Das ist also dann eben so ein typischer Addition,
Subtraktion, erstmal allzu ein integrierter Baustein hier dann auch
schon mal angedeutet
Zwecksanschauungszwecken habe ich hier also nochmal einen Teil einer CPU eines relativ alten Rechners,
wie man sieht. Nicht das ist dann eben wirklich klassisch,
dass sie so die Art und Weise, wie eigentlich Computer,
also irgendwie in den 80er Jahren aufgebaut waren,
nicht wo ich dann also quasi jetzt hier Platinen voll habe mit diesem klassischen Dual-Inline-Gehäusen,
wo ich dann also im Prinzip mehr oder mehr eine einfache Gatter-Funktion drin habe,
beispielsweise also sowas wie hier dann so eine 4 wird Alu.
Nicht davon sind dann entsprechend viele zusammengeschaltet. Das Ganze ist dann eben hier hinten,
beziehungsweise hier vorne noch mit irgendwelchen Leitungen und Steckverbindern miteinander verbunden
und alles zusammen ist dann also im Prinzip in irgendwelchen entsprechend größeren Rex mit drin und bildet dann eben letztendlich also das Rechenwerk ich glaube,
das ist ja so aus einer Microwerks, also eines Rechners,
wie er dann, also sagen wir mal so,
in den Anfang der 80er Jahre populär war.
Eine Frage. Also Frage war jetzt,
wo hier der Bus liegt und wie viele Bitter hat,
muss ich zugeben, bin ich jetzt also überfragt,
weil da weiß ich jetzt also auch nicht genau,
wo ich das Ding rausgerupft habe oder wie das genau war.
Also im Zweifelsfall war das auch nur, dass wir also irgendwo mal gesagt haben,
na gut, da ist also noch irgendwo so ein alter Rechner,
kommt sonst eh in Müllzwecks anschauen, kann man sowas sich mal rausgreifen und irgendwo in den Schrank legen.
Nicht, da lag es dann also irgendwie 20 Jahre,
war nur relativ uninteressant,
nicht inzwischen kann man das dann wieder rausnehmen und sagen, nicht,
also mit sowas beziehungsweise entsprechend viel davon waren also früher Computer aufgebaut,
wo ich sage, na gut, also heute habe ich alles,
was hier drauf ist, also irgendwo in meinem Mikroprozessor,
also irgendwo in der linken oberen Ecke mit drin,
also das ist dann eben auch mal so rein praktisch gesehen,
wie sich
das Ganze eigentlich weiterentwickelt hat
Gut, ja, also das nur noch mal zu dieser Sache, nicht wahr,
weil wenn ich da jetzt also hier mal irgendwie was erzähle,
mit 74er, Texas Instruments Serie und irgendwelchen ICs und dann immer hier diese Bezeichnung.
Nicht, das sind eben typischerweise eigentlich diese Dinger,
die dann also hier zum Teil mit drauf sind.
Nicht woraus man dann eben letztendlich die Sachen aufgebaut hat. Gut, hiermit, wie gesagt, Adien Subtrahieren hatte ich letztes Mal ja auch schon kurz gezeigt. Wenn ich jetzt natürlich sage,
okay, ich möchte daraus jetzt eine ganze Alu machen,
die jetzt also nicht nur Adien und Subtrahieren kann,
sondern die jetzt eben auch noch Devices und Advises oder oder noch mehr machen kann,
kann ich das natürlich straightforward einfach dadurch aufbauen,
dass ich sage, okay,
hier innen drin habe ich also quasi diesen arathmetischen Rechenteil und dann habe ich hier jetzt immer noch ein Bitvises und ein Bitvises oder unten Bitvises exklusiv oder und habe hier dann eben irgendwelche Multiplexe,
in denen ich dann also auswähle,
so jetzt eben die Unfunktion soll,
die Oder-Funktion oder soll jetzt eben die Alu benutzt werden und demzufolge habe ich dann eben quasi jetzt so einen ganzen Satz von möglichen Sachen,
die dann dort quasi gerechnet werden können.
Also auch zu dem Ganzen findet sich dann hier dann noch
das passende Hades Beispiel, ist jetzt hier so ein bisschen versteckt.
Und wenn ich jetzt also hier beispielsweise zwei Und drei habe,
dann würde jetzt, wenn das also hier alle Vektoren soweit null sind,
entsprechend eine Addition ausgeführt werden, die Funktionstabelle ist also quasi hier beschrieben.
Und jetzt könnte ich eben hier beispielsweise mit den Eingängen hier das Ganze,
dann ist eben auf die logischen Funktionen umschalten,
wo ich dann im Prinzip jetzt also hier eine Unfunktion realisiere,
also in diesem Fall dieser Fearbit Vector und dieser Vierbit Vector-Bit weise unverknüpft,
heißt dann,
dass eben natürlich hier nur entsprechend an der Bitch-Stelle 1 mein Ergebnis rauskommt,
was also genau jeder Fall ist,
was dann also dezimal dekodiert dann oder Hexa dezimal dekodiert dann
eben hier wieder zu einer 2 wird und dann kann ich
dann eben hier noch entsprechend umschalten zwischen diesen drei Funktionen und
oder und XO
Gut, das ist jetzt natürlich,
eigentlich sagen wir das in Anführungszeichen, ganz triviale Prinzip,
wie man so eine arethmetische logische Einheit aufbauen kann,
nämlich indem ich jetzt einfach parallel ein Rechenwerk habe für Additionen und Subtraktionen.
Und dann habe ich dann parallel dazu jetzt eben irgendwie eine Berechnung von der Unfunktion,
eine Berechnung von der XOF-Funktion und so weiter und so fort.
Ich finde man das jetzt ein bisschen schöner machen möchte,
würde man jetzt also wirklich anfangen,
eigentlich die ganzen logischen Funktionen, die dahinter stehen,
dann eben jetzt wirklich mit den Mitteln der Bulschen Alge war,
beziehungsweise über irgendwelche Bauminimierungsverfahren entsprechend zusammenzufassen, sodass ich dann also jetzt nicht so eine Trennung habe.
Und typisches Beispiel dafür ist dann eben so ein IC,
auch aus dieser Serie 74, 181, der intern so aussieht,
hier dann,
das ist jetzt hier eigentlich nur ein interessanter Teil,
dann also im Prinzip also über vier Auswahlleitungen oder
eigentlich fünf Auswahlleitungen
verschiedene Funktionen realisieren kann
Zum einen gibt es da so einen ganzen Satz von irgendwelchen mehr oder minder abstrusen,
sinnvollen oder auch nicht so sinnvollen, logischen Funktionen,
aratmetische Funktionen beziehungsweise teilweise sind hier auch noch irgendwelche logischen Funktionen mit dabei.
Und je nachdem, was gerechnet werden soll,
muss ich dann eben quasi jetzt nur meine Eingänge,
S3 bis S0 beziehungsweise M passend auswählen und kann dann eben
jetzt hier für vier Bit A und B dann also hier so ein Ergebnis bekommen.
Gleichzeitig gibt es dann auch solche zusätzlichen Ein- und Ausgänge für Carry in. Carry out und für Hilfsfunktionen,
weil der Trick ist dann nämlich,
dass man also dieses Ding dann letztendlich nimmt und mit diesen Hilfsfunktionen dann quasi so eine Art Carry-Loca-Head-Generator macht,
mit so einem zweiten Ship und dann könnte man also quasi jetzt aus drei von diesen Dingern und einem zusätzlichen Query-Loca-Headship dann also quasi schon eine zwölf Bit Alu machen.
Also auch das ist was,
wo man heutzutage im Zeitalter von 64 Bit-Prozessoren für müde drüber lächelt,
aber zu damaliger Zeit kann man sagen, na gut,
also das sind dann also hier schon vier von den etwas größeren ICs mit drauf,
beziehungsweise als das noch nicht so hoch integriert war,
wie dieses hier ist es dann also wirklich hier schon,
also fast die Platine voll,
wenn ich das jetzt also so aus Arzt den Gattern aufbaue.
Gut, das einfach nur, um erstmal zur Idee,
wie man dann eben letztendlich Schaltnetze in Rechnern
entsprechend einsetzt
Gut, was ich bislang jetzt noch gar nicht weiter angesprochen hatte,
weil wir eigentlich jetzt einmal aus der Mathematik gekommen sind und gesagt haben,
okay, wir haben Butsche Algebau, wir haben dann Schaltfunktion,
wir haben Schaltnetze als eine Sammlung von Schaltfunktion,
ist irgendwas in Richtung Zeitverhalten.
Bislang habe ich immer gesagt, also wie in der Mathematik üblich,
ich habe F von X gleich Y, Eingangswektor, habe dann mein Ergebnis,
da gibt es aber eigentlich noch keine Vorstellung von Zeit.
Guter Rand praktisch wissen wir jetzt, also irgendwie so aus
dem täglichen Leben. Das Computer zwar sehr schnell sind,
aber eben auch immer noch nicht unendlich schnell. Das heißt also,
irgendwo wird da dann also auch noch so ein bisschen Zeit vergehen und wie man das letztendlich modelliert,
beziehungsweise wie man das dann also auch in Hades mit berücksichtigt,
welche Auswirkungen das dann eben auch hat.
Damit werde ich jetzt also im Prinzip hier dann noch
diesen Kals zu den Schaltenätzen abschließen und dann eben auch zum
nächsten Kapitel dann zu den Schaltwerken dann übergehen,
weil da ist dann nämlich gerade das Zeigverhalten entscheidend
Gut, generell kann man jetzt immer sagen,
wie detailliert betrachtigt seid, betrachte ich sie überhaupt.
Deswegen ist hier erstmal so eine Unterteilung hinsichtlich der Abstraktionsebenen,
wo ich eben sage, gut, also ich habe,
wenn ich jetzt die Algebragenausdrucke nehme, keinerlei Zeiten mit drin.
Dann hat man häufig sowas wie so ein ganz einfaches Modell,
wo ich dann also quasi sowas wie eine Standardzeitverzögerung in
jedem Gatter
mit annehme
Dann könnte ich das jetzt entsprechend weiter unterteilen,
wo ich dann sage,
na gut,
also ein X-Orgatter hat eine andere Zeitverzögerung als ein Nantgutter,
wo man dann eben entsprechend den Gattern dann eben unterschiedliche Zeitverzögerungen mit zuordnet,
wo dann eben auch schon wirklich jetzt die als Abstraktion letztendlich mit reinkommt,
wie diese Gatter technisch aufgebaut sind und warum dann eben beispielsweise
das eine deutlich länger braucht als ein anderes Gatter
Nicht,
das kann man dann eben jetzt noch entsprechend weiter verfeinern,
indem ich dann eben auch noch sowas wie Leitungslaufzeiten berücksichtige,
werde ich gleich noch drauf eingehen,
weil also sagen wir mal so,
bei dieser Technik hier war man froh,
dass der Computer
überhaupt 2,12 bezahlen,
addieren konnte
Nicht inzwischen ist es eben so, also dass bei den heutigen Taktfrequenzen,
also irgendwo so mehrere Gigahertz-Bereich, es eben auch so ist,
dass eigentlich gerade die Leitungslaufzeiten, also der entscheidende Faktor sind und gar nicht mehr jetzt also die Gatterlaufzeiten,
also das habe ich auch gleich nochmal so eine relativ kleine, wenn auch jetzt nicht sehr aktuelle Folie.
Und dann kann man das Ganze natürlich jetzt wirklich noch ganz genau machen und ganz genau simulieren,
indem ich dann also wirklich jetzt auf die elektrischen Modelle eingehe und sage,
okay, also ich habe jetzt nicht ein Nendgatter,
sondern ich habe also hier irgendwie eine Ansammlung von vier Transistoren und zusätzlich habe ich,
also wenn jetzt irgendwo nach außen hin angeschlossen sind,
beziehungsweise wenn da eben am Ausgang jetzt irgendwie was dranhängt,
noch irgendwelche Widerstände,
irgendwelche Kapazitäten und kann das Ganze dann eben wirklich jetzt mit dem elektrischen Simulator,
mit Spannung und Strömen durchrechnen und dann eben wirklich gucken,
wenn am Eingang, also ein Pegel jetzt meinetwegen von 0 nach 1 sich ändert,
was bewirkt das in der Schaltung,
wie wirkt sich das entsprechend aus
Gut,
was einen dann auch immer noch mit zu unterscheiden ist,
hat er schon gesagt,
also es gibt also einmal diese Gato-Verzögerung,
dann eben auch Leitungslaufzeiten in Hades kann man sowas dann teilweise also auch so ein bisschen mitsimulieren,
wobei wir da in der Regel eigentlich immer mit diesem vergleichsweise vereinfachten Modellen der Gatterlaufzeiten arbeiten werden,
aber nur um das quasi zu zeigen oder so
ein bisschen zu visualisieren,
wie das aussieht
Wäre das dann... Hervorragend ist, dass ich sage,
gut, also hier beim Wire Delay, also sprich Leitungslaufzeit,
kann man sich das eben wirklich so vorstellen,
dass sich also hier im Angang irgendwie was umschalte und sich
diese Änderung dann eben sukzessive über die Leitung hin ausbreitet,
entsprecht ihm zumindest teilweise dann also auch wirklich so dem
physikalischen Effekt,
der dann also auch noch mit dahinter ist
Nicht Gatterverzögerung wäre dann eben, dass jede Skatter eben auch
noch einen bestimmten Wert hat. Also in diesem Fall,
wenn das jetzt immer hier entsprechend hoch eingestellt ist mit 0,7 Sekunden,
dann sieht man das so relativ deutlich, was sich da tut.
Und in Hades selber kann man eben diese Effekte hier über
die Eigenschaften der Bauelemente dann eben entsprechend mit einstellen.
Da gibt es dann eben bei diesen Properties von dem und
Gatter dann eben so was wie so ein Gaty Laters,
wo man dann eben entsprechend ist irgendein Wert
einstellen kann
Gut, rein praktisch das,
was eigentlich der Realität immer am nächsten kommt,
hat man eben so eine Mischung aus Leitungslauflaufzeiten und Gatterverzögerungszeit,
was dann also eigentlich wirklich dem entspricht,
wie es also letztendlich aussieht.
Wir werden uns jetzt hier allerdings immer mit Gatterverzögerungszeiten als Modell behelfen,
weil das eigentlich erst mal deutlich einfacher auch zu handhaben ist.
Noch eine Frage?
Ich hatte die Frage
Wenn wir jetzt heilen, wie zum Beispiel eine Kraft von
seiner Mailarität vorhanden ist, und dann allerdings eine Soldatenveränderung.
Also zum Beispiel eine Entscheideranstalt kann auch aussteigen. Das war zwischen
dem Feind und Ausweiter zum Tor. Was weiß man,
mit Bibelverzögerung wurde der... Gut, also die Frage war jetzt,
und die ist also, sagen wir mal, zugehendmaßen relativ gut. Was passiert jetzt,
wenn ich also im Prinzip eine Leitung habe,
auf der ich jetzt also irgendwie sowas wie eine Leitungsverzögerung habe von 0,3 Sekunden und ich hätte also quasi einen Impuls habe,
also wo ich sich also jetzt hier irgendwo einen Eingangswert,
meinetwegen kurz ändert und diese Änderung eben jetzt hier,
was weiß ich, hier sage ich jetzt null,
0,1, 0,2, diese Änderung jetzt,
also dieser Impuls jetzt eben quasi kürzer ist,
als diese Verzögerungszeit.
Gut, da muss ich jetzt eigentlich so ein bisschen ausholen,
weil das geht dann also teilweise das,
was man also im Hardwareentwurf,
also jetzt wieder bei den beziehungsweise Simulationsmodellen macht.
Da macht man typischerweise dann nämlich genau Folgendes, dass man eigentlich zwei Sachen berücksichtigt.
Zum einen gibt es etwas, es nennt sich dann Transportylay.
Das heißt, wenn ich so einen Impuls habe und der
wird irgendwo auf eine Leitung geschickt.
Und die Leitung hat jetzt eine Verzögerungszeit von 0,3. Dann kommt
dieser Puls eben auch genauso, wie er reingegangen ist,
um 0,3 verzögert wieder raus.
Das ist dann also wirklich so diese Grundidee von,
ich habe ein Kabel,
ich puste da was rein und das kommt irgendwann da
hinten an
Was es aber auch gibt,
und das entspricht jetzt eigentlich wieder den technischen Gegebenheiten,
wenn ich eigentlich einen Gatter habe, mal so angenommen,
ich hätte jetzt hier ein Inverter.
Und der hat jetzt also eine bestimmte Verzögerungszeit von meinetwegen auch 0,3.
Und da kommt so ein kurzer Puls rein.
Dann ist es elektrisch eigentlich richtiger, wenn ich sage,
dass wenn diese Perioden oder wenn diese Dauer dieses Pulses kürzer ist,
als die Verzögerung,
dass der verschluckt wird
Das heißt, wenn ich diesen Puls hier reingebe,
würde am Ausgang einfach konstant eine Eins rauskommen,
wenn das in den Wärter ist, liegt da dran,
bislang haben wir den Inverter immer nur als Element der Bulschen Argebar betrachtet,
das heißt, der Eingang wird irgendwie invertiert,
wenn ich das also jetzt wirklich vom elektrischen Aufbau her sehe,
ist es eben so,
dass innen drin auf den Transistoren quasi jetzt irgendwelche Schaltelemente,
also sprich bei Timos Technik,
also irgendwie die Gates umgeladen werden und wenn dieser Impuls so kurz ist,
ist das Umladen noch nicht so weit,
dass das Gatter wirklich anders in die andere Richtung schaltet und danach wird es dann gleich wieder entladen und dann habe ich im Ausgang wirklich genau das,
dass also sich dort nichts getan hat.
So, das heißt also rein technisch gesehen haben eigentlich beide Modelle ihre Berechtigung und je nachdem,
also ob ich jetzt so eine Leitung betrachte oder so,
ob ich damit jetzt mit Gattern arbeite,
kann man das dann eben so oder so handhaben.
Ich meine, das, was wir hier machen,
Wenn ich das jetzt richtig sehe, also dann muss ich zugeben,
ich weiß jetzt auch nicht genau,
wie Norman da jetzt Simulationsalgorithmus implementiert hat, hat er,
glaube ich, dann also eher sowas in Richtung so eines Transporti-Lays da mit drin.
Gut, aber wie gesagt, da geht das dann schon sehr an die technischen Feinheiten.
Das wird uns jetzt also hier nicht weiter berühren. Also ansonsten,
was sich hier jetzt von der Folie nur noch hatte,
Wie gesagt, womit wir jetzt typischerweise arbeiten werden,
sind jetzt eben solche Gatterlaufzeiten, wobei man eben sagen muss,
das stimmt eben nicht mehr,
nicht weil früher waren eben diese Gatterverzögerungen deutlich größer als die Leitungslaufzeiten heutzutage,
beziehungsweise mal so abseits den Ende der 90er Jahre oder Jahrtausendwende ist es eben so,
dass eigentlich die Leitungslaufzeiten da überwiegen.
Hier ist das Ganze dann also auch nochmal Grafisch dargestellt,
also auf einer Folie von 1997,
wo jetzt also hier quasi die unterschiedlichen Technologien in der Weiterentwicklung sind,
wo die schwarze Kurve jetzt, also die Entwicklung der Gatterverzögerung ist.
Das heißt, die Technologie wird nach Moorslaw so,
dass also alle Größen immer kleiner werden.
Die einzelnen Gatter, die Transistoren werden immer kleiner.
Und was man hier aus ablesen kann, die werden immer schneller.
Toll. Was dann hier aber eben auch mit drauf ist,
ist dann eben die Sache, wie sich also letztendlich die Leitungslaufzeiten entwickeln.
Und zwar ist das also hier in dieser roten Kurve für Aluminium
und hier in der blauen Kurve für Kupfer als Interconnect aufgeführt,
wo man eben sieht, dass,
also wenn die Strukturen immer kleiner werden, führt das dazu,
dass also auch in der Regel dann also auch die Leitungen immer kleiner werden.
Die haben dann einen höheren Widerstand, dadurch werden sie dann also technisch gesehen dementsprechend langsamer.
Und dass ich das dann eben auswirken, wenn man das eben zusammennimmt,
dann hat man also hier diese gestrichelten Kurven,
wo man dann eben sieht, dass,
obwohl die Schaltung immer kleiner werden, die Chips langsamer werden,
wobei das jetzt also auch nur bedingt stimmt,
weil das gilt dann also jetzt wieder nur für globale Leitungen.
Das heißt, wenn ich jetzt also wirklich von einer Ecke
des ICs zur anderen irgendwo gehen muss und sage, okay,
meine Schaltung hat also mehr oder minder immer eine ähnliche Größe oder Dimension,
dass dann das Ganze langsamer wird.
Wenn ich sagen kann,
ist Harry die Gatter alle sehr nah beieinander und das wird kleiner,
dann werden natürlich logischerweise auch die Abstände zwischen benachbarten Gattern,
kleiner, das ist dann das, was also hier lokale Leitungen sind.
Das heißt, die werden dann also trotzdem immer noch wieder schneller.
Aber das ist immer so ein bisschen so ein Trade-Off,
der sich da dann eigentlich einstellt
Gut, alles, was wir jetzt eben hier weiter betrachten,
hatte ich ja schon gesagt,
ist dann eben eigentlich immer nur über Gartenverzögerung modelliert,
dass dann eigentlich auch erstmal so als,
also dann auch teilweise in den Übungsaufgaben taucht das dann ja auf,
sowas, dass man dann eben sagt,
ich habe sowas wie irgendeine Grundverzögerung, tau und das sind eben Vielfache davon,
Leitungslaufzeiten werden ignoriert und dann kann man im Prinzip jetzt noch irgendwelche Vereinerungen machen,
wo ich dann eben sage, unterschiedliche Garten haben unterschiedliche Schalzeiten,
dann könnte ich jetzt eben auch noch unterscheiden,
schaltet ein Nantgadda am Ausgang von 0 nach 1 oder von 1 nach 0. Und auch das soll dann mit unterschiedlichen Verzögerungszeiten belegt werden.
Auch das ist letztendlich dann wieder technisch motiviert, dass es da eben Unterschiede geben kann.
Nicht dann sind nicht alle Nantgadda gleich schnell,
sondern wenn ich einen nenne, mit zwei Eingängen,
eins mit drei und eins mit vier Eingängen habe,
sind die also schon mal unterschiedlich.
Und was dann eigentlich auch noch mit berücksichtigt werden könnte,
sag mal, sind jetzt eben Sachen,
wie sind Oder wie ist die Schaltung letztendlich weiter eingebaut?
Das heißt, habe ich jetzt eben irgendwo ein Gatter,
was dann eben jetzt noch mehr Ausgänge oder an den Ausgängen
jetzt viele weitere Gatter oder nur ein einziges angeschlossen hat,
weil auch das würde sich dann eben entsprechend elektrisch bemerkbar machen und zu unterschiedlichen Zeitverhalten führen.
Wie gesagt, also wir werden hier jetzt mit also relativ
einfachen Modellen einfach nur irgendwie mit so einem fiktiven Zeitmodell arbeiten
Nicht ansonsten hier nur noch mal kurz als Exkurs,
also generell zu dieser Problematik. Nicht, wenn man jetzt sagt,
also Lichtgeschwindigkeit im Vakuum ist also knapp 300.000 Kilometer pro Sekunde.
Das heißt also in einer Nanosekunde kommt man an 30 Zentimeter weit,
in Metallen und Halbladern ist die Ausbereitungsgeschwindigkeit ein bisschen langsamer.
Das heißt also angenommen, wir sind dann also irgendwo so im Bereich von 20 Zentimetern pro Nanosekunde,
heißt das, umgerechnet bei einem Gigahertz-Takt, kann das Tagtsignal,
wenn es eben umschaltet, Genau, 20 Zentimeter weit kommen.
Oder andersrum, also wenn es umschaltet,
bis zum nächsten Mal ist das dann also quasi jetzt eben wie so ein Impuls oder so eine Welle 20 Zentimeter weit gelaufen. So,
das heißt jetzt,
wenn ich also jetzt im Prinzip so einen aktuellen Prozessor nehme und das ist ja jetzt nun gar nicht mal nun irgendwie so eine super Riesengröße,
sondern eigentlich eher noch klein mit zwei Zentimeter Diagonale,
dann ist man da, also wenn ich also ein Signal hätte,
was also wirklich von hier irgendwo ist und von einer Ecke des Chips,
also hier irgendwie auf die andere laufen soll,
ist man dann also eben bei einer maximalen Tagtrat- oder Tagfrequenz von 10 Gigahertz.
Wenn ich das also dann irgendwie auf eine Platine umsetze,
bei einem Gigahertz, also dann irgendwie bei 20 Zentimetern Kantenlänge,
was alles immer irgendwie nicht so sonderlich viel ist.
Gut, der Vergleich mit dem UKW-Radio ist jetzt hier nur wegen der Wellenlänge bzw. Taktfrequenzen,
nicht weil da sieht man dann nämlich auch schon mal so ein bisschen, wovon wir da dann eigentlich reden.
Und Gut, die andere Sache ist ja dann eben auch,
also diese 20 Zentimeter sind eben jetzt eine Leitung,
wenn die jetzt nicht weiter gestört ist oder dort also nicht nur irgendwie andere Effekte auftreten.
Also rein praktisch ist es eben auch jetzt schon so,
dass wenn ich also hier irgendwie einen Chip habe und ich also irgendwie angenommen hätte,
ein Signal, was also hier aus dem Gatter rausgeht,
soll also hier irgendwo in ein anderes Gatter angeschlossen werden.
Und dieser Chip ist jetzt also irgendwie mit einer Frequenz von meinetwegen 3 Gigahertz getaktet,
dass das Signal nicht rechtzeitig, also hier in einer anderen Ecke ankommen würde,
weil real gesehen muss man eben sagen,
dass da die Ausbreitungsgeschwindigkeit noch deutlich geringer sind als diese 20 Zentimeter,
die dann also da quasi an Gigahertz jetzt entsprechen.
Gut, zur Visualisierung von dem Ganzen,
ich hatte das ja teilweise schon in seiner Tafel benutzt,
beziehungsweise hat es dann also auch schon bei der Einführung von Hades vorgestellt,
benutzt, sondern eben typischerweise solche Impulsdiagramme, beziehungsweise,
also ich werde mich davon, glaube ich,
auch nicht ganz frei machen können.
Da spreche ich dann also auch oft vom Englischen Wayform. Nicht,
wo man dann im Prinzip dann einfach über die Zeit gesehen,
dann vergleichbar jetzt mit irgendwelchen Messwerten,
also einem Orstelöskop oder in so einem Logic Sate Analyzer quasi einen Ablauf habe,
wie sich die Werte eben über die Zeit ändern
Und was man dann eben häufig hat, ist,
dass dann eben auch nicht nur die logischen Werte 0 und 1,
sondern eben auch noch irgendwie farblich markiert dann eben irgendwelche anderen Werte oder Zustände mit angezeigt werden.
Nicht das Ganze gibt es dann eben auch entsprechend in Hardes,
wo man sich da dann ja eben auch solche Probs setzen
kann und sich dann eben die Ergebnisse,
also in den Way-Forms ansehen kann.
Gut, so ein Impulsdiagramm, wie sieht das aus?
Also hier mal
ein Beispiel
Zwei Signale A und B, die sich hier quasi jetzt irgendwie über die Zeit ändern,
mit irgendwie einem fiktiven Zeitschritt von Tee jeweils diskret betrachtet.
Und hier unten sind jetzt also einige Funktionen, die also auf A und B aufbauen.
Und hier ist jetzt eben von der Idee her das Ganze so gemacht,
dass man eben sagt, es gibt eine,
wenn ich also hier zum Beispiel jetzt A und B berechne,
für dieses und Gatter eine Gatterverzögerung,
die jetzt also fest ist mit einer Zeiteinheit.
Das heißt, ein Wert,
der sich hier jetzt zu einer Zeiteinheit irgendwo ergibt oder dort einzutragen ist,
wenn man sowas jetzt also quasi von Hand erstellt,
ergibt sich dann immer aus den Eingangswerten eine Zeiteinheit vorher.
Weil das ist ja genau diese Verzögerung um ein.
So, dann ist jetzt hier mit dieser Ziegernfarbe angedeutet,
da ist undefiniert.
Sprich, da weiß ich
noch nicht,
was ist
Nicht, weil, also ich fange hier quasi bei null an.
Ich weiß nicht, was vor null ist oder gewesen ist.
Demzufolge müsste ich quasi jetzt hier für A und B,
wenn ich jetzt hier bei null was eintrage,
die Werte hier zum Zeitpunkt minus eins wissen.
Und deswegen ist es hier jetzt eben noch mit diesen undefinierten Werten mit drin.
Und ansonsten ergibt sich der Wert dann immer quasi,
indem ich jetzt die logische Funktion nehme und das Ganze
dann aber entsprechend jetzt
ein Zeitschritt zurück
Gut, beim... Und Gatta hätte ich jetzt am Ausgang
genau dann eine Eins, wenn beide gleich eins sind.
Das ist quasi ab hier der Fall,
da ich noch diese Verzögerung um einen habe,
habe ich hier um einen verzögert quasi diesen Wert.
Und mit dieser Null hier bei B, was ja dann dazu führt,
dass der Ausgang dann wieder sich auf Null ändert.
Also auch das wirkt sich dann eben um einen Tag
verzögert,
quasi hier aus
Das ist noch nicht so sehr zerlebt sein,
weil es ist im Prinzip ja auch von Augen,
denen ihr das Prinzip oft eineinhalb Jahre zu tun habt.
Oh, ein Tag, wenn wir uns jetzt das Adam zögern,
Adam zögern, das ist ja so, dass wir,
wenn es eingeführt wird, der uns einig ist,
der so mit einem anderen wird, der reinversucht.
Gut, also die Frage war jetzt,
also hier bei diesem Beispiel ist es jetzt natürlich noch kein Problem,
weil das ist ja immer konstant verschoben.
Schwieriger wird es dann eben hier bei solchen Sachen,
wenn ich jetzt also hier nicht A mache, Nicht,
dann ist das also jetzt quasi einfach A invertiert und das Ganze um einen verschoben.
Wenn ich jetzt hier als Funktion habe A und nicht A,
dann wird das Ganze eben schon so ein bisschen trickreich,
weil man dann eben wirklich gucken und berücksichtigen muss,
wann habe ich welche Auswirkungen und quasi eine Auswirkung in A
wirkt sich dann quasi in Nicht-A um einen Tag verzögert aus.
Und wenn diese Auswirkung von Nicht-A sich dann also wieder hier in diesem Ausdruck wiederfindet,
ist es dadurch dann quasi nochmal um den Tag wieder verzögert.
Das ist dann Auch genau die Schwierigkeit,
die sich da dann also ergeben könnte,
wenn man das jetzt also entsprechend weiter betrachtet,
beziehungsweise genau das ist dann nämlich die Erklärung für die Effekte,
die sich dann nämlich Hazards nennen.
Und zwar ist ein Hazard letztendlich die Eigenschaft einer Schaltfunktion,
dass aufgrund dieser Verzögerung die Schaltfunktion kurzfristig,
in Anführungszeichen,
falsche Werte liefert
Davon nochmal quasi jetzt zu unterscheiden, beziehungsweise dann eben verschärfend,
gibt es dann eben noch den Begriff des Hazard-Fehlers. Das ist dann,
dass ein Hazard sich quasi zu einem Fehlverhalten in der Schaltfunktion führt,
dass also beispielsweise jetzt in der Berechnung wirklich, also irgendwo ein falscher Wert,
entsteht und der dann also auch weiter benutzt wird.
Werde ich gleich noch genauer darauf eingehen,
weil es ist eben rein praktisch so, also alle Schaltungen,
wenn es jetzt also nicht wirklich ganz triviale Sachen sind, per Definition Hazards.
In der Regel ist es aber so,
dass eben zwischenzeitlich auftretende falsche Werte quasi nicht berücksichtigt werden,
sondern ich eben,
und das ist eben quasi dann auch eine Idee von diesem Takten von Schaltung,
ich eben den Takt also so lange gewählt habe,
dass ich eben das Ergebnis erst betrachte,
wenn also solche Effekte wieder abgeklungen sind
Frage. Führung ist ja sozusagen, man kredet,
die dauern des Impulses. Und sozusagen eine Ausdruckkräfte, wirklich,
dass die aus Entweder... Werde ich gleich noch genauer vorstellen,
was sich dahinter verbirgt und im nächsten Kapitel geht es dann nämlich eigentlich um getaktete Schaltung.
Also da wird dann also auch noch mal vorgerechnet,
also woraus sich dann also solche Zeitbedingungen letztendlich ergeben.
Aber also Grundidee ist halt eben, dass ich sage,
ich habe hier Irgendwas, was, also taktsynchron arbeitet.
Habe hierzwischen jetzt also sowas wie ein Schaltnetz,
wo ich also irgendwelche Hazards drin haben kann.
Und habe hier hinten dann wieder was, was taktsynchron arbeitet.
Und die Idee ist halt eben, ich muss letztendlich lange genug warten.
Das alles, was hier zwischendurch an Leitungsverzögerung und an Gattaverzögerung
aufgetreten ist und was eben zu solchen Effekten geführt haben kann,
dass das vorbei ist.
Und dann darf erst hier hinten das Ergebnis übernommen werden.
Und da muss sich dann eben dafür sorgen,
dass sie eben hinreichend langsam takte
Gut, bei den Hazards kann man jetzt also unterschiedliche Arten unterscheiden.
Zum einen gibt es statische Hazards. Das heißt, der
Ausgangswert soll sich nicht ändern. Es tritt aber kurzfristig mal
einen Wechsel auf und es gibt dynamische Hazards. Das ist jetzt eben,
wenn sich ein Ausgangswert ändern soll, ist aber nicht nur eine einzige,
sondern vielleicht also auch noch mehrere Änderungen mit falschen Werten gibt.
Beispiele dazu kommen gleich. Dann gibt es auch noch die Unterscheidung jetzt,
wodurch der Hazard-Fehler, oder der Hazard ausgelöst wird.
Und zwar gibt es Strukturhazards, die ergeben sich also aus
der Struktur oder der Realisierung der Schaltung und Funktionshazard,
die sich also aus der logischen Funktion ergeben.
Auch dazu gleich noch weitere Beispiele. Hazards, statisch oder dynamisch,
ein angenommen, ich habe jetzt ein Erwarte eine Null,
habe hier im Ausgang zwischenzeitlich mal kurz eine Eins,
dann wäre das eben ein statischer Hasard,
weil ich möchte hier einen statischen Wert haben,
habe zwischenzeitlich einen falschen Wert, da der falsche Wert eine Eins ist,
habe ich einen statischen Eins-Hasard.
Hier genau das Gleiche, dann analog dazu für den statischen Null-Hasar.
Bei diesen dynamischen Hasards sage ich eben, ich erwarte einen Wechsel,
es tritt aber quasi nach dem Wechsel,
vielleicht nochmal irgendwie ein falscher Wechsel auf,
nicht dem zuvor,
wenn das dann die dynamischen Hasards
Gut, Strukturhasard ist jetzt etwas, was sich eigentlich aus
der Struktur der Schaltung ergibt. Und Strukturhasards tauchen letztendlich auf,
auch wenn sich nur eine einzige Variable ändern kann.
Also nie mehr als Beispiel die großartige Funktion.
F von A ist nicht A oder A und A.
Diese Funktion macht nur bedingt Sinn, weil das,
wenn ich das nach der Bulschen Algebar betrachte,
erzog die mir im Ausgang eigentlich mehr oder minder konstant
eine Eins
Fragen. Ja, sorry. Hab mich gerade nicht gesehen,
ja, eine Frage. Ach so, gut. Ja gut,
also das ist ja wirklich eine kurze Begriffserklärung, was damit ist. Ich denke mir,
das wird dann eigentlich immer aus diesen Grafiken dann ein bisschen klarer,
was damit gemeint ist, aber ansonsten Ich denke mir,
also geht es eher darum zu verstehen, was ich hinter dem Hazard verbirgt,
als jetzt also irgendwie diese Begriffe irgendwie runterbeten zu können.
Gut, also wir haben jetzt diese großartige Schaltfunktion,
F von AS Nicht A oder A und A,
nach der Bulschen Algebra, kann ich sagen, okay,
erzeugt mir eigentlich am Ausgang mehr oder minder eine Eins,
weil wenn Adleich Null ist,
mache ich hiermit eine Eins,
wenn Adleich 1 ist,
halte ich aus diesem Ausdruck
eine Eins
So, was jetzt passiert,
wenn sich A von null nach 1 ändert,
ist ja, dass letztendlich dieser Ausdruck,
der dafür sorgt, dass es am Anfang,
wo es also hier null ist,
ich hier im Ausgang eine 1 erhalte,
dieser Ausdruck dann wechselt seinen logischen Wert und ich also statt der 1 eine null erhalte und eigentlich sollte dann er gleichzeitig
In diesem Ausdruck, der mir also vorher immer eine Null geliefert hat,
mir dann, der mir eine A1 liefern.
So, und wenn ich jetzt sage,
dieses Nicht-Gatter und dieses und-Gatter sind jetzt unterschiedlich schnell.
Und der hier schaltet schneller ab, als der hier einschaltet.
Dann habe ich also genau diese Situation,
dass beim Wechsel von 0 noch 1 hier ein statischen Null-Hasard erhalte.
Das wäre jetzt also ein Beispiel für einen Struktur-Hasard,
wo ich eben letztendlich aus der Struktur der Schaltung Das dafür sorgt,
dass eben bei entsprechenden Kombinationen der Zeitverzögerung sowas auftritt.
In Frage? Wurde jetzt Ard Guthars, wenn er weiß,
wie die Gnade und wir die Armen.
Ja, ist richtig. Also Frage war jetzt,
wenn ich also die andere Situation habe und dieser Ausdruck jetzt schneller ist,
als der hier nicht,
dann hätte ich also jetzt nicht an dieser Flanke,
sondern an dieser Flanke,
also quasi dann den entsprechenden Strukturhase hat
Gut, auch dazu sind dann hier in Hades nochmal entsprechende Beispiele,
die dann also natürlich dann klassischerweise immer,
also hier dann nochmal ein bisschen einfacher dann, so aufgebaut sind,
dass sich dann also quasi hier einfach und Gatter habe mit
einer gewissen Gatterverzögerungszeit und dann hier in Wörter mit einer Zeit.
Das Wechseln des Eingangs soll dann eben dazu führen,
dass ich eben unter einer entsprechenden Bedingung dann eben hier
so ein Eins-Hazard bekomme,
beziehungsweise hier bei dem oder Gatter
ein Nullhazard
Also auch das kann man sich dann also nochmal rein praktisch ansehen. Ich das,
wenn ich jetzt hier entsprechend umschalte, in der Einrichtung passiert nichts,
aber wenn ich hier sind Wechsel von 0 nach 1 habe,
dadurch,
dass dann eben hier die Ausbreitung hierüber entsprechend länger dauert als hierüber,
habe ich dann eben kurzfristig mal diesen Hazard.
Hier ist es ganz letztendlich umgekehrt und hier ist es jetzt
also nochmal ein bisschen extremer dargestellt
Wo ich dann eben wirklich sehe,
wie sich das dann eben hier entsprechend ausbreitet und dann dafür sorgt,
dass sie zwischenzeitlich dann eben diesen falschen Impuls erhalte.
Gut, das wäre dann also,
wenn man das jetzt entsprechend simuliert und in die Probe setzt,
wie das dann eben auch ein Hades in Form
von diesem Impulsdierraum dann anzusehen wäre
Gut, hier, das Ganze nochmal etwas extremer,
um zu zeigen, dass eben,
wie sich dann also jetzt gerade solche Hazard-Seiten noch deutlicher auswirken können,
jetzt über so eine Kette aus nenntgliedern,
die alle an einem einzigen Eingang hängen, mit in gleich null,
erzeuge ich dann also letztendlich am Ausgang eine Eins,
wenn ich dann aber eben den Eingang von null nach Eins umschalte,
sieht man da dann nämlich gleich sehr schön,
wie sich dann also quasi das Ergebnis durchschrippelt und man so eine ganze Folge von Hasarz bekommt,
weil dann eben hier,
wehrt sich das dann eben entsprechend auf den nachfolgenden Stufen auswirkt.
Nicht also auch das kann ich hier mal kurz das zeigen.
Das wäre jetzt also hier entsprechend so weit initialisiert,
wenn ich jetzt eben hier nach eins umschalte
Sieht man, als wie sich das dann eben hier
entsprechend in einzelnen Verzögerungszeiten dann durchhangelt. Und dadurch,
dass sich dann eben diesen Effekt einmal von hier nach hier habe,
dann von hier nach hier, nach hier und so weiter,
habe ich dann eben auch diese Mehrfachhandwechsel.
Gut, das ist eigentlich erst mal nur so grob
zum Verständnis,
was Hazards sind
Strukturhaarsatz, wie sie eben letztendlich aus den Schaltungen herkommen.
Hier das Ganze dann eben auch nochmal als Impulsdiagramm.
Wie kann man das Ganze jetzt vermeiden? Nicht, wenn ich sage,
ich brauche jetzt eine Schaltung, die sollte Hazard frei sein.
Wenn man sich da jetzt die Logik oder die Funktion zu ansieht,
dann ergeben sich, also das einfache Beispiel,
immer Folgende, dass ich sage,
also wenn ich mir jetzt hier im KV-Diagramm mal also irgendwie so eine Funktionalität ansehe,
wo das mal auftaucht, wo ich dann also hier jetzt solche Strukturhaarsatz drin hätte.
Angenommen, ich habe jetzt also hier diese Funktion X2 X1
nicht oder X1 X0, also schön minimiert, aktuelle Übungsaufgabe,
alles irgendwie mit Schleifen jetzt entsprechend zusammengebaut, klein gemacht.
Und ich habe jetzt also hier genau diese Situation, dass ich eben sage,
einmal bin ich in der Logik dieser blauen Schleife.
Einmal bin ich in der Logik dieser roten Schleife. Das heißt,
beim Übergang von dieser Position, also dem Eingangsfektor 1.0.1,
also X2, nicht X1, nein, X2,
1, nicht X.0, nach X2, X1,
X.0, was also diese Position ist,
mache ich ja also im KV dir gar nichts anderes,
als dass ich sage, die eine Eingangsvariable ändert sich.
Und hier habe ich am Ausgang eine Eins und hier auch eine Eins.
Und aufgrund dieser unterschiedlichen Guitar-Verzögerungszeiten kann es jetzt eben sein,
dass diese eine Therm hier vielleicht schneller ausschaltet, als der hier einschaltet.
Und dann habe ich eben genau bei diesem Übergang zwischenzeitlich eine Null. Nicht,
dass wir also ein klassischer Fall jetzt für so einen Strukturhasar,
also hier diese anderen Beispiele sind jetzt natürlich immer insofern ein bisschen ungünstig,
weil ich da sagen kann, okay,
da kommt am Ausgang sowieso immer was Konstantes raus.
Nicht, aber das ist jetzt also hier wirklich mal ein Hazard,
wie ich ihn jetzt in einer ganz normalen Schaltfunktion habe.
Also auch das könnte man dann eben entsprechend mit Ha,
das sich mal ansehen. Wäre also hier dieses Beispiel,
es geht darum, quasi am Eingang von 1 0-1,
nach 1-1-1 zu schalten.
Und was man hier dann eben jetzt gleich sieht,
ist, dass ich hier kurzfristig mal eine Null bekomme,
weil eben genau die Ausbreitung über diesen Pfad schneller ist,
als hier über diesen Pfad.
Ich weiß dann eben genau zu diesem Effekt führt,
wie man ihn jetzt also da im KVD-Rahmen letztendlich drin hatte
Gut, wie könnte man jetzt diese Struktur Hazard beseitigen?
Hier das Ganze dann eben auch nochmal als Schaltung beziehungsweise das entsprechende Impulsdiagramm.
Jetzt kann ich natürlich sagen, naja gut,
es war jetzt also nur bedingt, oder zumindest teilweise kontraproduktiv,
aber wenn ich den Strukturhazar dadurch erzeuge,
dass ich also im Prinzip von dieser Schleife,
in diese Schleife übergehe,
baue ich eben noch hier eine zusätzliche grüne Schleife mit ein
und habe dann eben genau diesen Effekt nicht mehr
Heißt dann natürlich, dass ich jetzt also letztendlich wieder
mehr Hardware einsetzen muss und nicht und eben von dem,
was ich vorher in der Minimierung da geschaffen habe, vielleicht eben wieder was rausnehme.
Aber damit kann man also zumindest in diesem Beispiel dann genau
diesen einen Strukturhasar, der hier drin ist, beseitigen.
Nicht, also Strukturhasar hat grundsätzlich Schaltfunktionen einer Eingabe ändert sich.
Und ich habe im Ausgang einen Hasard,
nicht was dann eben eigentlich immer durch die Folge kommt,
dass ich also in den KV-Diagrammen quasi von einer zu einer anderen Schleife übergehe und dadurch,
dass sie unterschiedlich schnell an bzw. abschalten,
habe ich dann eben genau diesen Effekt.
Lässt sich jetzt eben beseitigen, indem man da die entsprechenden Teile mit reinnimmt.
Würde dann in diesem Fall zu dieser Schaltung führen,
wenn man das Ganze simuliert,
hätte man eben entsprechend dieses Impulsdiagramm und das wäre in
dem Fall dann Hazard frei
Gut, daneben gibt es dann aber noch etwas, was sich funktionsversandt nennt.
Und zwar Funktionshazard ist jetzt, dass ich jetzt mehrere Eingangswerte ändern.
Deswegen Funktionshazard, weil da gehe ich dann nämlich letztendlich so
auf Eigenschaften der Schaltfunktionen ein. So,
und während ich also Strukturhassatz eben durch solche zusätzlichen Gatter oder
eben letztendlich im KV-Diagramm dann eben durch zusätzliche Schleifen beseitigen kann,
habe ich bei Funktionshassatz keine Chance,
da was zu machen,
sondern die treten letztendlich immer auf
Der Name, Funktionshasar, ergibt sich daraus, dass es eben,
dass die eigentlich abhängig von oder bedingt sind, eben letztendlich durch die Funktion.
Klassisches oder ganz einfaches Beispiel ist dann eben etwas, wo ich sage,
ich nehme wieder diese Funktion, es ändern sich jetzt aber nicht eine,
sondern es ändern sich jetzt zwei Eingangsvariablen. Und angenommen,
ich bin jetzt also hier an dieser Stelle,
habe also den Therm X2X1, nicht X0,
gehe jetzt hier an diese Stelle,
das heißt also sowohl X2 als auch X1 ändern sich,
also sprich X2 nicht, X1,
X0. Theoretisch sorrt am Ausgang eben immer eine Eins rauskommen,
rein praktisch habe ich aber eben grundsätzlich das Problem,
dass so eine wirkliche Gleichzeitigkeit von diesem Wechsel von X2 und X1 eben in der Realität oder im technischen System nie gegeben sein wird.
Das heißt, wenn sich beide Angriffsvariablen ändern, was wird im KV-Diagramm passieren? Ich kann quasi,
wenn die sich jetzt nicht gleichzeitig ändern, entweder hier rüberlaufen,
dann hängt das Ganze quasi ähnlich wie der Strukturhasert jetzt eben da dran,
welches von diesen Gartern schaltet schneller.
Es kann aber eben auch sein,
dass also erst X2 von 1 nach 0 wechselt und dann X1 von 0 nach 1,
das heißt, dann bewege ich mich quasi hier rüber und dann sieht man eben,
dass sich also dadurch dann also hier auch so ein Zwischenzeit,
ich mag also kurz so eine Null am Ausgang erzeuge.
Gut, und wie gesagt, Funktionshasarz,
da hat man eben keine Chance, auch nicht durch irgendwelche zusätzlichen Schleifen,
wie unten angedeutet, dann irgendwas zu machen,
sondern die sind also wirklich in allen Schaltfunktionen letztendlich drin,
werden eben ja quasi hervorgerufen, wenn sich mehrere Eingangsvariablen ändern.
Gut, damit bin ich jetzt also mit diesem Abschnitt zu den Schaltnetzen soweit fertig.
Jetzt habe ich schon ein bisschen angefangen, motiviert,
also eigentlich was das Zeitverhalten angeht. Also sprich, die
unterschiedlichen Zeitmodelle. Und ich habe ja auch schon kurz gesagt,
also was sich dann eigentlich aus dem Zeitverhalten auch noch ergibt,
nämlich, dass ich im Prinzip in Entscheidung sowas wie diese Hazards haben kann und das eben auch schon bei wirklich ganz trivialen, ganz einfachen Schaltfunktionen.
Gut, Schaltwerke sind jetzt quasi Erweiterungen ganzen oder von den Sachen,
wo ich dann eben sage, ich habe jetzt also in den Schaltrong noch zusätzlich Rückkopplung.
Nicht bislang war es immer so, dass sie das eigentlich
wie eine Funktion betrachten konnte. Ich habe hier einen Eingang,
ich habe hier irgendeine Funktion und liefert mir am Ausgang irgendeinen Wert.
Was dort noch nicht vorgekommen ist, ist,
dass also irgendwie von einem Gatter der Ausgang irgendwie auf den Eingang eines Gatters wieder zurückgeleitet wird.
Und das führt dann eben zu dem Verhalten,
was man dann eben als Schaltwerk bezeichnet,
wo ich dann eben sage,
aufgrund dieser Rückkopplung habe ich dann erstmal grundsätzlich ganz andere Eigenschaften,
weil da dann nämlich die Ausgänge nicht nur jetzt im Sinne einer mathematischen Funktion von den Eingängen abhängen und einfach direkt ausgerechnet werden können,
sondern es gibt dann eben noch sowas wie einen internen Zustand,
der letztendlich die Vorgeschichte repräsentiert und abhängig von diesem internen Zustand
habe ich dann eben einen entsprechenden Ausgangswert
Gut, was man dann in Schaltwerken haben kann,
beziehungsweise haben möchte, sind dann stabile Zustände. Das heißt,
da habe ich oder damit schaffe ich dann überhaupt erst mal die Möglichkeit,
Informationen zu speichern, indem ich dann eben sage,
ich kann mir meine Schaltung so aufbauen,
dass sie entweder den einen oder den anderen stabilen Zustand einnimmt.
Und je nachdem, welchen sie eingenommen hat,
interpretiere ich das eben einmal als eine Eins gespeichert,
einmal als eine Null gespeichert
Was allerdings dann auch vorkommen kann,
beim Unvorsichtigen Entwurf ist dann eben wirklich chaotisches Verhalten.
Also dazu kommen jetzt gleich noch passende Beispiele. Gut,
grob skizziert das, was ich ja eben schon angedeutet habe,
ich habe Eingangsvariablen, ich habe ein Schaltnetz, daraus werden irgendwelche Ausgangsvariablen berechnet.
Und ich habe hier dann noch sowas wie irgendwie eine Rückkopplung,
das heißt also mit den Eingangsvariablen und einem Zustand berechne ich dann sowas wie ein Folgezustand,
der dann quasi jetzt nach einer gewissen Verzögerungszeit oder nach einem irgendwie Zwischenspeichern dann eben zum aktuellen Zustand wird.
Und das kann eben dazu führen, dass sie das Ganze
mehr oder minder chaotisch hier immer irgendwie im Kreis bewegt.
Es kann aber eben auch sein,
dass wenn das eben vernünftig entworfen ist, dass man dann eben sagt,
ich habe dann eben wirklich ein stabiles Verhalten,
wo ich dann also hier Sachen mit umschalten kann.
Wir haben uns ja angesprochen, dass man da multiplikationen auch daraus
nicht genannt, dass man ein bisschen einzelne Haditionsaufgaben hat.
Das ist das 9.95., das war ein Scheinschläger.
Also die Frage war jetzt, war ich,
also das letzte Mal, also gesagt hat, also im Prinzip
Multiplikation kann ich durch entsprechende Hardware-Sachen parallel machen oder ich kann das quasi iterativ machen,
indem ich sage, ist, es wird immer addiert,
geschoben, addiert, geschoben und das Ganze dann eben mehrfach hintereinander.
Und letztendlich, also formal gesehen, wäre das dann sowas hier,
wo ich dann eben sage, gut,
also der Zustand ist dann halt eben mein Zwischenergebnis und eben die Information,
ich habe jetzt Schritt 5 der Berechnung gemacht und im nächsten Zustand habe ich dann eben ein neues Zwischenergebnis und dann eben Schritt 6 der Berechnung gemacht.
Also formal gesehen ist das dann eben beispielsweise richtig,
beziehungsweise es wäre dann also so rumgesehen,
also auch ein Schaltwerk
Gut. Hinsichtlich dieser Rückkopplung oder dieser Speicherglieder wird dann immer noch unterschieden,
ob es ich hier drin quasi jetzt nur sowas wie irgendwelche Verzögerungen habe.
Seien das also Leitungsverzögerungen oder seine Skatterverzögerung. Dann spricht man
eben von asynchronen oder auch nicht getakteten Schaltwerken. Oder ob ich hierrin also irgendwelche,
also in diesen Rückkopplungen quasi irgendwelche Speicherungen habe,
wo dann also irgendwelche getakteten Elemente drin sind,
was ein getaktetes Element ist.
Also würde ich Später dann auch gleich vorstellen.
Und dann handelt es sich eben um Synchrone oder getaktete Schaltwerke. Das,
womit wir typischerweise leben, sind auch getaktete Schaltwerke,
werde ich auch gleich nochmal motivieren,
weil die eben auch deutlich einfacher zu entwerfen und zu handhaben sind.
Und sowas, hier möchte man eigentlich noch nicht
richtig haben
Gut, hier nur noch mal zu den Definitionen synchrone Schaltwerke sind halt welche,
wo sich der Zustand eben explizit durch ein Taktsignal ändert,
was wir dann eben auch im Weiteren immer als Clock-Signal verstehen.
Bei asynchronen Schaltwerken habe ich eben wirklich nur irgendwelche Gatter oder Lagerungsverzögerungen.
Theoretisch kann man sagen, ja gut, wenn ich jetzt
also nicht hier irgendwie auf den Takt warten muss, können, asynchrone Schaltung schneller sein. Der Entwurf ist aber entsprechend kompliziert und das Ganze ist also entsprechend fehleranfällig,
weil das Problem ist, wenn ich jetzt sage,
ich habe hier irgendwelche Garterverzögerung oder Leitungsverzögerung und ich modelliere das jetzt in Hades,
indem ich jetzt sage, also ich schreibe da irgendwo den Wert 0,7 rein oder ich schreibe hier die 0,3 an die Tafel,
dann ist das natürlich jetzt für eine technische Schaltung eigentlich auch irgendwo Ein geschätzter,
gemittelter Wert, weil es eben so aussieht,
dass solche Schaltungen, also quasi mit der Zeit altern,
dass da dann eigentlich noch irgendwelche Effekte mit reinspielen,
Temperatur, Versorgungsspannung, was weiß ich, noch mit alles.
Das heißt, also diese 0,3 sind eigentlich auch nicht 0,3,
sondern typischerweise gibt es da eben auch irgendwie so eine Art glockenförmige Verteilung,
wo ich dann sage, okay, den typischen Wert,
das ist das, womit ich eigentlich erst mal rechne,
aber es kann sich eben verschieben,
nicht in das eine Gatter kann eben die Verzögerung haben,
dass andere Gatter kann die Verzögerung haben,
nicht und dann eben mit solchen Sachen,
die sich dann eben auch noch wirklich abhängig von irgendwelchen externen Bedingungen ändern können,
einen entsprechend sauberen Entwurf hinzukriegen, gelingt dann typischerweise eben nicht,
beziehungsweise nur für ganz trivial einfache Elemente,
die man dann eben mit entsprechenden Tricks dann quasi zur Synchronschaltung,
Schallwerken dann macht.
Gut, bevor ich das Ganze jetzt noch ein bisschen weiter vertiefe,
noch mal ein bisschen was zur Theorie dahinter.
Ich weiß nicht, inwieweit das jetzt bei irgendwelchen Grundlagenveranstaltungen,
Softwareentwicklungen, irgendwelchen anderen theoretischen Veranstaltungen schon der Begriff gefallen ist.
Also es handelt sich da dann immer eigentlich um etwas,
was der Informatiker dann als endlichen Automaten bezeichnet.
Hatten Sie den Begriff schon mal gehört? Kopfschütteln, noch gar nichts weiter. Gut,
dann musste ich jetzt leider, also wie gesagt,
ich werde jetzt also hier nicht die böse Theorie machen,
sondern also hier nur mal kurz ein paar Begriffe dazu erläutern.
Alles andere können dann die Kollegen,
also aus den Bereichen, dann denke ich mal
deutlich besser
Endliche Automat, beziehungsweise das, was man im Englischen dann
auch immer als Finale State Machine oder abgekürzt FSM bezeichnet,
ist formal gesehen ein Sextupel. Das heißt also,
wenn die Prüfung bei der Theorie gehen,
was ist ein endlicher Automat, endlich automatisch ein Sextupel,
dann ist der Theoretiker schon mal glücklich,
dann muss dann ihm nämlich nur erklären, worum es da geht.
Also ein Automat speichert irgendwie die Historie, das tut er in Zuständen,
in dem zufolge gibt es also eine Menge von Zuständen
Dann gibt es für meine Eingabe, also sprich das,
was hier reingeht, was hier als Eingangsvariablen X bezeichnen habe,
ein Eingangsalphabet. Dann gibt es hier für die Ausgangsvariablen Y
ein Ausgabealphabet und dann brauche ich noch zwei Funktionen,
die mir sagen,
wie berechnen sich aus Eingangsvariablen und aktuellem Zustand die Ausgangsvariablen und
wie berechnen sich aus Eingangsvariablen im aktuellen Zustand der Folgezustand
Genau das ist also formal, hier nämlich aufgeschrieben.
Also ich habe meine Zuständeeingabe und Ausgabealphabet. Ich habe eine Zustandsübergangsfunktion,
Delta, die aus einem Zustand und einem Eingabewert ein Folgezustand berechnet.
Und ich habe eine Ausgabefunktion, Lamda,
die mir aus einem Zustand und einem Eingabewort
ein Ausgabewort bestimmt
Dann sprechen wir von einem Mili-Automaten. Oder wenn die Funktion
lahm da nur vom Zustand abhängt, dann ist es ein Moor-Automat.
Formal gesehen sind beide Äquivalent. Aber wie gesagt,
das wird dann schätzensweise noch irgendwann in der Theorie mit rankommen.
So, und dann brauche ich noch so etwas wie einen Startzustand.
Das heißt also einen ausgewählten Zustand, wo das ganze Ding losläuft.
Ich schalte ein. Alles ist irgendwie null. Also sowas zum Beispiel. Gut,
das ist eigentlich das, was erstmal als Theorie,
beziehungsweise theoretische Begrifflichkeit dahinter steckt, wie man damit arbeitet,
wie man das notiert, das werde ich jetzt also hier bei dem,
was wir jetzt also hier brauchen, dann also gleich noch genauer erklären,
beziehungsweise das gleich wird dann also übermorgen sein.
Ich aber das eigentlich nur schon mal klar ist,
was sich hinter diesen Begriffen verbirgt, fahren als State Machine,
Mili-Automaten, Moorautomat und wie gesagt, diese theoretischen Begriffe ist,
wenn ich da jetzt sage, ich habe ein Eingangsweck und ein Ausgangsweck,
dann wird das dann schon entsprechend Klara.
Gut, hier auf dieser Folie sind die ganzen Sachen dann eben auch nochmal entsprechend unterschieden,
wo ich dann eben sage,
beim Mili-Modell hängt die Ausgabe von Zustand und aktuellem Eingang ein,
beim Moor-Modell eben nur vom Zustand, demzufolge habe ich dann eben hier unterschiedliche Ausgabefunktionen.
Diese Zustandsüberführungsfunktionen sind gleich, Speicherglieder oder Verzögerung von Rückkopplungsfahrt,
damit habe ich dann quasi aus diesem Modell genau dieses gemacht,
wo ich dann eben sage, Mili-Automat würde so aussehen,
Moorautomat würde so aussehen.
Wie man damit jetzt Schaltwerke beschreibt,
wie man damit dann also wirklich arbeitet und rechnet,
das wird dann eben entsprechend übermorgen folgen.
Ansonsten Schluss für heute,
dann bis Freitag