news 2026/4/19 17:45:39

手把手教程:用MOSFET搭建基本异或门电路

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手教程:用MOSFET搭建基本异或门电路

从晶体管到逻辑:手把手用MOSFET搭建一个真正的异或门

你有没有想过,手机里的处理器、电脑中的CPU,甚至一块简单的加法器芯片——它们最底层的“思维”究竟是怎么工作的?不是靠代码,也不是靠魔法,而是由无数个微小的晶体管开关构成的逻辑网络在默默运算。

今天,我们就来当一回“数字电路工匠”,不用现成的74系列芯片,也不调用FPGA库元件,只用8个MOSFET晶体管,从零搭建一个完整的异或门(XOR Gate)。这不仅是一次动手实验,更是一场深入硅片内部的硬核探索。


为什么是异或门?它到底特别在哪?

我们都知道与门、或门、非门这些基础逻辑单元,但异或门是个“异类”

它的规则很简单:输入不同则输出高,输入相同则输出低。真值表如下:

ABY = A⊕B
000
011
101
110

看起来不复杂,对吧?可正是这个看似简单的功能,让它无法像与门那样通过简单的串并联NMOS就能实现。
问题出在哪儿?

因为 $ Y = \overline{A}B + A\overline{B} $ 这个表达式既不是标准的“与-或”结构,也不是单一类型的网络可以搞定的。它需要同时处理原变量和反变量,并且上下拉路径都必须精确控制。

换句话说:你想用MOSFET做XOR,就得玩点高级花样了。


MOSFET是怎么当“开关”的?

在进入设计之前,先快速回顾一下我们的核心工具——MOSFET

NMOS vs PMOS:一对互补搭档

  • NMOS:当栅极电压高于阈值(比如 VGS> 0.7V),漏源导通,相当于一个由高电平触发的开关。
  • PMOS:相反,它在栅极为低电平时导通(VGS< -0.7V),适合用来拉高信号。

把它们组合起来,就构成了现代数字电路的基石——CMOS结构

关键优势
- 静态时几乎不耗电(没有直流通路)
- 输出能完整摆幅(0V ↔ VDD)
- 抗干扰能力强

举个例子,一个最简单的反相器就是由一个PMOS和一个NMOS组成:

  • 输入为0 → PMOS导通,NMOS关闭 → 输出被拉高至VDD
  • 输入为1 → NMOS导通,PMOS关闭 → 输出接地

这就是CMOS的精髓:永远只有一个通路打开,避免短路功耗

而我们要做的异或门,本质上就是把这个思想扩展到更复杂的逻辑拓扑中去。


拆解异或门:如何用晶体管“翻译”布尔公式?

目标是实现:
$$
Y = \overline{A}B + A\overline{B}
$$

我们分两步走:先构建下拉网络(NMOS侧),再构造对应的上拉网络(PMOS侧),最后合成完整CMOS电路。

第一步:设计下拉网络(Pull-Down Network)

我们知道,当输出Y应该为0时,NMOS网络必须将输出节点拉到地。

根据公式,Y=0发生在两种情况之外:
- $\overline{A}B$ 成立(A=0, B=1)
- $A\overline{B}$ 成立(A=1, B=0)

所以,我们需要两条独立的导通路径来实现这两个条件:

  1. 路径1:A=0 且 B=1 → 需要用 $\overline{A}$ 和 $B$ 控制两个串联的NMOS
  2. 路径2:A=1 且 B=0 → 需要用 $A$ 和 $\overline{B}$ 控制另一对串联NMOS

这两条路径是“或”的关系,因此应并联连接

于是得到下拉网络结构:

┌──[NMOS_A̅]──[NMOS_B]──┐ │ ├── Y → GND └──[NMOS_A]──[NMOS_B̅]──┘

注意:这里出现了 $\overline{A}$ 和 $\overline{B}$,但我们只有原始输入A和B。怎么办?

👉得先做个反相器,生成A̅和B̅!

这意味着整个电路需要额外增加两个反相器模块,分别用于产生A和B的反相信号。


第二步:构造上拉网络(Pull-Up Network)

CMOS的设计哲学是“互补”。既然下拉用了串并结构,那上拉就要用其对偶形式。

回忆德摩根定律(De Morgan’s Law):
- 串联 → 对应 并联
- NMOS → 替换为 PMOS
- 输入取反(因为PMOS低电平有效)

所以下拉中的:
- “$\overline{A}$ 与 B 串联” → 上拉变为 “A 与 $\overline{B}$ 的反相”,即“A或$\overline{B}$”对应的PMOS并联?

等等……有点绕。换个思路更直观:

我们要让输出Y=1在以下情况发生:
- A=0, B=0 → 此时 $\overline{A}=1$, $\overline{B}=1$
- A=1, B=1 → 此时 A=1, B=1

也就是说,当A=B时,输出应被拉高

那么上拉网络应在:
- A=0 且 B=0 → 导通
- A=1 且 B=1 → 导通

对应逻辑为:$ \overline{A} \cdot \overline{B} + A \cdot B $

但这还不是最终结构。我们要把它转换成PMOS的驱动方式。

由于PMOS在输入为低时导通,我们可以这样安排:

  • 要在A=0,B=0时导通 → 使用A控制的PMOS和B控制的PMOS并联
  • 要在A=1,B=1时导通 → 使用A̅和B̅控制的PMOS也并联

然后这两个支路再串联?不对!

等等……其实更好的方法是直接使用对偶规则重构:

下拉是两个“与”项并联(OR of ANDs),其对偶是两个“或”项串联(AND of ORs)。但在CMOS中,这通常映射为:

上拉网络 = 下拉网络的“对偶图”:串联变并联,NMOS变PMOS,输入取反

应用后得出:

  • 原下拉:(A̅·B) || (A·B̅)
  • 上拉:(A + B̅) || (A̅ + B) ? 不对,还是混乱。

别急,我们换种方式思考:直接写出上拉条件,并用PMOS实现

当 A=0 且 B=0:
- A=0 → PMOS_A导通
- B=0 → PMOS_B导通
→ 若两者并联接VDD,则任一导通即可拉高?不行,必须同时满足才行。

错误!并联意味着“或”,但我们想要的是“与”。

所以正确做法是:两个PMOS串联才能实现“与”逻辑

即:
- PMOS_A 与 PMOS_B 串联 → 只有当A=0且B=0时才导通
- 同理,PMOS_A̅ 与 PMOS_B̅ 串联 → 当A=1且B=1时导通

然后这两个串联支路并联,就能覆盖所有Y=1的情况。

最终上拉结构如下:

┌──[PMOS_A]──[PMOS_B]──┐ │ ├── Y ← VDD └──[PMOS_A̅]─[PMOS_B̅]──┘

完美!现在上下拉网络完全互补。


完整电路图:8个MOSFET+2个反相器

总结一下所需器件:

类型数量功能说明
NMOS6主体下拉网络 ×4 + 反相器×2
PMOS6上拉网络 ×4 + 反相器×2
总计MOSFET12个实现全部逻辑功能

等等……不是说8个吗?怎么变成12个了?

澄清一点:如果你已经有A̅和B̅信号可用(例如来自前级电路),那你只需要8个MOSFET来构建主门。
但在独立工作场景下,你必须自己生成反相信号,这就需要额外两个反相器(每个含1个PMOS+1个NMOS),总共再加4个晶体管。

所以我们实际搭建的是一个自包含的异或门系统,共需:

  • NMOS:4(主门)+ 2(反相器)= 6
  • PMOS:4(主门)+ 2(反相器)= 6
  • 总计:12个MOSFET

电路连接示意图如下(文字版):

VDD │ ┌────────[PMOS_A]────┴────[PMOS_B]─────┐ │ │ │ ┌──────┐ │ ├────[PMOS_A̅] [PMOS_B̅]────┤ │ └──────┘ │ │ │ │ Y │ └────────────────┬─────────────────┘ │ ┌──────────────┴──────────────┐ │ │ │ [NMOS_A̅] [NMOS_A] [NMOS_B̅] │ │ │ [NMOS_B] [NMOS_B̅] [NMOS_A] │ │ │ └──────┬───────┴──────┬───────┘ │ │ GND GND

抱歉,上面画得有点乱。我们重新整理逻辑层级:

子模块1:反相器A → 生成A̅

  • PMOS_A_inv:源接VDD,栅接A,漏接A̅节点
  • NMOS_A_inv:源接GND,栅接A,漏接A̅节点

同理构建反相器B → 生成B̅

子模块2:主异或门

下拉网络(NMOS部分):
  • M1: NMOS_A̅(栅=A̅)与 M2: NMOS_B(栅=B)串联 → 接Y
  • M3: NMOS_A(栅=A)与 M4: NMOS_B̅(栅=B̅)串联 → 并联至Y
上拉网络(PMOS部分):
  • M5: PMOS_A(栅=A)与 M6: PMOS_B(栅=B)串联 → 接Y
  • M7: PMOS_A̅(栅=A̅)与 M8: PMOS_B̅(栅=B̅)串联 → 并联至Y

所有PMOS源极统一接VDD,所有NMOS源极接GND。


实际搭建建议与常见坑点

🔧 元件选型推荐

  • 通用N沟道MOSFET:2N7002(SOT-23封装,Vth≈1V)
  • 通用P沟道MOSFET:DMG2302U 或 FDN302P(匹配尺寸)
  • 供电电压:3.3V 或 5V(兼容TTL电平)
  • 板级去耦:在VDD/GND间加0.1μF陶瓷电容,靠近电源引脚

⚠️ 常见问题与调试技巧

问题现象可能原因解决方案
输出始终为高下拉网络未导通检查NMOS是否损坏,栅极是否有反相信号
输出始终为低上拉网络开路或PMOS失效确认PMOS连接正确,栅极驱动电平到位
输出不稳定/振荡浮空输入或寄生电容影响所有输入端必须明确上拉/下拉,避免悬空
功耗异常大上下拉同时导通检查反相器延迟是否一致,可能导致短暂短路电流
速度慢PMOS迁移率低导致上升沿迟缓加宽PMOS沟道宽度(W/L比约为NMOS的2倍)

🛠 设计优化小贴士

  • 对称布局:尽量让上下拉路径物理长度相近,减少传播延迟差异
  • 输入保护:长导线输入建议加TVS二极管防ESD击穿MOS栅氧
  • 扇出能力:单个门驱动多个负载时,考虑加入缓冲级
  • 仿真验证:可用LTspice建立晶体管网表进行瞬态分析

它不只是个门:异或门的实际用途远超你的想象

别以为这只是教科书上的玩具电路。异或门在真实系统中无处不在:

✅ 半加器的核心

Sum = A ⊕ B Carry = A & B

两个MOSFET门就能做出最基本的加法单元,这是ALU的起点。

✅ 数据比较器

异或门天然就是“是否相等”检测器:
- Y=0 → 输入相同
- Y=1 → 输入不同

可用于内存校验、配置一致性检查等。

✅ 奇偶校验生成

多个比特依次异或,结果表示“1”的个数是奇还是偶,广泛用于通信纠错。

✅ 加密中的基本操作

流密码中常用明文 XOR 密钥 = 密文,解密时再异或一次即可还原,简单高效。

✅ 差分信号解码

在高速通信中,接收端通过异或判断信号跳变边沿,恢复时钟信息。


写在最后:回到硬件的本质

当你按下开发板上的按钮,看到LED随着输入变化闪烁,那一刻你会意识到:

所有的软件、算法、人工智能,最终都要落回到这些小小的晶体管开关之上

今天我们亲手用12个MOSFET搭出了一个异或门。它可能不如74HC86稳定,也不如FPGA灵活,但它让你看清了数字世界的底色。

这种“从硅出发”的思维方式,才是嵌入式工程师、IC设计者真正的护城河。

下次当你写一句if (a != b)的时候,不妨想想背后是不是有一群MOSFET正在为你执行一场精密的布尔舞蹈。


💡拓展思考
你能试着用传输门(Transmission Gate)结构来简化这个电路吗?提示:只需4个MOSFET + 2个反相器,就能实现同等功能,而且速度更快、面积更小。

欢迎在评论区分享你的改进方案!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:14:19

原神玩家的效率革命:Snap.Hutao工具箱深度体验指南

原神玩家的效率革命&#xff1a;Snap.Hutao工具箱深度体验指南 【免费下载链接】Snap.Hutao 实用的开源多功能原神工具箱 &#x1f9f0; / Multifunctional Open-Source Genshin Impact Toolkit &#x1f9f0; 项目地址: https://gitcode.com/GitHub_Trending/sn/Snap.Hutao …

作者头像 李华
网站建设 2026/4/16 11:14:33

一键解锁网易云音乐NCM文件:跨平台播放不再是难题

一键解锁网易云音乐NCM文件&#xff1a;跨平台播放不再是难题 【免费下载链接】ncmppGui 一个使用C编写的转换ncm文件的GUI工具 项目地址: https://gitcode.com/gh_mirrors/nc/ncmppGui 你是否曾经遇到过这样的情况&#xff1a;从网易云音乐下载的歌曲只能在特定播放器上…

作者头像 李华
网站建设 2026/4/16 11:14:18

DankDroneDownloader:无人机固件管理的技术深度解析与实践指南

DankDroneDownloader&#xff1a;无人机固件管理的技术深度解析与实践指南 【免费下载链接】DankDroneDownloader A Custom Firmware Download Tool for DJI Drones Written in C# 项目地址: https://gitcode.com/gh_mirrors/da/DankDroneDownloader 在无人机技术快速发…

作者头像 李华
网站建设 2026/4/16 11:07:23

AI读脸术容器编排:Kubernetes集群部署实践指南

AI读脸术容器编排&#xff1a;Kubernetes集群部署实践指南 1. 引言 1.1 业务场景描述 随着人工智能在边缘计算和实时图像分析中的广泛应用&#xff0c;轻量级、高响应速度的人脸属性识别服务正成为智能安防、用户画像、互动营销等场景的核心组件。传统基于深度学习框架&…

作者头像 李华
网站建设 2026/4/19 15:43:39

OpenDataLab MinerU避坑指南:文档智能处理常见问题全解

OpenDataLab MinerU避坑指南&#xff1a;文档智能处理常见问题全解 1. 引言&#xff1a;为什么需要MinerU文档智能处理&#xff1f; 在日常办公、科研分析和数据工程中&#xff0c;PDF文档的结构化处理一直是一个高频且棘手的问题。传统OCR工具往往只能提取“扁平化”的文本流…

作者头像 李华
网站建设 2026/4/19 10:26:54

Postman便携版免安装终极指南:API测试利器即开即用

Postman便携版免安装终极指南&#xff1a;API测试利器即开即用 【免费下载链接】postman-portable &#x1f680; Postman portable for Windows 项目地址: https://gitcode.com/gh_mirrors/po/postman-portable &#x1f680; 想要一款无需繁琐安装、即开即用的API测试…

作者头像 李华