news 2026/10/6 1:41:38

从MOS管到七种逻辑门:面包板搭建CMOS数字电路全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从MOS管到七种逻辑门:面包板搭建CMOS数字电路全解析

说实话,逻辑门这块我在课本上翻来覆去看了好几遍,符号倒是记住了,可真值表背后为什么是那样,一直有种隔靴搔痒的感觉。直到后来自己买了几颗MOS管,在面包板上从非门开始一个个搭,看到LED跟着输入翻转的那一刻,才算真正把数字电路这层窗户纸捅破——逻辑门不是什么神秘芯片,它本质上就是一堆MOS管组成的开关网络。今天我就把这7种基础逻辑门的搭建过程完整拆给你看,从MOS管怎么当开关用,到每个门的电路连接和真值表,一次性讲明白。

这篇文章适合两类人:一是刚学数字电路、对逻辑门符号和真值表只停留在背公式阶段的初学者;二是想自己动手验证、手头有面包板和MOS管但不知道怎么下手的爱好者。看完之后你不仅能照着搭出这7种门,还能理解为什么电路要这么接,以及出问题时怎么排查。

1. 先把MOS管当成一个受控开关

1.1 三种极性和导通条件

MOS管三个极分别叫栅极(G)、漏极(D)、源极(S),按导电沟道分成N沟道和P沟道两种。注意,这里的N和P指的是沟道类型,跟三极管的NPN/PNP不是一个概念,两者驱动逻辑完全相反,别混了。

先看NMOS:当栅极电压比源极电压高出一定值(超过阈值电压Vth)时,漏极和源极之间会形成导电沟道,管子导通;栅极电压不够,管子就截止。PMOS正好相反:栅极电压要比源极电压低一定值(超过|Vth|)才会导通,也就是栅极接低电平导通、接高电平截止。

从信号路径上看,NMOS导通时电流从漏极流向源极,PMOS导通时电流从源极流向漏极。这个方向很重要,搭电路时如果源漏接反了,管子还能工作,但体二极管会导通,逻辑就乱了。

我把判断方式整理成一张表,搭电路前先对照着确认一遍:

管子类型导通条件常用符号表达电流方向
NMOSVgs > Vth栅极为高电平导通D流向S
PMOSVgs < -|Vth|栅极为低电平导通S流向D

你可以把MOS管想象成一个电控水龙头:NMOS是"给高电平信号就拧开水阀",PMOS是"给低电平信号才拧开"。逻辑门的所有玩法,都是在这个开关模型上构建的。

1.2 为什么不能只用单个MOS管输出

有人可能会想:既然NMOS高电平导通,那我把电源通过一个NMOS接到输出端,栅极接输入,是不是就实现反相了?答案是不行,就算能工作,输出电平也会有严重问题。

问题出在NMOS的导通特性上。当NMOS用来把输出拉到高电平时,它工作在源极跟随器状态,输出最高只能到VDD减去一个阈值电压,也就是VDD-Vth左右,达不到完整的高电平。同样,如果只用PMOS下拉到地,也拉不到完整的低电平。更麻烦的是,这种单管结构在某个状态存在从电源到地的直流通路,静态功耗大,输出还会受负载影响。

所以实际搭逻辑门,几乎都采用CMOS互补结构:上面用PMOS网络负责把输出拉到高电平,下面用NMOS网络负责把输出拉到低电平,两边严格互补,保证任何时刻输出要么明确接VDD,要么明确接GND,不会悬空。这也是现代数字芯片最基本的结构单元。

1.3 动手前先准备这些材料

我在面包板上验证这些电路时,用的材料相当简单,你照着准备就行:

  • 面包板一块,最好带电源轨的那种
  • 5V直流电源,或者3节干电池串联供电
  • 直插MOS管:NMOS用2N7000,PMOS用BS250,这两种最常见也最便宜。不过2N7000的阈值电压在2.1V左右,用3.3V供电时裕量偏小,建议用5V供电
  • 如果对导通不完全比较敏感,可以换成逻辑电平管,比如AO3400(NMOS)和AO3401(PMOS),这两颗是SOT-23封装,需要配转接板
  • 1kΩ到10kΩ的电阻若干,用作栅极下拉和LED限流
  • 万用表,有示波器最好,没有的话用LED也能观察电平

还有一点需要提前说明:MOS管对静电比较敏感,虽然2N7000这类管子没那么娇气,但拿之前最好碰一下金属水龙头放掉静电,手别反复摸引脚。焊的时候用温控烙铁接地,或者干脆先在面包板上验证完再决定要不要焊。

2. 搭建逻辑门之前,先搞清这套设计套路

2.1 逻辑电平怎么定义

在讨论电路之前,先把电平约定说清楚。数字电路里我们用1和0表示两种状态,1代表高电平,0代表低电平。以5V系统为例,通常认为2.4V以上是稳定高电平,0.8V以下是稳定低电平,中间那段是过渡区,不能作为有效逻辑状态。

搭建逻辑门时,我们的目标就是让输出要么接近VDD(对应逻辑1),要么接近GND(对应逻辑0),而不是中间模糊电平。CMOS互补结构天然能做到这一点,因为输出端总有一侧管子完全导通,压降非常小。

2.2 上拉网络和下拉网络

在CMOS门电路里,把PMOS构成的、负责连接VDD到输出端的网络叫做上拉网络(PDN?不对,是PUN),把NMOS构成的、负责连接输出端到GND的网络叫做下拉网络(PDN)。这两个网络的连接方式和导通条件由你要实现的逻辑功能决定。

具体方法论是这样的:先看真值表,找出哪些输入组合下输出为1,这些组合对应上拉网络的导通条件;再看哪些组合下输出为0,对应下拉网络的导通条件。串联的管子相当于逻辑与,并联的管子相当于逻辑或。把导通条件和逻辑表达式对应起来,电路结构就出来了。

2.3 互补结构为什么是标配

你可能好奇,为什么一定要求上拉网络和下拉网络互相对偶。原因是这样:如果某个输入组合下,上面网络导通的同时下面网络也导通,就会形成从VDD到GND的低阻通路,直接烧毁管子;如果两边都截止,输出就悬空,电平不确定。所以互补设计不是可选优化,而是必须满足的条件。

后面我要搭的7种门,全部遵循这个原则:上面PMOS网络负责输出1,下面NMOS网络负责输出0,两边不可能同时导通。你能看懂这个套路,后面每个电路图都不用死记硬背,自己就能推出来。

3. 7种逻辑门的电路结构与真值表

先说明一下,下面的电路图我用文字连接表给出,每个连接点都写清楚,照着接线即可。所有电路都以5V为VDD,GND为地。

3.1 非门:最基础的反相器

非门只有一个输入一个输出,输出是输入的取反。逻辑符号是一个三角形后面加一个小圆圈,这个圆圈就表示取反。逻辑表达式是 Y = A'。

电路连接如下:

  • Q1为PMOS,源极接VDD,漏极接输出Y,栅极接输入A
  • Q2为NMOS,源极接GND,漏极接输出Y,栅极接输入A
AY
01
10

工作原理:当A=1时,Q2的栅极高电平,NMOS导通;Q1的栅极也是高电平,PMOS截止。输出Y通过Q2下拉到GND,所以Y=0。反过来,A=0时Q2截止,Q1导通,输出Y被上拉到VDD,Y=1。

这个电路就是数字芯片里最基本的反相器,也是其他所有门电路的构建基础。你在面包板上搭好后,用万用表量一下输出,高电平应该接近5V,低电平接近0V。如果发现高电平只有3点几伏,多半是PMOS没完全导通,要检查是不是型号不对或者栅极电压不够。

3.2 与非门:两个PMOS并联加两个NMOS串联

与非门是二输入门,输出为两个输入的"与"再取反,逻辑表达式是 Y = (A·B)'。逻辑符号就是与门符号后面加个小圆圈。它的重要性在于:理论上所有逻辑门都可以由与非门组合构成,所以它是工程上用得非常广泛的通用门。

电路连接如下:

  • Q1为PMOS,源极接VDD,漏极接输出Y,栅极接输入A
  • Q2为PMOS,源极接VDD,漏极接输出Y,栅极接输入B
  • Q3为NMOS,源极接GND,漏极接Q4源极,栅极接输入A
  • Q4为NMOS,源极接Q3漏极,漏极接输出Y,栅极接输入B
ABY
001
011
101
110

看电路怎么工作:两个PMOS是并联的,只要A和B中有一个是0,对应的PMOS就会导通,输出Y被拉到VDD,输出1。两个NMOS是串联的,只有A和B同时为1时,Q3和Q4才同时导通,Y被拉到GND,输出0。这跟真值表完全吻合。

这里有个很容易混淆的点:为什么实现与逻辑时,PMOS是并联而NMOS是串联?因为输出0需要两个输入都为1,也就是"与"的关系,所以下拉网络要串联;而输出1只需要其中一个输入为0,存在"或"的关系,所以上拉网络要并联。这就是2.2节说的互补对偶关系。

3.3 或非门:两个PMOS串联加两个NMOS并联

或非门逻辑表达式是 Y = (A+B)',也就是两个输入先做或运算再取反。逻辑符号是或门符号后面加小圆圈。

电路连接如下:

  • Q1为PMOS,源极接VDD,漏极接Q2源极,栅极接输入A
  • Q2为PMOS,源极接Q1漏极,漏极接输出Y,栅极接输入B
  • Q3为NMOS,源极接GND,漏极接输出Y,栅极接输入A
  • Q4为NMOS,源极接GND,漏极接输出Y,栅极接输入B
ABY
001
010
100
110

这次刚好跟与非门反过来:两个NMOS并联,只要有一个输入为1,对应的NMOS导通,Y就被拉到地,输出0。两个PMOS串联,只有A和B同时为0,Q1和Q2才都导通,Y被拉到VDD,输出1。

串联PMOS是输出1的"与"条件,并联NMOS是输出0的"或"条件,这套规律在搭门电路时特别有用。你如果能自己推一遍与非门到或非门的逻辑互换,说明已经理解CMOS结构的精髓了。

3.4 与门:与非门后面再加一级非门

与门输出是两个输入的"与",逻辑表达式是 Y = A·B。逻辑符号就是前端不带小圆圈的与门图形。

电路上最直接的做法是把与非门的输出接一个非门:

  • 第一级:按3.2节的与非门接线,输出记为Y1
  • 第二级:把Y1接入3.1节非门的输入,非门输出就是最终Y
ABY
000
010
100
111

为什么与门不直接搭一个跟与非门对应的结构?因为标准CMOS工艺里,做与门就是先做与非门再接反相器。这样做虽然多了两个管子,但输出驱动能力和电平摆幅都比直接用复杂串联网络嵌套更好。你在面包板上搭的时候,也可以先把与非门调通,再接非门,这样问题定位更清晰。

3.5 或门:或非门后面再接非门

或门输出是两个输入的"或",逻辑表达式是 Y = A+B。

电路上就是3.3节的或非门后面再接一个3.1节的非门:

  • 第一级:按3.3节的或非门接线,输出记为Y1
  • 第二级:把Y1接入非门输入,非门输出就是最终Y
ABY
000
011
101
111

与非门和或非门本身是完整的功能门,跟门和或门反而是"组合门"。很多教材把七种门混着讲,但你真自己搭一遍就会明白,核心的两个基础门是与非门和或非门,其他门大多是在这两个基础上变形或级联。

3.6 异或门:四与非门组合网络

异或门的逻辑表达式是 Y = A'B + AB',也就是两个输入不同则输出1,相同则输出0。逻辑符号是在或门基础上加一条弧线,看起来像"≥1"被圈起来。

异或门的分立搭建稍微绕一点,最直观的做法是用4个与非门组合:

  • 先用第一个与非门算W = NAND(A, B)
  • 第二个与非门输入接A和W,输出X = NAND(A, W)
  • 第三个与非门输入接B和W,输出Z = NAND(B, W)
  • 第四个与非门输入接X和Z,输出Y = NAND(X, Z),这就是最终异或结果
ABY
000
011
101
110

这个组合为什么成立?把逻辑代数展开:X = A' + W' = A' + AB = A' + B,Z = B' + AB = B' + A,最后Y = X' + Z' = (A' + B)' + (B' + A)' = AB' + A'B,正好就是异或的展开式。

在面包板上搭这个电路就是复制三份3.2节的与非门,再加一份做输出级,总共16个管子,占用面积比较大。实际芯片内部不会这么干,CD4070这类异或门芯片用的是CMOS传输门结构,核心8个管子就搞定了,但节点原理没有四与非门组合直观。你作为练习,先用组合法搭通一次,再去看芯片框图,理解会上一个台阶。

3.7 同或门:异或门取反

同或门也叫异或非门,逻辑表达式是 Y = A·B + A'·B',也就是两个输入相同时输出1,不同时输出0。逻辑符号就是异或符号加个小圆圈。

电路实现最简单:把3.6节异或门的输出Y_XOR接入一级非门,最后输出Y就是同或结果。

ABY
001
010
100
111

同或门最典型的应用是数字比较器:两个数位相同则输出1,所以逐位比较时,每一位用一个同或门就能判断该位是否相等。这也是为什么很多教材把同或门单独立出来,而不像跟门和或门那样只用"异或取反"一句话带过——它在工程里确实有独立的应用场景。

到这里,七种门就齐了。你如果把它们放在一起对比,会发现规律非常漂亮:非门是基础,与非门和或非门是根,其余门要么是级联、要么是组合得到的。这个体系一旦建立,后续学加法器、触发器、锁存器都会顺畅很多。

4. 从面包板到仿真:实操验证与避坑

4.1 面包板接线步骤与选型建议

拿到元件后,别着急焊,先在面包板上把非门搭出来。因为非门只有两个管子,结构最简单,出了问题最容易排查。接线步骤建议这样做:

第一步,先把电源轨接好,红黑两根跳线分别接VDD和GND,面包板两侧的电源轨都用跳线连通一遍,防止后面插线时忘了某段没电。

第二步,插入MOS管。插之前看 datasheet 确认引脚顺序,2N7000的直插版本引脚从左到右通常是源极、漏极、栅极(S-D-G),BS250略有不同,一定先查手册再插。插反了整个电路逻辑就是错的,而且很难看出来。

第三步,按3.1节的连接表接非门,栅极接输入,输出端接一个LED加限流电阻到地,用于观察电平。LED长脚接输出,短脚经1kΩ电阻到GND。

第四步,输入A这端用一个跳线,从5V或者GND切换,模拟高低电平输入。注意不能悬空,悬空时栅极电位不定,输出会乱跳。

我踩过最大的坑是电源轨不通。面包板两边的电源轨是有断点的,很多面包板上下两半的电源轨道中间不连通,插到一半发现电路没电,检查了很久才发现是轨道问题。建议接线前拿万用表二极管档量一下各个位置的电源和地,确认是通的再开始。

4.2 用仿真软件先跑一遍

动手焊之前,强烈建议先用仿真软件把7种门都跑一遍。我自己常用的是LTspice和Falstad Circuit Simulator,前者偏学术更严谨,后者在线打开即用、元件库里有现成的MOS管,对初学者特别友好。

在Falstad里搭非门的步骤很简单:新建电路,放一个PMOS和一个NMOS,把PMOS源极接5V电源正极,NMOS源极接地,两个漏极接在一起输出,两个栅极接在一起输入,再放一个开关做输入控制、一个LED接输出。运行时拨动开关,LED亮灭就能直观验证真值表。

用仿真软件有两个好处:第一,不用考虑实际器件引脚接反、面包板接触不良这些问题,能专心理解电路拓扑;第二,可以直观看到波形的上升沿和下降沿,理解为什么级联门越多越慢。等你仿真过关了再上实物,心里就有底了。

4.3 测试时的四个关键注意点

第一,栅极绝对不能悬空。MOS管的栅极是绝缘的,悬空时电荷积累会导致电位漂移,管子随机导通截止。所有输入引脚要么接高、要么接低,哪怕暂时不用的输入也要通过电阻拉到固定电平。

第二,电源要加去耦电容。在面包板电源轨上就近放一个100nF的瓷片电容,靠近MOS管的位置放,否则开关时电流突变产生的电压波动会让电路逻辑紊乱,尤其是多个门级联时特别明显。

第三,观察输出电平要用万用表和示波器,不要只看LED亮度。LED在1mA和5mA下的亮度差异不大,但电平可能已经偏离正常值。用万用表量一下输出对地电压,高电平高于3.5V、低电平低于0.5V才算合格。

第四,注意输入信号上升沿不要太慢。如果输入是手动拨线,缓慢变化的电压会让输出在过渡区停留较长时间,可能产生多次翻转。有条件的话,用一个带快速沿的信号发生器或者单片机IO口来驱动输入更接近实际使用场景。

4.4 级联之后观察传输延迟

把非门接非门,也就是两级反相器串联,输出应该和第一级输入同相。你用示波器观察会发现,输出波形比输入波形在时间上落后一点,这就是传输延迟。

这个延迟主要由MOS管的寄生电容和米勒效应造成。米勒效应指的是栅极和漏极之间的寄生电容Cgd,输入电压变化时,通过Cgd把变化反馈到栅极,等效增大了输入电容,拖慢了开关速度。级联级数越多,延迟越明显,输出波形也会变圆润。

我试过用四与非门搭的异或门,从输入到输出要经过三到四级门,延迟比单级反相器大好几倍。这在实际设计里很关键:如果做高速数字电路,就要尽量用晶体管级优化的结构,减少逻辑层级。这个现象是学习MOS管绕不开的知识点,搭到这里你已经能亲身体会到了。

5. 常见问题排查速查表

搭建过程中出问题太正常了,我自己前几次也折腾了很久。下面这张表是我反复遇到过的典型问题,整理成速查表,直接对号入座就行。

现象可能原因排查思路与解决
输出固定为高电平下拉NMOS没有导通,或NMOS接反检查NMOS源极是否接地,栅极是否接到输入;用万用表量栅极电压是否随输入变化
输出固定为低电平上拉PMOS没有导通,或PMOS接反检查PMOS源极是否接VDD,栅极接的是否为输入;对比datasheet确认源漏引脚
输出电平偏低,高电平只有3V多PMOS导通不完全,或供电偏低确认PMOS型号和Vgs(th)参数,5V下BS250导通不完全时可换逻辑电平管;检查电源电压
不碰输入时输出乱跳栅极悬空所有输入必须接确定的电平,暂时不用的引脚经电阻接GND
手碰一下MOS管逻辑就变静电影响栅极,或栅极串入干扰栅极到输入端串联一个1kΩ电阻,输入端用10kΩ下拉到地
级联后输出波形明显变慢米勒效应和寄生电容增大减少级联级数,或使用驱动能力更强的门;检查波形上升沿和下降沿
输出驱动LED亮度不足导通压降和限流电阻过大缩小限流电阻到220Ω到470Ω;确认MOS管导通电阻RDS(on)不要太大
通电瞬间管子发热甚至烧毁上下网络同时导通,或接了错误电源断电检查电路是否有VDD到GND直连通路;上电前用万用表蜂鸣档测一下电源两端的电阻

5.1 排查思路讲解

遇到问题先别慌,从头按信号路径分三段排查:第一段是输入到栅极,确认输入信号确实到了MOS管的栅极,且电平正确;第二段是MOS管本身,确认型号、引脚、源漏方向都对;第三段是从输出到检测点,确认LED或万用表接得没错。

用万用表电压档非常有效:断电状态下量每个节点的对地电阻,排查短路和断路;上电后量关键节点电压,和真值表预期对比,很快就能锁定问题节点。这种方法比瞎换管子高效得多。

5.2 有的放矢的调试技巧

我调试的时候有个习惯:先搭一级非门,用万用表验证A=0时输出接近5V、A=1时输出接近0V。这一级通过了,再搭与非门、或非门,用真值表逐行验证。每验证通过一行,就在表上打个勾,这样心里有底,不会越调越乱。

如果你手头有逻辑分析仪或者示波器,也可以把输入端接一个方波信号,观察输出波形是否刚好反相。没示波器的同学不用焦虑,LED加上限流电阻的组合已经能判断大多数问题了,关键是理解每一级应该是什么状态。

5.3 能省则省的搭建技巧

搭7种门,用独立的MOS管来一个个搭,元器件数量会非常多。我实际这么干过,异或门一次用12个管子,面包板接得密密麻麻,查错查得怀疑人生。这里分享一个省力技巧:把已经搭好的模块留出来,用跳线在不同模块之间复用,比如非门模块搭好之后,跟门和或门直接跟它拼接就行,不用每换一种门就重新拆装。

另外一个技巧是线圈颜色管理:电源线用红色,地用黑色,输入用黄色,输出用蓝色。这样一眼就能看出信号路径,排查问题节省一半时间。别嫌麻烦,越复杂的电路越需要颜色规范。

最后再分享一点个人体会

这7种门真正动手搭下来,你收获的不只是"会用MOS管搭电路"这个技能,而是把数字电路从"背符号"变成了"看电路就想得到内部管子怎么工作"的能力。我个人是在搭完与非门那一刻突然通了:原来芯片库里的各种门,都是这些基础结构不断叠加优化出来的。

如果你后面继续深入,可以试着用这些分立元件搭一个RS锁存器,把两个与非门交叉反馈在一起,观察锁存效果;或者搭一个一位半加器,体验用基础门组合实现运算的快感。每个环节都会遇到新的问题,但也正是这些问题,才会让电路知识真正长在脑子里。动手吧,面包板上的世界比课本有趣得多。

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

高通ISP Pipeline全栈解析:从传感器到成像的硬件流水线

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 1:41:23

Buck环路补偿实战:普通运放与跨导运放的设计与选型

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 1:40:35

STM32不是过时单片机,而是物理世界确定性控制语言

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 1:40:07

CD4093可调占空比振荡器设计与实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 1:39:41

片上眼图技术详解:EOM与2D Eye Scan的原理与工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 1:38:35

Allegro高速PCB设计:蛇形走线与差分等长全流程实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华