
跟主从JK触发器死磕之前先聊聊为什么这个实验总翻车数字电路实验做到主从JK触发器这一节翻车率往往比前面的与或非门高出好几个量级。原理课上你觉得自己已经把JK触发器吃透了——无非是“J1、K1就翻转J0、K0就保持”可真到了面包板前要么输出死活不动要么波形乱跳要么仿真里跑得好好的、实物一通电全乱套。老实验室里流传一句话十个来问主从JK触发器的人八个不是原理没懂而是根本不知道主从结构有个“一次变化”的怪脾气剩下两个则是在面包板上把引脚认错了。这篇文章我想把这几年带实验、自己也反复搭过N次的主从JK触发器测试电路从头到尾给你捋一遍。内容包括芯片怎么选、74LS76的引脚到底怎么看、面包板连接有哪些铁律、Proteus仿真怎么搭才接近实物以及一套从真值表反推出来的测试步骤。不管你是正在做数字电路实验的本科生还是准备考研复试想补实操的考研党或者只是对Proteus仿真感兴趣想自己搭个电路玩的爱好者照着我这套流程走一遍能少走很多弯路。1. 先弄懂主从JK触发器的“脾气”所有避坑都从这里开始1.1 主从结构到底在干什么主从JK触发器英文叫Master-Slave JK Flip-Flop本质上是把两个基本RS锁存器串起来前面一个叫主触发器负责在CP高电平期间跟着输入J、K变化后面一个叫从触发器在CP下降沿到来时才把主触发器的状态“搬运”到输出端。所以输出Q的变化只发生在时钟下降沿这一点和边沿触发JK触发器在外观上很像但内部机制完全不同。为什么要用这种两级结构因为单级的JK触发器在CP1期间如果J、K信号反复变化输出可能跟着翻转多次也就是所谓的“空翻”。主从结构相当于加了一道缓冲CP高电平时输入先写进“草稿纸”CP下降沿才正式“提交盖章”。所以实验里你会看到无论CP高电平期间J、K怎么折腾Q只在每个下降沿最多变一次。这个结构对应的特征方程还是那句话Q(n1)J·Q̅(n)K̅·Q(n)。注意这里的Q̅是Q的反相方程用的是当前状态Q(n)去计算下一个状态Q(n1)。真值表大家应该都背过J0、K0保持J0、K1清零J1、K0置位J1、K1翻转。1.2 一次变化现象教科书不强调实验最容易踩的坑主从JK触发器有一个著名的“一次变化”现象ones catching problem教科书上通常只是在讲边沿触发和主从触发区别时一笔带过但做实验时这玩意儿能坑死一堆人。现象说简单点就是在CP1的整个高电平期间主触发器只能被输入“捕获”并翻转一次。一旦主触发器翻过去了即使你在这个高电平里再把J或K改回去主触发器也不会跟着再翻一次必须等CP下降到低电平完成一次输出更新后下一个CP高电平才重新允许捕获。举个例子。假设当前Q0JK都接1。照理说JK触发器在JK1时应该翻转所以下一个下降沿之后Q应该变成1。但如果在CP高电平还没结束的时候你把J从1拉到了0此时主触发器已经“记住”了置位信号输出还是会在之后的下降沿变成1而不是因为你把J拉低而保持0。很多同学在测试时习惯性边看边改输入看到Q没有立刻变就以为电路坏了其实是因为没给完整的时钟周期。这个特性在Proteus仿真里也同样存在因为仿真模型是按电学行为建的不是理想门那么单纯。所以测试时要养成一个习惯先设定好J、K电平再给一个完整的时钟下降沿最后观察Q改输入前先等输出稳定。不要手快。2. 硬件搭建前的关键准备芯片选型、引脚图与面包板铁律2.1 选74LS76还是74LS73还是干脆用74HC系列做主从JK触发器实验市面上最常见的芯片有两颗74LS76和74LS73。74LS76是双主从JK触发器内部集成了两个独立的触发器每个都带异步置位PRE和异步清零CLR端下降沿触发。74LS73同样是双主从JK触发器但只有异步清零端没有异步置位端。如果实验要求验证置位功能你就老老实实用74LS76如果只需要验证清零、保持、翻转74LS73也够用。有些同学会问用74HC112行不行这是个坑。74HC112虽然是JK触发器但它是边沿触发不是主从结构行为表现和主从结构在“一次变化”上完全不同。如果实验报告上要求写“主从JK触发器”而你拿边沿触发的芯片硬测波形会对不上老师追问起来也很难解释。所以选芯片第一原则是看实验任务书明确写着“主从”就选76或73。另外要注意74LS系列是TTL工艺输入高电平阈值大约2V输出能驱动几个毫安级别的负载74HC系列是CMOS工艺输入阻抗高、功耗低、速度也快但两者不能随便混用接在同一个节点上电平标准有差异。2.2 74LS76引脚图怎么看三个最容易读错的地方很多同学拿到芯片直接插面包板结果插完发现Q输出和输入对不上回头一看才发现引脚认错了。我以74LS76为例把一个16脚双列直插封装的功能分配写出来大家做实验前一定要对着自己的数据手册再核对一遍。74LS76常见引脚功能1脚CLR1低电平有效异步清零、2脚PRE1低电平有效异步置位、3脚CLK1下降沿触发时钟、4脚J1、5脚K1、6脚Q1反相输出、7脚Q1同相输出、8脚GND、9脚Q2同相输出、10脚Q2反相输出、11脚K2、12脚J2、13脚CLK2、14脚PRE2、15脚CLR2、16脚VCC。不同厂商生产的74LS76A或74LS76可能会有引脚顺序微调所以我的建议是不管记忆里多熟上电前都要对着数据手册图核对一次最好打印出来放在实验台上。这里特别容易读错的三个地方一是PRE和CLR是低电平有效不是高电平有效很多人习惯性以为“给高就是置位”结果把置位脚悬空或者接错电平导致芯片状态不受控二是时钟是下降沿触发不是上升沿所以示波器上要看的是CLK从高到低的那一刹那第三是同一个封装里上下两个触发器的编号Q1、Q2和J/K的对应关系要注意别把第一组的时钟接到了第二组的时钟上。2.3 面包板上不允许犯的三个“低级错误”硬件实验80%的故障都出在面包板连接上而且往往是看起来最不起眼的地方。第一电源和地。接芯片之前先拿万用表确认面包板上下两排电源轨是通的再把VCC接到5V、GND接到0V。如果正负极接反芯片会发烫甚至直接烧掉。主从JK触发器对电源还是比较宽容的TTL工作电压4.75V到5.25V但你也不能拿3.3V去喂它。第二输入引脚绝对不能悬空。J、K、PRE、CLR、CLK这些引脚如果实验方案里要求固定电平就得明确接到高或低而不是什么都不接。TTL芯片悬空输入会被当成高电平但抗干扰能力极差手指靠近都可能让输出跳变。不用的置位、清零端要接高电平不用的J、K可以接低电平或者高电平但不能悬空。第三去耦电容。很多教材会提醒你在芯片VCC和GND之间跨接一个0.1uF陶瓷电容位置离芯片越近越好。有时候实验现象不稳定、测出来的波形毛刺多不是电路设计错而是电源上有高频噪声或者数字电路开关瞬间产生了电源塌陷。加个去耦电容能解决大半问题。同样如果时钟是通过按钮手动产生的一定要做消抖否则一次按下按钮电气上的抖动会被当成好几个时钟脉冲输出可能连续翻转多次。3. Proteus仿真实操在电脑上把“错误”先犯一遍3.1 元件放置与环境配置做仿真不是光为了应付老师截图而是用最低成本把电路逻辑跑顺。打开Proteus ISIS之后界面左边工具栏有个“P”字样的元件拾取按钮点击后搜索“74LS76”或者“7476”就能找到主从JK触发器模型。有些版本库里只有74LS76A或7476这是同一类器件的不同代号放进去用没问题。放好元件后还需要放几种基本元器件VCC和GND电源终端、LOGICSTATE逻辑状态输入、DCLOCK时钟源、LED或LOGICPROBE逻辑探针。VCC和GND在Proteus里不是直接双击就能出来的要从终端模式Terminals Mode里选POWER和GROUND放置。这里有个容易被忽略的地方仿真电路必须存在明确的GND参考点否则仿真会报错或者输出异常。顺便说个和本期实验无关但经常有人搜的问题proteus仿真声音总开关在哪里。如果你在仿真里放了蜂鸣器、喇叭这类发声元件仿真运行后听不到声音通常不是元件问题而是声音总开关没打开。在Proteus ISIS菜单栏点“System”然后选择“Set Animation Options”弹窗里有“Sound”选项把它勾上。部分版本在仿真运行控制条上也有一个扬声器图标可以直接切换。这个和JK触发器没什么关系但既然搜到了就顺便放在这里。3.2 最小测试电路搭建步骤我习惯先在Proteus里把每个功能模块单独验证一遍全部通过再搬到面包板。最小测试电路的搭建顺序如下第一步放置74LS76把VCC接到16脚、GND接到8脚。第二步放置两个LOGICSTATE作为J和K的输入分别接到4脚和5脚。第三步放置一个DCLOCK时钟源接到3脚CLK1。第四步放置两个LOGICSTATE作为PRE和CLR的控制输入分别接到2脚和1脚。注意这两个是高还是低有效——低电平有效所以正常工作时应该给高电平。第五步在7脚Q1输出接一个LOGICPROBE逻辑探针有条件的话再在6脚Q1反相输出接一个方便对比。DCLOCK的属性要设置一下右键点击时钟源在属性中的Frequency填上合适的频率。如果只是观察LED亮灭设1Hz到5Hz就够了如果要连虚拟示波器看波形可以设到100Hz甚至1kHz。频率太高LED会闪成一片看不清频率太低示波器观察窗口又不好调。接完这些点击运行默认状态下如果PRE和CLR都是高电平J、K都是低电平则输出应该保持0。把K拉高、J保持低给一个下降沿Q应该变成0也就是清零。把J拉高、K保持低给一个下降沿Q应该变成1也就是置位。J和K同时拉高时每个下降沿后Q翻转一次。到这里最小测试电路就通了。3.3 用虚拟示波器验证时序如何抓下降沿LED只能看结果看不清时序。要真正验证“输出只在下降沿变化”和“一次变化现象”得用虚拟示波器。Proteus左侧工具栏有虚拟仪器模式里面可以放置OSCILLOSCOPE虚拟示波器。把CLK、J、K、Q四路信号分别连到示波器的A、B、C、D通道上。运行仿真时虚拟示波器会展开一个显示窗口。你需要调整时间分度比如每格50毫秒这样既能看清高低电平变化又能看出每个边沿的对齐关系。判断是否“下降沿触发”很简单把光标停在CLK下降沿的位置再对比同一点Q的状态变化点如果Q的跳变正好发生在CLK下降沿说明触发方式正确。如果想验证一次变化就把时钟频率降低到1Hz左右然后找一个CP高电平的时间窗口在J、K都接1的前提下把J从1拉到0然后再拉回1。你会看到Q没有在这一次高电平里跟着“多翻”而是在CLK下降沿到来时才从0跳到1。这一步在示波器上看得最清楚Q的变化点不随J、K的中间变化而移动只死死盯住下降沿。有个心理准备Proteus仿真模型是理想化模型没有真实的传输延迟、建立保持时间、电源噪声这些所以你在仿真里看不到毛刺和亚稳态。仿真通过不等于实物一定通过但仿真如果都过不了实物大概率更费劲。仿真最大的价值是逼你把逻辑关系理清楚把线序、真值表、测试步骤先定下来。4. 从真值表倒推测试步骤让每一步都有据可依4.1 异步置位和清位验证PRE和CLR的优先级很多同学拿到芯片就想先测J、K逻辑结果发现输出一直不对。我建议把测试顺序反过来先测“异步控制端”也就是PRE和CLR。因为这两个引脚能直接决定Q的输出状态如果不先验证它们后面J、K的测试结果很可能被一个未接好电平的PRE或CLR莫名其妙地锁死。测试方法是CLK保持任意电平J、K暂时不管把CLR接高电平、PRE拉低理论上Q会立刻变成1。然后把PRE接回高电平再把CLR拉低Q应该立刻变成0。注意这里的变化不依赖时钟所以叫异步置位和异步清零。观察的现象是Q几乎在操作瞬间就变化而不是等下降沿。有个细节要特别提醒PRE和CLR都是低电平有效也就是“拉低才动作”。正常工作时这两个引脚都应该接高电平千万别悬空。如果在测试中你把PRE和CLR同时拉低了那么置位和清零同时竞争输出状态取决于芯片内部的实际逻辑不同型号可能结果不一致所以不要做这种操作实验中也没有哪个真值表需要同时置位和清零。4.2 保持、清零、置位三种简单状态的逐项测试确认PRE和CLR正常后就可以把测试焦点放到J、K上了。为了让结果可预期测试时要保证PRE和CLR都是高电平也就是让异步端退出控制把舞台完全交给时钟和J、K。照着真值表一项项来。第一项保持J0、K0先给一个下降沿Q应该维持原状态不变。比如你先前置到1再给下降沿Q仍然是1。第二项清零J0、K1给一个下降沿Q变成0。第三项置位J1、K0给一个下降沿Q变成1。这三项操作时要记住先设置J、K的静态电平再给一个时钟下降沿然后读Q读完再改下一个状态。不要边改边看否则容易误判。我在实验室见过太多同学在J、K还没接好线的情况下就急着按按钮结果输出跟真值表完全对不上。其实只要按照这个三拍节奏来——设输入、给时钟、读输出——测试效率会高很多。你也可以把测试结果直接填在预先画好的真值表上填的过程其实就是排查的过程。4.3 JK1翻转与“一次变化”复现最后一项是翻转和一次变化。J1、K1时每给一个下降沿Q翻转一次。这个测试最好配合LED观察1Hz的时钟下LED应该一秒亮一秒灭非常直观。这个状态下最容易暴露“一次变化”的问题。具体操作是这样的把J、K都置为高电平然后让时钟停在低电平。先让Q通过CLR清零变成0再启动时钟源此时第一个下降沿到来时Q会从0变成1。关键操作来了在某个CP高电平还没有结束的时候快速把J拉低再拉高保持到下降沿来临。如果这是边沿触发器这个短暂的J变化不会影响输出输出在下降沿后仍然是1而主从结构里因为主触发器在CP高电平期间已经“捕获”过一次置位信号这个J拉低不会让主触发器回到清零状态所以下降沿后Q照样翻到1。换句话说即使你把J短暂改成0Q该翻还是会翻。这个现象一开始会觉得反直觉但等你真的在示波器上看到Q的变化点只跟着下降沿走完全不受中间J抖动影响时你对主从结构的理解就上了一个台阶。这也是实验报告里最有技术含量的图——能截到这一张老师基本不会为难你。5. 常见问题与排查技巧实录5.1 仿真里反复出现的几个坑Proteus仿真虽然比实物简单但也不是不会出幺蛾子。最常见的几个坑我按出现频率排一下。第一找不到元件。搜索74LS76搜不到可以试试搜7476、74ALS76、74S76。不同版本的Proteus库覆盖不一样搜不到不代表电脑坏了。第二仿真运行后LED不亮或者逻辑探针没反应先检查有没有放GND终端有些版本里只放了VCC没放GND整个电路没有参考地仿真结果就是乱的。第三时钟频率设置太高LED肉眼看不到闪烁误以为输出没变化这时候用示波器看波形才靠谱。第四LOGICSTATE在仿真过程中如果被鼠标误点了电平会突变但没有主动改它的人往往会忽略输出变了半天才反应过来。还有一个和本实验关系不算大的细节就是“proteus 仿真声音总开关在哪里”。如果你发现仿真运行正常但就是没声音去System菜单下的Set Animation Options里找Sound选项勾选即可。有些版本在仿真运行控制条上有扬声器图标点一下就能切换。这个坑主要发生在带蜂鸣器、喇叭的仿真项目里和JK触发器本身没关系但既然大家都搜我就放在这里了。5.2 实物搭建的典型故障从输出不变到芯片发烫实物故障比仿真多得多我挑几个高频场景说。输出完全不变是最常见的故障。这时候先不要怀疑芯片坏了按顺序查第一步看电源VCC和GND有没有接反芯片有没有微微发烫发烫基本就是电源接反了第二步看CLK有没有脉冲用示波器或逻辑探针测时钟引脚如果探针一直显示低电平说明时钟根本没进来第三步看PRE和CLR是不是接对了如果这两个引脚要么悬空要么接反输出会被钳在高或低电平J、K怎么折腾都没用。输出能变但随机跳变的情况也很常见。先怀疑手按按钮的抖动如果不加消抖一个按钮按下去电气信号会出现几十毫秒的抖动芯片会把它当成多个时钟脉冲输出自然连续翻转。解决办法是用RC消抖电路或者干脆用信号发生器输出一个低频方波当时钟别用按钮手动打时钟。还有一种让我印象很深的场景电路搭建看着完全正常J、K、CLK都对但输出就是对不上真值表。最后我发现是一个同学把芯片插歪了某个引脚没完全插进面包板孔位导致该引脚悬空。面包板实验里这种“隐性接触不良”很坑人用万用表测引脚电压是有的但一拨线又没了。排查这类问题要把芯片拔下来重插或者换一个面包板区域重新搭。5.3 排查顺序与仪器使用技巧如果你对故障没有头绪我建议严格按照“电源→地→时钟→输入→输出”这个顺序来排查不要跳步。这个顺序是经过实践检验的因为电源错了后面全错时钟错了输出就不动输入错了输出就乱输出本身的反而是最后才要怀疑的。用万用表测电平时黑表笔夹到GND轨红表笔去戳芯片引脚。注意TTL高电平一般在2V以上都算1不是非得5V低电平在0.8V以下算0。有些同学看到引脚电压是2.5V就怀疑芯片坏了其实已经属于高电平范围。如果有示波器就把探头夹在CLK引脚上先确认时钟确实有方波。然后探头移到Q输出给一个下降沿看Q是否变化。示波器能同时看两路信号时可以把CLK和Q放在同一屏对比一眼就能看出是不是下降沿触发。要是没有示波器数字逻辑探针也能凑合但探针只能显示当前电平看不到边沿关系定位问题的效率低不少。5.4 问题速查表现象可能原因解决思路输出一直不变供电异常、时钟没脉冲、PRE/CLR接错先测VCC和GND再看CLK波形最后检查异步端输出随机跳变按钮抖动、输入悬空、电源纹波大加消抖电路、补上拉/下拉、加100nF去耦电容仿真找不到74LS76库名不同或元件列表未刷新搜索7476/74ALS76或重启Proteus仿真运行但逻辑探针没反应未放置GND、时钟频率过高、逻辑状态被误改检查电源终端、降低频率、重新设置LOGICSTATE实物和仿真结果不一致实物有延迟和噪声、芯片扇出不够、接触不良对照示波器逐点比较、重新插紧芯片、降低负载芯片发烫VCC/GND接反立刻断开电源检查极性后重新上电一次变化导致结果“异常”CP高电平期间修改了J、K输入测试中先设输入再给完整时钟周期再读输出最后再分享一个我带实验时经常跟同学说的习惯真正的高级技巧不是会背诵多少参数而是动手前先把测试步骤写在纸上。打开实验册画出真值表标好“设J/K→等一个下降沿→读Q”这样的流程再照着做。Proteus仿真跑通了只证明逻辑对了面包板搭通了才是物理世界认可你的电路。这两步都用好主从JK触发器这个实验就算真的吃透了。