
1. 为什么用MOS管搭逻辑门而不是三极管1.1 门电路的本质就是开关先抛一个问题你手上有一个LED、一个按钮开关和一个电池怎么控制灯的亮灭答案很简单按下按钮灯亮松开灯灭。逻辑门电路说白了就是把这种“按下/松开”的动作抽象成“1/0”的电平再用电子开关去自动完成判断。MOS管在这里扮演的就是那个“按钮开关”的角色。栅极加上超过阈值的高电平源漏之间就导通栅极不加电压或低于阈值源漏之间就断开。用两个MOS管一上一下一个负责在输入为高时把输出拉到低另一个负责在输入为低时把输出拉到高一个反相器就出来了。再在这个基础上叠加管子数量和连接关系与非门、或非门、异或门就都能搭出来。我在之前的项目里用分立MOS管搭过一套7种逻辑门整个过程做下来最值钱的不是那几根跳线而是彻底理解了芯片内部为什么要用互补结构、为什么静态功耗可以做到那么低、为什么栅极不能悬空。这些知识点只靠看手册和仿真体会不深亲手接一次电路所有疑问都能串起来。1.2 MOS管与三极管的差别很多人入门时纠结一个问题三极管也能做开关为什么逻辑门要用MOS管三极管是电流控制元件要让集电极和发射极导通必须往基极持续灌入电流。一个逻辑门如果输入级要抽电流前一级带不动的时候就会出现电平跌落逻辑判断就乱套了。MOS管是电压控制元件栅极输入阻抗极高只要栅极电压达到阈值源漏就导通几乎不需要持续灌入电流这让多个门级联时的“扇出能力”好很多。另外一个现实问题是功耗。三极管开关电路在饱和导通时Vce还有零点几伏的压降电流一大就发热。互补MOS管结构里输出在稳定状态时总是一边导通一边截止从电源到地没有直流通路静态电流只在纳安级所以现在大规模数字芯片内部清一色全是CMOS结构就是因为静态功耗这个优势太关键了。当然三极管也不是没有用武之地。电流大水压低的应用里三极管更皮实驱动继电器、蜂鸣器这类感性负载时三极管抗过流的余量更大。但做逻辑门这种高频开关、多级级联的场景MOS管是更合理的选择。1.3 互补CMOS结构的优势用单个NMOS管也能实现逻辑门比如开漏输出但那是“伪逻辑门”输出低电平能力很强输出高电平却要外接上拉电阻而且上拉电阻越大上升沿越慢电阻越小静态功耗越大。单管方案在速度和功耗之间很难平衡。互补CMOS结构就不一样了。每个输入同时控制一个PMOS和一个NMOS输入为高时NMOS导通、PMOS截止输出被拉到地输入为低时NMOS截止、PMOS导通输出被拉到VDD。因为两个管子的导通条件是互补的输出在任何稳定状态下都被牢牢钳在电源轨上不会出现中间态的悬空。上次实测一组CMOS反相器输出高电平4.95V低电平0.03V几乎没有失调这个信号质量是单管方案根本做不到的。电平标准也要说一下。用5V或12V电源搭门电路时高电平阈值和低电平阈值是跟着电源轨走的输入信号只要超过VDD/2左右就能可靠翻转。如果前后两级的电源电压不一致就会出现高电平够不着阈值的问题这个在后续章节的常见问题里会有专门讨论。2. MOS管工作原理与选型要点2.1 三个极与导通条件MOS管有三个极栅极G、源极S、漏极D。N沟道MOS管导通条件是Vgs大于阈值电压Vth也就是说栅极电压要比源极高出一截源漏之间才形成导电沟道。P沟道则反过来Vgs低于负的阈值电压时导通即栅极电压要比源极电压低一截。这里有一个初学者很容易搞混的地方源极和漏极并不是固定不变的。对于N沟道MOS管哪一边电位低哪一边就是源极P沟道则哪边电位高哪边就是源极。所以在实际电路中源漏极符号画起来好像很明确但真正接电路时电流方向不同源漏的定义会随之变化。好在我实际搭门电路时都是按固定电源轨设计的接法规则很简单N沟道源极接地P沟道源极接VDD。关于导通条件的完整定义我习惯这样记N沟道是“栅极看到高电平管子就开通”P沟道是“栅极看到低电平管子就开通”。带上源极参考电压后严谨的表述才是Vgs大于Vth或小于负Vth。搭电路时只要保证电源方向和源极参考点一致基本不会出问题。2.2 寄生电容和米勒效应MOS管栅极和源极之间存在寄生电容Cgs栅极和漏极之间存在寄生电容Cgd。这两个电容决定了门电路开关能有多快。给栅极充放电需要时间电容越大开关沿越慢功耗也越高。Cgd带来的问题就是经常听说的米勒效应。栅极电压上升时漏极电压同步下降Cgd会把漏极的电压变化耦合回栅极相当于栅极看见的等效输入电容被放大了很多倍。驱动电路不够力的时候开关波形会明显变缓甚至在中间区域震荡。做逻辑门时如果发现方波变成了三角波大概率就是驱动内阻和米勒电容共同作用的结果。在低频手动拨动开关做实验的场合米勒效应的影响几乎可以忽略因为你有足够的时间等待电平稳定。但如果你想把门电路跑起来比如用单片机PWM信号替代手动开关去验证逻辑功能米勒效应就会变成发热和信号畸变的元凶。这也是为什么后面要专门聊MOS管驱动电路。2.3 选型参数搭逻辑门用的MOS管选型不会太苛刻但几个核心参数还是要会看。最基本的是Vds漏源耐压要大于电源电压的1.5到2倍Vgs栅源耐压要覆盖你的栅极驱动电压范围比如5V控制信号选Vgs最大20V的管子就非常安全。Rdson导通电阻决定了导通损耗。逻辑门电路电流很小Rdson几十毫欧到几百毫欧都无所谓但如果你把门电路用来驱动LED或继电器Rdson就重要了。Vth阈值电压则决定了输入电平的翻转点常规逻辑电平的NMOS管Vth在1V到2V之间比较合适太低的阈值容易被噪声误触发。常用型号方面小信号级别的2N7000是最常见的N沟道MOS管Vds 60V持续电流200mA栅极阈值在1V到2.5V之间5V逻辑驱动绰绰有余。P沟道可以选BSS84参数和2N7000对称。如果要做稍大电流的实验IRF540N、IRF9540N这对经典的N/P配对管也可以但它们的栅极电容明显更大开关速度会有所下降。3. 7种逻辑门的搭建与真值表3.1 非门反相器非门是全部逻辑门的基础输出与输入相反输入高电平输出低电平输入低电平输出高电平。用两个MOS管就能实现。电路连接方式如下Q1为P沟道MOS管源极接VDD漏极接OUT栅极接IN。Q2为N沟道MOS管源极接地漏极接OUT栅极接IN。OUT为Q1和Q2的漏极连接点。输入为高时Q2导通、Q1截止OUT被拉到地输入为低时Q1导通、Q2截止OUT被拉到VDD。非门真值表输入IN输出OUT0110搭这个电路时有一点要留意两个栅极必须直接连在一起接到输入。如果输入悬空Q1和Q2都不会可靠导通或截止输出会处在一个中间电位后续电路无法判断高低电平。所以任何MOS管栅极都不能悬空这是逻辑门电路的第一条铁律。3.2 与非门与非门是在非门基础上多增加一个输入。逻辑功能是先做与运算再取反只有两个输入都为高时输出为低其他情况输出为高。用4个MOS管搭建两个P沟道MOS管并联在VDD和OUT之间Q1的栅极接AQ2的栅极接B。两个N沟道MOS管串联在OUT和地之间Q3的栅极接AQ4的栅极接B。并联的PMOS只要有一个导通OUT就被拉到高串联的NMOS必须全部导通OUT才被拉到低。当A和B都为高时两个NMOS全部导通两个PMOS全部截止输出低电平。其他任意一种组合至少有一个PMOS导通输出高电平。与非门真值表A输入B输入输出Y001011101110一个容易忽视的细节是串联NMOS的导通顺序。Q3和Q4串联时虽然两个管子都是开关作用但中间节点的寄生电容会让开关速度下降一点。高频场景下把离输出近的那个管子接到后到达的信号能稍微改善时序。做实验的话这点影响看不出来但了解这个思路对以后看芯片内部版图有帮助。3.3 与门与门输出为高只有在两个输入都为高时出现。最直观的搭法是在与非门后面再接一级非门先把与非结果算出来再反相一次。也就是用6个MOS管完成前4个搭成一个与非门后2个搭成一个非门。与门的真值表是A输入B输入输出Y000010100111这种“功能组合”的做法在逻辑电路设计里大量使用。你不用每种功能都设计全新结构只要有了与非门和反相器这两个基础模块就能拼出很多新功能。实际接面包板时把一个与非门的输出接到反相器的输入注意两条跳线之间不要短路其他按图连接即可。从电路性能讲与非门加反相器和直接设计一个复杂与门结构相比多了一级门延迟但设计简单、逻辑清晰。做学习演示完全够用做高速电路时才需要优化。3.4 或非门或非门的逻辑功能是两个输入只要有一个为高输出就为低只有两个输入都为低时输出才为高。电路结构和与非门正好对称。搭建方式两个P沟道MOS管串联在VDD和OUT之间Q1的栅极接AQ2的栅极接B。两个N沟道MOS管并联在OUT和地之间Q3的栅极接AQ4的栅极接B。串联的PMOS必须全部导通OUT才能拉高也就是A、B都为低并联的NMOS只要有一个导通OUT就被拉低。或非门真值表A输入B输入输出Y001010100110注意这里PMOS是串联结构导通条件要在低电平时满足所以为了简化分析串联结构里我习惯先假设输入都是低电平再看哪些管子导通。如果一开始就代入高电平组合容易把自己绕晕。3.5 或门或门只要有一个输入为高输出就为高。和与门的套路一样用或非门后面接一个非门实现共6个MOS管。先把或非结果算出来再反相一次输出逻辑正好是“或”。或门真值表A输入B输入输出Y000011101111如果要做完整的7种门到这里已经实现了5种非门、与非门、与门、或非门、或门。剩下的异或门和同或门稍微复杂需要多级组合。3.6 异或门异或门的逻辑是两个输入不同时输出为高相同时输出为低。用基础门搭异或门最经典的方式是用4个与非门组合。用W1到W3作为中间节点连接关系如下W1 A 与非 BW2 A 与非 W1W3 B 与非 W1Y W2 与非 W3每个与非门4个MOS管总共16个MOS管。这个方案搭建时管子数量多但每个与非门模块在3.2节已经验证过直接复用就行。异或门真值表A输入B输入输出Y000011101110想省管子的话也可以用两个传输门加一个反相器实现异或只需要6个MOS管但传输门的控制信号要求高低电平互补需要对输入做反相处理整体理解难度更高。第一次做实验建议先用4个与非门组合逻辑链清楚出错了也好排查。3.7 同或门同或门又叫异或非门逻辑是两输入相同时输出为高不同时输出为低。最简单的方式就是异或门后面再接一个非门。延续3.6节的方案在Y后面加一个反相器即可共18个MOS管多出的两个管子正好是反相器。同或门真值表A输入B输入输出Y001010100111到这里7种基础逻辑门全部落地。总的管子用量非门2个、与非门4个、与门6个、或非门4个、或门6个、异或门16个、同或门18个。实际搭的时候你会感觉到虽然单个门很简单但组合起来之后任何一个管子的接错都会让输出结果变得不可预测这也是锻炼排查能力的好机会。4. 实操过程与测试方法4.1 材料准备与搭建步骤搭建之前先列一下工具清单。我建议备齐以下东西面包板一块、2N7000和BSS84各十几个量大容易丢、1k电阻若干、LED加限流电阻一组、5V或12V直流电源一个、杜邦线一大把。有条件的再准备一块万用表和一台示波器没有示波器至少要有万用表的电压挡。搭建顺序建议从非门开始验证了基础功能之后再逐级往上搭。先插好电源轨的跳线VDD和GND接通然后用万用表确认每条电源轨都通到了正确位置。这一步看似多余实际遇到过很多次面包板半路接触不良排查到头晕才发现是电源轨没接好。每个门的输入信号可以先通过手动跳线接VDD或GND来模拟。测试时先测静态逻辑转动跳线帽观察LED亮灭是否符合真值表。确认静态无误后再加动态信号比如用单片机的PWM输出代替手动开关这时候能验证门电路在连续翻转时的稳定性。4.2 电源和输入信号处理电源电压的选择会影响MOS管的导通可靠性。2N7000在Vgs超过2.5V之后完全导通所以5V电源最安全如果手头只有12V电源2N7000的Vgs也扛得住导通会更彻底。P沟道BSS84在Vgs为-5V时可靠导通同样匹配5V逻辑。如果你打算用3.3V单片机控制就要留意阈值问题部分NMOS的Vth接近2V时余量很小建议换用逻辑电平专用的MOS管。输入信号不建议直接用单片机GPIO驱动多个并联栅极因为每个栅极都有寄生电容多个管子并联后总电容叠加GPIO驱动能力弱的时候方波会变圆。我在实验中发现用MCU的推挽输出直连4个与非门输入时上升沿拉长明显加一级缓冲器或降低开关频率后波形立刻正常。串接一个1k到10k的栅极电阻也能改善信号质量。这个电阻和栅极寄生电容组成RC滤波器能抑制高频振铃代价是开关速度变慢。做低速手动测试时不加也行但跑PWM信号时一定要加否则波形会有明显过冲。4.3 测试与验证静态测试是最有效的功能验证方式。以与非门为例手动设置A和B的四种组合观察输出LED状态是否和真值表一致。LED通过限流电阻接在输出和地之间输出高电平时LED亮输出低电平时LED灭。选电阻时算一下电流5V电源减去LED压降约2V串联1k电阻时电流约3mA亮度清晰又不伤管子。动态测试时可以用示波器同时观察输入和输出波形。一个经典现象是输入方波很漂亮但输出已经出现畸变这往往是门电路供电不稳或地线过长引入的噪声。解决办法是在电源入口加一个100nF去耦电容并且尽量缩短地线回路的长度。面包板本身寄生电感较大跑高频信号时问题更明显低速实验则不必太纠结。有条件的话可以顺手用仿真软件验证一遍。Multisim里把电路搭出来跑一下瞬态分析能直观看到每个节点的电平变化对排查实物电路非常有帮助。用仿真的逻辑分析仪对比真值表如果仿真和实物结果不一致优先怀疑实物接线而不是电路结构本身。5. 常见问题与排查技巧5.1 MOS管异常发热逻辑门电路电流很小正常工作时管子摸上去应该是凉的。发热说明有较大电流持续流过管子最常见的原因是PMOS和NMOS同时导通形成了从VDD到GND的直通电流。为什么会同时导通因为输入信号上升沿太慢在中间电平区域两个管子都处于半导通状态。解决方向有两个一是让输入信号沿更陡降低电平转换时间二是在允许的范围内降低电源电压。做实验时如果只是用跳线帽手动切换输入转换瞬间的直通电流很短暂一般不会发热但用PWM信号驱动时开关频率提高每次切换都产生脉冲电流发热就会显现。更严重的情况是输入信号电平不匹配高电平只有2V低于PMOS的截止条件导致PMOS一直导通电流持续流过发热自然明显。5.2 输出电平异常最常见的一个坑是栅极悬空。用手触碰MOS管引脚时LED还会乱闪说明管子受到了人体感应电压的干扰。栅极一旦悬空它相当于一根天线环境中的电磁噪声都能改变它的电位输出就变得不可预测。所有空闲输入引脚都要接到固定电平不要留空。另一个导致输出异常的原因是输入信号和电源不在同一个参考地。面包板实验时如果用了两套电源一套供VDD一套供输入信号它们的GND没有连在一起MOS管看到的Vgs就是浮动的逻辑判断完全失效。解决办法很简单把两个电源的GND短接即可。源漏接反也会造成奇怪的现象。N沟道MOS管源极接地是标准用法如果接反体二极管变成正向导通状态输入高电平时输出被二极管钳位无法正常下拉。遇到输出高电平正常但低电平拉不下去的情况优先检查N沟道MOS管的源极是不是真的接到了地。5.3 开关速度上不去用分立MOS管搭逻辑门跑高频时主要的瓶颈是寄生电容。栅极驱动电阻和内阻一起对Cgs充电阻值越大上升沿越慢米勒电容又会把Cgd的充放电效应放大进一步拖慢开关沿。改善方案有几个降低栅极驱动电阻但要注意振铃现象用专门的MOS管驱动芯片输出大电流快速完成栅极充放电或者从选型入手选择Qg更小的管子。小信号MOS管的Qg通常在几纳库仑级别大功率管则可能达到几十甚至上百纳库仑做逻辑门实验尽量选小Qg的管子。实测中用IRF540N搭出来的非门输入1MHz方波时输出已经严重畸变换成2N7000之后同样的频率还能勉强工作差距主要就在栅极电荷上。5.4 静电损坏MOS管栅极氧化层很薄静电电压动辄上千伏足以击穿氧化层导致永久损坏。虽然逻辑门实验用的电压只有5V但如果你穿化纤衣服在地毯上走过再去捏MOS管引脚可能就已经造成损坏了。防静电措施其实很简单焊接时用接地烙铁拿管子时尽量捏外壳不碰引脚手摸一下金属水管或机箱释放静电后再操作。冬天干燥环境下静电格外明显实验台上放一个防静电手环接大地是最稳妥的方案。我见过不少新手装完电路后莫名其妙工作不正常几个管子来回换才想到是静电惹的祸。5.5 电源噪声与去耦面包板供电线路长、分布电感大门电路翻转瞬间的电流变化会引起电源电压波动。如果多级门电路级联这些波动会顺着电源线耦合到其他门造成误触发。解决办法是在每个门电路的电源引脚附近放一个100nF陶瓷电容并在整个电源入口并联一个10uF到100uF的电解电容形成高低频搭配的去耦组合。这里有个小技巧去耦电容尽量靠近MOS管的源漏端而不是靠近电源插座。电容离负载越远走线电感越大去耦效果越差。实测同一块面包板把电容从电源入口移到每个门旁边之后输出波形的毛刺明显减少了。6. 进阶扩展从门电路到功能模块6.1 用门电路搭锁存器搭完7种逻辑门之后下一步自然是组合起来做有意思的功能。锁存器是最经典的例子用两个与非门交叉反馈就能实现1位存储功能。搭建方式是第一个与非门的输出接到第二个与非门的一个输入第二个与非门的输出接回第一个与非门的一个输入剩余两个输入分别作为置位端和复位端。当置位端为低、复位端为高时输出被锁定为高置位端为高、复位端为低时输出被锁定为低。关键是两个输入都为高时输出保持原状态这就实现了“记忆”。用MOS管搭锁存器让我重新理解了时序电路里的“建立时间”和“保持时间”。手动拨动输入跳线时感觉不到这些参数的存在但用快速脉冲信号做实验时输入信号和反馈信号之间的竞争关系会导致亚稳态输出可能在一段时间内无法确定是0还是1。这个概念在仿真软件里很难直观感受实物实验却非常清晰。6.2 MOS管电平转换电路不同电压域之间的通信是嵌入式开发里躲不开的问题。3.3V单片机和5V外设之间互连直接连接轻则逻辑判断失败重则烧毁器件。利用MOS管的开关特性可以做一个简洁的电平转换电路。核心思路是N沟道MOS管的源极接地漏极通过上拉电阻接5V栅极接3.3V信号。当栅极输出低电平时MOS管截止漏极被拉到5V栅极输出高电平时MOS管导通漏极被拉到地。这样就把双向的3.3V信号转换成了5V逻辑电平。这个电路不需要额外的方向控制信号结构简单在I2C和UART通信中非常常见。第一次做实验时需要注意这个电路是“开漏输出”高电平靠上拉电阻提供所以输出信号的上升沿速度取决于上拉电阻和负载电容的RC时间常数。上拉电阻太小会导致低电平时静态电流偏大太大又会拖慢边沿速度一般4.7k到10k是比较平衡的选择。6.3 MOS管驱动电路与驱动芯片逻辑门电路里的MOS管是小信号应用驱动负载能力有限。如果需要用门电路的输出驱动继电器、直流电机或大功率LED直接接上去带不动这时候需要加一级驱动电路。最简单的驱动方式是加一个N沟道MOS管作为后级开关前级门电路输出接后级栅极后级源极接地漏极接负载。选后级MOS管时注意Vth要低于前级高电平输出Rdson要足够小Qg要控制在驱动能力的范围内。如果前级输出高电平不够高比如只有3.3V后级需要用逻辑电平MOS管否则管子打不开。当开关频率较高时光靠逻辑门的推挽输出驱动大功率MOS管会出现明显问题栅极电容大充放电时间拉长开关损耗陡增。这时候就该用专门的MOS管驱动芯片常见的如TC4420、UCC27524它们能提供峰值几安培的驱动电流把开关过程缩短到几十纳秒。再配合外置栅极电阻调节振铃基本就是工业级驱动电路的常见做法了。从7种逻辑门到锁存器再到驱动电路这条线走下来其实已经覆盖了数字电路基础、模拟电路功底和电源设计的不少核心内容。我个人的体会是理论学习时很多结论是“背下来”的亲手用MOS管搭过一次之后这些结论变成了“推出来”的。比如互补结构为什么省电米勒效应为什么会有延时栅极为什么不能悬空每个问题的答案都在电路里明明白白摆着。这也是我强烈建议动手做一遍的原因——有些东西光看不做是真的学不会。