Nand2Tetris Notes

来自iCenter Wiki
跳转至: 导航搜索

This is the location where I leave notes for what I learned from the Nand2Tetris Course

Chapter 1

One should familiar themselves with the simulation tool, Logisim. All HDL should have a matching diagram drawn and simulated in Logisim. Other than the basic logic gates, you will learn about a type of circuitry, called Multiplexers and De-Multiplexers. They are the switchers, or the conditional statement controlling mechanisms of a digital circuit.

Chapter 2

This is the Chapter that one build the ALU, this is mainly made of the Adders, the Multiplexers, and the logic gates.

Chapter 3

This is the Chapter that one build the CPU with Register and Random Access Memory (RAM)chips. They are the space-time kernel of a computing system, the soul of computation, and any physical even spiritual processes. In terms of home work assignments, the most tricky one is the Program Counter, a.k.a. PC. PC needs to be implemented using a Register. One must pay attention to the idea that PC's specification always requires the output to reflect the changes at the Next Time Step, denoted Time=t+1.

Chapter 4

This is when one should learn about Assembly Language of the Hack Computer. There are only two instructions: A, and C. Knowing that A-instruction simply sets the location of memory for future computational tasks, C-instruction is a 16-bit code that controls 6 c-bits, 3 d-bits, and 3 j-bits that defines the type of computation to be done. An input device, called KBD, which stands for Keyboard. An output device, SCREEN, which is used to display binary dots in matrix form is also included.


learning note

First of all, this is a chapter that you must take it SLOWLY. It contains many trivial but crucial techniques in parsing assembly code. Make sure you stop at 7'32" of Unit 4.6 Hack Programming Part 1, and try out all the four examples in Hack Assembly language using the CPUEmulator. It will help you better understand the syntax and operational effects of the Hack language much better.

Keywords

Notice these key concepts:

  1. work with registers and memory
  2. branching using various kinds of jumps, JMP, JGT, ...
  3. customer defined variables
  4. pointers
  5. Input and output devices
  6. trace table
  7. iteration by looping and branching mechanisms
  8. pseudo code