So I guess the most basic would be a calculator - addition, multiplication, subtraction, division.
Then do more complicated maths functions; square root, powers. Even increase the number lengths.
And that is a Coprocessor - which can be placed outside of my CPU.
Then I'd perhaps want a bios ROM, to start all systems up, perhaps make some alterations (load sequence of solid state memory).
A chunk of RAM off the CPU
BUS between CPU and external components (RAM, coprocessor etc)
Solid state memory (SD card)
Floating point calculator in the CPU
Obviously some Internal RAM Cache for each part of the CPU
Control Unit (CU) directs the operation of the other units by providing timing and control signals. Most computer resources are managed by the CU. It directs the flow of data between the CPU and the other devices.
Status Register, Flag Register, or Condition Code Register
Hardware register that contains information about the state of the processor. Individual bits are implicitly or explicitly read and/or written by the machine code instructions executing on the processor. The status register lets an instruction take action contingent on the outcome of a previous instruction.
Arithmetic Logic Unit (ALU)
A small coprocessor in the CPU for very basic tasks.
Not too concerned about display, input, or anyother input/outputs - that could all come later, slowly.
Primarily concerned with what parts I'd require for the main CPU, and some other very basic features such as BUS between CPU, coprocessor, RAM, and solid state memory. Not worried about multi cores either.
Have I missed anything?
Hi there,
Are you saying that you want to build the CPU out of discrete components like gates and binary counters and perhaps a ROM and static RAM?
I come from a time when we actually had to do this. There were CPU's just coming onto the market but we built our own in house version. It did not have to be too super sophisticated but had to go through a bunch of routines on the fly like most CPU's do.
Since then though i've dealt with the 8080 for example and the Z80 which allowed more functionality with less ground work.
The basics of the simplest computer are:
1. Clock.
2. Address Counter.
3. Memory, RAM, ROM.
4. Instruction decoder.
5. I/O port decoding (may include an upload port).
6. ALU which does all the computing.
The clock obviously clocks the address counter.
The ROM comes first in the address range, so say from 0x0000 to 0x8000.
The RAM comes next, so say from 0x8001 to 0xFFFF.
Some of that range in this simple example would be reserved for the I/O port decoder, which would decode part of the address range for use for input and output to the CPU.
As each clock addresses ROM the instruction is decoded and the action is performed based on how the instruction decoder is designed. For example a memory word of 0x01 may mean to take the data input bus input and send it to the ALU as the first argument in a calculation. After some more input we may see a 0x0F 0x0001 which could mean perform an addition and put the result into RAM address 0x0001. We may see an instruction like 0x10 0x04 which might mean put the result on the data bus for transfer to the outside world through port 4.
The first instruction set in ROM could be just to upload code from a host terminal. That would allow sending code from say your PC to your new CPU board which would then load it into RAM for later execution.
You can also include a calculator chip that does all the math calculations. Just have instructions that send data to the chip and can get the result back into memory or to an output port.
So there are a lot of variables here but the basics are not too complicated. In our in house design back then there was a calculator chip available so we used that. It was a little slow though but that was the state of things back then.