☰
用MOS管手搓7种基础逻辑门:从非门到异或门全解析
2026/10/6 18:23:37 网站建设 项目流程

逻辑门是数字电路的积木,MOS管则是造积木的砖头。这篇文章想做的事情很直白:不用任何现成逻辑芯片,只靠MOS管在面包板上手搓出7种基础逻辑门,每一条都配上电路图和真值表。作为过来人,我可以负责任地说,当我第一次亲手用两个MOS管拼出非门,再接上LED看到输出翻转时,“芯片内部到底是什么”的疑惑瞬间消散了一大半。这篇文章适合学数字电路有点犯迷糊的同学,也适合所有想亲自验证CMOS原理的电子爱好者。

1. 动手之前:为什么我坚持用MOS管手搓逻辑门

1.1 用现成芯片不香吗?香,但学不到真东西

直接买74HC00,里面集成了四个与非门,插上就能用,从实用角度看当然更高效。但问题在于:芯片是个黑盒子,你只知道引脚功能,不知道内部那层硅片上到底发生了什么。逻辑门是数字电路的砖,MOS管是造砖的原料,如果你想真正搞懂“砖头”是怎么从“泥巴”里烧出来的,就得从MOS管开始。

我自己刚学数字电路时也有个误区,总觉得真值表背下来就行。直到某次做项目被问到“CMOS与非门里面几个管子、怎么接的”,我才发现单纯背真值表根本不够。从那以后我给自己定了个规矩:凡是学过的逻辑门,都必须能在面包板上用分立MOS管搭出来,眼见为实。这次一口气把七个基础门全搭了一遍,收获远超预期。

当然,用分立管子搭逻辑门并不是为了替代芯片。它的价值在两点:一是原理验证,CMOS数字IC内部用的就是这套互补开关网络,搭一次胜过背十遍书;二是故障分析,当你亲手搭的电路出了问题,你去查线、测电压、判断管子好坏的过程,比任何仿真软件都能锻炼实战能力。所以我建议把它当成一个“原理体检项目”来做,而不是追求实用替代。

1.2 材料清单与MOS管选型

动手之前,先把器件选对。我用的是2N7000作NMOS、BS250作PMOS。选这两个型号主要有几个考虑:

第一,它们是逻辑电平MOS管,2N7000的开启电压Vth典型值在1V到2V之间,用5V电压就能可靠开启;如果换成某些工业级大功率MOS管,Vth可能就要4V以上,3.3V电压根本驱动不了,实验会卡在第一步。第二,这两款的导通电阻都在几欧到十几欧量级,带个LED负载毫无压力,不会出现输出被负载拉垮的问题。第三,都是To-92直插封装,三只脚间距标准,插面包板非常顺滑。

BS250还要多说一句,它是P沟道,很多人第一次用P沟道容易犯迷糊:导通条件是G极比S极电压低超过阈值,也就是Vgs为负。它的漏极电流方向和NMOS相反,S极通常接VDD。如果你手头没有BS250,也可以用BSS92、TP0610之类的P沟道逻辑电平管,参数接近就能用。

材料清单如下表,这些都能在常见电子元件店铺一站式买到,总成本不到二十块。

器件/工具型号或规格数量用途
NMOS管2N7000至少10只构成下拉网络
PMOS管BS250或BSS92至少10只构成上拉网络
面包板830孔1块搭建平台
面包板电源模块5V输出1个给电路供电
拨码开关2位以上2个模拟输入高低电平
LED红色或绿色8个指示输入输出状态
电阻330Ω到1kΩ10个LED限流
跳线公对公若干连线
万用表普通数字万用表即可1块测量验证

工具方面,万用表必须有,至少要用直流电压挡和通断挡;示波器有的话更好,能直观看到开关波形,没有也不影响实验,用万用表和LED完全能验证逻辑功能。

2. MOS管快速扫盲:三个极、两个条件、一个开关模型

2.1 三个极到底怎么认

MOS管有栅极G、漏极D、源极S三个极。栅极是电压控制端,它和下面的导电沟道之间隔着一层极薄的氧化硅绝缘层,所以栅极几乎不取电流,这也是MOS管输入阻抗极高的原因。漏极和源极在物理结构上往往是对称的,实际使用时靠外加电压极性来判断哪个是S哪个是D。以2N7000为例,把平面对着自己、字符面朝前,从左到右依次是S、D、G,但不同型号排布不一定相同,所以拿到管子第一步永远是查数据手册,不要凭记忆。

对于NMOS,电路里通常把S接GND,D通过负载接正电源,当G比S高出的电压Vgs超过阈值Vth时,N型导电沟道形成,D和S之间像开关一样闭合。对于PMOS,电路里通常把S接VDD,D通过负载接GND,当G比S低出的电压达到阈值,也就是Vgs小于负的Vth时,P型导电沟道形成,开关闭合。记住这个“NMOS低端接地、PMOS高端接电源”的接法,后面所有电路图都不会乱。

2.2 为什么逻辑门必须成对出现

如果只用一个NMOS当开关,能不能做一个简单的反相器?能,但效果很差。设想A接NMOS的G,输出从D取,S接地,那A为高电平时NMOS导通,输出被拉到0V,没问题;但A为低电平时NMOS关断,输出悬空,既不是高也不是低。要让它输出高,还得在输出和VDD之间接一个大电阻做上拉,可上拉电阻会跟NMOS的导通电阻构成分压,输出低电平永远到不了0V,而且功耗可观。

这就是互补CMOS结构出现的根本原因:每个逻辑门都同时配置PMOS上拉网络PUN和NMOS下拉网络PDN,输入信号同时控制两者,保证任意时刻只有一个网络导通。输出为高时PMOS网络导通把输出拉到VDD,输出为低时NMOS网络导通把输出拉到GND,输出永远不会悬空,也没有持续的直通电流。静态功耗几乎为零,输出摆幅满电源轨,逻辑电平清晰可靠,这就是为什么现代数字芯片绝大多数都采用CMOS工艺。

2.3 搭建逻辑门最容易踩的三个坑

第一个坑是栅极悬空。MOS管栅极输入阻抗极高,悬空时一点点电荷就能让它不确定导通还是关断,逻辑功能完全不可控,甚至会上下管同时导通造成短路。实验中所有输入都必须明确接高或接低,这句话值得写三遍。

第二个坑是管脚认错。前面说过不同型号的管脚排布不同,特别是P沟道的BS250,管脚定义跟2N7000不一样,拿万用表二极管挡测一下G和其他脚之间,发现有电压读数的那只脚就是G,然后再区分D和S最稳。

第三个坑是拿模拟思维看数字。MOS管本质上是个电压控制的可变电阻,导通时电阻不为零,关断时也有微弱的漏电流。在高速开关里这些参数影响很大,但在我们这种低速逻辑门实验中,只要管子工作在“充分导通”或“完全关断”两个状态,这些非理想效应几乎可以忽略。这也是为什么实验电压要选在5V而不是1.8V,电压越高逻辑电平裕量越大,越不容易出问题。

3. 七个逻辑门电路图与真值表

3.1 非门(NOT):最简结构但足以说明一切

非门是标准CMOS逻辑门的基础架构,整个结构只有两只管子:上面的PMOS接VDD,下面的NMOS接GND,输入A同时接到两个管的栅极,输出Y从两只管子中间的节点取出来。逻辑功能是一句话:输出跟输入反相,输入0输出1,输入1输出0。

VDD │ ┌───┴───┐ │ PMOS │ └───┬───┘ │ A ───┤ ├────── Y A ───┤ │ ┌───┴───┐ │ NMOS │ └───┬───┘ │ GND

工作过程分成两半来看。当A为0V时,NMOS的Vgs=0V,低于阈值,关断;PMOS的S接VDD,G接0V,Vgs=-5V,满足导通条件,输出Y被PMOS拉到接近VDD,Y=1。反过来,A为5V时,NMOS导通,把输出拉到GND;PMOS的Vgs=0V,关断,Y=0。两只管子一个开一个关,输出电平永远不会悬空。

真值表也很简单:

AY
01
10

这里我建议搭完以后把万用表红表笔放在Y节点,拨动输入开关,看电压是不是在5V和0V之间干净地跳变。如果出现中间电压,比如2.5V,说明很可能两只管子同时导通了,要检查输入是不是悬空。

3.2 与非门(NAND):串并联结构的第一次交锋

与非门在逻辑上就是“先与后非”,A和B都为1时输出0,其它情况输出1。它在CMOS里的接法是:上面两只PMOS并联,下面两只NMOS串联。输入A控制P1和N1,输入B控制P2和N2。

VDD ──┬── P1(S) ── P1(D) ──┐ │ ├── Y └── P2(S) ── P2(D) ──┘ A ── P1(G), N1(G) B ── P2(G), N2(G) Y ── N1(D) N1(S) ── N2(D) N2(S) ── GND

控制关系要顺着导通路径梳理。当A和B都为高时,N1和N2都导通,NMOS串联路径形成完整通路,把Y拉到GND;同时P1和P2的Vgs都是0V,都关断,所以输出为0。只要A、B中有一个为低,对应的那个NMOS就关断,串联通路断开;而对应PMOS导通,输出被拉到VDD,Y=1。

ABY
001
011
101
110

实际搭建时,NMOS串联那部分最容易接错。N1的源极S不是直接接地,而是接N2的漏极D,N2的源极S才接地。很多人第一次搭会把两个NMOS都直接接地,结果不管输入怎么变输出都是0,这个坑我踩过,后来养成习惯:搭串联结构时先在纸上把D和S的级联路径画清楚,再上板子。

3.3 或非门(NOR):把串并联反过来就是另一番天地

或非门是“先或后非”,A和B都为0时输出1,其它情况输出0。CMOS结构跟前一个正好镜像:上面两只PMOS串联,下面两只NMOS并联。

VDD ── P1(S) ── P1(D) ── P2(S) ── P2(D) ── Y A ── P1(G), N1(G) B ── P2(G), N2(G) Y ── N1(D) Y ── N2(D) N1(S) ── GND N2(S) ── GND

当A和B都为低时,N1和N2都关断,NMOS并联网络不起作用;P1和P2都导通,PMOS串联路径从VDD到Y完全接通,输出高电平。只要任意一个输入为高,对应的NMOS就导通,把Y拉到GND;同时对应PMOS关断,串联路径断开,输出低。

ABY
001
010
100
110

与非门和或非门搭完之后可以放在一起对比看:一个的关键在下拉串联,一个的关键在上拉串联。你亲手搭过一次,就能明白为什么CMOS电路设计里串联管子越多,速度越慢,因为等效电阻是叠加的。这也是进阶学习时理解门延迟的重要起点。

3.4 与门(AND)和或门(OR):组合出来的基础门

前面已经搭出NAND和NOR,那AND和OR就变得非常简单:在它们输出端再接一个非门就行。与非门后面接非门,得到与门;或非门后面接非门,得到或门。从电路上看,就是一个三级的逻辑网络。

以与门为例:输入A、B先进入与非门得到中间信号S=NAND(A,B),S再进入非门,最终输出Y=NOT(NAND(A,B))=A·B。因为非门的输入阻抗高、输出阻抗低,还顺便起到隔离和整形的作用,所以这种组合方式在实际电路里很常见。

ABANDOR
0000
0101
1001
1111

搭建时有一个很实用的做法:把前面搭好的与非门模块和或非门模块当作“半成品”,不要拆掉,直接在输出端再接一套非门。这样一方面验证了逻辑门的级联思想,另一方面也为后面异或门用多个与非门拼接打下基础。

3.5 异或门(XOR):最复杂也最有意思的一个

异或门的逻辑是“相同为0,不同为1”,也就是只有A和B不相等时,输出才为1。它是七个门里唯一不能直接用串并联结构独立完成的基础门,需要多级组合来实现。适合初学者的方案是用四个与非门拼出来,逻辑表达式是:

Y=(A NAND (A NAND B)) NAND (B NAND (A NAND B))

搭建思路是:先用一个与非门同时接收A、B,产出一个中间信号S=NAND(A,B);然后把A和S送进第二个与非门,B和S送进第三个与非门;最后把这两个门的输出再接进第四个与非门,得到的就是XOR。整个过程需要16个MOS管,数量多但路径清晰,很适合验证逻辑。

如果管子够用,还有更省的传输门方案,只需要8只管子:先用一个反相器把A变成A',再用一个反相器把B变成B',然后通过两个传输门做二选一。传输门本质上是一个NMOS加一个PMOS并联,靠控制信号的高低压来通断信号。当A=0时,送入B的信号通过第一个传输门到达输出;当A=1时,送入B'的信号通过第二个传输门到达输出。这不就实现了Y在A=0时等于B、A=1时等于B'吗?正好就是异或逻辑。

ABY
000
011
101
110

我建议第一次尝试时用四个与非门方案,因为它用到的都是你前面已经验证过的模块,好排查问题。传输门方案等逻辑验证通过后再玩,理解一下双向开关的用法。

3.6 同或门(XNOR):异或门的“反向孪生”

同或门的逻辑是“相同为1,不同为0”,正好是异或门的反相。实现方式就是在异或门输出端再接一个非门,把XOR的输出再翻转一次。如果你已经搭好异或门,那这个就属于白送的功能。

ABY
001
010
100
111

这里有一个值得思考的细节:从真值表看,同或门就是异或门取反,但在CMOS集成电路里,设计者通常会直接在内部搭一个紧凑的XNOR结构,而不是先做XOR再接反相器,因为这样能省管子、省面积。你在面包板上用分立元件做“XOR加NOT”,理解的是逻辑关系;芯片内部优化,理解的是工程权衡。两个层面都有价值。

七个门全部搭完之后,把真值表合在一起看,会发现门与门之间存在非常清晰的规律:与门取反就是与非门,或门取反就是或非门,异或门取反就是同或门。数字电路的学习本质上就是建立这张表的过程,有了表,再复杂的组合逻辑也能拆解成这些基本单元。

4. 实操实录:从面包板到第一个稳定输出

4.1 第一步:先搭非门,建立信心也建立标准

我的建议是永远从非门开始,因为它只有两只管子,五分钟搞定,却能把电源、输入、输出、测量这四条线全部走通。上电之前先把VDD和GND两根电源轨检查一遍,万用表通断挡确认没有短路,然后用跳线把两个拨码开关的一端分别接VDD,另一端接GND,中间抽头作为输入信号A。这样做的好处是输入高低电平非常明确,不会出现悬空。

接着把2N7000插到面包板中间,G接输入A,S接GND,D接输出节点;再把BS250的S接VDD,G也接输入A,D接同一个输出节点。输出端接一个LED到GND,串联一个330Ω到1kΩ的限流电阻。上电以后拨动开关:输入低电平时LED亮,输入高电平时LED灭,非门逻辑就验证通过了。

测量的时候有个小技巧:不要只量LED亮不亮,要用万用表量一下输出节点的实际电压。非门输出高时应该接近5V,输出低时接近0V。如果高电平只有3.8V,说明PMOS没有完全导通,或者电源压降太大;如果低电平有1V以上,说明NMOS导通电阻偏大,或者地线接触不良。用数据说话比看灯亮靠谱得多。

4.2 第二步:拆解与非门和或非门的搭建差异

非门验证通过后,开始搭与非门。四个管子在面包板上的布局建议是:两个PMOS放在最上面一行,紧挨VDD轨;两个NMOS放在下面,紧挨GND轨。输入A和B分别从左右两侧送进来,这样导线交叉最少,不容易短路。

NMOS串联部分按前面画的路径来:第一个NMOS的D接输出节点Y,S接到第二个NMOS的D,第二个NMOS的S接GND。PMOS并联部分:两个PMOS的S都接VDD,D都接同一个输出节点Y。A同时接P1的G和N1的G,B同时接P2的G和N2的G。接线时我习惯用不同颜色的跳线区分:红色接电源,黑色接地,黄色接输入,蓝色接输出,这样排查起来能省一半时间。

或非门的接法和与非门刚好反过来:PMOS串联,NMOS并联。搭的时候不要想着“把与非门的图翻转一下就行”,建议重新对着电路图一根一根接,因为面包板的物理布局不可能直接镜像。我踩过的坑是:搭完或非门后忘记把PMOS串联路径的中间节点接对,结果输出永远高电平。后来习惯是每接一根线,就在电路图上划掉一根,保证图实一一对应。

4.3 第三步:异或门的两种搭法与实测感受

异或门用四个与非门方案时,最好先把前面搭好的单个与非门当作“积木块”使用。如果面包板面积足够,就保留四个独立的与非门区域,每个区域四只管,然后按逻辑表达式把中间连线接好。连线顺序建议从输入端开始:先给两个原始输入各接一个与非门,再把两个中间信号分别接到新的与非门上,最后把两个结果汇入第四个与非门。

实测时重点验证两组最容易出错的组合:A=0、B=1时Y应为1;A=1、B=0时Y也应为1。这两组需要两级以上的门同时翻转,如果出现输出不定或者电平偏弱,多半是中间某个门的NMOS下拉和PMOS上拉动作不同步。这时候不要急着改接线,先用万用表量中间节点电压,判断是哪一级出了问题。

传输门方案我后来也试了一次,搭建更清爽:两个反相器加两个传输门,总共八只管。传输门的关键是NMOS和PMOS的S和D要相互联通,一个管的S接另一个管的D,形成双向通路,控制信号来接栅极。虽然它比四与非门方案省管子,但对初学者来说,判断“什么时候用A控制、什么时候用A'控制”还是有点绕,不如先搭四与非门来得踏实。

4.4 用LED和万用表做完整功能验证

所有门都搭完后,我习惯做一个统一的验证流程:先拨动输入开关组合出真值表里的每一种状态,观察对应LED亮灭,再拿万用表确认输出电平。输入状态的组合顺序建议按00、01、10、11来,也就是先让A从0变1,再让B从0变1,这样能顺便观察前一级变化对后一级的影响。

如果手头有双通道示波器,可以把A接到CH1,输出Y接到CH2,把A的输入改成一个1Hz左右的方波信号源,另一路B用开关设定高或低。这样能看到输出波形的翻转沿,能直观理解门的传播延迟。没有示波器也不用纠结,LED加万用表足够验证所有逻辑正确性。

这里再强调一遍:实验全程不要让任何MOS管的栅极悬空。拨码开关拨到中间位置其实也算一种悬空状态,所以最好用那种带明确高/低档位的开关,或者干脆用跳线帽去插VDD或GND,确定性更强。

5. 常见问题与排查技巧实录

5.1 故障排查速查表

搭建过程中我整理了遇到过的问题和对应的排查思路,整理成一张速查表,希望你用不上但收藏好。

现象可能原因排查与解决
输出始终为高下拉NMOS不导通检查NMOS的G是否接对输入,S是否真的接地;用万用表二极管挡确认管子类型
输出始终为低上拉PMOS不导通检查PMOS的G是否接对输入,S是否接VDD;确认是P沟道管而不是N沟道
输出在2V到3V之间上下管同时导通或输入悬空检查输入是否悬空;测量两管Vgs是否都满足导通条件
输入高时LED暗NMOS导通电阻偏大Vth过高的管子不适合5V逻辑;换2N7000等逻辑电平管
管子烫手VDD到GND直通立刻断电,检查上下网络是否同时导通,排除接线短路
逻辑偶发错乱电源去耦不充分在VDD和GND轨之间加0.1uF陶瓷电容;检查面包板电源轨接触
某只管子换上去就不工作静电击穿或脚位判断错换新管子前先测G极,不要在通电状态下插拔管子

5.2 静电防护和器件保护

MOS管栅极的氧化层非常薄,静电电压上千伏就能把它击穿,这是实际工作中常见的情况。虽然2N7000和BS250这类小功率管内部通常集成了保护二极管,但实验时还是要养成好习惯:每次拿起管子之前先摸一下水管或接地金属,把人体静电放掉;管子不从包装里一次性全倒出来,用一只拿一只;焊接或者插拔时给烙铁接好地线。

还有一种情况要特别注意:禁止在电路通电的情况下插拔MOS管。一瞬间的接触抖动可能导致栅极悬空,输出状态不可控,甚至造成直通短路。稳妥的做法是每次改电路前先关掉电源,把输入都拨到明确的低电平,再接好线、检查无误后重新上电。

5.3 进阶现象:米勒效应、寄生电容和栅极电阻

如果只用LED和开关做低速验证,你几乎感觉不到MOS管开关的速度限制。但只要换成几十kHz以上的方波信号,立刻能看到输出波形变得圆润、有延迟,这就是栅极寄生电容和米勒效应在起作用。栅极与漏极之间有个很小的寄生电容Cgd,开关瞬间输出端电压变化会通过这个电容反馈回栅极,产生一个“米勒平台”,延长开关时间。很多MOS管驱动电路里专门在栅极串一个小电阻来抑制这个效应。

在逻辑门实验里,这个现象不需要刻意解决,但理解它有实际意义:为什么单片机不能直接驱动大功率MOS管?为什么驱动芯片都强调峰值电流?本质都是要在极短时间里给栅极电容充放电。你把逻辑门搭到能工作只是第一步,如果能用示波器观察到开关沿的斜率,再对比加不加栅极电阻的差异,那这趟实验的价值就直接翻倍了。

6. 再往前走一步:七个门之外还能做什么

七个基本门全部搭完后,可以继续挑战几个组合逻辑模块。比如用四个与非门做一个半加器,A和B相加,S输出异或结果,C输出进位,这正好用到我们搭过的异或门和与门,真值表也现成:只有A和B都为1时进位C才为1。这个实验能让你直观看到“运算器”的最基础单元不是魔法,就是MOS管的开关网络组合而已。

还可以尝试用两个与非门搭一个RS锁存器,这是最基础的时序逻辑单元。把与非门的输出交叉反馈到另一个门的输入,你会发现电路开始具备“记忆”能力,哪怕把输入断开,输出状态也能保持。这一下就跨出了组合逻辑的范畴,进入时序逻辑的大门,而这一切依然只需要前面这四只管子。

我个人在这套实验里最深的体会是:数字电路的学习如果只停留在真值表和逻辑表达式层面,总有点隔靴搔痒。当你亲手用MOS管把非门、与非门、异或门一层一层搭起来之后,再看任何芯片的数据手册、任何复杂的数字系统框图,脑子里会自动浮现出管子导通关断的画面。这种感觉很难用文字描述,但一旦有了,就很难再忘记。建议你从非门开始,耐心搭完这七个门,每搭一个都量一量电压,出问题就顺着节点查,这套基本功练扎实了,后面无论是学单片机还是学嵌入式,都会顺畅得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询