@@ -188,7 +188,7 @@ Datenformat:
188188``` text @plantUML.png
189189@startuml
190190ditaa
191- 15
191+ 15 14 0
192192+-------+------------------------------------+
193193|cF00 V | cFF0 |
194194+-------+------------------------------------+
@@ -644,3 +644,228 @@ Clock--->| Sequentielles Schaltnetz |
644644 +-----------------------------------------------------------------+
645645@enduml
646646```
647+
648+ ## Taktvorgabe
649+
650+ ``` text @plantUML.png
651+ @startuml
652+ ditaa
653+ Zykluszeit des Speichers
654+ RUN/HLT 3 Bit |<-------------->|
655+ | Zähler +---+
656+ | +---+ +---+ | | +-+ +-
657+ +-------+ +->| | | Q+-->| +--> -+ +--------------+
658+ | | | & +-->|T | | |
659+ | +-+ +--->| | | | | | +-+
660+ | | | | +---+ |---| | +--> ---+ +--------------
661+ | -+ +- | | Q+-->| |
662+ | | | | | | +-+
663+ +-------+ | | | +--> ------+ +-----------
664+ Oscillator |---| | |
665+ | Q+-->| | +-+
666+ | | | +--> --------+ +---------
667+ | | | |
668+ +---+ | | +-+
669+ | +--> ----------+ +-------
670+ | |
671+ | | +-+
672+ | +--> ------------+ +-----
673+ | |
674+ | | +-+
675+ | +--> --------------+ +---
676+ | |
677+ | | +-+
678+ | +--> ----------------+ +-
679+ | |
680+ +---+
681+ 3 zu 8 Decoder
682+ @enduml
683+ ```
684+
685+ ## Integrierung der Taktvorgabe in Steuerwerk
686+
687+ ``` text @plantUML.png
688+ @startuml
689+ ditaa
690+ Instruction Register
691+ +---------+------------+
692+ |OPCODE | |
693+ +-+-+-+-+-+------------+
694+ | | | |
695+ V V V V
696+ +-----------------------------------------------------------------+
697+ | 1 aus 16 Dekodierer |
698+ | |
699+ Benutzer +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--+
700+ Eingaben +---+ | | | | | | | | | | | | | | | |
701+ HLT----->| OR|<-----------------+ | | | | | | | | | | | | | | | |
702+ RUN----+ +-+-+ | HLT JMA JMP SRJ CSA RAL INP OUT NOT LDA STA ADD XOR IOR AND NOP
703+ | | | | | | | | | | | | | | | | | | |
704+ V V Status FF | V V V V V V V V V V V V V V V V
705+ +-------+ +---+ +---+ | ++----------------------------------------------------------------+ Steuersignale:
706+ | R | H | | F | | E |<-+ +-+HLT |
707+ +-+-----+ ++--+ +-+-+ | | |
708+ |Run FF | ^ | +----+E' |
709+ | | | +-------->|E |
710+ | | +--------------+F' |
711+ | +--------------->|F |
712+ | | |
713+ | +---+ |cF41 |
714+ | +---+ +---+ | | | |
715+ +-------+ +->| | | Q+-->| +-->|CP1 +---> ALU,
716+ | | | & +-->|T | | | | | Register Kontrolle,
717+ | +-+ +--->| | | | | +-->|CP2 Kombinatorisches Schaltnetz +---> Speicher Kontrolle,
718+ | | | | +---+ |---| | | | | ...
719+ | -+ +- | | Q+-->| +-->|CP3 | ...
720+ | | | | | | | | Flags:
721+ +-------+ | | | +-->|CP4 |<--- Signum, Zero, Overflow, Carry, ...
722+ Oscillator |---| | | | |
723+ | Q+-->| +-->|CP5 |
724+ | | | | | |
725+ 8-Phasen | | | +-->|CP6 |
726+ Taktgeber +---+ | | | |
727+ 3 Bit | +-->|CP7 |
728+ Zähler | | | |
729+ | +-->|CP8 |
730+ | | | |
731+ +---+ +-----------------------------------------------------------------+
732+ 3 zu 8 Decoder
733+ @enduml
734+ ```
735+
736+ ## Kombinatorik für 2 Zyklusbefehle am Beispiel der Arithmetischen Operationen
737+
738+ ![ kombinatorik1] ( ./images/11_Modell_CPU/kombinatorik1.svg )
739+
740+ ![ kombinatorik2] ( ./images/11_Modell_CPU/kombinatorik2.svg )
741+
742+ ![ kombinatorik3] ( ./images/11_Modell_CPU/kombinatorik3.svg )
743+
744+ ![ kombinatorik4] ( ./images/11_Modell_CPU/kombinatorik4.svg )
745+
746+
747+ ## Kontroll Schaltung als Statemachine mit Kombinatorischer Logik
748+
749+ ``` text @plantUML.png
750+ @startuml
751+ ditaa
752+ +----------------------------------+
753+ |c42C +------->
754+ | |
755+ | +-------> Kontroll
756+ | | Signale
757+ | Kombinatorische Logik +------->
758+ | |
759+ | +------->
760+ | |
761+ | +------+
762+ +-+-+-+-+---+----------+-----------+ |
763+ ^ ^ ^ ^ ^ ^Aktueller |
764+ | | | | | | Zustand |
765+ | | | | | +----+-----------+ |
766+ | | | | | |Zustandsspeicher| |
767+ | | | | | |cC42 | |
768+ | | | | | | +--+ +--+ | |
769+ | | | | | | |FF| |FF| ... | |
770+ | | | | | | +--+ +--+ | |
771+ | | | | | +------------+---+ |
772+ | | | | | ^ ^ |
773+ Opcode | | | |
774+ Alu States | | |
775+ | +----------+
776+ | Neuer Zustand
777+ |
778+ Clock
779+ @enduml
780+ ```
781+
782+ ``` text @plantUML.png
783+ @startuml
784+ state "Fetch1\n(memory read)" as Fetch1 : MBR ← M[MAR]
785+ state "Fetch2\n(wait for memory read)" as Fetch2 : (wait)
786+ state "Fetch3\n(increment program counter)" as Fetch3 : PC ← PC+1
787+ state "Fetch4\n(instruction load)" as Fetch4 : IR ← MBR
788+ state "Fetch5,6\n(instruction decoding...)" as Fetch56 : (wait)
789+ state decodefork <<fork>>
790+ state "Hlt\n(Set Halt signal)" as Hlt : RF ← H
791+ state "Wait\n(wait unitl CP8)" as Wait : (wait)
792+ state "Jmp\n(Set Programcounter to Operant)" as Jmp : PC ← IR_11-0
793+ state jmafork <<fork>> : Evaluate A_15
794+ state "Csa\n(load switches state to a)" as Csa : A ← SWR
795+ state "Jsr1\n(Set Programcounter to Operant)" as Jsr1 : A ← PC_11-0
796+ state "Jsr2\n(special Fetch0, load Operant to MBR and program counter)" as Jsr2 : MBR ← IR_11-0\nPC ← IR_11-0
797+ state "Fetch0\n(prepare instruction load)" as Fetch0 : MAR ← PC
798+ state "Other Operations ..." as OTHER : ...
799+ state "Rest\n(reset program counter)" as Reset : PC ← 0x0000
800+
801+ [*] --> Reset
802+ Reset --> Fetch0
803+ Fetch0 --> Fetch1 : CP1
804+ Fetch1 --> Fetch2 : CP2
805+ Fetch2 --> Fetch3 : CP3
806+ Fetch3 --> Fetch4 : CP4
807+ Fetch4 --> Fetch56 : CP5
808+ Fetch56 --> decodefork : CP7
809+ decodefork --> Hlt : op == HLT
810+ decodefork --> Wait : op == NOP
811+ decodefork --> Jmp : op == JMP
812+ decodefork --> jmafork : op == JMA
813+ jmafork --> Jmp : A_15 == 1
814+ jmafork --> Wait : A_15 == 0
815+ decodefork --> Csa : op == CSA
816+ decodefork --> Jsr1 : op == JSR
817+ decodefork --> OTHER : op == RAL,NOT,LDA,STA,ADD,XOR,AND,IOR
818+ Hlt --> Fetch0 : CP8
819+ Jmp --> Fetch0 : CP8
820+ Wait --> Fetch0 : CP8
821+ Csa --> Fetch0 : CP8
822+ Jsr1 --> Jsr2 : CP8
823+ Jsr2 --> Fetch1 : CP1
824+ OTHER --> Fetch0 : CP8 (Execute Phase)
825+ @enduml
826+ ```
827+
828+
829+
830+ ## Kontroll Schaltung als Statemachine mit Mikroprogrammspeicher
831+
832+ ``` text @plantUML.png
833+ @startuml
834+ ditaa
835+ +----------------------------------+
836+ |c8C2 +------->
837+ | |
838+ | +-------> Kontroll
839+ | | Signale
840+ | Mikroprogramm Speicher +------->
841+ | |
842+ | +------->
843+ | |
844+ | +-------+
845+ +-+--------------------------------+ |
846+ ^ ^Aktuelle Microcode |
847+ | |Instruction Adresse|
848+ | +-----------------+-----------+ |
849+ | |Adressspeicher | |
850+ Alu States| | | |
851+ | | +--+ +--+ +--+ | |
852+ | |FF| |FF| |FF| ... | |
853+ | +--+ +--+ +--+ cC42| |
854+ +-----------------------------+ |
855+ ^ ^Folgeadresse |
856+ | | |
857+ | +----------+----------+ |
858+ | | Adress Generierung | |
859+ Clock| |cFF0 | |
860+ | ++-+-+-+------------+-+ |
861+ ^ ^ ^ ^ ^ |
862+ | | | | | |
863+ | | | | | |
864+ Opcodes +-----------+
865+ Folgezustands
866+ Kontrolle
867+ @enduml
868+ ```
869+
870+ Die Folgeadresse ergibt sich aus dem Folgezustand und bem Operation Decode aus dem Opcode.
871+ Die Wörter im Mikroprogram Speicher enthalten Informationen zu den Kontroll Signalen und der Folgezustandkontrolle.
0 commit comments