PREVIEW
AND 逻辑门的 3D 可视化,内部电路发出光芒。

AND 门是数字逻辑的基本构建模块,只有当所有输入都为 'ON' 时,输出才会 'ON'。

数字逻辑 101:从 AND、OR、NOT 门入门

AND、OR 和 NOT 是三个最基础的逻辑门。本入门教程将在浏览器中从零开始构建每一个,并把它们组合成一个 NAND 门。

TL;DR: AND、OR 和 NOT 是三个最基础的逻辑门。AND 仅在所有输入都为 1 时输出 1;OR 在任一输入为 1 时输出 1;NOT 把单一输入取反。把它们组合起来就能得到 NAND——一种通用门,所有其他数字电路都可以由它构建。

学习数字逻辑最快的方法就是动手搭电路。看真值表当然有用,但拨动开关、观察输出变化才是直觉形成的地方。本教程将带你在 digisim.io 上一步步构建三个最基础的逻辑门——NOT、AND 和 OR。每个章节结束时,你都会拥有一个亲手搭出来的可工作电路。

无需任何先决知识,也不必安装任何软件。打开浏览器访问 digisim.io,跟着做即可。

开始之前:开关到灯泡的最简电路

每个数字电路都有输入和输出。在 digisim.io 中,基础输入是 INPUT_SWITCH(点击在 0 和 1 之间切换),基础输出是 OUTPUT_LIGHT(收到 1 时亮起)。在接触任何门之前,先搭一个最简单的电路熟悉一下界面。

基础开关与灯泡演示

搭建步骤:

  1. 打开 digisim.io/circuits/new
  2. 从元件面板拖一个 Input Switch 到画布上。
  3. 在它右边再拖一个 Output Light
  4. 点击开关上的输出节点(小圆点)并拖到灯泡的输入节点上,会出现一根连线。
  5. 点击开关切换状态。灯泡随之响应:开关为 1 时亮,为 0 时灭。

这印证了一个最基本的概念:数字信号通过导线从源端流向目的端。从这里开始构建的每个电路,都是在源端和目的端之间加入逻辑。

尝试二进制基础电路


1. 搭建 NOT 门电路(反相器)

NOT 门接收单一输入并将其翻转。输入 1 输出 0,输入 0 输出 1。它是最简单的门,先从它入手能让你对接线流程更有把握。

NOT 门元件示意图

一步步搭建

  1. 放置输入。 把一个 Input Switch 拖到画布左侧。
  2. 放置门。 从 Logic Gates 区拖一个 NOT Gate,放在开关右边。
  3. 放置输出。 在 NOT 门右边放一个 Output Light
  4. 连线:输入到门。 点击开关的输出节点,拖到 NOT 门的输入节点。
  5. 连线:门到输出。 点击 NOT 门的输出节点,拖到灯泡的输入节点。
  6. 测试每种输入组合。 总共只有两种:
输入 (A)期望输出 (Y)你应该看到
01开关 OFF,灯亮
10开关 ON,灯灭

布尔表达式:

Y=AY = \overline{A}

你学到了什么

  • NOT 门有且仅有一个输入和一个输出。
  • 它始终输出与输入相反的值。
  • 门符号上的小圆圈(气泡)表示”取反”。后面在 NAND 和 NOR 门上你会再次见到这个气泡。

实际应用:低有效复位线

在微控制器和处理器中,复位引脚通常是”低电平有效”的——也就是说,引脚被拉到 0 时芯片才复位。NOT 门可以让设计者把”按下按钮 = 1”的信号转换为芯片所期待的低有效信号。这种用法几乎出现在每一个嵌入式系统里。

把玩一下 NOT 门


2. 搭建 AND 门电路(把关者)

AND 门只有在所有输入都为 1 时才输出 1。两输入情况下共有四种组合,只有一种会让输出为 1。这使得 AND 门天然适合”多个条件必须同时满足”的场景。

AND 门元件示意图

一步步搭建

  1. 在画布左侧上下放两个 Input Switch。这就是输入 A 和 B。
  2. 在右侧、两个开关之间居中放一个 AND Gate
  3. 在 AND 门右侧放一个 Output Light
  4. 连线:开关 A 接到 AND 门的上输入。
  5. 连线:开关 B 接到 AND 门的下输入。
  6. 连线:AND 门输出 接到灯泡。
  7. 系统地测试全部四种组合。 按真值表逐行验证:
输入 A输入 B期望输出 (Y)你应该看到
000两个都 OFF,灯灭
010仅 B ON,灯灭
100仅 A ON,灯灭
111两个都 ON,灯亮

布尔表达式:

Y=ABY = A \cdot B

AND 运算行为类似乘法:输入中只要有一个 0,输出就被强制为 0。

你学到了什么

  • AND 门要求一致同意。每个输入都必须为 1,输出才为 1。
  • 对于 nn 个输入,AND 门有 2n2^n 种输入组合,但只有一种会让输出为 1。
  • 系统地(而非随机地)测试所有组合,正是工程师验证正确性的方式。

常见陷阱:悬空输入

如果 AND 门有输入未连接,它就是悬空输入。在物理电路中,悬空输入会拾取电磁噪声,行为不可预测。在 digisim.io 中,模拟器对此有优雅的处理,但”每个引脚都连上”的好习惯在你转向真实硬件时至关重要。如果需要一个固定输入值,请使用置 0 或 1 的 CONSTANT 元件。

实际应用:双钥匙安全系统

AND 门天然刻画了任何”需要同时授权”的系统:需要两把钥匙同时转动的银行金库、需要两位军官共同操作的核武器发射系统、同时需要密码和硬件令牌的网页应用——它们都实现了 AND 逻辑。

AND 门安全系统模板

打开安全报警电路


3. 搭建 OR 门电路(包容性触发器)

OR 门在至少一个输入为 1 时输出 1。只有所有输入都为 0 时才输出 0。AND 门强调”所有条件都必须满足”,OR 门则强调”任一条件即可”。

OR 门元件示意图

一步步搭建

  1. 在左侧放两个 Input Switch
  2. 在中间放一个 OR Gate
  3. 在右侧放一个 Output Light
  4. 连线:开关 A 接到 OR 门的上输入。
  5. 连线:开关 B 接到 OR 门的下输入。
  6. 连线:OR 门输出 接到灯泡。
  7. 测试全部四种组合:
输入 A输入 B期望输出 (Y)你应该看到
000两个都 OFF,灯灭
011仅 B ON,灯亮
101仅 A ON,灯亮
111两个都 ON,灯亮

布尔表达式:

Y=A+BY = A + B

注意:这是逻辑或,不是算术加法。在布尔代数中,1+1=11 + 1 = 1,因为输出已经达到了它能取的最高电平。

你学到了什么

  • OR 门只需要一个输入为 1,输出就会触发。
  • 四种输入组合中有三种会输出 1(对比 AND 门,只有四种中的一种)。
  • OR 门是 AND 门的对偶。德摩根定理形式化地表达了这种对偶性: A+B=AB\overline{A + B} = \overline{A} \cdot \overline{B}

实际应用:紧急停止系统

工厂车间往往在机器周围多个工位都布置紧急停止按钮。任意一个按钮被按下,机器都必须停止。这就是 OR 逻辑: Button_1 OR Button_2 OR Button_3 = STOP。增加按钮数量,只是给 OR 门多接几个输入而已。

搭建一个 OR 报警系统


4. 三者结合:搭建一个使能电路

既然你已经分别搭出了三个门,接下来把它们组合成一个能展示门如何协同工作的电路。我们将构建一个反相使能电路:数据信号只有当使能开关为 ON 时才能传到输出,且输出再被取反。

一步步搭建

  1. 放两个 Input Switch。 用文本工具标注一个为 “Data”,另一个为 “Enable”。
  2. 在右侧放一个 AND Gate
  3. 在 AND 门后放一个 NOT Gate
  4. 在末端放一个 Output Light
  5. 连线: Data 开关接 AND 输入 A;Enable 开关接 AND 输入 B;AND 输出接 NOT 输入;NOT 输出接灯泡。
  6. 测试行为:
    • 设 Enable = 0。让 Data 在 0 和 1 之间切换。灯始终亮(因为 AND 输出始终为 0,NOT 把它反转为 1)。
    • 设 Enable = 1。再切换 Data。当 Data = 0,AND 输出 0,NOT 输出 1,灯亮。当 Data = 1,AND 输出 1,NOT 输出 0,灯灭。

该电路的布尔表达式:

Y=ABY = \overline{A \cdot B}

你刚刚用分立的 AND 和 NOT 元件搭出了一个 NAND 门NAND 门 是数字设计中最重要的门之一。它本身就是函数完备的——也就是说,所有其他门(AND、OR、NOT、XOR)都可以仅用 NAND 门构造出来。

你学到了什么

  • 门可以串联:一个门的输出可以直接作为另一个门的输入。
  • AND 与 NOT 组合就得到 NAND——通用门。
  • 复杂行为来自简单、可组合的构建块。

5. 用示波器验证时序

静态测试(拨开关、看灯)只能验证逻辑正确性。但数字电路是在时间维度上工作的,理解时序行为是把”功能正确”的设计变成”可靠”设计的关键。

digisim.io 中的 OSCILLOSCOPE(示波器)能让你看到信号随时间变化的波形。

一步步搭建

  1. 从你在第 2 节搭好的 AND 门电路开始。
  2. 把其中一个 Input Switch 替换为 CLOCK 元件。时钟会以固定频率自动在 0 和 1 之间交替。
  3. 另一个 Input Switch 保留作为手动控制。
  4. 在画布上添加一个 OSCILLOSCOPE
  5. 把示波器的一个通道接到时钟输出(快速切换的那个信号)。
  6. 再把另一个通道接到 AND 门输出。
  7. 把手动开关设为 1,观察:示波器的一个通道显示时钟波形,另一个通道显示 AND 门输出。它们应当一致——因为当另一个输入为 1 时,AND 门会让时钟信号穿透。
  8. 现在把手动开关切到 0。AND 门输出立刻平直变成 0,与时钟无关。你刚刚把 AND 门当作了一个信号闸门,可以按需阻断时钟信号。

这就是真实处理器中时钟门控(clock gating)的概念基础。在量产芯片设计中实际上不会用普通的 AND 门来做这件事——因为使能信号可能在脉冲中途变化,从而在时钟上产生毛刺。真实硅芯片使用的是集成时钟门控单元(ICG):一个锁存器,把使能信号”困住”直到时钟变低,后接一个 AND。最终行为与你刚刚演示的相同,但无毛刺。结论依然成立:当某个功能单元空闲时,它的时钟会被门控关闭,从而停止不必要的翻转、节约能耗。

你学到了什么

  • 示波器揭示了静态灯泡看不到的行为:时序关系、传输延迟、信号门控。
  • AND 门可以充当任意数字信号的可控通断开关。
  • 时钟门控是处理器设计中真实存在的省电技术,你刚刚演示了它的核心机制。

速查表:三个门一目了然

输入输出规则布尔表达式主要用途
NOT1取反Y=AY = \overline{A}信号反相、低有效逻辑
AND2+全部为 1 才输出 1Y=ABY = A \cdot B条件使能、掩码
OR2+任一为 1 即输出 1Y=A+BY = A + B多源触发

下一步

现在你已经亲手实践了三个最基础的门。从这里出发,自然的进阶路径是:

  1. NAND 与 NOR 门 —— 你在第 4 节其实已经搭过 NAND。NOR 门则是 OR 后接 NOT。两者都是通用门。
  2. XOR 门 —— 输入不同则输出 1。挑战:试着用 AND、OR、NOT 把它搭出来。
  3. 半加器 —— 一个 XOR 加一个 AND,实现两个一位数的加法。这是迈向算术电路的第一步。
  4. 全加器 —— 把半加器串联起来处理进位,实现多位加法。

每一步都直接建立在你今天练习的技能之上。核心原则始终如一:放置元件、连线、系统地测试、必要时用示波器验证时序。

继续阅读 AND 门元件参考,或直接跳到下一个构建块——半加器