☰
JK触发器赛跑实验:硬件复现数字电路竞争冒险现象
2026/9/29 19:42:42 网站建设 项目流程

这次我们来看一个来自 Ben Eater 的经典数字电路教学项目——“JK 触发器赛跑”。这不是一个软件工具或 AI 模型,而是一个通过硬件电路和面包板搭建的、用于直观演示 JK 触发器工作原理的物理实验。它的核心价值在于,将抽象的数字逻辑概念(如触发器、时钟、竞争冒险)转化为可视化的、动态的“赛跑”游戏,让学习过程变得生动有趣。

对于电子工程、计算机组成原理的初学者,或者任何对数字电路底层运作感兴趣的朋友,这个项目提供了一个绝佳的动手实践机会。你不需要昂贵的 FPGA 开发板,只需要一些基础的逻辑芯片、面包板、LED 和开关,就能亲手搭建并观察 JK 触发器在时钟沿到来时的状态变化“赛跑”过程。

本文将带你完整复现这个项目。我们会从 JK 触发器的核心原理讲起,然后详细列出所需的元器件清单,一步步指导你在面包板上搭建电路,最后通过实际操作来观察和验证“赛跑”现象,并深入分析其背后的电路时序原理。无论你是学生、硬件爱好者,还是想巩固数电知识的开发者,这篇文章都能让你获得从理论到实践的完整收获。

1. 核心能力速览

能力项说明
项目类型数字电路教学实验 / 硬件动手项目
核心器件JK 触发器芯片 (如 74LS73)、逻辑门、时钟信号源、LED、按钮开关
核心概念JK 触发器功能、时钟边沿触发、竞争条件 (Race Condition)、状态转换
硬件门槛低。需要基础电子元器件、面包板、杜邦线、电源(5V直流)。无需编程或高端设备。
输出形式可视化状态指示(通过 LED 亮灭),直观展示触发器状态变化的“赛跑”过程。
学习目标理解边沿触发与电平触发的区别,观察并分析电路中的时序冒险现象。
适合场景数字电路/计算机组成原理教学、个人兴趣实验、电子竞赛基础训练。

2. 适用场景与使用边界

这个“JK 触发器赛跑”项目主要适用于以下场景和人群:

  1. 电子/计算机专业学生:作为《数字逻辑电路》或《计算机组成原理》课程的补充实验,帮助理解触发器这一核心时序元件的工作机制,特别是建立时间、保持时间和时钟偏移的影响。
  2. 硬件入门爱好者:希望通过有趣的项目入门数字电路,面包板搭建过程能锻炼电路布局、焊接(可选)和调试的基本功。
  3. 创客与教育者:可以将其作为一个生动的课堂演示或工作坊项目,用可视化的“赛跑”来替代枯燥的真值表讲解,提升教学效果。

使用边界与注意事项:

  • 非生产级电路:这是一个教学演示电路,旨在揭示问题(竞争冒险),而非提供一个稳定可靠的触发器应用方案。切勿将其直接用于需要高可靠性的实际产品中。
  • 电源要求:需使用稳定的 5V 直流电源(常见 USB 供电或稳压模块),注意正负极不要接反,避免烧毁芯片。
  • 静电防护:CMOS 芯片(如 74HC 系列)对静电敏感,操作前可触摸接地金属物释放静电。本文示例使用更耐用的 74LS 系列。
  • 信号完整性:在高速时钟下,导线长度、面包板接触电阻可能影响现象观察。建议初始使用低频时钟(如 1Hz)以便观察。

3. 环境准备与前置条件

在开始搭建电路之前,你需要准备以下硬件和软件环境。

3.1 硬件元器件清单

以下是搭建一个基础“JK 触发器赛跑”电路所需的核心元器件:

类别型号/规格数量说明
集成电路 (IC)74LS73 (双 JK 触发器,带清零)2 片核心器件,也可用 74LS76 或其他 JK 触发器。
74LS00 (四路2输入与非门)1 片用于生成时钟信号和辅助逻辑。
74LS04 (六反相器)1 片可选,用于信号反相或整形。
时钟源555 定时器芯片1 片用于产生可调频率的方波时钟。
电位器 (10kΩ)1 个调节 555 输出时钟的频率。
电阻、电容套件若干用于 555 定时器及上下拉电阻,详见电路图。
输入设备轻触开关/拨动开关2-4 个用于手动控制 J、K 输入信号和清零信号。
输出显示LED (不同颜色)4-8 个用于显示两个触发器的 Q 和 !Q 输出状态。建议不同颜色区分。
限流电阻 (220Ω - 1kΩ)4-8 个与 LED 串联,保护 LED 和芯片输出端。
供电与连接面包板 (400孔以上)1 块用于无焊接电路搭建。
杜邦线 (公-公)若干建议多种颜色,便于区分电源、地、信号线。
直流电源1 套输出 5V,电流 ≥ 500mA。可使用 USB 转 DC 接口或稳压模块。
万用表1 台用于测量电压、检查通断,调试必备。

3.2 软件与知识准备

  • 电路图查看工具:任何能打开图片的软件即可,用于查看我们提供的接线图。
  • 基础知识:
    • 了解 JK 触发器的真值表和逻辑功能(当 J=1, K=1 时,每个时钟脉冲到来,输出状态翻转)。
    • 理解“边沿触发”(上升沿或下降沿有效)与“电平触发”的区别。
    • 了解面包板的基本结构(电源轨、内部连接)。
    • 知道如何计算 LED 的限流电阻(R = (Vcc - V_led) / I_led,通常 5V 电源配 220Ω-470Ω 电阻)。

4. 电路原理与设计解析

在动手之前,理解“赛跑”的原理至关重要。Ben Eater 设计的巧妙之处在于,他利用了两个 JK 触发器共享同一个时钟信号,并通过逻辑门制造了一个微小的路径延迟差异。

4.1 核心思想:制造“竞争”

在一个理想的同步电路中,所有触发器在同一时钟边沿瞬间更新状态。但在现实中,信号从时钟源到达不同触发器输入端的路径延迟有微小差异。这个项目就是人为地、可观察地放大这种差异。

  1. 电路连接:两个 JK 触发器(假设为 FF1 和 FF2)的 J、K 输入端都接高电平(逻辑1)。这意味着每个有效的时钟边沿,它们都应该翻转(Toggle)一次。
  2. 交叉反馈:关键步骤是,将 FF1 的输出 Q 连接到 FF2 的某个控制端(或反之),或者通过一个逻辑门(如与门)来影响第二个触发器的时钟或输入。这样,FF1 的状态变化会试图去影响 FF2 在当前同一个时钟周期内的行为。
  3. 延迟路径:由于信号需要经过逻辑门和导线,FF1 的输出变化反馈到 FF2 需要时间。如果这个反馈时间与时钟边沿“赛跑”,结果将变得不确定。
  4. 观察现象:当时钟频率调节到某个范围时,你会看到两个 LED(代表两个触发器的状态)的翻转不是同步的,有时 FF1 先翻,有时 FF2 先翻,甚至出现非预期的状态组合。这就是“竞争冒险”(Race Hazard)的直观体现。

4.2 参考电路框图

一个典型的实现方案如下(具体引脚连接需根据芯片数据手册):

+5V | [PULL-UP Rs] | CLK源 ---+-------------------> CLK of FF1 | | | J1-+-+-> VCC (逻辑1) | K1-+-+-> VCC (逻辑1) | | +--[延迟路径]---> CLK of FF2 | J2-+-+-> VCC K2-+-+-> VCC
  • CLK源:由 555 定时器构成的可调频率方波发生器。
  • 延迟路径:可能是一个反相器(74LS04)或一个与非门(74LS00),它的传播延迟(通常十几纳秒)就是制造“赛跑”的关键。
  • FF1, FF2:两个 74LS73 JK 触发器。

5. 分步搭建指南

我们以使用 74LS73 和 74LS00 为核心,搭建一个经典电路为例。

5.1 步骤一:搭建可调时钟源(555定时器)

首先在面包板一侧搭建一个占空比约50%的方波发生器。

# 这不是命令,而是电路连接描述 1. 将 555 芯片跨坐在面包板中部分隔槽上。 2. 连接电源:引脚 8 (VCC) 接 +5V,引脚 1 (GND) 接地。 3. 在引脚 6 (THRES) 和引脚 2 (TRIG) 之间连接一个 10kΩ 电位器(中间抽头接引脚6和2,两端分别接引脚7和地?不,标准接法如下)。 4. 更标准的接法:引脚7 (DIS) 接一个1kΩ电阻到+5V,同时接电位器一端。电位器另一端和中间抽头连接到引脚6和2。引脚6和2之间再接一个0.1uF电容到地。 5. 引脚 5 (CONT) 接一个 0.01uF 电容到地(去耦)。 6. 输出:引脚 3 (OUT) 即为时钟输出,接一个1kΩ电阻后作为系统CLK。 7. 通过旋转电位器,可以改变输出方波的频率(建议从1Hz左右开始调试)。

注意:555 电路有多种接法,建议搜索“555 astable multivibrator 50% duty cycle”找到标准电路图并按图施工。输出频率f ≈ 1.44 / ((R1 + 2*R2) * C),其中 R1 和 R2 是电阻,C 是电容。

5.2 步骤二:连接 JK 触发器基本电路

为每个 74LS73(内部有两个独立的 JK 触发器,我们只用一个)搭建基本电路。

# 对于第一个 JK 触发器 (FF1,使用 74LS73 的一半) 1. 芯片 74LS73-1:引脚 14 (VCC) 接 +5V,引脚 7 (GND) 接地。 2. 时钟输入:将 555 的时钟输出连接到 FF1 的时钟引脚 CLK1 (引脚 1)。 3. J 和 K 输入:将 J1 (引脚 14) 和 K1 (引脚 3) 通过一个 1kΩ 上拉电阻连接到 +5V(即置为逻辑高电平 1)。也可以直接接 VCC,但接上拉电阻是更好实践。 4. 清零端:将 CLR1 (引脚 2) 通过一个 10kΩ 上拉电阻接到 +5V,并连接一个轻触开关到地。按下开关时,CLR1 为低电平,触发器清零(Q=0)。 5. 输出显示:Q1 (引脚 15) 连接一个 LED(阳极)串联一个 220Ω 限流电阻到地。!Q1 (引脚 14) 同样接一个 LED 用于显示反相输出。

5.3 步骤三:引入“赛跑”延迟路径

这是项目的精髓。我们需要让 FF1 的输出去影响 FF2 的时钟。

# 使用一个 74LS00 与非门制造延迟 1. 芯片 74LS00:引脚 14 (VCC) 接 +5V,引脚 7 (GND) 接地。 2. 将 FF1 的输出 Q1 连接到 74LS00 第一个与非门的一个输入端(如引脚 1)。 3. 将同一个与非门的另一个输入端(如引脚 2)接高电平(+5V)。这样,该与非门相当于一个反相器(因为 A NAND 1 = NOT A)。 4. 该与非门的输出(引脚 3)就是反相后的 Q1 信号,并且引入了约 10-20ns 的芯片传播延迟。 5. 将这个延迟后的信号(引脚 3)连接到第二个 JK 触发器 FF2 的时钟引脚 CLK2。

5.4 步骤四:连接第二个 JK 触发器

第二个触发器 FF2 的连接与 FF1 类似,但时钟源来自延迟路径。

# 对于第二个 JK 触发器 (FF2,使用另一片 74LS73 或同一片的另一半) 1. 连接电源和地。 2. 时钟输入:CLK2 接来自 74LS00 引脚 3 的延迟时钟信号。 3. J2 和 K2:同样上拉到 +5V(逻辑1)。 4. 清零端 CLR2:同样接上拉电阻和清零按钮。 5. 输出显示:Q2 和 !Q2 同样接 LED 显示。

5.5 步骤五:上电前最终检查

  1. 电源检查:用万用表直流电压档,测量面包板电源轨对地电压是否为稳定的 5V。
  2. 短路检查:目视和用万用表通断档检查,确保 +5V 和 GND 之间没有直接短路。
  3. 芯片方向:确认所有 IC 的缺口方向一致,且引脚 1 位置正确。
  4. 连接牢固:按压所有杜邦线和元件引脚,确保与面包板接触良好。

6. 功能测试与现象观察

电路搭建完成后,就可以开始进行测试,观察“赛跑”现象。

6.1 基础功能测试

  1. 上电与清零:

    • 接通 5V 电源。
    • 分别按下 FF1 和 FF2 的“清零”按钮。观察到对应的 Q 输出 LED 熄灭,!Q 输出 LED 点亮。这表明触发器处于 0 状态,且清零功能正常。
    • 松开清零按钮。
  2. 单步时钟测试(低频):

    • 将 555 电位器调到最低频率(可能低于 1Hz)。
    • 观察时钟信号(可以用一个额外的 LED 接在 555 输出端来指示,或者用万用表测电压变化)。
    • 当时钟信号每次发生跳变(上升沿或下降沿,取决于 74LS73 是下降沿触发)时,观察两个触发器的 LED 状态。
    • 预期:在极低频率下,两个触发器应该几乎同步翻转。因为延迟时间相对于漫长的时钟周期微不足道。

6.2 “赛跑”现象验证

  1. 调节时钟频率:

    • 缓慢增加 555 时钟源的频率(顺时针旋转电位器)。
    • 当频率增加到几十赫兹到几百赫兹范围时,仔细观察。
  2. 观察不稳定状态:

    • 现象 A(不同步):你会看到两个触发器的 LED 状态变化不再同步。可能 FF1 先翻转,然后 FF2 再翻;或者反过来。这说明延迟路径开始起作用,两个触发器对时钟的响应有了先后。
    • 现象 B(亚稳态):在某些时钟边沿,你可能会看到某个 LED 闪烁(半亮),或两个触发器进入非预期的状态(例如,两个 Q 都亮,违反了互补规则)。这是竞争冒险导致触发器进入亚稳态(Metastable State)的直观表现,是数字电路设计中需要避免的。
    • 现象 C(模式固定):在某些频率下,可能会稳定在一种固定的先后顺序模式。改变频率或按一下清零按钮,模式可能切换。
  3. 记录与验证:

    • 尝试找到能稳定重现“不同步翻转”现象的时钟频率范围。
    • 用手机慢动作拍摄可能有助于观察。

7. 原理深度分析与思考

观察到现象后,我们来深入分析其背后的电路原理。

7.1 时序图分析

假设初始状态 Q1=0, Q2=0,时钟 CLK 为下降沿触发。

  1. 第一个 CLK 下降沿到达 FF1,由于 J=K=1,Q1 翻转为 1。
  2. Q1 从 0->1 的变化,经过 74LS00 反相器延迟t_pd后,在 FF2 的 CLK2 端产生一个从 1->0 的下降沿。
  3. 关键点:如果这个延迟产生的下降沿,与来自 555 的原始 CLK 下降沿在时间上非常接近,那么 FF2 可能在这个“混合”的时钟信号下行为异常。
  4. 实际上,FF2 看到的可能是一个带有毛刺(Glitch)的时钟信号。如果毛刺满足触发器的脉冲宽度要求,就可能引起一次额外的、非预期的触发,从而导致状态错误。

7.2 竞争冒险与亚稳态

  • 竞争:指信号通过不同路径到达同一个点,在时间上有先有后的现象。本项目就是 CLK 直接路径与经过反馈的延迟路径之间的竞争。
  • 冒险:由于竞争导致电路输出产生非预期尖峰脉冲的可能性。
  • 亚稳态:当触发器的建立时间(Setup Time)或保持时间(Hold Time)不满足时,输出可能在一段时间内处于一个非 0 非 1 的中间电平,然后随机稳定到 0 或 1。实验中 LED 的闪烁可能就是亚稳态在宏观上的表现。

7.3 如何在实际设计中避免

这个实验演示了要避免的问题。在实际同步电路设计中,我们采用以下方法:

  1. 全局时钟树:使用低偏移的时钟分布网络,让时钟信号尽可能同时到达所有触发器。
  2. 静态时序分析:通过工具检查所有路径是否满足建立时间和保持时间。
  3. 同步器:对于异步信号(如按键输入),使用两级或多级触发器进行同步,降低亚稳态传播概率。
  4. 避免使用门控时钟:尽量避免用逻辑门来控制时钟信号,就像本实验中做的那样。如果必须使用,需进行极其严谨的时序分析。

8. 扩展实验与探索

完成基础实验后,你可以尝试以下扩展,加深理解:

  1. 改变延迟:将 74LS00 换成 74LS04(反相器),或者串联两个逻辑门,观察延迟变化对“赛跑”频率范围的影响。
  2. 改变触发边沿:如果使用上升沿触发的 JK 触发器(如 74LS109),电路和现象会有何不同?
  3. 测量延迟时间:使用示波器(如果有)测量 555 的原始 CLK 和经过 74LS00 后的 CLK2 信号,直观看到时间差t_pd。
  4. 加入去抖电路:为清零按钮添加 RC 硬件去抖或软件去抖逻辑,观察对实验稳定性的影响。
  5. 设计“赢家”指示器:用逻辑门设计一个电路,当 FF1 先翻转时亮一个灯,FF2 先翻转时亮另一个灯。

9. 常见问题与排查方法

在搭建和实验过程中,你可能会遇到以下问题:

问题现象可能原因排查方式解决方案
上电后无任何 LED 亮1. 电源未接通或电压不对。
2. 电源正负极接反。
3. 总电源开关或线路断路。
1. 用万用表测面包板 VCC/GND 间电压。
2. 检查电源适配器输出。
1. 确保电源输出 5V,正负极正确。
2. 检查所有电源线连接。
部分 LED 常亮或不亮1. LED 或限流电阻接反、虚焊。
2. 芯片引脚接触不良或损坏。
3. 触发器输出端短路。
1. 检查 LED 极性(长脚正极)。
2. 用万用表测芯片输出引脚电压。
3. 重新插拔芯片和导线。
1. 更正 LED 方向。
2. 更换芯片或导线。
按下清零按钮无效1. 清零按钮接线错误。
2. 上拉电阻未接或开路。
3. 芯片清零引脚损坏。
1. 检查按钮是否一端接 CLR,一端接地。
2. 检查上拉电阻是否接 VCC。
3. 测 CLR 引脚电压,按下时应接近 0V。
1. 更正按钮接线。
2. 确保上拉电阻正常工作。
时钟信号无变化1. 555 定时器电路接错。
2. 电位器损坏或调节不当。
3. 电容值错误或损坏。
1. 对照标准 555 无稳态电路图检查。
2. 用万用表测 555 输出引脚 3 电压。
3. 更换电位器或电容。
1. 重新检查 555 外围电路。
2. 尝试更换元件。
看不到“赛跑”现象1. 时钟频率不合适(太快或太慢)。
2. 延迟路径未正确连接。
3. 两个触发器时钟源意外短路或一致。
1. 大幅调节电位器,遍历不同频率。
2. 检查 74LS00 输入输出连接。
3. 用万用表测两个 CLK 信号是否独立。
1. 耐心调节时钟频率。
2. 确认反馈信号连接到第二个触发器 CLK。
LED 闪烁(非正常翻转)1. 电源不稳定或纹波过大。
2. 接触不良导致信号断续。
3. 触发器进入亚稳态。
1. 用示波器看电源电压和时钟信号。
2. 按压各连接点看是否变化。
3. 降低时钟频率观察。
1. 使用更稳定的电源。
2. 加固所有连接。
3. 这是亚稳态现象,属于正常演示内容。

10. 总结与最佳实践

通过这个“JK 触发器赛跑”项目,你不仅搭建了一个有趣的硬件电路,更亲身体验了数字电路设计中至关重要的时序概念。从清晰的逻辑门到不可预测的“赛跑”结果,这一对比深刻揭示了理想模型与物理实现之间的差距。

项目核心收获:

  1. 动手巩固理论:将书本上的 JK 触发器、时钟、竞争冒险等概念转化为看得见、摸得着的现象。
  2. 理解时序本质:认识到信号传播延迟是真实存在的,并且会对电路行为产生决定性影响。
  3. 掌握调试技能:学习了面包板电路的搭建、调试流程和常见故障排查方法。

给实践者的建议:

  • 从低频开始:调试时先将时钟调到极低频率(如 1Hz),确保基础功能(清零、单步翻转)正常,再逐步提高频率寻找“赛跑”现象。
  • 善用万用表:它是你眼睛的延伸,用于测量电压、检查通断,能快速定位电源和信号问题。
  • 保持电路整洁:使用不同颜色的杜邦线区分电源(红色)、地(黑色)和信号线(黄、绿等),合理布局芯片,避免飞线杂乱。
  • 安全第一:确保 5V 电源稳定,避免短路。使用芯片座可以方便更换芯片,避免反复焊接损坏。
  • 记录与分享:用笔记或视频记录你的搭建过程、观察到的现象和任何疑问。与同好交流往往能发现新的视角。

这个项目是深入数字电路世界的一个绝佳起点。理解了这里的竞争与冒险,你在未来面对更复杂的 FPGA 设计或高速 PCB 布局时,就会对“时序收敛”、“时钟域交叉”等高级议题有更直观和深刻的认识。建议收藏本文,在需要重温这些基础概念时,不妨再次拿出面包板,亲手让触发器们“赛跑”一次。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询