Nand2Tetris PartⅠ笔记

目录:

  • Boolean Logic 布尔逻辑
  • Boolean Functions Synthesis 布尔函数合成
  • Logic Gates 逻辑门
  • Hardware Description Language硬件描述语言
  • Hardware Simulation 硬件模拟
  • Multi-Bit Buses 多位总线
  • Project 1 (Q&A) 项目Ⅰ

Boolean Logic 布尔逻辑

首先基础的介绍一些布尔逻辑里面的计算/语法

1.(x AND y)

x y AND
0 0 0
0 1 0
1 0 0
1 1 1

2.(x OR y)

x y OR
0 0 0
0 1 1
1 0 1
1 1 1

3. NOT(x)

x NOT
0 1
1 0

我想这些都很容易理解 其中的0/1也可以是/否或者正/负。 这具体怎么规定没有所谓 反正象征着有且仅有的两种独立的状态。
其中AND/OR/NOT都为输出结果 左侧为输入的状态。由此我们掌握了最简单的Boolean Logic的基本算式 随之我们也发现这些语法和数学计算的相似之处。

计算部分讲解

优先计算:

  • e.g. NOT(0 OR (1 AND 1))=NOT(0 OR 1)=NOT(1)=0
    贝尔逻辑也是根据括号里面来确定优先级
    真值表与布尔函数对应:
  • 我们设一个Boolean Function为
    f(x,y,z)=(x AND y) OR (Not(x) AND z)
    然后我们就能通过枚举不同情况得到一个表格 就像上方的AND/OR/NOT语法一样:
x y z f
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 1
  • 在Boolean Logic的概念里 这个表格和上面的f(x,y,z)所传达出来的信息是完全一样的 这两者本身是等价的。

Commutative Laws 交换律

  • (x AND y)=(y AND x)
    (x OR y)=(y OR x)

Associative Laws 结合律

  • (x AND (y AND z))=((x AND y) AND z)
    (x OR (y OR z))=((x OR y) OR z)

Descriptive Laws 分配律

  • (x AND (y OR z))=(x AND y) OR (x AND z)
    (x OR (y AND z))=(x OR y) AND (x OR z)

De Morgan Laws
这个定律有别于上面可以类比数学的定律 它是由于Boolean Logic本身的性质而产生的

  • NOT (x AND y)=NOT(x) OR NOT(y)
    NOT (x OR y)=NOT(x) AND NOT(y)

掌握了这四条公式 我们就可以对几乎所有的复合Boolean Function来进行简化/变形 下面是一个例子:

NOT(NOT(x) AND NOT(x OR y))

=NOT(NOT(x) AND (NOT(x) AND NOT(y)))

=NOT((NOT(x) AND NOT(x)) AND NOT(y))

=NOT(NOT(x) AND NOT(y))

=NOT(NOT(x)) OR NOT(NOT(y))

=x OR y

或者呢 运用上面的表格与函数对应知识。当输入00/01/10/11所有的四种组合后 看对应的数值表我们也能得出这个式子到底化简后代表什么 这在逻辑处理上很有意义 可以绕开不必要的梳理。

Boolean Functions Synthesis 布尔函数合成