Skip to content

Commit acd5201

Browse files
committed
Merge branch 'master' of github.com:TUBAF-IfI-LiaScript/VL_EingebetteteSysteme
2 parents b47cb7b + bf3de16 commit acd5201

6 files changed

Lines changed: 1004 additions & 1 deletion

File tree

11_Modell_CPU.md

Lines changed: 226 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ Datenformat:
188188
```text @plantUML.png
189189
@startuml
190190
ditaa
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.
13.6 KB
Binary file not shown.

0 commit comments

Comments
 (0)