二-五混合进制计数器:从模数分解到74LS90实战应用

📅 2026/6/16 5:47:01
二-五混合进制计数器:从模数分解到74LS90实战应用
1. 项目概述从“奇怪”的进制到实用的计数逻辑在数字电路和嵌入式系统的世界里计数器是最基础也最核心的模块之一。我们最常接触的是二进制计数器它简单、高效是计算机的基石。十进制计数器也常见于需要直接与人交互的场合比如电子钟、频率计。但当我第一次听到“二-五混合进制计数器”时心里也犯嘀咕这又是什么“奇技淫巧”二进制和五进制怎么混在一起这玩意儿到底有什么用实际上这种混合进制计数器并非实验室里的玩具而是一种非常经典且实用的设计。它巧妙地结合了二进制和五进制的特性最终实现了一个十进制计数器。没错它的核心目标就是构建一个十进制计数器但实现路径和我们直接用四个触发器做8421 BCD码计数器不同。它用一个触发器负责二进制计数模2用另外三个触发器构成一个五进制计数器模5然后将两者级联2×510一个完整的十进制计数器就诞生了。这种结构在早期的数字集成电路比如经典的74LS90中非常普遍其设计思想体现了模块化、资源优化和特定场景下的性能优势。理解它不仅能让你读懂很多老芯片的数据手册更能深刻体会数字系统设计中“分解”与“组合”的艺术。无论是电子爱好者修复老设备还是学生深入理解计数器原理亦或是工程师在设计特定分频电路时掌握二-五混合进制计数器都大有裨益。今天我就来彻底拆解这个“混合体”从原理、设计到实现和调试让你不仅知其然更知其所以然。2. 核心原理与设计思路拆解2.1 为什么是“二”和“五”—— 模数分解的智慧设计一个十进制计数器最直观的想法是用四个D触发器或JK触发器通过特定的反馈逻辑让它在计数到91001后复位到00000这就是标准的8421 BCD码计数器。那为什么还要搞出一个“二-五混合”的版本呢这背后有几个关键的考量模块化与标准化在早期集成电路设计中芯片面积和晶体管数量是宝贵资源。如果能用更小的、标准的子模块组合成复杂功能就能提高设计效率和芯片利用率。二进制计数器模2和五进制计数器模5作为基本模块其设计相对独立且规整。分频灵活性二-五混合结构天然提供了两个分频输出。二进制部分输出是对输入时钟的2分频CP/2五进制部分输出是对其自身输入的5分频。如果你需要一个2分频、5分频或10分频的时钟信号这个计数器可以直接提供而不需要额外的逻辑电路。这在时钟管理电路中非常有用。简化反馈逻辑在某些实现中特别是异步计数器将反馈复位逻辑分散到两个较小的计数器模块中可能比在一个四位计数器上实现复杂的反馈网络更简单更易于理解和调试。历史与兼容性像74LS90、74HC390这样的经典芯片采用了这种结构成为了行业标准。理解它是与这些广泛使用的硬件对话的基础。所以“二”和“五”的选择是出于“10 2 × 5”的数学分解更是出于工程上对模块化、灵活性和经济性的追求。2.2 两种经典实现模式异步与同步二-五混合进制计数器主要有两种实现方式对应着两种不同的时钟策略异步纹波计数器模式这是最经典、最直观的实现方式。二进制计数器和五进制计数器是独立的且它们之间的时钟是异步的。通常输入时钟脉冲先驱动二进制计数器第一位二进制计数器的输出Q0作为五进制计数器的时钟输入。五进制计数器内部的三个触发器也采用异步级联。这种模式的优点是电路非常简单触发器用量少。但缺点也很明显由于后级触发器要等前级触发器翻转稳定后才能动作计数速度较慢且输出存在短暂的“毛刺”竞争冒险在高频或对时序要求严格的场合需谨慎使用。同步计数器模式在这种模式下二进制和五进制部分的所有触发器都使用同一个主时钟脉冲CP来驱动。计数器状态的改变由统一的时钟边沿控制。实现十进制计数功能需要设计一个统一的、复杂的组合逻辑电路通常基于触发器输入端的激励方程来控制所有触发器的状态转移。同步模式的优点是速度快所有输出几乎同时变化无纹波延迟问题工作更可靠。缺点是电路更复杂需要更多的逻辑门来生成控制信号。对于初学者和大多数应用场景我们从异步模式入手理解会更加顺畅。下文的设计与实现也将以异步模式为重点。3. 异步式二-五混合进制计数器详细设计我们以使用JK触发器或可配置为T‘触发器的D触发器来构建一个异步二-五混合十进制计数器为例。我们将二进制部分标记为触发器A最低位五进制部分标记为触发器B、C、D其中D是五进制部分的最高位。最终A是二进制输出权重1B、C、D构成五进制输出权重2, 4, 1这里需要注意编码整体构成一个十进制计数器。3.1 二进制部分模2设计这部分最简单。只需要一个JK触发器。连接方式将JK触发器的J和K输入端都接高电平逻辑1。这样每来一个时钟脉冲的下降沿假设我们使用下降沿触发触发器的状态就翻转一次。功能实现0和1的交替变化即模2计数。其输出QA的频率是输入时钟CP频率的1/2。时钟CP直接接到该触发器的时钟输入端。注意这里默认使用下降沿触发。如果芯片是上升沿触发逻辑相同但级联时要注意。3.2 五进制部分模5设计这是设计的核心。我们需要三个触发器B, C, D来计数0到4共5个状态。我们需要设计它们的连接方式使得在计到4即状态“100”假设我们采用某种编码之后下一个时钟脉冲到来时所有触发器复位到“000”。这里需要一个关键设计状态编码与反馈复位。我们通常采用简单的二进制顺序编码000, 001, 010, 011, 100来表示0到4。当状态为100即QB0, QC0, QD1时表示已经计到4。下一个脉冲应该让状态回到000。对于异步实现五进制部分内部的三个触发器也采用异步级联。常见的连接方法是时钟连接触发器B的时钟来自二进制部分QA的输出下降沿。触发器C的时钟来自QB的输出触发器D的时钟来自QC的输出。这样前一级的翻转作为后一级的时钟。复位逻辑我们需要在状态为100QD1, QC0, QB0时产生一个复位信号同时清空B、C、D三个触发器。观察这个状态QD是高电平而QC和QB是低电平。我们可以用QD和QC’QC的非、QB’QB的非相“与”来产生复位条件。但更常见和简洁的利用JK触发器特性的方法是将QD的输出反馈连接到触发器B和C的复位端或置位端取决于有效电平。具体来说当QD1时表示计到了4或将要进入4这个高电平通过一个逻辑门或直接连接如果允许送到触发器B和C的异步复位端R强制它们在下个时钟沿到来前或当时就清零。同时QD自身的清零则需要通过其自身的输入控制端J,K来实现当处于状态100时使其J0, K1这样当下一个时钟来自QC到来时QD就会翻转为0。触发器输入设置为了满足五进制的状态转移每个JK触发器的J、K端需要根据当前状态进行设置。这需要画出状态转移表然后化简卡诺图得到激励方程。一个经典的74LS90内部五进制部分连接方式是触发器B最低位JB QD‘, KB 1。QD非接J保证在计到4后下一个脉冲让B保持0K接1保证可翻转。触发器CJC 1, KC 1。始终处于翻转模式但受时钟和复位控制。触发器D最高位JD QB · QC, KD 1。当QB和QC同时为1时JD1下一个时钟QD翻转为1否则JD0QD可能清零或保持。这个逻辑稍微有点绕其核心思想是利用了JK触发器的“保持”、“置1”、“清零”功能并通过QD反馈来在计到5实际上是第5个脉冲状态从100变为000时重置整个五进制部分。3.3 整体级联与输出将两部分级联外部时钟CP接二进制部分触发器A的时钟输入。二进制部分的输出QA接五进制部分第一位触发器B的时钟输入。五进制部分内部的时钟连接为QB输出接C时钟QC输出接D时钟。按照上述逻辑连接好各触发器的J、K端以及必要的反馈复位线如QD到B、C的复位。这样整个计数器就构成了一个异步十进制计数器。它的计数序列是A (二进制位)D C B (五进制位)十进制值00 0 0010 0 0100 0 1210 0 1300 1 0410 1 0500 1 1610 1 1701 0 0811 0 09注意这里五进制部分DCB的权重并不是标准的2-4-2-1码或其他BCD码它就是一个独立的三位二进制数0-4与二进制位A组合后整体值 A 2 * (D C B组成的二进制值)。当DCB100(4)且A1时代表9下一个脉冲到来A先翻转为0这个下降沿触发五进制部分五进制部分从100归零为000整体进入0。输出你可以从QA得到2分频信号从QD五进制最高位得到10分频信号因为每10个输入脉冲QD完成一个周期。4. 基于标准芯片的快速实现以74LS90为例理论可能有些枯燥我们直接看一个最经典的现实例子74LS90异步十进制计数器芯片。它的内部就是标准的二-五混合结构并且引脚配置非常清晰。4.1 74LS90引脚与功能配置74LS90有14个引脚关键引脚如下CP1 (Pin 14)二进制计数器触发器A的时钟输入。CP2 (Pin 1)五进制计数器触发器B, C, D的时钟输入。QA, QD, QC, QB (Pin 12, 11, 8, 9)输出引脚。注意顺序QA是二进制输出QD、QC、QB是五进制输出QD是最高位。R0(1), R0(2) (Pin 2, 3)异步复位端高电平有效。当两者都为高电平时计数器清零QA~QD0。R9(1), R9(2) (Pin 6, 7)异步置9端高电平有效。当两者都为高电平时计数器置位为9QA1, QD1, QC0, QB0。如何配置成一个标准的十进制计数器时钟连接将外部时钟信号接到CP1 (Pin 14)。将QA (Pin 12) 输出连接到CP2 (Pin 1)。这就完成了二-五混合级联。复位管理将R0(1)和R0(2)接地除非你需要手动清零。将R9(1)和R9(2)接地除非你需要手动置9。输出从QA, QB, QC, QD引脚读取计数状态。它们组成的8421码就是当前的十进制数注意这里QD是最高位对应8QC对应4QB对应2QA对应1。但这是输出编码内部逻辑仍是混合的。4.2 实操连接与测试步骤准备材料74LS90芯片一块面包板5V电源LED灯4个带限流电阻如220Ω时钟信号源可以用555定时器构成的多谐振荡器或者单片机I/O口模拟频率建议在1-10Hz便于观察杜邦线若干。连接电源将芯片的Vcc (Pin 5) 接5VGND (Pin 10) 接地。配置模式用杜邦线将Pin 12 (QA) 连接到 Pin 1 (CP2)。将Pin 2, 3, 6, 7 都接地。接入时钟将你的低频时钟信号源如1Hz方波接到 Pin 14 (CP1)。添加显示将QA, QB, QC, QD四个输出引脚分别通过一个220Ω电阻连接到一个LED的正极LED负极接地。这样LED亮代表‘1’灭代表‘0’。上电测试接通电源。你应该能看到4个LED按照0000(0), 0001(1), 0010(2)... 1001(9)的二进制顺序循环点亮。QA对应的LED闪烁频率应该是输入时钟的一半QD对应的LED闪烁频率应该是输入时钟的十分之一。实操心得在面包板上插接74LS90时务必注意芯片的缺口方向别插反了。第一次测试时时钟频率一定要低1Hz左右这样你才能用眼睛看清楚LED的计数过程验证0-9的循环是否正确。如果LED显示乱跳首先检查所有接地引脚尤其是R0和R9是否可靠接地悬空的TTL输入端会感应噪声导致意外复位或置位。5. 常见问题、故障排查与进阶应用5.1 调试过程中遇到的典型问题即使按照图纸连接也可能遇到问题。下面是一些常见故障和排查思路问题现象可能原因排查步骤计数器不计数输出全零或全高1. 电源未接通或电压不对。2. 复位端(R0)或置位端(R9)被意外拉高。3. 时钟信号有问题幅度不足、频率过高。1. 用万用表测量芯片Vcc和GND间电压是否为稳定的4.75-5.25V。2. 检查连接到R0(1)、R0(2)、R9(1)、R9(2)的导线是否确实接地可用万用表测其对地电压应为0V。3. 用示波器或逻辑分析仪查看CP1引脚是否有清晰的时钟波形。对于异步计数器输入时钟频率不能超过其最大工作频率74LS90约32MHz。计数序列错误如跳数、不进位1. 级联时钟连接错误QA未接CP2。2. 输出负载过重LED电流过大。3. 触发器时序问题异步纹波导致冒险。1. 确认Pin 12 (QA) 和 Pin 1 (CP2) 已可靠连接。2. 确保LED的限流电阻足够大通常220Ω-1kΩ或者先断开LED用逻辑笔或示波器观察输出引脚波形是否正确。3. 降低时钟频率。异步计数器在状态转换时由于纹波效应输出会出现短暂的毛刺或中间状态频率过高可能导致后续电路误判。只有二进制部分工作五进制部分不动1. 五进制部分时钟输入(CP2)无信号。2. 五进制部分内部反馈复位逻辑异常导致其一直处于复位状态。1. 用示波器检查CP2Pin 1是否有来自QA的时钟信号。2. 检查芯片是否损坏。可以尝试将外部时钟直接接到CP2Pin 1同时将CP1Pin 14接地或接高看五进制部分能否独立计数0-4。显示到某个数字后卡住1. 反馈逻辑未能正确复位。2. 在特定状态时由于竞争冒险产生了尖峰脉冲触发了异步复位/置位。1. 仔细分析卡住的状态对应的输出编码对照数据手册的状态图检查是否是预期的状态转移点。2. 在电源引脚附近增加一个0.1uF的瓷片电容去耦可以减少电源噪声。在时钟信号线上串联一个小电阻如22-100Ω也可以减缓边沿减少振铃和反射。5.2 从异步到同步的设计思考如果你需要更高的工作频率或更干净的输出波形就需要设计同步的二-五混合计数器。这涉及到使用状态机设计方法列出状态转移表定义5个状态S0-S4代表五进制部分的0-4再加上二进制部分的0/1实际上有10个状态组合。选择触发器类型通常选择D触发器或JK触发器。推导激励方程根据状态转移表画出每个触发器下一个状态或J,K输入的卡诺图进行化简得到最简的逻辑表达式。绘制电路图根据激励方程用逻辑门和触发器搭建电路。所有触发器的时钟端连接在一起接主时钟CP。同步设计更复杂但性能优越。在现代FPGA/CPLD开发中我们通常直接使用硬件描述语言如Verilog来描述十进制计数器行为由综合工具自动生成最优电路它可能会综合出同步的二进制或混合逻辑但我们不必关心底层是“二-五混合”还是“标准8421”结构这是抽象带来的便利。然而理解底层的二-五混合结构对于阅读老式原理图、进行底层时序分析或资源优化仍有不可替代的价值。5.3 扩展应用分频器与时钟管理二-五混合计数器天生就是一个灵活的分频器。除了得到10分频信号你还可以独立使用将时钟接CP2CP1接地则QD输出是5分频信号。将时钟接CP1CP2悬空或接固定电平则QA输出是2分频信号。级联成大模数计数器将多个74LS90级联可以构成100进制、1000进制等计数器。例如将第一个90的QD十分频输出作为第二个90的CP1输入就构成了100进制计数器。这在需要大范围计数的场合如频率计非常常见。生成非50%占空比的波形通过从不同的触发器输出取信号你可以得到各种占空比的波形。例如从QA得到的是50%占空比的2分频波从QD得到的是10%占空比高电平一个时钟周期的10分频波。这在某些特定时序控制中可能有用。我个人在早期设计一个低速数据采集板的时序电路时就曾用两片74HC390双二-五混合计数器构建了一个1000分频的电路为ADC提供转换启动信号。它的好处是电路极其简洁只用到了计数器芯片和少量电阻电容无需编程可靠性高。虽然在今天看来可以用一个小型CPLD或单片机的定时器轻松实现但在那个追求极致成本和稳定性的场合这种纯硬件的解决方案依然散发着独特的魅力。理解这些“老派”数字逻辑就像掌握了一套电子世界的“内功”让你在面对任何黑盒子时都能多一份拆解和理解的底气。