从零搭建7种MOS管逻辑门电路:附真值表与电路图

发布时间:2026/10/7 23:08:09
从零搭建7种MOS管逻辑门电路:附真值表与电路图
从零开始用MOS管搭建7种基础逻辑门电路附真值表与电路图经常有朋友问我学数字电路是不是一定要先背一堆芯片型号从74LS00、CD4011开始我的建议是如果你真想弄懂“门电路”到底是怎么工作的与其拿现成的逻辑芯片做黑盒子实验不如自己用MOS管搭一次逻辑门。用几个管子加电阻把“与、或、非”从原理层面“焊”出来之后再回去看那些芯片内部框图会有种一下通透的感觉。这篇文章我从最底层的MOS管开关特性讲起带着你用单个N沟道、P沟道增强型MOS管搭出7种基础逻辑门非门、与非门、与门、或非门、或门、异或门、同或门。每种门都会给出真值表、电路结构说明和搭建时的关键注意事项也顺手把MOS管导通条件、米勒效应、寄生电容这些绕不开的“坑”解释清楚。适合刚接触模电数电的新手也适合想复习CMOS门电路原理的工程师。整个搭建过程只要面包板、几只MOS管和电阻就能完成不需要特殊仪器。1. 内容整体设计与思路拆解1.1 为什么用MOS管搭逻辑门从开关原理说起MOS管的全称是金属-氧化物-半导体场效应管平时我们接触最多的是增强型N沟道和P沟道两种。它有三个极栅极Gate、源极Source、漏极Drain对应英文缩写就是G、S、D。对N沟道增强型MOS管来说当栅源电压Vgs大于开启电压Vth一般2N7000约1.5~2.5V时漏极和源极之间会形成导电沟道MOS管导通当Vgs低于Vth时管子截止。P沟道增强型MOS管则相反Vgs小于负的Vth比如AO3401约-1V以下时导通也就是栅极相对源极要“更负”电流才走得通。这个“用电压控制通断”的特性让它天然适合做开关。数字电路里的0和1本质就是两个电压区间低电平比如0V和高电平比如3.3V或5V。如果我们定义一个约定高电平代表逻辑1低电平代表逻辑0那么只要用MOS管组成特定网络让输出端的电压跟随输入做逻辑运算逻辑门就诞生了。这也是CMOS互补金属氧化物半导体的基础——一对N管和P管组合使用一个负责“拉低”输出一个负责“拉高”输出几乎不产生静态功耗。我在搭电路前习惯先画一张“开关等效图”把每个MOS管看成一只由栅极电压控制的单刀开关。N管是“高电平闭合”的开关P管是“低电平闭合”的开关。这样看电路图就会简单很多——后面每一个逻辑门都是这些开关的组合。1.2 逻辑门的本质上拉网络与下拉网络任何标准CMOS逻辑门内部都可以拆成两部分上拉网络PUN和下拉网络PDN。上拉网络由P沟道MOS管组成连接电源VDD和输出端负责在输出需要为1时“把输出拉到高电平”下拉网络由N沟道MOS管组成连接输出端和地GND负责在输出需要为0时“把输出拉到低电平”。两个网络互补同一时刻只能有一个网络导通绝不允许同时导通否则电源到地直接短路不是烧管子就是发热严重。以最简单的非门反相器为例输入为0时P管导通、N管截止输出被上拉到VDD即逻辑1输入为1时P管截止、N管导通输出被下拉到GND即逻辑0。这种互补设计是CMOS逻辑门功耗低的关键——除了切换瞬间VDD到GND之间没有直流通路。明白了这个思路后面搭与非门、或非门就顺理成章了。所谓“与非”就是先做“与”再做“非”我们不需要真的搭一个与门再串一个非门而是直接调整上拉和下拉网络的串并联结构下拉网络串联时两个输入都为1才能导通对应“与”关系再通过上拉网络互补实现取反就得到与非门。同理下拉网络并联时任何一个输入为1就能导通对应“或”关系取反后就是或非门。1.3 实验准备零件、工具和测试方案搭这7种门电路我建议准备以下材料N沟道增强型MOS管比如2N7000TO-92封装Vth约2.1V适合5V供电、P沟道增强型MOS管比如AO3401SOT-23封装Vth约-1.2V适合3.3V或5V供电、10kΩ电阻若干、面包板、杜邦线、5V电源USB供电即可以及一个万用表测电压或者LED加限流电阻做输出指示。如果手头有示波器更好能直接观察波形边沿和米勒效应但搭静音逻辑门纯用万用表也行。2N7000和AO3401是实验最常用的两管前者N型后者P型价格便宜且参数覆盖5V系统。要注意的是SOT-23封装的AO3401引脚间距很小面包板插起来费劲可以焊一块小的转接板再用杜邦线引出。我习惯在每个MOS管的栅极都串一个1kΩ左右的电阻防止手摸时静电或是信号源瞬间过流把栅极打坏。MOS管栅极输入阻抗极高很容易被静电击穿这是新手最容易忽略的点。测试逻辑门时输入信号我直接用了5V和0V两根线手动跳线模拟0和1输出端用LED串联1kΩ电阻观察亮灭。LED亮代表输出高电平灭代表低电平。对于异或门这类复杂门电路稍多建议每搭好一个小模块就测一次别等全部搭完再排查不然出错后根本不知道问题在哪儿。2. 核心细节解析与实操要点2.1 NMOS和PMOS的开关模型导通条件、体二极管、寄生电容在搭电路前必须把MOS管的“非理想特性”搞明白不然电路工作不稳定你会一直怀疑是不是接线错了。第一个非理想因素是体二极管。MOS管在制造时源漏之间天然存在一个寄生二极管N管是源极到漏极方向P管则相反。如果电路接线不小心让电流走这个二极管输出电平就会异常比如该拉低的输出被外部电压钳位在0.7V左右。实验时一定要注意源极和漏极的接法别把管子当双向开关用——MOS管的“源”和“漏”在原理图中虽然看起来对称但普通分立器件内部已经接好了体二极管方向接反了会出问题。第二个非理想因素是寄生电容。栅极与源极之间存在Cgs栅极与漏极之间存在Cgd漏源之间还有Cds。这些电容很小几皮法到几十皮法但频率高了以后影响巨大。最典型的案例就是米勒效应当MOS管在开关过程中栅极电压变化会通过Cgd耦合到漏极漏极电压也在大幅变化导致栅极的有效输入电容被放大结果就是栅极电压上升变慢开关速度变慢。在低频手动测试逻辑门时寄生电容的影响几乎看不出来但如果你用单片机PWM去驱动后级电路就会发现波形边沿有“拖尾”这就是米勒效应在捣乱。第三是导通电阻Rds(on)。N管导通后漏源之间不是理想短路而是一个几十毫欧到几欧姆的电阻。对逻辑门来说输出高电平时要靠上拉P管把输出拉到接近VDD输出低电平时要靠下拉N管把输出拉到接近GND。如果导通电阻太大负载电流稍大一点输出电平就会偏离电源轨。好在逻辑门后级通常是高阻抗输入电流极小这个影响可以忽略但你如果接到LED或者蜂鸣器上就要注意电压跌落。2.2 逻辑电平与阈值Vgs、Vth与“0/1”的边界逻辑门的电压标准不是绝对的0V和VDD而是一个范围。以5V供电为例常见TTL标准中输入低电平低于0.8V输入高电平高于2.0VCMOS标准下输出高电平接近VDD低电平接近0V。我们的电路使用CMOS结构所以输出基本上能满幅摆动。这里有个关键参数阈值电压Vth。N管的Vth是正数例如2.1VP管是负数例如-1.2V。当输入电压在Vth附近徘徊时MOS管处于半导通状态电流不完全截止输出既不接近电源轨也不接近地这个状态对逻辑门来说是致命的。所以设计电路时要保证输入电平离阈值足够远输入0就是0V输入1就是5V绝对不能让输入悬空。悬空输入会被静电和噪声干扰浮动到阈值附近导致输出混乱甚至震荡。我之前见过有人把输入端不接只用万用表测输出数值在2~3V之间乱跳就是这个原因。还有一个容易忽略的点PMOS的栅源电压是相对源极而言的。在搭建P管时源极一般接VDD所以要让P管导通栅极电压要比VDD低至少|Vth|也就是栅极接GND0V时导通接VDD时截止。这就是CMOS非门中“输入为0P管导通”的原因。一定不要把P管的源极和漏极接反否则体二极管会正向导通逻辑关系全乱。2.3 搭建顺序与电路图阅读方法我建议先把一个个MOS管当成独立的开关练习在面包板上单独接一个N管栅极接5V源极接地漏极串LED到5V你会看到LED亮栅极接地LED灭。再单独接一个P管源极接5V栅极接地漏极串LED到地LED亮栅极接5VLED灭。这两个实验花不了五分钟但能把N管高压导通、P管低压导通这个“魂”深深印在脑子里。后面看电路图时只要心中有“开关等效”就不会被原理图绕晕。比如与非门的原理图上两个N管串联两个P管并联你把它翻译成开关语言只有两个N开关都闭合输入A1且B1时输出才被拉到地同时两个P开关至少有一个闭合A0或B0时输出被拉到电源。等一下这中间会不会打架当A1、B0时N管中有一个截止下拉路径断了P管中有一个导通上拉路径通了输出就是1正好对应“与非”的结果0 1 - 1。设计CMOS逻辑门时上拉和下拉网络天然互补所以不用手动避冲突只要你按照规则画就不会短路。3. 实操过程与核心环节实现7种逻辑门逐一搭建3.1 非门NOT非门只有一个输入一个输出输出是输入的取反。真值表如下输入A输出Y0110逻辑表达式Y A电路连接方式上拉网络一个P沟道MOS管P1源极接VDD漏极接输出Y栅极接输入A。下拉网络一个N沟道MOS管N1漏极接输出Y源极接地栅极接输入A。原理A0时P1导通N1截止Y被拉到VDD逻辑1A1时P1截止N1导通Y被拉到地逻辑0。这个电路是所有CMOS逻辑门的“细胞”必须焊得滚瓜烂熟。实际接线时2N7000的引脚排列为G栅极、D漏极、S源极不同的封装引脚排列不同务必查数据手册。2N7000在面包板上的布局建议管脚朝自己平面朝下引脚从左到右通常是S、D、G但也有的型号是G、D、S所以别靠记忆测量一下最稳。你甚至可以用万用表二极管档判断N管的源漏之间有一对二极管特性黑表笔接源极、红笔接漏极时会有0.5V左右压降反过来不通这就是体二极管顺带还能帮你确认引脚。3.2 与非门NAND与非门是两个输入的“与”再取反。真值表输入A输入B输出Y001011101110逻辑表达式Y (A·B)电路连接方式下拉网络两个N管N1、N2串联。N1的漏极接输出YN1的源极接N2的漏极N2的源极接地。N1栅极接AN2栅极接B。上拉网络两个P管P1、P2并联。P1和P2的源极都接VDDP1和P2的漏极都接输出Y。P1栅极接AP2栅极接B。原理只有A1且B1时N1、N2同时导通下拉通路从Y到地导通输出0其他情况下至少有一个N管截止下拉通路断开而至少有一个P管导通上拉通路把Y拉到VDD输出1。这就是与非门的完整CMOS结构。实际搭建时要注意串联的两个N管容易接错顺序。我的记法是越靠近输出端的管子它的漏极接输出越靠近地的管子它的源极接地而它自己的漏极接上一级管子的源极。由于2N7000的源漏在外观上无法区分只能靠体二极管我通常先把管脚用万用表量好再做标记以免把源极和漏极接反。接反后最有可能出现的现象是无论输入怎样输出都为0或者都为1因为体二极管的钳位作用破坏了逻辑关系。3.3 与门AND与门真值表输入A输入B输出Y000010100111逻辑表达式Y A·B电路连接方式与非门输出端再接一个非门。即先将A和B接到一个与非门结构与上面完全一致再将该与非门的输出接到一个非门的输入非门的输出就是与门结果。原理与非门的输出是(A·B)再取反就得到了A·B。这是标准的“两级门”组合方式。如果你嫌两个门级联麻烦也可以直接设计“与门”的CMOS结构但需要更复杂的电路比如用传输门新手阶段用“与非门非门”最直接。实际体验中级联带来的唯一小问题是信号经过两级门会有一点延迟但在低频测试中完全无感。你甚至可以用一块面包板把与非门和非门做在相邻区域中间用一根杜邦线连接。接好后建议先测与非门输出再测与门输出确认每一级都对。如果直接测最终输出发现不对最难排查的是中间节点必须借助万用表逐级测量。3.4 或非门NOR或非门真值表输入A输入B输出Y001010100110逻辑表达式Y (AB)电路连接方式下拉网络两个N管N1、N2并联。N1的漏极接输出YN1的源极接地N2的漏极接输出YN2的源极接地。N1栅极接AN2栅极接B。上拉网络两个P管P1、P2串联。P1的源极接VDDP1的漏极接P2的源极P2的漏极接输出Y。P1栅极接AP2栅极接B。原理或非门的逻辑是“有一个1就输出0”。对应到电路上N管并联只要A1或B1至少一个N管导通输出就被拉到地为0。两个P管串联只有A0且B0时P1和P2都导通输出才被拉到VDD为1。这与“或非”的含义完全一致不是“或”只有全部为0才是1。搭建串联P管时同样要注意顺序上面的P管源极接VDD漏极接下面P管的源极下面的P管漏极接输出。P管AO3401是SOT-23封装引脚间距小建议外加小PCB转接板避免在面包板上腿挨腿短接。另外由于P管串联在电源和输出之间当导通时电阻是两个Rds(on)之和输出高电平会略微下降带动LED这类负载时亮度可能比非门稍弱这是正常现象。3.5 或门OR或门真值表输入A输入B输出Y000011101111逻辑表达式Y AB电路连接方式或非门输出端再接一个非门。先搭建一个标准或非门结构与3.4一致再将该或非门的输出接到一个非门3.1结构的输入端取反后就是或门。原理或非门输出是(AB)非门再取反得到AB。之所以不用直接或门结构是因为CMOS最自然的拓扑是先形成“反相”关系与非、或非再通过额外反相器“掰正”。这也是为什么市场上与门芯片通常由与非门加反相器构成或门芯片类似。搭建时可以把多个非门共用在一个VDD和地线上面包板的两条电源轨正好用来做总线。我习惯把每一级门的输出用不同颜色的杜邦线区分红色输出、蓝色输入、黑色地线这样排查问题能省一半时间。测试或门时注意观察输入悬空情况。如果某个输入引脚悬空MOS管栅极会感应噪声表现为输出随机跳变。所以未使用的输入端必须固定接高或接低不能悬空。3.6 异或门XOR异或门真值表输入A输入B输出Y000011101110逻辑表达式Y AB AB A⊕B电路连接方式基于基本门组合用两个非门取反A和B再用两个与门分别计算AB和AB最后用一个或门将两者合并。如果你已经有了前面搭好的非门、与门、或门用杜邦线连起来就是完整的异或门。等效的表达式也可以写成(A·B) · (AB)意思是“与非”和“或”的结果再与起来。这个结构可以用与非门搭其中一个输入接到A另一个输入接B得到与非输出再用A和B做或门得到或输出最后把两个中间输出接到另一个与非门得到异或。原理没什么神秘的重点是体验“用基础门组合成新逻辑”的思考过程。手工搭建时最少可以用5个门实现异或两个非门、两个与门、一个或门或者4个与非门。我建议新手先搭第一种门多但直观。等熟练后再尝试用4个与非门拼会更有趣。搭建异或门很容易碰到一个经典问题多个模块共地时接触不良。因为每个门都有独立的地回路如果面包板的地轨某段插接不良输出就会错乱。测试时用万用表先量面包板两端的地轨电阻确保小于0.5Ω再开始测逻辑。3.7 同或门XNOR同或门真值表输入A输入B输出Y001010100111逻辑表达式Y A·B AB A⊙B电路连接方式最简单的是在异或门输出端再接一个非门。把3.6搭好的异或输出Y_xor接到一个非门的输入端输出即为同或。另一种方式是直接用四个与非门构建同或门表达式为Y ( (A·B) · (A·B) )这个结构稍微复杂一些但能进一步锻炼门级变换能力。同或门在我们生活中常见的应用是“比较器”两个输入相等时输出1不相等输出0。可以用它来判断两个开关状态是否一致。搭好以后你可以做个小试验用两个按键分别接A和BLED亮代表相同灭代表不同立刻能感受到逻辑门“有实际用途”。如果你已经搭完了前面的门同或门的搭建花费不到三分钟。不过我希望你重点做一件事用一个可调电源给输入A加一个1~4V之间的电压观察输出。你会发现当A在Vth附近时输出电平就不可预测了。这个实验能帮你直观理解为什么数字电路里输入需要严格的“净0”和“净1”——阈值附近就是逻辑门的灰色地带。3.8 7种逻辑门真值表速查表为方便测试下表汇总了7种逻辑门在输入四种组合下的输出AB非A与非与或非或异或同或0011010010111001101001001101100101014. 常见问题与排查技巧实录4.1 现象一输出电平不对该高不高该低不低如果你测到输出高电平只有2V低电平却有1V先别怀疑逻辑有问题。用万用表量一下是不是有管子始终导通但没完全导通。当输入电压接近Vth时MOS管可能处于线性区导通电阻很大导致输出电平被“分压”到中间值。这种情况最常发生在输入信号由按键产生、按键未按下时引脚悬空——栅极浮空噪声把管子“半开”了。解决方法是给每个输入添加下拉电阻到地对于N管逻辑或上拉电阻到VDD对于P管确保没有按键时输入有确定电平。还有一个常见原因电源电流不足。多个门同时工作时总峰值电流虽小但如果用纽扣电池供电触碰到VDD和地时会造成电压跌落逻辑就可能误动作。用USB供电的5V电源模块最靠谱别用九伏电池。4.2 现象二管子发烫静态功耗异常门电路不应发烫正常CMOS静态电流是微安级别。如果一上电某个管子就烫手十有八九是上拉网络和下拉网络同时导通了。这种“直通短路”多发生在你接线错误时比如P管和N管的栅极接到了相反输入或者某个来源和漏极接反。尤其要小心串联/并联结构调整时“抄错图”与非门里N管串联有人抄成并联或非门里P管串联有人抄成并联。一旦抄错就可能在某种输入组合下形成电源到地的直通。排查方法简单粗暴断开电源用万用表电阻档测VDD和GND之间的电阻。正常的门电路无论输入如何VDD到GND应该是高阻如果测出低阻说明存在直通路径按原理图逐段检查连线。4.3 现象三高速开关时波形边沿变缓输出“拖泥带水”如果你后续打算用这些逻辑门做振荡器或PWM控制会发现输入信号频率提高到几百kHz的时候输出波形边沿明显变缓甚至逻辑错误。原因主要有两个一是米勒效应放大了栅极等效电容栅极电压上升速度变慢二是栅极驱动源内阻太大。我们实验中用跳线直接给栅极灌高电平和低电平内阻很小问题不明显。但如果用单片机GPIO直驱GPIO的驱动能力有限且串了电阻再叠加米勒效应波形边沿就会拉长。改善办法有三个降低栅极驱动电阻选择低阈值、低Qg的MOS管或者增加专门的栅极驱动芯片。这就解释了一个现实在开关电源或电机驱动电路里为什么MOS管前面总有一级驱动电路——就是为了提供足够大的瞬态电流快速充放栅极电荷克服米勒效应和寄生电容的拖累。4.4 现象四输入悬空导致输出乱跳这次搭逻辑门时很多人习惯用杜邦线一端插在输入节点另一端用手拿着去碰5V或GND以此模拟高低电平。手一松输入端就是悬空MOS管栅极相当于一根天线会感应环境电场把输出拉进不确定状态。更烦人的是当你手靠近但不接触时电容耦合也会让电平微弱变化。建议用以下方式之一固定输入拨码开关、跳线帽、或者带自锁的按键。最省事的做法是准备一个“逻辑电平发生器”一个单刀双掷开关中间接输入节点一端接5V一端接GND。这样输入永远是确定的0或1测试逻辑门时能省很多事。如果只是临时测一下你也可以直接把输入节点接到电源或地轨上保证接线牢固不要“虚接”。4.5 排查流程总结用MOS管搭逻辑门最忌讳上来就怀疑MOS管坏了。我建议按以下顺序排查先查电源和地是否都接通再查输入逻辑电平是否精准0/1然后查输出节点的电平是否符合真值表最后才怀疑某个管子本身损坏或者插错了。用万用表电压档逐点测比拿LED看亮灭更能定位问题。LED只适合快速看结果电压表才能告诉你“差多少”。MOS管在面包板上很容易因为引脚弯曲或接触不良而“明明插了却不通”。拆下重插时最好把管子举起来对着光检查引脚是否有氧化层如果有氧化层可以用指甲轻轻刮一下再插。我见过不少“诡异”逻辑故障最后都是因为引脚没插进面包板金属簧片里虚插导致的。5. 扩展思考从逻辑门到实际应用的桥接搭完这7种逻辑门你会发现一个有趣的事实只要有了“与非门”或“或非门”中的任意一种就可以组合出所有其他逻辑门。实际上工业上也经常用单一类型的门芯片比如74HC00四个与非门实现复杂的组合逻辑。这就是为什么很多教科书里会把“与非门”称作万能门。你不妨试着只用四个与非门搭一个异或门亲手验证一下这个说法。这些基础逻辑门在后级电路中的应用非常广。与非门可以做成RS锁存器也就是最基础的一位存储单元两个与非门的输出交叉反馈就能“记住”一个状态。异或门可以做成半加器的一位数加法核心和与门配合就能计算“和”与“进位”。同或门则对应数字比较器里的“相等检测”模块。当你开始用MOS管搭锁存器和加法器时你会发现数字电路的所有复杂性都建立在今天这几个简单门电路之上。如果还想继续深挖我建议把电源电压从5V降到3.3V再测一遍观察不同VDD下的高电平和阈值变化然后进一步阅读MOS管的开关损耗、驱动电流、热阻等参数结合一个实际项目——比如用逻辑门控制一个MOS管大功率开关——体会“低压逻辑控制高压负载”的完整链路。另外提一个安全提示实验用的5V电源是小意思但如果日后要驱动大功率负载一定要把逻辑部分和功率部分分开供电逻辑地单独处理不然大电流的地线上电压波动会反灌到逻辑门造成误触发。这是很多新手烧板子的常见原因。我个人在实际操作中的体会是花一个下午把这几只MOS管在面包板上插来插去比看十遍教科书都有用。当你亲眼看着输入跳线从5V换到GNDLED跟着真值表准确亮灭的那一刻你对“电压就是逻辑”这个概念的理解会完全不同。准备几只2N7000和AO3401一块面包板现在就可以开始了。