BC, DE, HL register pairs, IR, output register, SC, LCD, parts of instruction decoder
BC, DE, HL registers
These registers can act together as a single 16bit register, outputting to the address bus, or also act like regular 8bit registers, outputting to the data bus. The HL register is special as it handles more indexing things. It has functionality to act as both regular 8bit registers and 16 bit register pair with increment and decrement functionality.
IR - instruction register
The IR stores opcodes from the RAM, and then passes it to the instruction decoder to get the microcode for the particular instruction/opcode. It is a simple 8 bit register using the 74LS573, without output to the bus.
Output Register
The output register consists of 4 * 7 segment displays. In Ben Eater’s original design, he uses eeproms to replace the logic for decoding. But in this case, I’ve elected to go with the ATMEGA328 microcontroller instead purely to save on board space.
SC - Step Counter
The SC handles the T-states/steps/micro instructions required to run a single instruction. Currently it uses a single 74LS161, which can handle up to 16 T-states. A reset control word is also implemented. The output of the SC goes to the control EEPROMs so that the computer knows what to do.
LCD
Using the typical 16x02 LCD, the LCD has an 74LS573 to buffer the data and the 2 control pins (enable and RS) are handled by the address decoder. 0xA00x enables the LCD using the 74LS138 decoder, and the 0xA001 sets the RS.
Instruction Decoder
I’ve decided to go with 4 W27C512 for the control EEPROMs, since it has 16bits address which is enough for 8bit opcode, 4bit step, 4 bit flag.