8bit computer status so far

8bit computer status so far

Okay, I’d like to give you guys an overview of the status of the 8bit computer build. (Also see video at the bottom of this post).

The Memory modules

First of, here’s the clock and the memory. I already described the clock module, the memory consists of three modules:

  1. the Memory Address Register (MA)
  2. the Memory (MEM) itself (256 bytes)
  3. the Memory Input (MI) module
The MA module

On the MA module, I built a switch to choose between Run / Programming mode. This also influences the MI module, so we can – in programming mode – set the address and input data into that memory location..

Clock and Memory modules

The MA module gives us control signals:

  • MAI; open up for the bus and accept the address that’s on the bus into the MA register
  • MAO: set the value out of the MA register on the bus
  • MAC: Clear the MA register
The MEM module

The MEM module is of my own design, built on the basis of two AM9109 memory chips. In total, it holds 256 8bit bytes. It features two control signals:

  • MI; open the memory (at the address pointed to by the MAr) up for the bus and accept the data that’s on the bus into that memory address
  • MO; set the data form memory (pointed to by the MAr) on the bus

 

The Memory Input (MI) module

This module controls the input to memory. Based on the RUN / PROG mode switch mentioned earlier, memory input will come from the bus at the next clock cycle on the MI signal or from the onboard DIP switches after a press on the INPUT button.

 

The Instruction Register module

The IR modules holds the instruction that is to be executed. From here it will be used in the (future) Control Unit.

The IR register

The IR module takes three control signals:

  • IRI; open up for the bus and accept the data that’s on the bus into the IR register
  • IRO: set the value out of the IR register on the bus
  • IRC: Clear the IR register

Program Counter and ALU

Next are the Program Counter (PC), and the Arithmetic Logic Unit (ALU) together with two registers, the A register and the B register. Let’s have a look at a picture first.

 

PC, A and B registers and the ALU

Program Counter

The PC will control the flow of our program by incrementing the address and putting it on the bus in a controlled fashion to fetch the next instruction. It accepts the following control signals:

  • CE; Count Enable; the PC is incremented at the next clock cycle
  • CO; Counter Out; the value of the PC is put on the bus
  • CI; Counter In; get the value of the PC from the bus, to facilitate jumps

 

A and B registers

The A and B registers are connected to the ALU, always. They hold the data that is to be computed with. They take the following control signals:

  • AI / BI; open up for the bus and accept the data that’s on the bus into the A or B register
  • AO / BO: set the value out of the A or B register on the bus
  • AC / BC: Clear the A or B register

 

The Arithmetic and Logic Unit (ALU)

The ALU is where the work happens, the current one does adding and subtracting and a future ALU will also do shift and other logic operations. The current ALU accepts control signals:

  • EO; (Sigma Out) get the result of the calculation and put it out on the bus
  • SB; do subtraction instead of adding

 

The OUT register

This register holds the value that is to be displayed using some OUT instruction (yet to be developed).

The OUT register

OUT accepts three control signals:

  • OI; open up for the bus and accept the data that’s on the bus into the OUT register
  • OO: set the value out of the OUT register on the bus
  • OC: Clear the OUT register

 

The new ALU

New ALU, I hear you say? And this one isn’t even finished yet… That’s right. A guy can dream, right?

This new ALU is built around the 74LS181 chip, that can do 4 bit arithmetic and logic operations. Combining two of them gives us an 8 bit wide ALU. More on this module later, but here’s a sneak peek:

My new ALU

 

See it at work

Here’s a little video I shot while the PC was counting and all the registers took the value of the PC in.