Catalogue
Project 1 Goal (Unit 1.8)
Given a NAND, build all the gates.
课上给了Project 1的其中几个chips的讲解。讲了Mux, DMux, And16 和 Mux4Way16。
Project 1 Overview
Multiplexor (多路器) or Mux
1 | IN a, b, sel // "sel" means "selection bit". |
Tip: You can build with AND, OR, NOT gates.
Example: AndMuxOr
1 | IN a, b, sel |
Tip: 这个可以很容易用Mux
做出来。
Demultiplexor(分路器) or DeMux
It is like the “inverse” of Mux.
1 | IN in, sel |
Note: 以上两个都在communication networks中经常使用。比如Mux和DMux之间就可能是一个海底光缆的单线信息流,两头分别进行汇总和分流。如下图:
这里的sel
就是oscillator(振荡器)。
这样做可以减少昂贵的物理传输费用,还可以做到encoding和decoding异步进行。
And16
Tip: 16个bit是无顺序可言的,就像同时放出来的一样。
Mux4Way16
1 | IN a[16], b[16], c[16], d[16], sel[2]; |
Some tips for this assignment
尽量按顺序完成,这样后面的就可以用到前面写好的helper chips。
不按顺序也可以,但是当用到一个没写好的chip比如
chip AND {}
,可以把文件名临时改成And.hdl233
。这样系统会自动调用内建的chip。chip不能调用自己。
记得看HDL Survival Guide 和各种资源!
VSCode 居然有Nand2Tetris的专门编辑.hdl文件的插件。
Some tips when doing it
- 变量名不要用下划线!(别问我怎么知道的……)