This is my take on an “eXtremely Simple Computer design.
The design will start out in what I consider to be the most “minimalistic” designs possible.
As the project continues, it will evolve into a more complete implementation, while still maintaining the “simple” design mantra.
Every computer design has a few basic building blocks. They are…
Control Sequencer / State Machine
This steps the computer through its sequences for each instruction to be executed. This is commonly referred to as a “state machine sequencer”.
This is the block that supplies the Memory Address for fetching the next Instruction. After each instruction fetch, the Program Counter will increment to the next address. Sometimes, the instruction fetched will modify the Program Counter directly by loading a new value into the Program Counter. This is commonly referred to as a Jump Instruction and may take a number of forms.
ALU - Arithmetic Logic Unit
All computers have an ALU. This is where an instruction will modify Data according to the Instruction Type. Simple Arithmetic Operations such as ADD and SUBTRACT, and Logical Operations such as AND, OR and XOR will be performed on Data supplied to the ALU according to the Instruction Type being executed.
Memory - ROM and/or RAM
This is the computers’ local memory storage. ROM contains fixed Read-Only-Memory and RAM contains read/write Random-Access-Memory. ROM can be though of as the hardware Bootstrap or BIOS Program, and RAM will be loaded with the User Program(s), and possibly the Operating System program(s) too.
Input & Output
Every computer must communicate with the outside world. This is done by Inputing (reading) and/or Outputting (writing) Information/Data.