Skip to content

This project is aimed at creating a 16 bit computer from the ground up starting with only NAND gates in a virtual environment(HDL).

License

Notifications You must be signed in to change notification settings

AndyPro720/The-16-Bit-PC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The-16-Bit-PC

This project is aimed at creating a 16 bit computer from the ground up starting with only NAND gates in a virtual environment(HDL).

My notes(blog) for the course

Details

Alt text

The project is part of a course developed by Noam Nisan and Shimon Schocken, named NandtoTetris. Link: https://www.nand2tetris.org/

This part(first) of the course focuses on the creation of the hardware components and abstracting a software layer towards the near end.(Machine and Assembly Language)


Here’s a brief summary on what all we cover throughout:

  • Create gates ranging from AND to Or8Way, Mux16 and Dmux8Way in HDL.

  • Create a fully functioning ALU with 18 distinct computable functions over two 16 bit inputs.

  • Created a series of RAM chips from 8 to 16K memory. Work on creating a addressing mechanism to select a specific register.

  • Create a machine language with support for two distinct 16 bit instructions that allow for addressing memory or performing computation, storage and a jump to instruction by manipulation of the 16 bits sectionally.

  • Create an addressing mechanism(device driver) for a 256*512p monochrome display. Worked on a mechanism and character set (EASCII) for the keyboard.

  • For the assembly language, worked on realizing key concepts such an branching, variable creation, iteration, pointers and addressing mechanisms.

  • Construct a fully functioning schematic ground up for the computer with all components and buses linked.

  • Implement a basic memory controller to select the respective memory device(among the three) when specific register is addressed.

  • Programmed a two-pass assembler that is capable of storing variables, keywords, identifiers and program instruction references. Deals with whitespace and comments and converts the worded assembly to 16 bit binary instructions.

  • Here's a link to the slightly deatiled summary on what to expect

About

This project is aimed at creating a 16 bit computer from the ground up starting with only NAND gates in a virtual environment(HDL).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published