ARTICLE DETAIL

资讯详情

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

从MOS管到D触发器:手把手搭建与时序实测

从MOS管到D触发器:手把手搭建与时序实测 看到这个标题你可能觉得有点怪D触发器明明是数字电路基础课里的东西跟模拟味很重的MOS管怎么扯到一起实际上D触发器在芯片内部本来就是用MOS管搭建的搞清楚这套链路比单纯把74LS74直接焊在面包板上要值钱得多。这篇文章我会从MOS管最基础的导通条件讲起手把手带着你把一个可用的D触发器搭出来然后把建立时间、保持时间这些平时只在课本里见到的概念用示波器实际测出来顺便把MOS管驱动、米勒效应、寄生电容这些坑一个个填平。无论你是刚学完模电数电的学生、准备电赛的队员还是想补底层功底的嵌入式开发这条从一个MOS管怎么导通到一个时序单元怎么工作的路走通之后收获是很大的。后面抄作业也好自己改电路也好心里都有底。1. 项目概述为什么用MOS管搭D触发器1.1 这个项目解决什么问题很多刚接触电路的人对MOS管的认知停留在它是一个开关对D触发器的认知停留在它是一个存一位数据的盒子。但如果你问这个开关怎么变成盒子大多数人就答不上来了。这个项目就是把中间那段路走一遍用离散的MOS管或者内部全是MOS管的CMOS芯片搭出一个能正常工作的D触发器再用示波器验证它的时序行为。做完之后你会发现反相器、传输门、锁存器、沿触发这些概念全部串起来了数字电路不再是空中楼阁。1.2 整体技术路线不同搭建方式怎么选想用MOS管搭D触发器有三条路可以走纯离散MOS管方案买一堆2N7000NMOS和BS250PMOS一个反相器要两个管一个完整D触发器至少十几个管面包板上飞线能飞到怀疑人生。适合在仿真软件里验证原理实物搭建性价比太低。CD4007互补MOS管阵列方案CD4007内部集成了3个NMOS和3个PMOS可以搭反相器、传输门、基本逻辑门适合做MOS管到逻辑门的入门实验但一个芯片的管子数量不够搭完整D触发器。CD4069反相器 CD4016模拟开关方案这两颗芯片内部全部由MOS管构成CD4069是6路CMOS反相器CD4016是4路CMOS双向模拟开关本质就是CMOS传输门。用它们搭主从D触发器连线清晰、成功率极高而且每个模块的MOS管本质都能讲明白。我推荐的是第三种它既有手把手搭的实操感又不会让人陷在几百根飞线里出不来。后面所有实验都基于这套方案CD4007作为补充实验用来理解最底层的MOS管开关行为。2. MOS管核心原理复盘先搞懂开关再说逻辑2.1 MOS管三个引脚与导通条件在碰电路之前先把MOS管的关键概念过一遍。以最常用的增强型MOS管为例NMOS栅极G、漏极D、源极S。对N沟道增强型MOS管导通条件为VGS大于阈值电压Vth典型值1-2V。常规接法中电流从D流向S衬底接S有些独立器件四个引脚要把衬底和S连起来。PMOS栅极G、源极S、漏极D。P沟道增强型MOS管在VGS小于负的阈值电压即|VGS| |Vth|时导通。正常工作时S电位比D高电流从S流向D。实际维修和选型中最容易翻车的是把S和D搞反了。对于NMOS哪边电位低哪边就是S因为电子从S出发流向DPMOS则反过来电位高的是S。不过现在的功率MOS管内部大多有一个寄生二极管体二极管焊反了虽然电路可能能工作但体二极管会带来莫名其妙的漏电和发热。2.2 寄生电容、米勒效应与开关速度MOS管不是理想开关栅极和源极、漏极之间存在寄生电容典型参数为Cgs、Cgd、Cds。这些电容决定了开关速度也带来两个实操中必须面对的坑。第一个坑是米勒效应。Cgd跨接在栅极和漏极之间开关过程中漏极电压剧烈变化会通过Cgd向栅极注入或抽取电流。具体表现就是开通过程中栅极电压Vgs升到某个平台后不再上升持续一段时间后又继续上升——这就是米勒平台。这段时间栅极驱动电流主要在给Cgd充电MOS管处于半导通状态损耗特别大。第二个坑是栅极驱动电流不足。很多人在面包板上用单片机IO直接推一个功率MOS管发现发热严重、开关波形乱七八糟。原因就是IO口驱动能力有限寄生电容充放电太慢开关过程拉长MOS管长时间停留在线性区。2.3 为什么CMOS反相器和传输门是搭建D触发器的积木D触发器的底层积木就两块反相器和传输门。CMOS反相器由一个PMOS和一个NMOS组成。输入为高电平时NMOS导通、PMOS关断输出被拉到GND输入为低电平时PMOS导通、NMOS关断输出被拉到VDD。静态时两个管子总有一个完全关断所以CMOS反相器静态功耗几乎为零这也是CMOS成为数字芯片主流工艺的原因。传输门则更有意思。它把NMOS和PMOS并联两个管子栅极分别接一对互补控制信号C和~C。C为高电平时两个管子同时导通信号可以从A传到B也可以从B传到A是双向的C为低电平时两个管子同时关断。为什么不用单个NMOS因为NMOS导通时传输高电平会损失一个阈值电压输出最高只能到VDD-VthPMOS传输低电平时也有同样问题。两者并联之后NMOS负责传低电平、PMOS负责传高电平信号就能实现0到VDD的全摆幅传输。理解了这两块积木D触发器的结构就已经在眼前了。3. 手把手搭建D触发器电路3.1 元器件清单与实验环境准备我用的搭建方案是CD40164路模拟开关/传输门加CD40696路反相器这两颗芯片内部全都是MOS管电路搭出来的D触发器原理和芯片内部的主从D触发器完全对应。元器件清单如下器件规格/数量用途CD40691片6路CMOS反相器用于时钟反相和锁存反相CD40161片4路CMOS传输门用于主从锁存器切换面包板1块搭建电路直流电源5V系统供电信号发生器1台输出时钟方波和D端测试信号示波器2通道以上测量CLK、D、Q波形测时序电容100nF 10uF电源去耦电阻10kΩ 若干输入下拉、保护这里提醒一下面包板供电一定要加去耦电容10uF电解电容和100nF陶瓷电容并联放在芯片电源引脚附近。很多电路不工作的问题其实是电源线上的毛刺造成的。3.2 第一步用CD4007搭一个CMOS反相器在搭完整D触发器之前强烈建议先用CD4007搭一个CMOS反相器亲眼看一下MOS管怎么构成逻辑门。CD4007内部有3个NMOS和3个PMOS把NMOS的栅极和PMOS的栅极连在一起作为输入NMOS源极接GNDPMOS源极接VDDNMOS漏极和PMOS漏极连在一起作为输出就是一个标准的CMOS反相器。因为不同批次CD4007引脚定义有差异动手前一定先查数据手册确认引脚号。搭好之后用信号发生器输入一个1kHz方波示波器看输出。你会发现输出波形和输入完全反相而且边沿很陡。再用可调直流电源慢慢扫输入电压能看到反相器的电压传输特性曲线——输入在VDD/2附近时输出快速翻转这就是CMOS门电路的噪声容限来源。3.3 第二步用CD4016CD4069搭建主从D触发器接下来进入正题。主从D触发器的思路是用两个锁存器主锁存器和从锁存器时钟低电平时主锁存器跟随D输入、从锁存器保持时钟上升沿到来时主锁存器切换到保持状态从锁存器跟随主锁存器的值实现边沿触发。具体连接方式如下。CD4069的6个反相器分配INV1时钟反相CLK输入进INV1输出为~CLKINV2主锁存反相器INV3从锁存反相器INV4可选用于产生/Q输出CD4016的4个传输门分配SW1输入采样门控制端接~CLKSW2主锁存回授门控制端接CLKSW3主从传递门控制端接CLKSW4从锁存回授门控制端接~CLK信号走向如下D信号接入SW1输入端SW1输出端接到节点P节点P接入INV2输入INV2输出为PP经过SW2回授到节点P同时P经过SW3接到节点Q节点Q接入INV3输入INV3输出就是Q。Q再经过INV4得到/Q/Q用于二分频实验时接回D输入端。时钟低电平时SW1导通、SW2关断D信号畅通无阻地进入主锁存器P跟随DSW3关断、SW4导通从锁存器通过SW4回授形成自锁保持原来的输出。时钟上升沿时刻SW1关断D信号被隔离SW2导通INV2输出通过SW2回授到节点P主锁存器锁存住上升沿前一瞬间的D值同时SW3导通把主锁存器锁存的值传到从锁存器Q更新。SW4关断从锁存器不再依赖回授直接由主锁存器经过SW3和INV3驱动。这就是边沿触发的全部秘密。接好之后先用万用表检查电源和地有没有短路然后上电。初始状态下Q可能是高也可能低这是正常的CMOS触发器上电状态不确定需要复位信号才能确定初始值。3.4 第三步功能验证与二分频实验功能验证时用信号发生器给CLK输入一个10kHz方波D输入接一个手动开关加10kΩ下拉电阻到GND拨动开关改变D电平。你会发现只有在CLK上升沿时Q才跟着D变化CLK下降沿时无论D怎么变Q都保持不动。这就是边沿触发的直观体验。接着做D触发器最经典的二分频实验把/QINV4输出接回D输入端。由于/Q总是Q的反相每个CLK上升沿到来时D会采样到/Q的当前值Q翻转到相反状态。于是每来一个时钟上升沿Q翻转一次输出频率正好是CLK频率的一半。用示波器双通道同时看CLK和Q波形会看到Q的上升沿和CLK的上升沿严格对齐有微小延迟占空比稳定在50%。二分频是D触发器最实用的玩法之一单片机时钟、频率合成器、计数器里全是这个结构。实测下来这个电路在5V供电下跑到几百kHz完全没问题再高就会因为面包板寄生电容和传输门延迟出现时序问题这也是后面时序分析要重点关注的。4. 时序分析与实测数据解读4.1 建立时间最容易踩的坑建立时间Setup Time的定义是在时钟有效沿到来之前数据输入D必须保持稳定的最短时间。如果D在时钟沿附近变来变去触发器就会进入亚稳态输出可能持续一段不定值也可能震荡逻辑上完全不可预测。用我这个电路实测建立时间非常直观把CLK固定为10kHz方波D输入接另一路方波用示波器不断调整两路信号的相位差。当D的边沿离CLK上升沿足够远时Q稳定输出当D的边沿逐渐靠近CLK上升沿时会出现Q有时候跟着新值、有时候跟着旧值的现象这就是建立时间裕量不足。实际项目里建立时间不满足多半是组合逻辑链太长。比如D来自一个多级计数器的进位输出信号经过若干级门之后才到D端沿到来时数据还没稳定。解决办法就两个要么缩短组合逻辑路径要么降低时钟频率。4.2 保持时间与传输延迟的实测方法保持时间Hold Time是指时钟有效沿之后D数据还必须保持稳定的最短时间。保持时间违例比建立时间更隐蔽因为它跟时钟频率没有直接关系即使降频也没用。在我们的主从D触发器电路里保持时间主要取决于SW1的关断速度。CLK上升沿到来时SW1要切断D到主锁存器的通路但这个切断需要时间如果D在沿之后立刻变化信号可能趁SW1还没完全关断时漏进去导致错误锁存。实测时可以把D端信号设置为在CLK上升沿之后很短时间比如几十纳秒内翻转然后慢慢往上升沿方向移动观察Q是否偶尔出现错误输出。找到临界点就得到了该电路在该工作电压下的实际保持时间。传输延迟Propagation Delay则好测得多用示波器测量从CLK上升沿到Q输出翻转之间的时间差。CMOS器件的传输延迟随电源电压升高而减小随负载电容增大而增大。面包板上插探头探头本身的十几pF电容就会增加负载所以测出来的延迟比纯芯片数据手册标称值大这是正常的。4.3 静态时序分析视角单级触发器到多级级联学过数字IC设计的人都知道静态时序分析STA。别觉得它离焊电路很远实际上你把两个D触发器级联起来立刻就能体会到STA为什么存在。级联两个D触发器把第一个触发器的Q接到第二个触发器的D两个触发器共用一个CLK。此时第一个触发器Q端的输出变化需要经过传输延迟才能到达第二个触发器的D端。如果两个触发器的时钟沿严格同时到达就会出现一个问题第二个触发器的D端信号正好在时钟沿之后才开始变化。对第二个触发器来说D在时钟沿之后变化只要保持时间满足就没事。但如果第一个触发器Q到第二个触发器D之间还有组合逻辑比如一个反相器、一个与门信号传输延迟变大就可能侵占第二个触发器的建立时间窗口。STA做的事情就是遍历所有这样的路径检查每一条路径上数据到达时间是否早于时钟捕获时间减去建立时间。这个思想在搭多级计数器、移位寄存器时非常实用。我们搭的这个电路多级级联时最好用示波器看一眼第二级D端的波形。你会发现D端的信号边沿比CLK边沿晚了一点点这个一点点就是第一级的传输延迟。如果后面还有第三级第四级累积延迟越来越大总有一天会踩到建立时间红线。5. 避坑指南MOS管D触发器常见问题与排查5.1 时钟毛刺引起的误触发D触发器对时钟边沿极其敏感CLK上任何一次越过逻辑阈值的抖动都可能被当成有效沿。面包板上常见的毛刺来源有两个一是电源去耦不良芯片开关瞬间在电源线上产生压降耦合到CLK线上二是信号发生器输出方波经过长跳线后在阻抗不连续处产生反射过冲。排查方法用示波器把CLK波形放大看重点看上升沿附近有没有回勾和振铃。如果过冲明显在信号发生器输出端串一个33Ω电阻或者在CLK输入端对地并联一个小电容比如20pF做滤波都能明显改善。5.2 电平与驱动能力问题CD4016和CD4069是CMOS器件输入高电平至少要达到0.7倍VDD低电平要低于0.3倍VDD。如果用3.3V单片机输出驱动5V供电的D触发器高电平3.3V低于5V CMOS的输入高电平阈值电路就会工作不稳定。解决办法是电平转换。最简单的方式是用一个NMOS加一个上拉电阻做单向电平转换NMOS栅极接3.3V信号源极接地漏极通过10kΩ电阻上拉到5V漏极输出就是5V逻辑电平。这正是MOS管电平转换电路最基本的样子。另外CD4016的输出驱动能力很弱大概只有几毫安。如果你想用Q输出去点亮LED最好加一级MOS管缓冲不要直接挂负载。这也是为什么实际电路里D触发器后面总要跟驱动电路。5.3 示波器测量陷阱测建立时间和保持时间时示波器探头本身的电容会改变被测节点的波形。一个常见探头输入电容约10-15pF如果被测点阻抗高探头的电容会和信号源内阻形成RC低通把边沿变缓测出来的时序参数就不准。尽量使用10x探头档位它比1x档输入电容小、带宽高。测量CLK和D信号时用两个通道同时观察触发电平设在VDD/2附近。触发模式用边沿触发触发源选CLK通道。5.4 常见问题速查表现象可能原因解决方法输出Q一直不变时钟没进来或D输入悬空检查CLK接线D端加下拉电阻Q输出为中间电压输入电平不在有效逻辑范围检查信号源电平做电平转换二分频频率不对/Q没接回D或接错成Q检查INV4输出是否正确上电后Q状态乱跳电源去耦不良毛刺触发加100nF10uF去耦电容手动开关切换D时误触发开关机械抖动D端加RC滤波1kΩ100nF高频时输出异常面包板寄生电容太大降低频率或改用PCB/洞洞板焊接6. 扩展应用MOS管在后级驱动中的实战心得6.1 用MOS管做输出缓冲与电平转换D触发器搭好之后最自然的扩展就是让它去驱动外部负载。CD4016输出驱动能力弱接一个LED可能都嫌勉强但后面加一个MOS管就不一样了。以AO3400N沟道增强型MOS管为例D触发器Q输出经一个1kΩ电阻接到AO3400栅极AO3400源极接地漏极串LED和限流电阻到VDD。Q为高时AO3400导通LED点亮。这个电路里Q只提供栅极电压几乎不提供电流真正流过LED的电流由AO3400的导通能力决定。这里有个重要细节如果Q端输出高电平只是3.3V而AO3400的阈值电压Vth是1.5V左右勉强能导通但如果换成阈值电压2.5V以上的功率MOS管3.3V就不够了需要更完整的电平转换电路。6.2 驱动容性负载时的米勒平台与发热问题用MOS管驱动容性负载比如继电器线圈、电机、长电缆时每次开关都在给负载电容充放电。开关频率越高开关损耗越大。PWM调速电路里MOS管发热严重十有八九是开关损耗过大而不是导通损耗。我见过一个典型故障用单片机PWM直驱MOS管控制直流电机工作一会儿MOS管烫手。示波器看栅极波形发现Vgs上升得很慢米勒平台区特别宽。原因是单片机IO驱动能力不足栅极电容充放电太慢。加上一个专用的MOS管驱动芯片或者至少用一对三极管推挽之后栅极边沿明显变陡温度立刻降下来。另外一个容易忽略的点是栅极串联电阻。在栅极串10Ω到30Ω电阻可以抑制栅极回路的高频振荡代价是稍微减慢开关速度。推荐在驱动感性负载时保留这个电阻用示波器确认栅极波形无振铃后再调大或调小。6.3 选型与PCB布局经验最后聊几句选型。MOS管选型时除了电压电流额定值还要看导通电阻RDS(on)、栅极电荷Qg、阈值电压Vgs(th)和安全工作区SOA。RDS(on)决定导通损耗低压小电流应用选几十毫欧的管子即可。Qg决定开关速度Qg越大需要的栅极驱动能量越多开关损耗越大。Vgs(th)决定逻辑电平能不能直接驱动3.3V系统一定要选Vgs(th)低于2V的管子。SOA是管子的安全边界瞬时功率超过SOA就会损坏脉冲负载尤其要查这条曲线。做PCB时MOS管的栅极走线要短驱动芯片要靠近MOS管摆放功率回路要尽量小减少寄生电感。栅极驱动回路和功率回路要分开走线避免功率回路的开关噪声耦合到栅极。我自己的体会是这套实验做完之后再去翻数字IC的数据手册看到里面的时序图会亲切很多。D触发器不是什么神秘的黑盒子它就是一堆MOS管在时钟控制下开关、反馈、锁存的结果。以后你在产品里遇到触发器误动作、时序裕量不够、MOS管莫名其妙发热这类问题至少知道从哪个方向去查了。
返回列表