The Elements of Computing Systems, My Workbook for the NAND to Tetris course.
Go to file
Nemo 90526cc036 Fixes RAM16K. I was using too many registers and the addressing was
wrong
2020-05-28 15:04:07 +05:30
projects Fixes RAM16K. I was using too many registers and the addressing was 2020-05-28 15:04:07 +05:30
.gitignore Initial Commit 💥 2020-05-19 17:32:15 +05:30
NOTES.md [03] RAM4K + RAM512 2020-05-20 19:31:35 +05:30
README.md Fixes RAM16K. I was using too many registers and the addressing was 2020-05-28 15:04:07 +05:30

README.md

nand2tetris

Working my way through the Nand to Tetris Course

  • Download the latest nand2tetris.zip from the book website, and overwrite everything in the projects and tools directory.
  • Remember to run chmod +X tools/*.sh if you're on *nix.

Project 1: Boolean Logic

Build order as per the website. Cost for each gate in NAND in brackets.

  • Nand (primitive)
  • Not (1)
  • Or (3)
  • Xor (6, Can be improved)
  • And (2)
  • Mux (8, Took me ages. Can be improved)
  • DMux (5, Super Fun)
  • Not16 (16)
  • And16 (32)
  • Or16 (48)
  • Mux16 (113)
  • Or8Way (21)
  • Mux4Way16 (339)
  • Mux8Way16 (791)
  • DMux4Way (37, Fun)
  • DMux8Way (101)

Project 2: Boolean Arithmetic

CHIPs/Gates used in brackets

  • HalfAdder (Xor+And)
  • FullAdder (2 HalfAdder, 1 Or)
  • Add16 (1 HalfAdder, 15 FullAdder)
  • Inc16 (1 Add16)
  • ALU (6 Mux16, 3 Not16, 1 Add16, 1 And16, 2 Or8Way, 2 Or, 1 Not)

Project 3: Memory

Make sure you read through the Hardware Simulator Tutorial to understand the clock in the simulator.

  • DFF (primitive)
  • Bit (1 Mux, 1DFF)
  • Register (16 Bits)
  • RAM8 (8 Registers, 1 DMux8Way, 1 Mux8Way16) = 8 registers
  • RAM64 (8 RAM8, 1 DMux8Way, 1 Mux8Way16) = 64 registers
  • RAM512 (8 RAM64, 1 DMux8Way, 1 Mux8Way16) = 512 registers
  • RAM4K (8 RAM512, 1 DMux8Way, 1 Mux8Way16) = 4096 registers
  • RAM16K (4 RAM4K, 1 DMux4Way, 1 Mux4Way16) = 16384 registers
  • PC (1 Register, 1 Inc16, 1 Or8Way, 1 Mux8Way16)

Project 3: Machine Language Programming

Counting number of instructions by wc -l file.hack

  • Mult (18)
  • Fill