PLA2 controls the ALU for incrementing PC,
and during address calculation (for the addressing modes).
It also works as ALU carry input multiplexer during
data calculation (step 3)
For this table, SHR is always 0.
Note: if all ALU control lines are 0, ALU output is $0000.
That's how we set PC to $0000 after a RESET in step 1.
Note:
+ means, no transistor.
O means, transistor (BC847 or BC857) at this location.
!S0-O+++++O+++++++++
S0-+OOOOO++OO++++++
!S1-OOOOOO++++++++++
S1-++++++O+OO++++++
!S2-OOOOOOO+OO++++++
S2-+++++++O++++++++
CMD4-+++++++++O++++++
CMD5-++++++++O+++++++
!CMD11-+++O+O++++++++++
CMD11-++O+O+++++++++++
!CMD12-++++OO++++++++++
CMD12-++OO++++++++++++
C_FLAG-+++++++++O++++++
!RES_F-+OOOOO++++++++++
!TRUE-+O++++++++++++++
TRUE-++OOOO++++++++++
-++++++++++++++++
-++++++++++++++++
||||||||||||||||
++++++++++++++++-PS0
OO+OO++O++++++++-PS1
++OOOOO+++++++++-PS2
OOO++OOO++++++++-PS3
++++++++++++++++-GS0
++++++++++++++++-GS1
++++++++++++++++-GS2
+++OO+++++++++++-GS3
++++++++++++++++-SHR
OO++O++OOO++++++-Cin
ALU control for address calculation and incrementing PC:
S CMD11 CMD12 !RES_FLAG TRUE Cin PS3..0 GS3..1 // ALU 000 x x x x 1 1010 000 // Q = reg+1 001 x x 1 0 1 1010 000 // Q = reg+1 001 1 1 1 1 0 1100 000 // Q = mem 001 0 1 1 1 0 0110 100 // Q = reg+mem 001 1 0 1 1 1 0110 100 // Q = reg+mem+1 001 0 0 1 1 0 1100 000 // Q = mem 010 x x x x 0 1100 000 // Q = mem 1xx x x x x 1 1010 000 // Q = reg+1
ALU carry input multiplexer for data calculation (step 3)
Cin = !S2 & S1 & S0 & CMD4 & C_FLAG Cin |= !S2 & S1 & S0 & CMD5
[HOME] [UP]/ [BACK] [1] [2] [3] [4] [5] [6] [7] [8] [NEXT]
(c) Dieter Mueller 2005