/media/sda-magnetic/david/Dok-15-2023-11-27/informatik/asm-vhdl-fsm-...-2024-02-03/auswendig20240131a.txt


Schaltwerk

Schaltwerk arbeitet in Schritten

Zustandsgraph
Knoten des Graphen
Knoten des Graphen sind die Zustände des Schaltwerks

Gerichtete Kanten
Eingehende Kanten
Ausgehende Kanten

Kanten sind mit i/o markiert

Eingabe: i
Ausgabe: o

Eine Ampel zeigt normalerweise auf rot. Drückt man den Knopf geht sie auf grün und verbleibt dort für 3s und wechselt wieder auf rot

Signal: eingabe: Knopf
Signal: Ausgabe: Farbe Wert 0 rot, 1 grün

Beliebige Eingabe: *

Signal, Taktsignal

Taktdauer: Länge jedes Schrittes
Frequenz: Kehrwert der Taktdauer

Takt
Taktdauer
Taktsignal

z0->z0
z0->z1
z1->z0

Ein Schaltwerk arbeitet normalerweise mit Takten fester Taktdauer

z0->z0
z0->z1
z1->z2
z2->Z0

z0+ := z0 AND NOT Knopf OR z2
z1+ := z0 AND Knopf
z2+ := z1+

Farbe := z0 AND Knopf OR z1 OR z2

Eine Ampel steht auf rot für 2s
Wechselt auf Gelb für 1s
Verbleibt auf Grün für 2s
Verlängbar auf 5s

ro: rot
ge: geld
gr: grün



Ein n-Bit-Register
    n Dateneingänge
    n Datenausgänge
    Steuereingang CLK oder Taktsignal

Übergangsschaltnetz für z0+ -> n-Bit-Register -> z0
Übergangsschaltnetz für z1+ -> n-Bit-Register -> z1
Übergangsschaltnetz für z2+ -> n-Bit-Register -> z2

z0, z0+
z1, z1+
z2, z2+
zw, zw+

Folgezustand
    z0+
    z1+
    z2+
    zw+

Flip Flop

x NOR 0 = NOT x
x NOR 1 = 0

Q := R NOR Q'
Q' := S NOR Q

S, R, Q, NOT Q

CLK, D, Q, NOT Q

Wirkintervall: Setzzeit + Haltezeit
Kippintervall: Die Zeit in der das Datensignal frühestens oder spätestens am Ausgang des FF erscheint

Setzzeit: Setup Time: Die Zeit vor dem Taktsignal bei der das Datensignal stabil sein muss
Haltezeit: Hold Time: Die Zeit nach dem Taktsignal bei der das Datensignal stabil sein muss

MS FF: Wirk und Kippintervall überalappen sich nicht

S, R, Q, NOT Q
CLK, D, Q, NOT Q
ENABLE, CLK, D, Q, NOT Q

Steuerkwerk
    Statusvektor V
    Steuervektor S
Operationswerk:
    Eingabevektor X
    Ausgabevektor Y
    Steuervektor S
    Statusvektor V

R: Allzweckregister
R2(7:0)

Randbits

2^0: Least Significant Bit - Rechtes Bit
2^7: Most Significant Bit - Linkes Bit

AR: Addressregister
PC: Programm Counter
IR: Instruction Register

IR <- M [PC], PC <- PC + 4

RTL-Notation
    Logisch
        AND
        OR
        NOT
        EXOR
    Arithmetisch
        Addition +
        Inkrement ++
        Subtraktion -
        Dekrement --
        Einerkomplement
    Schiebe und Rotation
        Schiebe um n bit nach links >> n
        Schiebe um n bit nachts << n
        Schiebe um n bit °> n
        Schiebe um n bit <° n
        Konkatenation ||


ASM-Diagramm: Algorithmic State Machine
Flussdiagramm


Eingehende Kante
Eingehende Kante führt von Zustand Za in Zustand Zb
Eingehende Kante ist mit i/o Markiert
Eingehende Kante, di mit i/o markiert ist führt von Zustand Za in Zustand Zb

Korrespondierender Moore Automat

Zb
Zbo
Zbo1, Zbo2, Zbo3

Za, Zb
o1, o2, o3

i o
i/o

Operationswerk
Steuerkwerk
Rechenwerk: Universalles Operationswerk
Leitwerk: Steuerbares Steuerwerk

Rechenwerk
    ALU
    Registerblock

Auf der Linken Seite, der Zuweisung: Variable
Auf der rechten Seite: Funktionsausdruck

Funktionsausdruck: Schaltnetz
Variable: Register

Registerblock: Mehrere Register können zu einem zusammen gefasst werden

Verschiedene Ausdrücke mit verschiedenen Variablen können parallel ausgeführt werden



Beispiel 1en Zähler
    Da weiss ich die Sprüche nicht

John v. Atanasov mit Clifford Berry
Charles Babagge
John von Neumann
Alan Turing
Konrad Zuse

1.) Befehl holen (fetch )
2.) Befehl ausführen (execute)

Blockschaltbild eines Computers
    Rechenwerk
        ALU
        Registerblock
        Schiebemultiplexer
        Statusbits
    Leitwerk
        Programmzähler PC
        Instruction Register IR
            OpCode
            Addressfeld
        Ablaufsteuerung
            Holen
            Ausführen
    Speicher
        Befehl Datum Befehl Datum Befehl
    Ein und Ausgabe

1.) REST
    Initialisiere Prozessoregister, z.B. Programmcounter <- xxxx
2.) Befehlszyklus
    Solange betriebsspannung vorhanden
        Hole Operationscode
            IR <- M [PC++]
        Hole Operanden
            Operandenaddresse <- M [PC++]
        Führe Operation gemäss OpCode aus
            Verknüpfung
            Transfer
                Register <-> Speicher
            Sprung