Close
0%
0%

Build an 8-bit computer

Project inspired by 8-bit breadboard computer of WRKits and Ben Eater Youtube's channels (with updates).

Similar projects worth following
This is my experiment inspired by WRKits (Brazilian Portuguese) and Ben Eater (English) Youtube's channels.

DESCRIPTION

This project is inspired by WRKits (Brazilian Portuguese) and Ben Eater (English)  Youtube's channels.


INTRODUCTION

In November/2017, the Engineer Wagner Rambo of WRKits Youtube Channel introduce your project "Build an 8-bit computer" inspired by Ben Eater Youtube Channel when he teach step by step how to build it. All the components is based on TTL, no microcontrollers. In its turn this project is based on SAP (Simple As Possible) Computer of Albert P. Malvino and Jerald A. Brown, both authors of several books about computer architecture.
So, I decide build the same computer, following the lessons of Wagner Rambo and Ben Eater, building step by step each modules. I'm an enthusiastic in building electronic device, and for me this project was my one of the biggest challenge. Understanding and building module by module as System Clock, System Reset, Program Counter (PC), Memory Address Register (MAR) and RAM, ALU (Arithmetic and Logic Unit), Accumulator Register (ACC), B Register, Instruction Register, Output Register and Decimal-Display and Instruction Decoder. This is a very basic computer, that make us understand how the microprocessor work. You can see all modules face to face, observing all of ones working together. It's fantastic for me!
So my challenge was launched. All modules of the 8-bit computer were built in order to gain greater knowledge about microprocessors and digital electronic.

And best of all is being able to share all this with you.


LAST UPDATES

  • RAM 256 bytes 
  • Decoder up to 32 instructions
  • Microcode updated
  • New status register (ZF, CF)
  • Conditional jmp implemented
  • New instructions: JZ, JNZ, JC, JNC (for conditional jump) and CPA, CPI (for comparison instructions)

NEXT STEPS

No more updates but a new version is planned.

DETAILS

Schematic Diagrams (Current Version Updated):

https://github.com/fgillinux/8bit_computer

Schematic Diagrams (1st Version):
https://github.com/wagner-rambo/arquivos/blob/master/8-bit_computer_18_WR_files.rar

Please, see Project Log bellow.

I'll be back with more videos coming soon. Follow me, take you like (if you really liked) and see you next time!

Thank you!

Program 01 Example.pdf

1st Program Example for 8-bit computer

Adobe Portable Document Format - 21.00 kB - 06/10/2018 at 16:24

Preview
Download

Program 02 Simple Arithmetic Sequence.pdf

A simple program that make a simple arithmetic sequence on 8-bit computer

Adobe Portable Document Format - 22.62 kB - 06/10/2018 at 16:24

Preview
Download

Program 03 Fibonacci.pdf

Show the Fibonacci Sequence on display of 8-bit computer

Adobe Portable Document Format - 23.30 kB - 06/10/2018 at 16:24

Preview
Download

  • Updates to this version

    Fábio Gil06/30/2021 at 16:50 0 comments
  • Status #07

    Fábio Gil05/21/2018 at 00:17 0 comments

    Yeah! Now the 8-bit computer is done!  The Instruction Decoder, composed by three EEPROMs AT28C16A, now is decoding all instructions automatically. The reset circuit was completed too.   

    It's fantastic!

    This project was one of my best expericence of my career. But this does not stop here! I'm thinking make some updates in this project, adding more instructions, more RAM and interfacing with other devices, which are on the edge of the project, of course.

    So, see you next time!

    The video bellow show up the 8-bit computer running some programs automatically.

    Note: This video have English subtitle, that you can activate on You-tube Player.

  • Status #06

    Fábio Gil02/26/2018 at 12:07 0 comments

    One more stage has been completed. The Output Register with a set of 7-segment display using an EEPROM as Decoder Display has been implemented on the project. The Reset circuit too. But for while, the reset is working just for resetting of Program Counter (PC) and Memory Address Register (MAR).

    About of EEPROM Decoder display, I'm using the IC 28C16A, with 2 Kbytes for data store. And I'm using four 7-seguiment common cathode multiplexed display. With an IC 555 timer and counters, it was possible make a multiplexing between displays, that all of ones use the same EEPROM's output. Be able to generate the memory content of EEPROM, you can make this using C programming language, making an binary file to write EEPROM (see the lesson #12 of WRKITS Youtube channel). After binary file generation, you can write EEPROM with an MiniPro Universal EEPROM Programmer for example.

    But, if you don't have an Universal EEPROM Programmer, with an Arduino Nano (or another) and with few components you can build an EEPROM Programmer easily (visit github repository of Ben Eater and watch the video "Bulild an Arduino EEPROM Programmer" of Ben Eater Youtube Channel).

    With everything built up here, we can make some programs with this 8-bit computer for testing. The programming of instruction (opcode + operand) should be stored in RAM memory manually. But for while, all interpretation of instructions is done manually. An Instruction Decoder will be implemented further up for this.

    For while the follow instruction set will be implemented on Instruction Decoder circuit, with a set of EEPROM 28C16 too:

    The video bellow show all the process of programming of 8-bit computer step by step.

    Note: This video have English subtitle, that you can activate on You-tube Player.

  • Status #05

    Fábio Gil02/10/2018 at 17:26 0 comments

    And now, the RAM memory of my SAP computer is done. Two 74LS189 IC's 64-bit RAM memory is used in this project. This memory have 16 address of 4 bits wide, so with two IC's we have a memory of 16 address of 8 bits. An circuit of selection has been implement with multiplexers, to make  PROG mode (manual programming) and RUN mode (runtime programming) of RAM memory module. So, with the PROG mode selected, we can input manually the data at specified address of RAM using DIP switch, to program RAM more easily. The Memory Address Register (MAR) is implemented, that transfer the address from the BUS to setting of memory address in RUN mode. With /RAM_OUT control bit we can transfer the 8-bit data of RAM to BUS, and make another operations. This control bit, and others,  will be used with the Control module, that will be constructed further up, when the execution of program stored into RAM will happen.

    The video bellow show all the process of RAM memory step by step.

    Note: This video have English subtitle, that you can activate on You-tube Player.

  • Status #04

    Fábio Gil01/29/2018 at 15:28 0 comments

    Now the ALU is done!  So, the system have a Arithmetic Unit and a Logic Unit, that works in the same place. We can make some operations like ADD (addiction)/SUB (subtraction) Arithmetic operations (in binary), and AND, OR and  XOR/NOT Logic operations (in binary). A circuit of selection has been constructed using Multiplexers, because the result is shown with only one operation at a time in ALU. To select an operation, the ALU have a set of control bits like (/XOR|NOT, /ADD|SUB, ALU_1 and ALU_0). We can follow the table content into figure bellow to understand:

    Note: "X" means "don't care"

    The result of operation can be transferred to BUS to be processed/stored by another modules, using the ALU_OUT control bit. The ALU use ACC and B registers (see the first videos about this registers) for input parameters, except in NOT operation that only ACC register is used. For while, all operations can be performed manually. Some problems start appear on the system in this moment,  mainly the power distribution, that is normal because of system growing up. The total current of system can reach over than 500mA now. Because of this my power supply has been replaced.

    The video bellow show all the process of ALU step by step.

    Note: This video have English subtitle, that you can activate on You-tube Player.

  • Status #03

    Fábio Gil12/30/2017 at 23:01 0 comments

    I started the implementation of ALU (Arithmetic Logic Unit) of my project. For while, just the Arithmetic Unit is working. Here two 4-bit full adders chip (74LS283) are used for sum operation, and  8 XOR Gates (two 74LS86 chip) for Two's Complement circuit for subtraction operation. Next, the Logic Unit will be implemented, and a circuit of selection using Multiplexers further up.

  • Status #02

    Fábio Gil12/18/2017 at 09:52 0 comments

    Now the Instruction Register (IR) block is implemented. This register transfer the nibbles separately. The 4-bit LSB nibble is transfered on the BUS, and 4-bit  MSB nibble on the Control Block further up. This is a differential feature in relation to another registers that can transfer an entire byte on the BUS.

  • Status #01

    Fábio Gil12/18/2017 at 09:32 0 comments

    On last weekend: Just the Clock, Program Counter and some registers including ACC and B already implemented.

    On the video bellow you can see the data transfer operation between registers ACC and B across the BUS happening manually for while. So, there is an "BUS Simulator" implemented for this (see half-size breadboard). (This video is in the Brazilian Portuguese language, but there is an English subtitle that you can activate on YouTube player).

View all 8 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates