Skip to content

ASIC recreation of the 8 bit breadboard computer developed in Ben Eater's Youtube series

License

Notifications You must be signed in to change notification settings

jasonkaufmann/tt07-beneater8bit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ASIC Ben Eater 8-Bit Computer

How it works

This is Ben Eater's 8 Bit breadboad computer on an ASIC! (Sadly not as many blinky LEDs, but roughly 10 million times smaller)

Links:

https://eater.net/8bit/

https://www.youtube.com/playlist?list=PLowKtXNTBypGqImE405J2565dvjafglHU

All credit for the design, amazing instructional videos, and diagams below goes to Ben Eater.

overview-with-chip-descriptions1

High level overview

Full Computer Schematic: high_level_diagram

Simple Control Signal Diagram: simple_diagram

*Note: The output register and logic to display the digits is not included on the ASIC. The 8 bit output value is put on the bus and the "output register in" control signal (oi) is on an output pin. This way you can use the data bus as a general purpose interface to any display you want. (i.e. you can read in the data to the RP2040 and show it on the screen, you can build the actual output register as shown in the videos and connect it to the PMOD header, etc.)

ASIC 2D: asic

ASIC 3D: asic_3d

How to test

To program the computer follow these steps:

  • enable my design in TT
  • send prog_mode bit high
  • set the four prog_address bits to the address you want to write to, put the data you want to store at that address on the I/O lines, and then pulse the clock.
  • since this computer only has a 4 bit address space you can only store 16 bytes total in the internal RAM.
  • see https://eater.net/8bit/ for more details.

Instructions

OPC DEC HEX DESCRIPTION
NOP 00 0000
LDA 01 0001 Load contents of memory address aaaa into register A.
ADD 02 0010 Put content of memory address aaaa into register B, add A + B, store result in A.
SUB 03 0011 Put content of memory address aaaa into register B, subtract A - B, store result in register A.
STA 04 0100 Store contents of register A at memory address aaaa.
LDI 05 0101 Load 4 bit immediate value in register A (loads 'vvvv' in A).
JMP 06 0110 Unconditional jump. Set program counter (PC) to aaaa, resume execution from that memory address.
JC 07 0111 Jump if carry. Set PC to aaaa when carry flag is set and resume from there. When carry flag is not set, resume normally.
JZ 08 1000 Jump if zero. As above, but when zero flag is set.
09 1001
10 1010
11 1011
12 1100
13 1101
OUT 14 1110 Output register A to 7 segment LED display as decimal.
HLT 15 1111 Halt execution.

External hardware

You will need the RP2040 or a similar microcontroller to write the program into the internal memory. If you really wanted to, you could go old school and use DIP switches and a manual clock pulse as well.

You will want to make the output register on a breadboard to connect it to the 8 bit I/O lines from the PMOD header. See https://eater.net/8bit/output for detailed design info.

Tiny Tapeout Information

What is Tiny Tapeout?

Tiny Tapeout is an educational project that aims to make it easier and cheaper than ever to get your digital designs manufactured on a real chip.

To learn more and get started, visit https://tinytapeout.com.

Set up your Verilog project

  1. Add your Verilog files to the src folder.
  2. Edit the info.yaml and update information about your project, paying special attention to the source_files and top_module properties. If you are upgrading an existing Tiny Tapeout project, check out our online info.yaml migration tool.
  3. Edit docs/info.md and add a description of your project.
  4. Adapt the testbench to your design. See test/README.md for more information.

The GitHub action will automatically build the ASIC files using OpenLane.

Enable GitHub actions to build the results page

Resources

What next?

About

ASIC recreation of the 8 bit breadboard computer developed in Ben Eater's Youtube series

Resources

License

Stars

Watchers

Forks

Packages

No packages published