@@ -733,3 +733,129 @@ Oscillator |---| | | |
733733 3 zu 8 Decoder
734734@enduml
735735```
736+
737+ ## Kontroll Schaltung als Statemachine mit Kombinatorischer Logik
738+
739+ ``` text @plantUML.png
740+ @startuml
741+ ditaa
742+ +----------------------------------+
743+ |c42C +------->
744+ | |
745+ | +-------> Kontroll
746+ | | Signale
747+ | Kombinatorische Logik +------->
748+ | |
749+ | +------->
750+ | |
751+ | +------+
752+ +-+-+-+-+---+----------+-----------+ |
753+ ^ ^ ^ ^ ^ ^Aktueller |
754+ | | | | | | Zustand |
755+ | | | | | +----+-----------+ |
756+ | | | | | |Zustandsspeicher| |
757+ | | | | | |cC42 | |
758+ | | | | | | +--+ +--+ | |
759+ | | | | | | |FF| |FF| ... | |
760+ | | | | | | +--+ +--+ | |
761+ | | | | | +------------+---+ |
762+ | | | | | ^ ^ |
763+ Opcode | | | |
764+ Alu States | | |
765+ | +----------+
766+ | Neuer Zustand
767+ |
768+ Clock
769+ @enduml
770+ ```
771+
772+ ``` text @plantUML.png
773+ @startuml
774+ state "Fetch1\n(memory read)" as Fetch1 : MBR ← M[MAR]
775+ state "Fetch2\n(wait for memory read)" as Fetch2 : (wait)
776+ state "Fetch3\n(increment program counter)" as Fetch3 : PC ← PC+1
777+ state "Fetch4\n(instruction load)" as Fetch4 : IR ← MBR
778+ state "Fetch5,6\n(instruction decoding...)" as Fetch56 : (wait)
779+ state decodefork <<fork>>
780+ state "Hlt\n(Set Halt signal)" as Hlt : RF ← H
781+ state "Wait\n(wait unitl CP8)" as Wait : (wait)
782+ state "Jmp\n(Set Programcounter to Operant)" as Jmp : PC ← IR_11-0
783+ state jmafork <<fork>> : Evaluate A_15
784+ state "Csa\n(load switches state to a)" as Csa : A ← SWR
785+ state "Jsr1\n(Set Programcounter to Operant)" as Jsr1 : A ← PC_11-0
786+ state "Jsr2\n(special Fetch0, load Operant to MBR and program counter)" as Jsr2 : "MBR ← IR_11-0\nPC ← IR_11-0"
787+ state "Fetch0\n(prepare instruction load)" as Fetch0 : MAR ← PC
788+ state "Other Operations ..." as OTHER : ...
789+ state "Rest\n(reset program counter)" as Reset : PC ← 0x0000
790+
791+ [*] --> Reset
792+ Reset --> Fetch0
793+ Fetch0 --> Fetch1 : CP1
794+ Fetch1 --> Fetch2 : CP2
795+ Fetch2 --> Fetch3 : CP3
796+ Fetch3 --> Fetch4 : CP4
797+ Fetch4 --> Fetch56 : CP5
798+ Fetch56 --> decodefork : CP7
799+ decodefork --> Hlt : op == HLT
800+ decodefork --> Wait : op == NOP
801+ decodefork --> Jmp : op == JMP
802+ decodefork --> jmafork : op == JMA
803+ jmafork --> Jmp : A_15 == 1
804+ jmafork --> Wait : A_15 == 0
805+ decodefork --> Csa : op == CSA
806+ decodefork --> Jsr1 : op == JSR
807+ decodefork --> OTHER : op == RAL,NOT,LDA,STA,ADD,XOR,AND,IOR
808+ Hlt --> Fetch0 : CP8
809+ Jmp --> Fetch0 : CP8
810+ Wait --> Fetch0 : CP8
811+ Csa --> Fetch0 : CP8
812+ Jsr1 --> Jsr2 : CP8
813+ Jsr2 --> Fetch1 : CP1
814+ OTHER --> Fetch0 : CP8 (Execute Phase)
815+ @enduml
816+ ```
817+
818+
819+
820+ ## Kontroll Schaltung als Statemachine mit Mikroprogrammspeicher
821+
822+ ``` text @plantUML.png
823+ @startuml
824+ ditaa
825+ +----------------------------------+
826+ |c8C2 +------->
827+ | |
828+ | +-------> Kontroll
829+ | | Signale
830+ | Mikroprogramm Speicher +------->
831+ | |
832+ | +------->
833+ | |
834+ | +-------+
835+ +-+--------------------------------+ |
836+ ^ ^Aktuelle Microcode |
837+ | |Instruction Adresse|
838+ | +-----------------+-----------+ |
839+ | |Adressspeicher | |
840+ Alu States| | | |
841+ | | +--+ +--+ +--+ | |
842+ | |FF| |FF| |FF| ... | |
843+ | +--+ +--+ +--+ cC42| |
844+ +-----------------------------+ |
845+ ^ ^Folgeadresse |
846+ | | |
847+ | +----------+----------+ |
848+ | | Adress Generierung | |
849+ Clock| |cFF0 | |
850+ | ++-+-+-+------------+-+ |
851+ ^ ^ ^ ^ ^ |
852+ | | | | | |
853+ | | | | | |
854+ Opcodes +-----------+
855+ Folgezustands
856+ Kontrolle
857+ @enduml
858+ ```
859+
860+ Die Folgeadresse ergibt sich aus dem Folgezustand und bem Operation Decode aus dem Opcode.
861+ Die Wörter im Mikroprogram Speicher enthalten Informationen zu den Kontroll Signalen und der Folgezustandkontrolle.
0 commit comments