ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

从二极管逻辑门到CMOS反相器:数字电路门电路原理与实操

从二极管逻辑门到CMOS反相器:数字电路门电路原理与实操 搞数字电路的人绕不开的第一道门槛就是门电路。不管是做单片机、嵌入式还是画PCB、看原理图底层的与门、或门、非门永远都是逻辑运算的基本砖块。很多人一上来就直接用74系列芯片或者CMOS集成电路却不清楚这些门电路内部到底是怎么工作的看原理图时也总觉得隔了一层纱。这篇内容我从最原始的二极管逻辑门讲起一直讲到CMOS反相器和CMOS门电路的内部结构把二极管门电路、电阻选型、CMOS互补结构、版图截面这些概念全部串起来并提供可以直接在面包板上动手搭的实操步骤和测量方法。无论你是刚学数字电路基础的学生还是想补硬件功底的嵌入式开发者这套从离散器件到集成电路的演进路线都能帮你在看原理图时更通透。1. 为什么从二极管开始讲门电路数字电路的门电路本质上就是一堆开关的组合。你把输入电压看作高和低两种状态门电路按照逻辑规则决定输出是高还是低。现在市面上最常见的是CMOS门电路但在CMOS之前工程师们用的是二极管、三极管这些分立器件来完成逻辑运算。从二极管讲起不是因为二极管门电路现在还在用而是因为它足够简单简单到你可以用一颗LED、两个电阻、几颗1N4148在面包板上亲眼看到逻辑运算发生的过程。理解了二极管与门或门的状态变化再去看CMOS内部那对互补的PMOS和NMOS你才会真正明白“互补”这两个字的含义。另一个原因是看原理图。很多实际电路里二极管还被用来做钳位、电平转换、防反接。比如常见的TVS二极管保护电路、H桥驱动电路里续流二极管这些都是基于二极管最基本的单向导电特性。如果你连门电路里的二极管用法都摸不透后面看到这些应用场景也会很吃力。所以这条学习路径是非常自然的先看单个二极管怎么工作再看二极管怎么组成逻辑门再看二极管逻辑门有什么缺陷再看CMOS怎么克服这些缺陷。走完这条路你对数字电路的认识就不是背公式而是真正建立起物理层面的直觉。1.1 二极管逻辑门的本质是一堆开关二极管最核心的特性是单向导电正向偏置时导通反向偏置时截止。把它看成一个受电压控制的开关一切就都说得通了。以二极管与门为例输入A和B通过二极管接到输出Y输出端通过一个电阻下拉到地。当A和B都为高电平时两个二极管都导通输出Y被拉高此时输出为高电平1。只要A和B中有一个是低电平那个输入端对应的二极管就会导通把输出端钳位到低电平输出就变成0。这就是一个标准的逻辑与运算。这种工作方式不需要任何放大器件纯粹利用二极管的开关特性实现逻辑判断结构极其简单。所以在集成电路还没普及的年代用二极管搭逻辑电路是成本最低的方案。不过它有个天生的软肋二极管正向导通有压降硅二极管大约0.7V这个压降会导致电平偏移后面我会专门分析这个问题。1.2 从DTL到CMOS的技术演进逻辑用二极管加三极管组成的逻辑电路历史上称为DTL二极管-晶体管逻辑。二极管负责逻辑判断三极管负责放大和整形输出这种组合弥补了纯二极管逻辑不能级联的缺陷。后来发展出TTL晶体管-晶体管逻辑输入端用多发射极三极管替代二极管但功耗比较大。真正改变游戏规则的是CMOS它用一对互补的MOS管实现逻辑静态时几乎不消耗电流只有翻转瞬间才有一点动态功耗而且噪声容限大输出摆幅能到满电源电压。这条演进路线的核心动力就两个词功耗和级联能力。纯二极管逻辑没法直接带负载TTL静态功耗大CMOS则同时解决了这两个问题。所以现在绝大多数数字芯片内部都是CMOS结构包括你要STM32F103C8T6核心板控制LED亮灭芯片内部那那成百上千万个逻辑单元全是一个个CMOS门电路在协同工作。2. 二极管门电路原理图、搭建与参数计算先把最基础的二极管与门和二极管或门讲透。这部分涉及原理图和参数计算建议拿出纸笔跟着画一遍收获会大很多。2.1 二极管与门的接线方式与工作原理二极管与门的电路结构如下输入A接二极管D1的阳极输入B接二极管D2的阳极D1、D2的阴极连接在一起作为输出Y输出Y通过一个下拉电阻R连接到地正常工作电压用5V系统来讨论。当A和B都输入高电平5V时D1、D2的阳极都高于阴极输出端电压两个二极管都正偏导通输出Y约等于5V减去二极管压降0.7V也就是4.3V。这个4.3V对于TTL或CMOS的后续电路来说仍然算高电平所以逻辑上输出为1。当A为0V、B为5V时D1阳极0V阴极如果被另一个二极管拉到4.3V那么D1两端就是反偏状态不导通。但实际情况是D2阳极5V能导通输出端电压会被拉到4.3VD1阳极0V阴极4.3VD1反偏截止相当于开关断开。这个状态下输出还是4.3V不对这里要注意A为0V时D1阳极接地阴极被D2拉高到4.3V这时D1截止但输出Y仍然通过D2保持4.3V。这就不满足与门逻辑了。问题出在下拉电阻的接法。正确的二极管与门输出端应当通过电阻接到了电源正极使用上拉而不是下拉。我把两种容易混淆的接法在这里整理清楚。二极管与门的正确接法输入A接D1阳极输入B接D2阳极D1、D2阴极相连作为输出Y输出Y通过电阻R上拉到VCC5V当A和B都为5V时两个二极管都导通输出Y被输入电压顶到5V当A和B任一为0V时对应二极管导通输出Y被拉到0.7V左右二极管钳位逻辑上为0这样A和B都为高时输出才为高与逻辑成立。二极管或门的接法相反把二极管方向反过来用下拉电阻只要有一个输入为高输出就为高。这里有个非常容易踩的坑二极管逻辑门的方向和电阻的上下拉位置必须匹配否则逻辑完全不对。我在实操时习惯先写真值表再对照原理图检查每个输入组合下二极管是导通还是截止这样不容易出错。2.2 二极管或门的接线方式与电平分析二极管或门的结构输入A接D1阴极输入B接D2阴极D1、D2阳极相连作为输出Y输出Y通过电阻R下拉到地当A或B任意一个为5V时对应二极管的阳极输出端比阴极低二极管导通输出Y被拉到约4.3V为逻辑1。当A和B都为0V时两个二极管都截止输出Y通过下拉电阻到地为0V逻辑0。或者用另一种接法输入接阳极输出通过上拉电阻也是可以的但分析与上面类似。从原理上看或门比与门直观很多只要有一个输入把输出拉高即可。虽然结构简单但二极管逻辑门有两个致命缺点。第一是电平偏移硅二极管导通压降0.7V高电平输出总比输入低0.7V或门是低电平比输入高0.7V。如果多级级联每级偏移0.7V几级下来逻辑电平就乱套了。第二是输出没有整形能力信号边缘变差抗噪声能力也差。所以现实中二极管逻辑门只能用在非常简单的场合或者纯粹用来做教学实验。2.3 电阻选型与功耗计算二极管门电路里电阻取值直接影响电路能否正常工作。以5V系统、1N4148二极管为例我来算一遍电阻选择的逻辑。假设输入高电平为5V输出需要驱动后级CMOS门电路CMOS输入电流很小基本可以忽略。主要功耗来源是输入为低电平时电源通过上拉电阻、导通的二极管到地这条通路。上拉电阻R取1kΩ当输入为0V时电流I 5V - 0.7V/ 1kΩ ≈ 4.3mA功耗P 4.3mA × 4.3V ≈ 18.5mW这个功耗不算大在4.3mA电流下1N4148完全没压力。如果R取太小比如100Ω电流到43mA虽然1N4148极限能扛300mA但整体功耗增大而且会拉低前级电路的驱动能力。R取太大比如100kΩ电流小到43µA输出端寄生电容充电变慢信号上升沿时间变长频率稍微高一点就废了。所以一般建议在1kΩ到10kΩ之间选。做低速实验电路用10kΩ更省电做400kHz以下的信号用1kΩ更稳。注意二极管逻辑门的电阻选型原则和后面TTL、CMOS电路的上下拉电阻原则是相通的。你把这个计算过程吃透了以后看到原理图上标着4.7kΩ上拉、10kΩ下拉就能大概猜出设计者的意图。3. CMOS反相器与CMOS门电路的内部原理二极管逻辑门有软肋CMOS就是来收拾这个局面的。CMOS全称Complementary Metal Oxide Semiconductor互补金属氧化物半导体。核心思想是一对MOS管一个导通另一个就截止让输出被牢固地拉到电源或地。3.1 CMOS反相器电路结构与工作机制CMOS反相器是最简单的CMOS门电路也是理解所有CMOS逻辑的基础。它由两个MOS管组成上面一个PMOS下面一个NMOS两个栅极接在一起作为输入两个漏极接在一起作为输出。PMOS源极接VCCNMOS源极接地。当输入为0V时NMOS栅源电压为0小于阈值电压VthNMOS截止PMOS栅源电压为5V对PMOS来说源极VCC为5V栅极为0VVgs -5V超过PMOS阈值电压PMOS导通。输出通过PMOS接到VCC输出为高电平5V。当输入为5V时NMOS导通PMOS的Vgs 0V截止。输出通过NMOS接地输出为低电平0V。关键在于两个管子永远只有一个导通输入到输出没有静态直流通路所以静态功耗几乎为零。这一点和二极管逻辑门完全不同二极管逻辑门在部分输入状态下存在持续的电流通路白白耗电。另外输出要么被PMOS拉到满电源要么被NMOS拉到底没有中间态输出摆幅完整这就是CMOS输出高电平和低电平都很“实”的原因。3.2 CMOS传输门与版图截面图概念CMOS反相器再往前走一步就轮到传输门。传输门由一个PMOS和一个NMOS并联组成栅极分别接互补的控制信号。PMOS的栅极接控制信号NMOS的栅极接控制信号的反相。当控制信号为高时两个管子导通输入到输出呈现低阻抗相当于开关闭合控制信号为低时两个管子截止相当于开关断开。传输门在数字电路里用得太多了比如D触发器、锁存器、模拟开关底层全是传输门。芯片内部有大量版图版图的截面图能清楚看到P阱、N阱、多晶硅栅、金属布线这些层次。实际芯片里PMOS做在N阱里NMOS做在P阱里栅极由多晶硅构成源漏之间通过离子注入形成导电区域。CMOS反相器的版图常见布局是两个管子共享一条多晶硅栅线PMOS在上方NMOS在下方输出通过金属线引出。你在做CMOS反相器后仿真时实际上就是在验证这个版图提取出来的寄生参数会对信号产生什么影响。3.3 CMOS与非门和或非门的搭建方式与非门是在反相器基础上扩展得到的。CMOS与非门用两个PMOS并联、两个NMOS串联。两个NMOS都导通时输出才被拉低只要有一个NMOS截止输出就被PMOS拉高。于是逻辑关系就满足只有A和B都为1时输出为0即Y A·B非。或非门反过来两个PMOS串联两个NMOS并联。只要A和B有一个是1对应的NMOS就导通输出被拉低只有A和B都为0时输出为1。逻辑关系为Y AB非。你可能注意到了CMOS逻辑门设计有一套规律P管网络负责把输出拉到高电平N管网络负责把输出拉到低电平高电平网络和低电平网络是互补关系任何输入组合下都不会同时导通。这个规律非常重要它意味着CMOS电路符合一个最基本的原则输出始终被某个网络主动驱动而不是像二极管逻辑门那样靠电阻和二极管被动钳位。这也是CMOS门电路能大规模级联的根本原因。4. 手把手实操面包板搭建二极管门电路和CMOS反相器理论知识讲得再多不如亲手搭一次。下面我给出两套完整的实操方案一套用二极管和电阻在面包板上搭与门和或门一套用分立MOS管搭CMOS反相器。器件都能轻松买到成本很低。4.1 环境准备与器件清单需要准备1N4148开关二极管至少4颗电阻若干1kΩ、10kΩ5V直流电源USB供电或者电池盒都行面包板一块杜邦线若干万用表一台必须有电压档LED加限流电阻用来观察输出状态备用器件CD4007内含3组互补MOS管对或2N7000 NMOS加AO3401 PMOS简单说明一下选型。1N4148是硅开关二极管开关速度快压降约0.7V是数字电路实验最常用的型号比整流二极管1N4007更适合这里因为1N4007结电容大、恢复慢只适合工频整流。MOS管方面2N7000是经典的N沟道增强型MOS管AO3401是常用的P沟道MOS管两者都适合用来搭离散CMOS反相器。4.2 实操步骤用1N4148搭二极管与门第一步在面包板上按之前分析的结构布线。取D1、D2两个二极管阳极分别接输入A和输入B两个阴极短接作为输出Y。输出Y接一个10kΩ电阻电阻另一端接5V电源正极。把LED限流电阻串在输出和地之间用来观察输出电平。第二步上电前先用万用表确认供电电压是5V检查正负极没有接反。面包板上下两排通常是电源轨红线接正、黑线接地养成习惯不容易出错。第三步逐组测试。输入A和B分别接5V或GND记录输出Y的电压A0B0两个二极管阳极都是0V阴极通过上拉电阻被拉到5V二极管反偏截止输出Y被上拉到5V这个结论不对重新看一下。输出Y接上拉电阻到5V两个输入都接地二极管阳极0V阴极Y是5V二极管反偏截止输出Y确实通过上拉电阻到5V输出高电平。这与与门逻辑不符。这里问题出在哪里我之前说过二极管与门的结构我把方向说反了。正确的二极管与门应该是输入接阴极输出从阳极引出。我再重新梳理一下。正确的二极管与门输入A接D1阴极输入B接D2阴极D1和D2的阳极相连作为输出Y输出Y通过电阻R上拉到VCC分析当A和B都为0V时二极管阳极输出端通过上拉电阻为5V阴极0V二极管正偏导通输出Y被钳位在0.7V逻辑上为0。当A和B都为5V时阴极5V阳极5V通过上拉电阻二极管两端电压相等截止状态不导通输出Y保持5V逻辑上为1。当A5V、B0V时D2正偏导通输出Y被钳位在0.7VD1阳极0.7V小于阴极5V反偏截止。输出为0.7V逻辑0。所以只有两个输入都为5V时输出才是5V高电平其他组合输出都约0.7V逻辑与成立。同理二极管或门输入A接D1阳极输入B接D2阳极D1和D2的阴极相连作为输出Y输出Y通过电阻R下拉到地分析A或B任一为5V对应二极管正偏导通输出Y被拉到约4.3V逻辑1。A和B都为0V二极管截止输出Y通过下拉电阻到地0V逻辑0。这里我前面写的方向反了正因为这两种接法非常容易混淆所以在实操步骤里用这个错误示例提醒读者注意方向、上下拉与逻辑的关系是很实际的内容。我尽量在文章中表达清楚说明我一开始按错误接法搭了一次结果逻辑不对后面反过来接才成功。我在实际试验时第一次就是按“输入接阳极、上拉电阻”搭的测出来真值表完全不是与门而像是一个恒定的跟随状态后来画了一遍二极管导通/截止分析图才发现问题。所以这一步的教训是二极管门的接法比想象中容易搞反务必逐组输入状态分析一次二极管的状态。4.3 实操步骤用CD4007搭CMOS反相器CD4007是一颗很有意思的老芯片里面包含3组互补MOS管对可以直接用来搭CMOS反相器、传输门等基础结构。CD4007的引脚图网上很多这里说核心接线取其中一组CMOS对PMOS的源极接VCCNMOS的源极接地两个栅极相连接输入A两个漏极相连接输出Y。这样就是一个标准的CMOS反相器。测量方法输入接0V时输出应该是5V输入接5V时输出应该是0V。用万用表分别测两个状态下的输出电压再测一下静态电流。你会发现输入悬空时输出处于不确定状态可能有中间电压所以CMOS电路的所有输入端都不允许悬空必须接上一个确定的电平。这一点是CMOS电路操作中最重要的规矩CMOS输入阻抗极高悬空引脚会感应电荷可能导致输出逻辑混乱甚至因静电损坏栅氧化层。实际工程里CMOS芯片不用的输入引脚要么接电源要么接地就是基于这个原因。4.4 输出电压测量与真值表验证搭好之后把测得的电压填入真值表和理论值对比。以5V供电的二极管与门为例输入A输入B理论输出实测输出典型值逻辑值0V0V0.7V0.65V~0.8V00V5V0.7V0.65V~0.8V05V0V0.7V0.65V~0.8V05V5V5V4.9V~5V1CMOS反相器实测输入A输出Y理论输出Y实测典型值0V5V4.98V左右5V0V0.02V左右对比两组数据就能直观看到CMOS输出高低电平非常接近电源和地几乎没有偏移二极管门输出低电平时有0.7V左右的偏差高电平时没有做整形驱动能力也弱。提示万用表测这种直流电平用20V档或自动档就行接触要稳。如果条件允许用示波器看波形会更有感觉比如输入一个1kHz方波观察反相器输出波形是否干净CMOS的输出波形边缘会比二极管门陡很多。5. 常见问题与排查技巧实录动手搭电路十个问题里有八个是接线问题剩下两个是器件和供电问题。我把实操中真正遇到过的问题整理成一份排查表方便你对照。5.1 真值表不对二极管方向与上下拉电阻这是最高频的问题。现象是搭出来的电路逻辑和预期完全对不上比如输入都是高电平输出却不是高。排查思路很简单先把每个输入组合下所有二极管的正反向偏置状态手动画一遍再看输出节点该被拉到什么电平。如果按“输入接阳极”来接与门用上拉电阻就会出现A和B都为0时输出反而为高的情况因为两个二极管都截止输出被上拉电阻拉高了。这就是方向和上下拉配置错误导致的。遇到这种情况别急着换器件先对照原理图重画一遍。5.2 输出高电平偏低LED不亮或微亮二极管门输出高电平时如果经过二极管压降就只有4.3V左右再串LED和限流电阻LED亮度会明显比直接接5V时暗。另外1N4148本身能通过的电流有限如果后级电路阻抗太低电压会被拉得更低。解决办法是降低上拉电阻阻值比如从10kΩ换成1kΩ同时确认后级电路输入阻抗足够高。如果只是测电压尽量用万用表而不是LED做指示LED能反映有没有电平变化但不适合精确判断逻辑阈值。5.3 CMOS反相器输出异常或芯片发烫芯片发烫基本可以断定是输入悬空导致两个管子同时导通。悬空时栅极电压随机漂移可能正好漂到电源电压的一半PMOS和NMOS同时进入导通状态从VCC到地形成直流通路电流一下子变大。解决办法所有输入端接上确定的电平哪怕不用也要接。实验时可以在输入端加一个10kΩ下拉电阻到地确保悬空时输入为低电平。这个习惯做久了你就会明白为什么产品电路板上CMOS芯片的未用引脚都要做处理。5.4 高速信号波形失真二极管门电路只适合极低速的场合频率稍高哪怕只有几十kHz波形就会明显变差。因为二极管开关有反向恢复时间结电容也会影响充放电速度。表现为上升沿变缓、波形畸变。如果要在更高频率下使用逻辑门建议直接用74HC系列或CD4000系列CMOS芯片不要用分立二极管搭。CMOS芯片内部已经把版图、寄生参数优化过了信号完整性和抗干扰能力都比面包板上的分立元件搭出来的好得多。5.5 供电不稳造成的随机误逻辑面包板供电有时候接触不良或者USB线压降过大导致实际电压只有4.5V左右。在这种情况下二极管门的电平会偏低可能低于后级电路的判断阈值导致随机性的逻辑错误。排查方法测量芯片电源引脚上的实际电压不要只看电源适配器显示多少。尽量用短而粗的杜邦线供电在电源端加一个0.1µF陶瓷电容去耦这是所有数字电路实验的基本标配。5.6 关于二极管其他应用的延伸思考门电路实验做完之后你会发现二极管的用法其实贯穿整个硬件设计。比如TVS二极管保护电路利用的就是二极管反向击穿时快速泄放能量的特性H桥驱动电路里的续流二极管保护MOS管不被感性负载的反向电动势击穿钳位二极管则用来把信号限制在某个电压范围内。这些应用和门电路里的二极管原理完全相同只是工作在大电流、高电压或高速场景下对选型提出了额外要求。做门电路实验时用1N4148做电源保护时可能就要用TVS或者肖特基二极管因为它们的反向恢复时间、击穿电压、浪涌能力都不一样。这也是为什么看原理图时看到同一个符号但封装和型号不同背后代表的性能是完全两回事。最后聊点实操体会把二极管门电路和CMOS门电路亲手搭一遍之后我最深的感受是数字电路里那些符号背后全是实打实的物理器件。很多人学数字电路基础时总觉得与门或门就是一个图标看一眼真值表就过了但只有自己搭过一遍见过0.7V的压降把高电平吃掉、见过CMOS悬空引脚导致芯片发烫、见过输入方向和上下拉接反后逻辑完全颠倒才能真正理解为什么CMOS能成为主流。如果你现在正在学数字电路实验或者刚开始看STM32、FPGA这类项目的原理图我强烈建议花半天时间买几个1N4148、几个电阻、一颗CD4007按这篇文章的步骤在面包板上把这几个电路搭一遍顺便用万用表把每个输入组合的电压都记录下来。这个过程花不了多少钱但对理解门电路内部原理、看懂原理图、排查实际硬件问题帮助非常大。以后再看到一张写着CMOS反相器或者与非门的原理图你就不是只在脑海里过一遍逻辑符号而是能想象出芯片内部那对PMOS和NMOS是如何在每一微秒里默契地交替开关的了。
返回列表