Instruction decoder#
The instruction decoder is reponsible for mapping a machine instruction together
with the t-state counter to the control lines. The instruction decoder in the
SAM-SMD uses two SST39SF010
EEPROMS for this mapping. One of the EEPROMS
directs 8 parallel control lines, which are lines that can be pulled high or low
in any particular combination. The second EEPROM is tied to four 74HC238
which control 2 x 15 orthogonal control lines. Orthogonal control lines are such
that only one of the 15 lines can be activated at one time. This limitation
comes with the benefit that a single chip can control far more control lines,
here 30 instead of 8. Note that the 2 x 15 orthogonal control lines form two
sets, i.e. any control line in one set can be activated together with any
other control line in the other set. The only limitation is thus that within
a set, no two control lines can be activated simultaneously.
Mapping#
Note
In the tables below, we use the following abbreviations: * ALU: Arithmetic and Logic Unit * IR: Instrucion Register * MAR: Memory Address Register * PC: Program Counter
Control line |
Micro-instruction |
Description |
---|---|---|
|
|
PC count enable |
|
|
ALU flag register in |
|
|
ALU subtract operation |
|
|
Unused |
|
|
Unused |
|
|
Unused |
|
|
Halts the clock line |
|
|
Used internally to reset T-state counter |
Control line |
Micro-instruction |
Description |
---|---|---|
|
|
MAR in: Retrieves memory address from data bus |
|
|
IR in: Retrieves instruction from data bus |
|
|
PC jump: Retrieves address from data bus |
|
|
A-register in: Stores value from data bus |
|
|
B-register in: Stores value from data bus |
|
|
Output register in: Retrieves value from data bus |
|
|
RAM in: Stores value from data bus in memory |
|
|
T-register in: Stores value from data bus |
|
|
Unused |
|
|
Unused |
|
|
Unused |
|
|
Unused |
|
|
Unused |
|
|
Unused |
|
|
Unused |
Control line |
Micro-instruction |
Description |
---|---|---|
|
|
PC counter out: Asserts current PC value on data bus |
|
|
ROM out: Asserts ROM value onto data bus |
|
|
A-register out: Asserts register value onto data bus |
|
|
B-register out: Asserts register value onto data bus |
|
|
ALU sum out: Asserts result of summation onto data bus |
|
|
RAM out: Asserts RAM value onto data bus |
|
|
T-register: Asserts register value onto data bus |
|
CODE008 |
Description for control line 8. |
|
CODE009 |
Description for control line 9. |
|
CODE010 |
Description for control line 10. |
|
CODE011 |
Description for control line 11. |
|
CODE012 |
Description for control line 12. |
|
CODE013 |
Description for control line 13. |
|
CODE014 |
Description for control line 14. |
|
CODE015 |
Description for control line 15. |