Quine Mc Cluskey and Automat

Benutzeravatar
davidvajda.de
Site Admin
Beiträge: 1538
Registriert: Di Jul 18, 2023 8:36 pm
Wohnort: D-72072, Tübingen
Kontaktdaten:

Re: Quine Mc Cluskey and Automat

Beitrag von davidvajda.de »

Statement zur Erklärung, damit sie auch wissen, worum es geht.

Ein Automat besteht aus einem Steuerwerk und einem Operationswerk. Was beim Computer ein Rechenwerk ist.

Ein Automat besteht aus verschiedenen Zuständen. Generell. Diese können wir uns so vorstellen

0
1
2
3
4
5
6
7
8

Diese Zustände sind zeitlich gesehen. t0, t1, t2

t0: 0
t1: 1
t2: 2
t3: 3
...

der Zustand ändert sich mit dem Takt

Zustände werden binär codiert

0: 000
1: 001
2: 010
3: 011
...

Damit können sie in Flip Flops gespeichert werden

Ein Flip Flop kann dynamisch die information 0 oder 1 speichern.

Damit liegen im Steuerwerk, drei Flip Flops nebeneinander

000
001
010

Mit jedem Takt kommt der nächste Zustand. Über ein Schaltnetz, werden die Bits des alten Zustands abgefragt und als neue Werte den Flip Flops zu geführt. Flip Flops sind so, dass sie die Werte nur beim neuen Takt übernehmen.

Jetzt ist eine immer gleiche Zustandsreihenfolge langweilig

Über ein Mikroprogrammsteuerwerk, das letzte grosse gezeichnete Ding, legen wir fest, welcher Zustand als nächstes kommt

Was wie eine triviale Zeichnung aussieht, mit Kreuzen, ist in der Realität schnell realisiert. Nämlich mit Dioden. Jedes Kreuz eine Diode. Das verhindert, dass das Signal zurückläuft und die anderen Drähte Aktiviert, bis alle aktiviert wären.

Das schräge Ding ist ein Dekoder.

Das muss man verstanden haben, ausser Multiplexern und Demultiplexern und ALU's und Addierer gibt es streng genommen nur Dekodierer und Codierer

Allerdings sind Dekodierer nicht das Gegenteil von Codierern. Sie sind nicht das Dekodieren des Codierers.

Dekodierer sind eine spezielle Form von Codierer

Was ist ein Codierer. Ein Codierer ist ein Schaltnetz, das ein Zeichen eines Zeichenvorrats in ein Zeichen eines anderen Zeichenvorrats umwandelt

Heisst das: Binärcode nach Chinesisch

Nein, binär nach binär

Mathematisch ist folgendes eine Abbildung

f:N->M

Und ein Codierer macht zum Beispiel

00010 -> 1011
00101 -> 0001
...

Egal, wie. Ein Dekodierer ist speziell, weil er für jedes angelegte Zeichen, meist binäre Zahlendarstellung genau ein Bit am Ausgang aktviert, alle anderen sind 0:

0001 -> Ausgang 1
0010 -> Ausgang 2
...

Deswegen hat ein Dekodierer wenig Eingänge und viele Ausgänge

Nun sind die Ausgänge 0, 1, 2, 3, 4, 5, 6, 7, ...

was jeweils eine Leitung ist, aber ein Zustand

0, 1, 2, 3, 4, 5, 6, 7, ...

Mit den entsprechenden Rückführungen über Busse, wird daraus über die Dioden wieder eine Binärzahl, ergibt den nächsten Zustand und der wird in Flip Flops gespeichert, Register

Gut. Da es allerdings seltsam ist, dass einfach auf Zustand 0, 1 folgt auf 1 2 und so weiter. Machen wir eine Entscheidung. Das ist keine Abfrage. Eine Bedingung.

Über ein Bit entscheiden wir, ob wir den oder den anderen Zustand haben

(0,1), (0, 4)
(1,2), (1,2)
(2,2), (2, 8)
...

Das geht über ein Multiplexer. der Multiplexer entscheidet ob das Eingabe Bit vom Operationswerk 0 oder 1 ist. Das heisst, ob der Zustand folgt oder der

Doch, was ist das Eingabebit

Es kann viele Geben. Sie kommen aus dem Operationswerk. Das ist ein Schaltnetz, aber mit Registern.

Die Frage? Was passiert da? Na ja ein Operationswerk ist ein Schaltnetz mit Registern. Diese sind a, b, c, d. Oder so

Gut: Wenn ich ein Register a habe und ein Register b - dann kann sie addieren. Gut, dann mache ich zwischen den Registern einen Addierer. Gut, ich habe viele Zustände im Steuerwerk. Diese entscheiden, pro Zustand, was im Operationswerk passiert

Gut: Ich kann in Zustand 1 und in Zustand 3 Addieren. Ein Mal a und b und ein Mal a und c. Pro Zustand, in dem addiert wird, mache ich im Operationswerk einen addierer. Gut. Ich kann noch anderes. Vergleichen. Gut, wenn ich vergleichen kann, wird es lustig. Jetzt habe ich ein Bit als Ausgang

Und um dieses Bit geht es. Dieses Bit von Vergleichern geht ins Steuerwerk und entscheidet, welcher Zustand als nächstes

Aber, was kann man noch alles im Operationswerk? Addieren, Subtrahieren, Vergleichen, mit UND verknüpfen, Shiften, ...

eben alles was man kann. Durch die Bits der Vergleicher wird im Steuerwerk entschieden, pro Zustand, entweder der festgelegte Zustand oder der.

Aber: Was ist mit den Registern. Die Registern dienen nicht nur als Ausgangsvariable, sondern als Eingangsvariable. Es gibt allerdings viele Operationen. Alle gehen in die Registern und teilweise gehen viele Operationen in ein einziges Register

Die Operationen sind die, wie nachher in unserem Computer, eben Addieren, Shiften uns so weiter. Steht so etwas in unserem Computerprogramm, ist es in Wirklichkeit eine Schaltung in der Hardware, die da addiert. Unserer Addierer wird bemüht.

Deswegen ist es auch kein Unterschied, ob es Hardware oder Software ist

&& ist sowohl ein Und geschrieben im Programm, als auch eine physische Schaltung, doch die wird, wie in VHDL in Worten beschrieben.

Gut, aber ich habe im Operationswerk pro Operation ein eigenes UND, wenn ich das so implementiere, bleibt mir freigestellt

Aber, was ist ein wenn ein Register viele Eingaben hat. an jedem Register ist vorne ein Multiplexer. Und der Entscheidet was rein kommt und was nicht und ob überhaupt. ein Multiplexer hat 5 Eingaben, wenn in 5 Zuständen unterschiedliche ins Register kommen. Dieser Multiplexer hat Steuerleitungen. Sie kommen aus dem Steuerwerk und entscheiden, welche Eingabe und ob rein kommt. Sie werden Zustand für Zustand über das Steuerwerk, das ja ein Automat ist gesteuert

Gut, denkt man sich. Man hat vier Register und 10 Addierer. Dann kam man auf die Idee des Computers. Erst hier.

Wenn ich 10 Addierer habe, würde mir einer genügen. Denn Additionen unterscheiden sich nicht. Aber wie kann ich entscheiden, was addiert wird? Dasselbe wie bei den Registern. Über Multiplexer.

Beim Computer werden die Register zu einem Block zusammen gefasst, dem Registersatz. Statt Multiplexern, anstatt darüber zu reden, gibt es jetzt etwas wie eine Addresse. Oft heissen die Register aber immer noch ax, bx, cx, dx

Gut. Es reicht aber eine ALU, also ein Addierwerk. Die Operation daran wird ausgewählt und vom Registersatz welche rein gehen.

Nur ist das eine wiederholende Sache.

Angenommen in einer Kasse -

Addieren wir

5 Euro
10 Euro
12,50 Euro
2,20 Euro

Gut, dann ist in
AX: 5 Euro
BX: 10 Euro

Dann addieren wir AX + BX und schieben es nach AX

AX = AX + BX
AX = 5 Euro + 10 Euro
Jetzt tun wir 12,50 Euro in BX

und so weiter

Deswegen: Im Computer wiederholen sich die Operationen immer wieder. Die Register werden gelesen und geschrieben

Allerdings: Und jetzt kommt ihr Programm!

sie träumen vom Programm. Ich sagte Programm des Mikroprogrammsteuerwerks. Sie sagten Programm und meinten Assembler Programm. Sie sagten Arbeitsspeicher

Ja und da hat das eine mit dem anderen nichts zu tun. Sie sagten, IF Abfrage, ich Bedingung. Sehen sie, mir sind beide Welten bekannt, aber das ist was anderes

Was sie unter IF verstehen, ist etwas anderes, als die Bedingung. sie kennen die Flags im Intel Prozessor

CF, SF, OF, PF, AF, ...

Gut, das sind die Bedingungen in der Hardware.

Aber ihr IF ist etwas ganz anderes

Würde ich meinen Automaten bauen, dann könnte ich 100e Zustände implementieren. Das Ding würde gross und es würde keine Abweichung erlauben.

Es gibt im Computer zwei Zustände, ohne Pipelining

1.) Befehl holen
2.) Befehl dekodieren und ausführen

Der Rest ist was anderes. Die Befehle von ihnen haben mit Zuständen nichts zu tun

Doch der Unterschied besteht darin, dass sie hintereinander im RAM liegen. Anstatt jedoch zu definieren, was der Folgezustand ist, entscheide ich über die Befehle, was ich will

Das hat mit dem anderen nichts zu tun. Das wäre wie ein Automat bei dem ich mit extrem vielen Steuerworten entscheiden könnte, extrem viele Folgezustände zu haben

Die Befehle liegen hintereinander. Das hat mit Mikroprogramm nichts zu tun

Sie liegen im RAM. Das ist ein Assemblerprogramm. Bzw. Binär

1.) Mikroprogramm
2.) Binärcode
3.) Assembler
4.) C
5.) PHP

Und: Die IF's bzw. jne jge jnge bzw. beq, bnez, bltz, was die Assembler Sprungbefehle bedingt sind, die bedeuten nur im RAM zu springen.
Antworten