跳转至内容

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 分配电压,我们可以构建执行这些简单逻辑运算的电子电路。这些电路被称为“逻辑门”或简称为“门”。
  • 如果门在一个更大的电路中排列,所有信号从左到右流动(数学家称之为 无环有向图),那么整个电路没有记忆过去,它的输出纯粹是其当前输入的函数。计算机科学等效的是纯粹的 函数式语言
  • 如果我们构建一个包含循环的更大电路,我们可以在称为 触发器 的电路中存储布尔值,它们将随着时间推移而持久存在。
华夏公益教科书