MyHDL 和 NEXYS 2 板/数字逻辑基础
外观
人们喜欢谈论计算机(更一般地,所有逻辑电路)用 1 和 0 处理信息。在一些前提下(现在大多数是历史性的),这是真的,但它本身并没有提供太多见解。
在 19 世纪,乔治·布尔 对他称之为“所有推理基础的普遍思维规律”感兴趣。他想要创造数学来探索这个想法,并设计了我们现在称之为布尔代数的东西。和普通代数一样,存在可以取不同值的变量,但它们唯一可以取的值是 TRUE 和 FALSE。如果我们有两个布尔变量 X 和 Y,它们只有四种可能的取值组合。你应该看看下面的表格,并确保你无法想到 X 和 Y 的任何其他取值组合,除了列出的那些。
X | Y |
FALSE | FALSE |
FALSE | TRUE |
TRUE | FALSE |
TRUE | TRUE |
布尔代数定义了对这些变量的一些简单操作。让我们先来看一些简单的操作,AND、OR 和 NOT。
X | Y | X and Y | X or Y | not X | not Y |
FALSE | FALSE | FALSE | FALSE | TRUE | TRUE |
FALSE | TRUE | FALSE | TRUE | TRUE | FALSE |
TRUE | FALSE | FALSE | TRUE | FALSE | TRUE |
TRUE | TRUE | TRUE | TRUE | FALSE | FALSE |
如果你理解这个表格,那么你已经开始完全理解数字逻辑了。还有一些其他基本知识需要了解。
- 还有一些其他的操作,但它们都是 AND、OR 和 NOT 的简单组合。一个有趣的练习是找到一个“最小”的逻辑操作集,它可以普遍定义任何其他的操作。一个小的操作集只包含一个运算符 NAND,它的工作方式如下:NAND(X,Y) = NOT(AND(X,Y))。你可以用 NAND 定义所有逻辑运算。
- 如果我们为 TRUE 和 FALSE 分配电压,我们可以构建执行这些简单逻辑运算的电子电路。这些电路被称为“逻辑门”或简称为“门”。
- 如果门在一个更大的电路中排列,所有信号从左到右流动(数学家称之为 无环有向图),那么整个电路没有记忆过去,它的输出纯粹是其当前输入的函数。计算机科学等效的是纯粹的 函数式语言。
- 如果我们构建一个包含循环的更大电路,我们可以在称为 触发器 的电路中存储布尔值,它们将随着时间推移而持久存在。