ARTICLE DETAIL

资讯详情

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

SR锁存器原理与实操:与非门和或非门版本对比

SR锁存器原理与实操:与非门和或非门版本对比 1. 为什么SR锁存器是数字电路的第一道坎很多人学数字电路翻开教材第一章就是各种门电路的真值表与门、或门、非门一路看下来觉得还行逻辑挺清晰。然后突然跳到SR锁存器画风就变了——两个与非门交叉耦合输出又接回输入脑子里瞬间一团浆糊。我当年第一次看到这个结构的时候盯着看了半小时也没想明白这玩意儿到底怎么工作的输出反馈到输入那不是死循环吗后来做实验的时候用74HC00芯片搭了一个实际的SR锁存器电路拿万用表一测才真正理解了它的行为。那种哦原来如此的感觉是光看教材给不了的。所以这篇文章我想从一个实际动手的角度把SR锁存器这个东西彻底讲清楚包括它与非门版本和或非门版本的区别以及为什么它被称为锁存器而不是触发器。SR锁存器是数字电路中最早接触的存储元件也是理解后续D触发器、JK触发器、T触发器的基础。如果你正在学数字电路基础、准备数字电路实验或者单纯想搞明白电路怎么记住一个bit这件事那这篇内容应该能帮你省下不少对着教材发呆的时间。核心关键词就几个SR锁存器、与非门、或非门、数字电路。我会围绕这几个点把原理、对比、实操和踩坑经验都串起来。2. SR锁存器的核心原理拆解2.1 锁存器到底锁的是什么先说一个最朴素的问题数字电路怎么记住信息组合逻辑电路有个特点——输出完全由当前输入决定。你给它一组输入它给你一个输出输入变了输出就跟着变没有任何记忆能力。但如果我们想要一个电路按下按钮灯亮了松开按钮灯还亮着这就需要电路能记住之前的状态。SR锁存器就是干这个的。它有两个输入端SSet置位和RReset复位有两个输出端Q和QQ的反相。它的核心能力是当S有效时Q变成1并保持当R有效时Q变成0并保持当S和R都无效时Q保持之前的状态不变。这个保持功能就是锁存器的灵魂。你可以把它想象成一个带记忆功能的开关——你按一下开它就一直是开的状态直到你按另一个按钮让它关。那它是怎么实现记住的呢关键就在于反馈。把输出引回到输入端让电路自己看到自己之前的状态这就形成了记忆。听起来简单但实际操作中有很多细节需要注意后面会详细展开。2.2 与非门版本的工作逻辑用两个与非门交叉耦合就能构成最基本的SR锁存器。具体连接方式是第一个与非门的输出接第二个与非门的一个输入第二个与非门的输出接第一个与非门的一个输入。两个与非门各自还有一个外部输入分别就是S和R。这里有个容易搞混的地方与非门是低电平有效的。也就是说输入端为0的时候这个输入才起作用。所以对于与非门版本的SR锁存器S和R都是低电平有效。我列一下四种输入组合的情况SRQQ状态说明11保持保持保持之前的状态0110置位Q变为11001复位Q变为00011不允许出现前三种情况都好理解关键是第四种。当S和R同时为0时两个与非门的输出都会变成1也就是Q和Q同时为1。这违背了Q和Q应该互补的基本约定。更麻烦的是如果S和R同时从0变回1两个与非门会竞争最终状态取决于两个门的延迟差异是不确定的。所以在实际设计中这种输入组合是被禁止的。注意与非门SR锁存器的约束条件是SR1至少有一个为高电平也就是不允许S和R同时为低电平。2.3 或非门版本的工作逻辑或非门版本的SR锁存器结构类似也是两个门交叉耦合但用的是或非门。或非门是高电平有效的所以S和R都是高电平有效。四种输入组合SRQQ状态说明00保持保持保持之前的状态1010置位Q变为10101复位Q变为01100不允许出现或非门版本中当S和R同时为1时两个输出都变成0同样违背了互补约定而且当输入同时回到0时也会出现竞争。所以约束条件是S和R不能同时为高电平即S·R0。2.4 两种结构的本质对比很多人学到这里会问既然功能一样为什么要有两种版本这个问题问得好。从逻辑功能上看两者确实都能实现置位、复位和保持。但它们的有效电平不同这直接影响了实际使用中的便利性和安全性。与非门版本是低电平有效这意味着在默认状态下不操作时S和R都接高电平。如果你用按键来控制按键一端接地另一端接输入按下时输入变低就触发了操作。这种接法在实验板上很常见因为按键接地比接电源更方便布线。或非门版本是高电平有效默认状态下S和R都接低电平接地。按键需要接电源按下时输入变高。从功耗角度看或非门版本在静态时输入为低功耗更低。还有一个关键区别与非门版本在S和R同时有效都为0时输出Q和Q同时为1或非门版本在S和R同时有效都为1时输出同时为0。在实际电路中哪种非法状态更容易被检测和处理也是选型时要考虑的。我个人在做实验时更倾向于用与非门版本因为74HC00是四与非门芯片非常常见而且低电平有效的按键接法更符合直觉——按下就是操作松开就是不操作。3. 从零搭建SR锁存器的实操过程3.1 芯片选型与准备要搭一个实际的SR锁存器你需要以下元件74HC00四路2输入与非门芯片一片就够。选HC系列是因为它的工作电压范围宽2V-6V和大多数实验板兼容。LED灯两个分别指示Q和Q的状态。限流电阻两个220Ω或330Ω都行串在LED上防止烧坏。按键两个用于控制S和R。面包板一块。杜邦线若干。电源5V直流。如果你手头没有74HC00也可以用74LS00但要注意LS系列是TTL电平输入高电平最低2V低电平最高0.8V和HC系列略有不同。在5V供电下两者可以互换但不要混用太多。3.2 具体接线步骤74HC00的引脚排列是标准化的14脚接VCC7脚接GND。四个与非门分别用引脚1、2输入3输出4、5输入6输出9、10输入8输出12、13输入11输出。我们用第一个和第二个与非门来搭SR锁存器把74HC00插在面包板上注意缺口朝左引脚编号从左上角开始逆时针数。14脚接5V7脚接GND。第一个与非门引脚1接S按键引脚2接第二个与非门的输出引脚6。第二个与非门引脚5接R按键引脚4接第一个与非门的输出引脚3。引脚3Q接一个LED的正极LED负极通过220Ω电阻接地。引脚6Q接另一个LED的正极LED负极通过另一个220Ω电阻接地。S按键一端接引脚1另一端接地。R按键一端接引脚5另一端接地。引脚1和引脚5分别通过10kΩ电阻上拉到5V。这里上拉电阻的作用很关键。因为与非门输入端不能悬空悬空时电平不确定会导致电路行为异常。10kΩ是一个经验值太小会增加功耗太大抗干扰能力差。3.3 上电测试与现象观察接好线之后先不要急着按按键。上电后观察LED的状态。由于上电时S和R都是高电平通过上拉电阻电路处于保持状态但初始状态是不确定的——可能Q亮也可能Q亮。这是正常的因为锁存器上电初始状态取决于内部晶体管的微小差异。你可以先按一下S按键把引脚1拉低观察LED。Q对应的LED应该亮起Q对应的LED熄灭。松开按键后Q继续保持亮这就是锁存的效果。然后按一下R按键Q熄灭Q亮起。松开后状态保持。如果你同时按下S和R两个LED都会亮因为与非门输出都为高。松开后状态不确定可能Q亮也可能Q亮。这就是前面说的非法状态实际使用中要避免。实操心得测试的时候建议先按S再按R反复几次确认置位和复位功能都正常。如果LED状态不对先检查上拉电阻是否接好再检查交叉耦合的线有没有接错。3.4 用drawio画原理图的小技巧如果你需要画SR锁存器的原理图drawio是个不错的选择。它内置了数字电路符号库在More Shapes里搜索Logic或者Electrical就能找到与非门、或非门、LED等符号。画交叉耦合的时候建议用直角连线而不是斜线这样看起来更清晰。两个与非门左右放置输出线从右边绕回来接到另一个门的输入形成一个明显的反馈回路。标注S、R、Q、Q的时候字体用等宽字体看起来更专业。一个小细节drawio里与非门的符号是一个与门加一个小圆圈或非门是一个或门加小圆圈。如果你找不到可以用基本形状自己拼但建议还是用标准符号方便别人阅读。4. 与非门和或非门版本的深度对比4.1 有效电平与默认状态前面已经提到了有效电平的区别这里再深入说一下它对实际电路设计的影响。与非门版本低电平有效意味着在空闲状态下S和R都是高电平。如果你用MCU的GPIO来控制MCU上电复位后GPIO通常是高阻态或高电平这时候锁存器处于保持状态不会误触发。但如果你用的是开漏输出需要外接上拉电阻那就正好合适。或非门版本高电平有效空闲时S和R都是低电平。MCU的GPIO如果是推挽输出默认低电平也处于保持状态。但如果MCU复位时GPIO有短暂的高电平脉冲就可能误触发置位或复位。从系统安全的角度看与非门版本在MCU上电阶段更安全因为高电平是不操作的状态而大多数MCU复位后GPIO默认是高电平或高阻加上拉后为高。4.2 非法状态的差异与处理两种版本的非法状态不同与非门版本是SR0时QQ1或非门版本是SR1时QQ0。在实际电路中如果非法状态出现你可以通过检测Q和Q是否互补来判断。如果Q和Q相同说明处于非法状态。有些设计会加一个额外的逻辑门来检测这种情况并强制复位。但更常见的做法是从源头避免。比如用按键控制时加一个互锁逻辑确保S和R不会同时有效。或者用旋转开关物理上就不可能同时按下两个按键。注意非法状态不仅仅是输出不对的问题更严重的是当两个输入同时失效时电路会进入亚稳态输出可能在高低之间振荡一段时间这对后续电路是灾难性的。4.3 速度与功耗的考量从速度上看与非门和或非门在CMOS工艺下的传播延迟差不多都在纳秒级别。但在TTL工艺下74LS00和74LS02的延迟可能有细微差别不过对于入门实验来说完全可以忽略。功耗方面静态时与非门版本的输入是高电平CMOS输入级的高电平输入电流很小微安级所以静态功耗很低。或非门版本静态时输入是低电平输入电流更小。两者在静态功耗上差异不大。动态功耗主要取决于翻转频率。每次状态翻转内部节点电容充放电都会消耗能量。在低频应用比如按键控制下功耗可以忽略不计。4.4 选型建议速查表考量维度与非门版本或非门版本有效电平低电平高电平空闲状态输入高电平低电平非法状态SR0QQ1SR1QQ0常见芯片74HC0074HC02按键接法按键接地按键接电源MCU直连安全性较高一般实验板布线便利性较好一般如果你只是做入门实验手头有什么芯片就用什么。如果是在做实际项目建议优先考虑与非门版本因为74HC00更常见而且低电平有效的设计在抗干扰方面通常更好——低电平比高电平更难被噪声拉高。5. 常见问题与排查技巧实录5.1 上电后LED状态不稳定这是最常见的问题。原因通常有三个输入端悬空、电源去耦不足、或者按键抖动。输入端悬空是最常见的。与非门输入端如果什么都不接电平是不确定的可能被环境噪声干扰。解决办法就是加上拉电阻10kΩ到100kΩ都可以。电源去耦不足也会导致状态不稳定。建议在74HC00的VCC和GND之间并一个0.1μF的陶瓷电容位置尽量靠近芯片的电源引脚。这个电容能滤掉电源上的高频噪声对数字电路来说几乎是必备的。按键抖动是另一个原因。机械按键在按下和松开的瞬间会产生几十毫秒的抖动导致锁存器状态快速翻转。对于SR锁存器来说如果抖动发生在S或R的有效期间可能不会造成问题但如果抖动发生在状态切换的临界点就可能导致不确定。解决办法是加RC滤波或者用软件消抖。5.2 同时按下两个按键后状态混乱这就是非法状态导致的。与非门版本中S和R同时为低时Q和Q都为高。松开按键后两个与非门会竞争谁先翻转取决于延迟差异结果不确定。解决办法有两个一是物理上避免同时按下比如用互锁按键二是在电路上加逻辑保护确保S和R不会同时有效。对于入门实验知道这个现象并避免同时按下就行了。5.3 输出LED亮度异常如果LED亮度明显偏暗可能是限流电阻太大。220Ω在5V下电流约10mA亮度适中。如果用了1kΩ电流只有3mA左右会偏暗。但也不要太小74HC00的输出电流最大约25mA太小会烧芯片。如果LED完全不亮先检查LED极性是否接反再检查与非门输出是否正常。可以用万用表测引脚3和引脚6的电压正常应该在0V或5V左右。5.4 常见问题速查表现象可能原因排查方法解决办法上电状态不定输入悬空测输入引脚电压加上拉电阻状态偶尔跳变电源噪声示波器看电源纹波加0.1μF去耦电容按键后状态乱按键抖动示波器看按键波形加RC滤波或软件消抖同时按键后混乱非法状态检查S和R是否同时有效避免同时按下LED不亮极性反/电阻大测LED两端电压换极性或减小电阻输出电平不对芯片损坏测输出引脚电压更换芯片5.5 独家避坑技巧我在做实验时踩过几个坑这里分享一下。第一个坑是忘记接电源。74HC00的14脚和7脚一定要接而且最好用不同颜色的线区分VCC和GND避免接反。接反了芯片会发烫甚至烧毁。第二个坑是上拉电阻太大。我用过100kΩ的上拉电阻结果电路抗干扰能力很差手靠近面包板LED就会闪。后来换成10kΩ就稳定了。所以上拉电阻不要超过47kΩ10kΩ是比较稳妥的选择。第三个坑是交叉耦合线接错。与非门的输出应该接到另一个与非门的输入而不是接到自己的输入。这个错误很隐蔽因为接错了电路也会工作但逻辑完全不对。建议画个草图再接线接完对照检查一遍。第四个坑是用错芯片。74HC00和74LS00虽然功能一样但电平标准不同。如果你用3.3V供电74LS00可能无法正常工作因为它的最低工作电压是4.75V。74HC00在3.3V下可以正常工作所以低压系统优先选HC系列。6. 从SR锁存器到更复杂的时序电路6.1 为什么叫锁存器而不是触发器这个问题很多人搞混。简单说锁存器是电平敏感的触发器是边沿敏感的。SR锁存器在S或R有效期间输出会跟随输入变化。比如S为低时Q就是高如果S在低电平期间有抖动Q也会跟着抖动。这就是电平敏感的含义。而触发器只在时钟边沿上升沿或下降沿采样输入其他时间输出不变。这就避免了锁存器在有效电平期间的透明性问题。所以SR锁存器是锁存器不是触发器。虽然有时候教材会把它们混着叫但严格来说是有区别的。6.2 从SR锁存器到D锁存器SR锁存器有个问题S和R不能同时有效。如果能把这两个输入合并成一个数据输入D再加一个使能信号就变成了D锁存器。D锁存器的逻辑是使能有效时Q跟随D使能无效时Q保持。这样就避免了非法状态使用起来更方便。D锁存器再进一步加上时钟边沿检测就变成了D触发器。D触发器是构成寄存器、计数器、状态机的基础。所以SR锁存器虽然简单但它是整个时序逻辑的起点。理解了它后面的内容就顺理成章了。6.3 实际应用场景SR锁存器在实际电路中用得很多只是你可能没注意到。比如按键开关的消抖电路就可以用SR锁存器实现。按键按下时置位松开时复位中间通过RC延时来滤除抖动。再比如电源监控电路当电压低于某个阈值时用比较器输出触发SR锁存器锁存一个故障信号直到手动复位。这样可以确保故障被记录不会因为电压恢复而丢失。还有多路竞争的处理比如两个设备同时请求总线可以用SR锁存器来仲裁先到先得。这些应用的核心都是利用SR锁存器的记忆能力把瞬态事件锁存下来供后续电路处理。6.4 后续学习路径建议如果你已经搞懂了SR锁存器接下来可以按这个顺序继续D锁存器和D触发器理解电平敏感和边沿敏感的区别。JK触发器解决SR锁存器的非法状态问题功能更强大。T触发器JK触发器的一种特殊用法用于计数。寄存器与移位寄存器多个触发器组合存储多位数据。计数器触发器加组合逻辑实现计数功能。有限状态机时序逻辑的终极形态用于复杂控制。每一步都建立在前一步的基础上所以SR锁存器这个基础一定要打牢。如果你能自己用与非门搭出SR锁存器并且能解释清楚每一个状态那后面的内容会轻松很多。我个人在实际操作中的体会是数字电路这东西光看书是不够的。哪怕你把真值表背得滚瓜烂熟不实际搭一次电路很多细节还是理解不了。比如上拉电阻的作用、按键抖动的现象、非法状态的实际表现这些都是动手之后才会有深刻印象的。所以如果你手头有实验板强烈建议花半小时搭一个SR锁存器亲手按几下按键看看LED的变化。那种直观的感受比看十遍教材都管用。最后再分享一个小技巧如果你没有实验板也可以用仿真软件。LTspice、Multisim、Proteus都支持数字电路仿真。画好原理图设置好激励就能看到波形。虽然不如实际动手有感觉但至少能验证逻辑是否正确。等你仿真通过了再搭实际电路成功率会高很多。
返回列表