Introduction: 8BIT COMPUTER
To simulate this, you need a software called as LOGISIM, its a very light weight(6MB) digital simulator, ill be taking you through every step and tips you need to follow to get an end result and on the way we'll learn how computers are made, by making a brand new custom Assembly language of our own!!!.
This design is based on Von Neumann architecture, where same memory is used for both instruction data and program data, and same BUS is utilized for both data transfer and address transfer.
Step 1: Lets Get Started With Making Modules.
A 8bit computer a whole is a complicated to understand and to make, so lets divide it into different modules
among all most common modules are registers, which are essentially building blocks of digital circuits.
LOGISIM is very user friendly, it already has most of the below mentioned modules in its builtin library.
the modules are:
2. General purpose registers
5. Memory Address Register (MAR)
6. Instruction Register (IR)
8. Display and display register
9. Control Logic
10. Control logic controller
Challenge is making these modules to interface with each other using a common BUS at particular pre-decided time slots, then a set of instructions can be performed, like arithmatic, logical.
Step 2: ALU(Arithmatic and Logical Unit)
First we need to make a custom library called ALU so we can add it in our main circuit(complete computer with all modules).
To creat a library, just start off with a normal schmatics shown in this step using builtin adder, subtractor, multiplier, divider, and MUX. save it! and that all!!!
so when ever u need to ALU all you have to do is goto project>load library>logisim library locate your ALU.circ file. once done with the schematic, click the icon on the top left corner to make the symbol for the ALU schematic.
you need to follow these steps for all the modules you make so that at the end we can utilize them with ease.
ALU is the heart of all the processors, as the name suggest it does all the arithmatic and logical operations.
our ALU can do addition, subtraction, multiplication, division (can be upgraded to do logical operations).
The operation mode is decided by the 4bit select value as follows,
0101 for addidtion
0110 for subtraction
0111 for multiplication
1000 for division
the modules used inside ALU are already available in LOGISIM builtin library.
Note: The result is not stored in the ALU, so we need an external register
Step 3: General Purpose Registers(Reg A, B, C, D, Display Reg)
Registers are basically n number of flipflops to store a byte or a higher datatype.
so make a register by arranging 8 D-flipflops as shown, and also make a symbol for it.
Reg A and Reg B are directly connected to ALU as two operands, but Reg C, D and display Register are seperate.
Step 4: RAM
Our RAM is relatively small, but it plays a very vital role since it stores the Program data and Instruction data, since it's of only 16 Bytes, we have to store instruction data(code) at the beginning and program data(variables) in the rest bytes.
LOGISIM has a built-in block for RAM, so just include it.
RAM holds the data, addresses required to run the custom assembly program.
Step 5: Instruction Register and Memory Address Register
Basically, these registers act as buffers, holding the previous addresses and data in them, and Outputs when ever required for the RAM.
Step 6: Clock Prescalar
This module was necessary, this divides the clock speed with the Prescaler, resulting in lower clock speeds.
Step 7: Control Logic, ROM
And the most critical part, the Control Logic, and ROM, ROM here is basically a replacement for the hard-wired logic of control logic.
And the module next to it is a custom-built driver for the ROM only for this architecture.
Step 8: Display
This is where the output is gonna be displayed, and the result can also be stored in-display register.
Get the necessary files from HERE.