Hi hmn, and welcome to the forum.
Drass already did a good description of how it works,
so I'm adding some ASCII art:
Code:
| machine | machine |
| cycle n | cycle n+1 |
------- ------
PHI2 | | | | |
------ ------ ------
Microcode... ------------- ------------- --
ROM / \ X
output --- ............. ------------- --
----- ------------ ---------
/CLR | | | |
- -
register ............. ------ .........
write | |
signal ------------- ---------
|register| ^
|read | |
register write cycle n
One machine cycle is one PHI2 period.
(Drawing is not to scale.)
A register is read when PHI2 is low, then the "function blocks" in the CPU data path (ALU) "do something",
and at the end of the cycle (the falling edge of PHI2) the result is written into a register.
Registers are something like 74574 latches, with the CLK input fed by one of the "register write signals".
So the rising edge of a register write signal makes the register load the data.
The problem is to generate a nice register write signal, because the microcode ROMs need some time
to have their output stable etc.
Our trick was to load the "register write related outputs" from the microcode ROMs into 74273 latches
triggered by the falling edge of PHI2 (the start of the next machine cycle).
The 74273 latches then generate nice register write signals with a rising edge at the falling edge of PHI2...
of course, this causes another problem: if we would try to write one register in two successive machine cycles,
a register write signal generated this way would stay high for two cycles.
To be able to do successive writes to the same register, we need to clear the 74273 microcode latch with /CLR
at the rising edge of PHI2, in the middle of the machine cycle.
So the register write signal only is high for half a machine cycle.
/CLR is generated by a monoflop (built from some logic gates) at the rising edge of PHI2.
What had confused you was an old revision of the hardware that was implemented a bit different,
we discarded it because it probably wouldn't have worked in a reliable way.
Of course, I'm simplifying things a little bit here... but that's the basic concept.
I hope, my description was helpful so far.