大数跨境

二极管门电路(Diode AND/OR Logic)

二极管门电路(Diode AND/OR Logic) 飞多学堂
2026-08-20
1
导读:💡 电路名称二极管门电路(Diode AND/OR Logic)昨天我们讲了续流二极管——当线圈电流试图"逆

💡 电路名称

二极管门电路(Diode AND/OR Logic)

昨天我们讲了续流二极管——当线圈电流试图"逆流"时,D1 给它一条安全的回路,把尖峰钳位到 VCC+V_d。今天换个方向:用几只普通二极管 + 一两个电阻,搭建出最基本的数字逻辑门——OR 门和 AND 门。简单到不能再简单,但这就是上世纪五六十年代计算机里"二极管逻辑(Diode Logic, DL)"的核心思路 💻。


🗺️ 电路图

6 个元件构成两个完整的数字门(4 个 1N4148 二极管 + 2 个 10kΩ 电阻,不含电源和输入信号):

左侧:二极管或门 OR——任一输入为高电平 → 输出 ≈ 4.3V(高)。

右侧:二极管与门 AND——任一输入为低电平 → 输出 ≈ 0.7V(低);两输入都高 → 输出 ≈ 5V(高)。

关键节点连接

节点
接什么
作用
A1 / B1 / A2 / B2
(全局标签 input)
输入端口 A、B
0V(低)或 5V(高)的数字信号
D1 / D2
(左侧)
Anode(正极) 接输入 A、B,Cathode(负极) 共同接 Y_OR
任一输入为高 → 对应二极管导通 → 输出被拉高
D3 / D4
(右侧)
Cathode(负极) 接输入 A、B,Anode(正极) 共同接 Y_AND
任一输入为低 → 对应二极管导通 → 输出被拉低
R1
(左侧 10kΩ)
Y_OR → GND(下拉电阻)
当所有输入都低时,把 Y_OR 拉到 0V
R2
(右侧 10kΩ)
+5V → Y_AND(上拉电阻)
当所有输入都高时,把 Y_AND 拉到 +5V
Y1 / Y2
(全局标签 output)
Y 输出端口
探针查看 Y_OR、Y_AND 电压

💡 关于输入/输出标签:原理图中 A1/B1/A2/B2 用全局标签表示输入(箭头朝内指向电路),Y1/Y2 表示输出(箭头朝外)。同名标签连接的 Conn_01x01 连接器和 PWR_FLAG 集中放在原理图左下角/右下角,不干扰主电路阅读。

二极管方向的灵魂——OR 和 AND 的极性是镜像的

  • OR 门
    :输入 → Anode(正极) → Cathode(负极) → Y_OR → R1 → GND。任一输入为高时,对应 D 导通,Y 被拉高。
  • AND 门
    :+5V → R2 → Y_AND → Anode(正极) → Cathode(负极) → 输入。任一输入为低时,对应 D 导通,Y 被拉低(Y = Cathode + V_f = 0 + 0.7 = 0.7V)。

🔬 LTspice 真实仿真

📐 LTspice 仿真电路原理图

diode-logic-gate

仿真电路采用左右双路对称布局,wire 水平/垂直直接连接,标签用 FLAG(A_OR/B_OR/Y_OR/A_AND/B_AND/Y_AND),便于人类阅读:

  • 左侧 OR 电路
    :V1(5V PULSE 1kHz) → D1.A → D1.K → Y_OR;V2(5V PULSE 500Hz) → D2.A → D2.K → Y_OR;R1 把 Y_OR 下拉到 GND
  • 右侧 AND 电路
    :V3(5V PULSE 1kHz) → D3.K → D3.A → Y_AND;V4(5V PULSE 500Hz) → D4.K → D4.A → Y_AND;R2 把 Y_AND 上拉到 V5+
  • 4 种组合遍历
    :V1 (1kHz, 50% 占空) + V2 (500Hz, 50% 占空) 在 2ms 仿真时间内遍历 00→01→10→11

📊 LTspice 真实仿真波形

LTspice 真实仿真波形

(a) 输入 A (V1=V3, 1kHz 方波)——V1 PULSE 0 5 0 1n 1n 0.5m 1m,周期 1ms,5V [0, 0.5m)、0V [0.5m, 1m)、5V [1m, 1.5m)、0V [1.5m, 2m)

(b) 输入 B (V2=V4, 500Hz 方波)——V2 PULSE 0 5 0 1n 1n 1m 2m,周期 2ms,5V [0, 1m)、0V [1m, 2m)

(c) 或门输出 Y_OR (4.3V 高 / 0V 低)——只要任一输入为 5V,Y_OR ≈ 5V − V_f = 4.3V;只有两输入都 0V 时,Y_OR = 0V(R1 下拉)

  • [0, 1.5m):V1 OR V2 至少有一个为 5V → Y_OR ≈ 4.3V ✓
  • [1.5m, 2m):V1=V2=0V → Y_OR = 0V ✓

(d) 与门输出 Y_AND (5V 高 / 0.7V 低)——只有两输入都 5V 时,Y_AND ≈ 5V;任一输入为 0V 时,对应 D 导通把 Y_AND 拉低到 Cathode + V_f = 0.7V

  • [0, 0.5m):V3=V4=5V → Y_AND = 5V ✓(AND=1)
  • [0.5m, 1.5m):V3 或 V4 为 0V → Y_AND ≈ 0.7V ✓(AND=0)
  • [1.5m, 2m):V3=V4=0V → Y_AND ≈ 0.5V ✓(AND=0)

(e) ⚠️ 1ms 处出现竞争冒险毛刺(race hazard)——放大波形可见:t=1ms 时 Y_AND 闪出一个 ~1ns 宽、冲到 ~4.96V 的尖峰,随后立即回落到 0.55V。

  • t=1ms 是 A 上升沿(0→5V)与 B 下降沿(5→0V)同时发生
    的时刻
  • 理想 AND 门输出应保持 0((0,1)→(1,0) 两种组合 AND 都=0),实际却出现了错误尖峰
  • 机理
    :A 上升 → D3 快速截止(旧下拉路径被切断);B 下降 → D4 需要时间导通(新下拉路径还没建立)。在这"旧钳位已断、新钳位未通"的窗口里,Y_AND 失去下拉 → 被 R2 上拉到 ~5V → 毛刺
  • 这正是数字逻辑中的静态 0 型冒险(static-0 hazard):输出"本应保持 0 却闪出 1"
  • 对照验证
    :0.5ms 处只有 A 下降(B 保持 5V),Y_AND 从 5V 平滑衰减到 0.55V、无毛刺——单输入变化没有竞争,反证 1ms 毛刺来自双输入同时反向翻转

NumPy 数学模型 vs LTspice 实测对照

输入组合
NumPy 模型预测
LTspice 实测
误差
物理解释
00
 (A=0, B=0)
OR=0V / AND=0.7V
OR≈0V / AND≈0.5V
~0.2V
OR:两D全关,R1下拉到GND / AND:两D全导通,Y=Anode高+Cathode低
01
 (A=0, B=1)
OR=4.3V / AND=0.7V
OR≈4.3V / AND≈0.5V
~0.2V
OR:D2导通 Y=B−V_f / AND:D3导通 Y=Anode−Cathode
10
 (A=1, B=0)
OR=4.3V / AND=0.7V
OR≈4.3V / AND≈0.5V
~0.2V
OR:D1导通 Y=A−V_f / AND:D4导通
11
 (A=1, B=1)
OR=4.3V / AND=5.0V
OR≈4.3V / AND≈5.0V
≈0
两D正偏全开,Y 取决于R上下拉

NumPy 波形 + 真值表

真值表条形图

⚠️ 二极管逻辑的两大固有弱点

① 电平劣化(level degradation):OR 门高电平是 VCC−V_f=4.3V 而不是 5V;AND 门低电平是 V_f=0.7V 而不是 0V。每个二极管消耗 ~0.7V 的电压余量,多级串联会累积 V_f,最终无法驱动下一级。

② 竞争冒险毛刺(race hazard):多个输入同时反向翻转时(如 AND 门 (0,1)→(1,0)),输出会闪出 ~ns 级的错误尖峰(见上图 t=1ms 的毛刺)。因为二极管"旧钳位断开"比"新钳位建立"更快,输出瞬间悬空被上拉电阻拉高。

这两点共同决定了二极管逻辑只适合低速、单级场景,也是它后来被 TTL/CMOS 取代的主要原因。


🔲 核心元器件

元件
型号/规格
数量
作用
二极管 D1/D2/D3/D4
1N4148(开关二极管,快速恢复)
×4
核心元件
:电流方向控制器——正向导通 V_f≈0.7V,反向截止。极性方向决定是 OR 还是 AND
下拉电阻 R1
10kΩ
×1
核心元件
:当所有输入都低时把 Y_OR 拉到 GND;同时限制 D 导通电流(I = (5−V_f)/10k ≈ 0.43mA)
上拉电阻 R2
10kΩ
×1
核心元件
:当所有输入都高时把 Y_AND 拉到 +5V;同时限制 D 导通电流
输入源 V1/V3
0/5V 方波 (1kHz, 50% 占空比)
×1 (×2)
A 输入信号
输入源 V2/V4
0/5V 方波 (500Hz, 50% 占空比, 2ms 周期)
×1 (×2)
B 输入信号(慢一倍)以遍历 4 种组合
电源 V5
DC 5V
×1
AND 门的上拉电源

💡 选型提示

  • 二极管速度选型
    : 
    • 1N4148 即可(开关时间 ~4ns,远快于数字信号 ns 级)—— 不要选 1N4007(50ns 反向恢复,对快速数字信号不够快)
    • 高速场景可用 BAT54(SMD,肖特基 V_f≈0.3V,损耗更小)
  • R1/R2 阻值选择
    : 
    • 太大(>100kΩ)
      :D 导通电流太小(<50µA),V_f 升高(<0.5V)→ 输出摆幅降低;同时输出 RC 时间常数大 → 开关速度变慢
    • 太小(<1kΩ)
      :D 导通电流过大(>4mA),功耗增加;前级驱动负担加重
    • 10kΩ 是经典折中
      :I ≈ 0.43mA,V_f 标准 ~0.7V,开关速度 ~µs 级

📖 通俗工作原理

🎙️ 把二极管门电路想象成"单向水闸 + 蓄水池"

想象一下 OR 门是一个单向水闸 + 排水池

  • 输入 A、B
     是上游两路水源(5V = 有水,0V = 干涸)
  • D1、D2
     就像两个单向水阀——只允许水从输入端流向 Y_OR(Anode→Cathode 方向)
  • R1
     是通往排水池的排水管,把 Y_OR 的水排到 GND
  • Y_OR
     是水位高低

工作场景

  • A=1, B=1
    :两路都有水,两水阀都开 → 水位涨到 ~4.3V(每个水阀消耗 0.7V)→ Y_OR=高 ✓
  • A=0, B=1
    :A 阀关,B 阀开 → 水通过 B 阀流到 Y_OR,水位 4.3V → Y_OR=高 ✓
  • A=1, B=0
    :类似,B 阀关 → Y_OR=高 ✓
  • A=0, B=0
    :两阀都关 → Y_OR 的水通过 R1 排光 → Y_OR=低 ✓

AND 门反过来——是反向水阀 + 顶部水塔

  • VCC + R2
     是顶部水塔(5V 蓄水池)
  • D3、D4
     像反向水阀——只允许水从 Y_AND 流向输入端(Cathode→Anode 方向反向,电流 Anode→Cathode,即从 Y 流到输入)
  • 输入 A、B
     是下游两路排水口(0V = 下游干涸能排水,5V = 下游满水堵住)

工作场景

  • A=1, B=1
    :两排水口都满水(5V),反向水阀都关(无法向下游排水)→ Y_AND 保持 5V(被 R2 维持)→ Y_AND=高 ✓
  • A=0, B=1
    :A 路下游干涸(0V),反向水阀 D3 开 → Y_AND 的水通过 D3 排到 A 路 → Y_AND 被拉到 A+V_f = 0.7V → Y_AND=低 ✓
  • A=1, B=0
    :B 路反向水阀 D4 开 → Y_AND = 0.7V → Y_AND=低 ✓
  • A=0, B=0
    :两阀都开 → 两路都拉 Y_AND → Y_AND ≈ 0.5V → Y_AND=低 ✓

详细分步(以 OR 门 A=0, B=1 为例)

  • 电流路径
    :VCC(B) → D2(A→K) → Y_OR → R1 → GND
  • Y_OR = V(B) − V_f(D2) = 5 − 0.7 = 4.3V
  • I = (5 − 0.7) / 10k = 0.43mA ✓

💡 图例:实线粗箭头 = 导通电流路径;虚线 = 截止(无电流)。D1 因 A=0V(Anode 与 Cathode 等电位)反偏截止,D2 因 B=5V 正偏导通。

为什么 OR 用下拉、AND 用上拉?

直觉解释:

mermaid

💡 一句话记住:门的"主动电平"由电阻位置决定——下拉电阻的主动电平是 LOW(无电流时输出被拉到 GND);上拉电阻的主动电平是 HIGH(无电流时输出被拉到 VCC)。OR 门要让"任一高→输出高"所以主动拉高 + 被动下拉;AND 门要让"全高才输出高"所以主动维持 + 被动拉低。


🎯 典型应用场景

  • 💻 早期计算机逻辑电路(1950-60 年代):IBM 1401、CDC 1604 等大型机使用二极管-电阻逻辑(Diode-Resistor Logic, DRL) 
    • 第一台电子计算机 ENIAC
      (1946)就有大量二极管逻辑
    • Apollo 导航计算机
      (1960s)使用 DRL 实现的二极管逻辑
  • 📟 工业控制面板:简单的逻辑判断(按钮 A 或 B 按下 → 启动电机)
  • 🎵 电子琴合成器:按键组合触发特定音色(多输入 OR/AND 矩阵)
  • 🔒 报警系统:多个传感器任一触发(OR)→ 报警;所有安全门关闭(AND)→ 启动机器
  • 🧮 PLA(可编程逻辑阵列):现代 FPGA/CPLD 的前身,用二极管矩阵实现任意逻辑函数
  • 🕹️ 复古游戏机(如 Pong、Space Invaders)使用 DRL 实现碰撞检测
  • 📺 早期电视机的频道切换电路

典型应用电路(多输入 OR 报警电路)

任一传感器触发(输出 5V)→ 任一 D 导通 → Y ≈ 4.3V → LED 报警。


🤝 互动环节

❓ 今日小思考

我们今天用 R1 下拉到 GND 实现 OR 门(10kΩ),用 R2 上拉到 +5V 实现 AND 门(10kΩ)。

思考题

  1. 如果 R1 改成 1kΩ(小 10 倍),OR 门会有什么变化?考虑:导通电流V_f 衰减驱动前级负担功耗
  2. 如果 R2 改成 100kΩ(大 10 倍),AND 门又会有什么变化?考虑:截止漏电流上拉能力开关速度(用 τ=R·C_para 估算)

💭 提示

  • 1N4148 在 1mA 下 V_f ≈ 0.65V;在 5mA 下 V_f ≈ 0.75V(V_f 随电流增加)
  • 截止时 1N4148 反向漏电流 < 25nA
  • PCB 上的寄生电容典型 5-10pF
  • 开关时间常数 τ = R · C,τ 越大 → 输出上升/下降越慢

✅ 昨日思考题回顾(Day 14 续流二极管电路)

题目:把续流二极管 D1(1N4007,V_f≈0.7V)替换成 1N4733 稳压管(5.1V 齐纳二极管,正向 V_f≈0.7V,反向击穿 V_z=5.1V)。1. Q1 导通时 D1 是否导通?2. Q1 断开瞬间 V(sw) 钳位到多少伏?3. 会不会击穿 Q1?4. 好处/坏处?

答案

【声明】内容源于网络
0
0
飞多学堂
1234
内容 157
粉丝 0
飞多学堂 1234
总阅读62
粉丝0
内容157