数电基础:计数器——从触发器到任意进制设计

发布时间:2026/8/28 15:56:34
数电基础:计数器——从触发器到任意进制设计 1. 引言为什么计数器是数字系统的核心计数器Counter是数字电子技术中最基础、最典型的时序逻辑电路之一。它能够对输入脉冲的个数进行累计、存储和显示是构成分频器、定时器、序列信号发生器、频率计和数字钟等复杂数字系统的核心模块。几乎每一块数字芯片、每一个微控制器内部都包含若干计数器定时器/计数器模块、程序计数器PC、指令计数器、看门狗计数器等无一不是计数器思想的延伸。学习计数器不仅要记住几个芯片型号和典型电路更重要的是掌握其背后的设计方法如何从状态转换要求出发列出状态表、写出状态方程、求出驱动方程最终画出逻辑电路图。这套“状态表→状态方程→驱动方程→电路图”的流程是贯穿整个时序逻辑电路设计的通用方法论也是数字电路考试和工程实践中最常考查的能力。本文将从触发器这一基本元件出发系统讲解二进制计数器、十进制计数器、异步计数器、同步计数器、集成计数器、任意进制计数器的设计方法以及计数器在分频、定时、序列信号发生等方面的典型应用并配有大量真值表、状态转换表、电路分析和设计实例。全文约两万字适合数字电路初学者系统学习也适合考前复习和工程查阅。2. 计数器的基本概念与分类2.1 什么是计数器计数器是一种能够统计输入脉冲个数并按预定规律改变内部状态的时序逻辑电路。它的核心存储元件是触发器。计数器的“状态”由一组触发器输出端的状态组合来表示例如三个触发器可以表示从 000 到 111 的八种状态即一个模 8 的计数器。从电路结构上看计数器本质上是一个状态按某种规律循环的时序电路。计数器在时钟脉冲作用下按照二进制、十进制或任意进制的规律进行状态转换当计数到最大状态后下一个脉冲到来时又回到初始状态完成一个计数循环。2.2 计数器的分类计数器可以从多个角度进行分类按计数进制分二进制计数器模为 2 的 n 次幂、十进制计数器模 10、任意进制计数器如六进制、六十进制、二十四进制等。按计数时钟触发方式分同步计数器所有触发器共用同一个时钟脉冲和异步计数器触发器的时钟来源不同通常后级触发器的时钟由前级输出提供。按计数方向分加法计数器递增计数、减法计数器递减计数、可逆计数器既能加又能减。按电路集成度分用分立触发器搭建的计数器和集成计数器芯片如 74LS160、74LS161、74LS190 等。按状态编码方式分二进制编码计数器、BCD 码计数器、格雷码计数器、约翰逊计数器扭环形计数器等。2.3 计数器的主要技术参数参数名称含义说明计数容量/模Modulus一个计数循环内的状态数目n 个触发器最多能构成模 2 的 n 次方的计数器计数方向加法、减法或可逆决定状态转换顺序工作频率最高计数频率或最大分频比受触发器建立时间、传输延时限制清零方式异步清零或同步清零决定清零信号是否需要等待时钟置数方式异步置数或同步置数决定预置数据加载时机编码方式8421BCD、格雷码等影响译码显示和抗干扰能力2.4 预备知识触发器的时序特性计数器由触发器构成常用的触发器有基本 RS 触发器、D 触发器、JK 触发器和 T 触发器。其中 JK 触发器因具有“保持、置 0、置 1、翻转”四种功能在计数器设计中应用最为广泛。T 触发器实际上可以看作 JK 触发器在 JK1 时的特例其功能就是“来一个脉冲翻转一次”。触发器的时钟触发方式分为电平触发和边沿触发。边沿触发又分为上升沿触发和下降沿触发。计数器设计中通常使用边沿触发型触发器以保证在一个时钟周期内状态只改变一次避免空翻现象。以 JK 触发器为例其特征方程为Q次态J·Q′K′·Q。这里的 Q′表示 Q 的反。当 JK1 时特征方程退化为 Q次态Q′即每个有效时钟边沿到来时状态翻转一次。理解触发器的特征方程是计数器设计的基础。后续所有设计步骤中从状态表推导驱动方程时都要借助特征方程和状态转换关系反推出各触发器的 J、K 输入表达式。3. 异步计数器3.1 异步二进制加法计数器异步计数器又称串行计数器或行波计数器Ripple Counter。其结构特点是只有最低位触发器由外部时钟直接驱动其余各级触发器的时钟信号均来自前一级触发器的输出或其反相输出。由于各级触发器的翻转不是同时发生的而是像水波一样逐级传递因此称为行波计数器。以三位异步二进制加法计数器为例它由三个下降沿触发的 JK 触发器级联组成。每个触发器的 J、K 端都接高电平 1使其处于计数翻转工作模式。第一位触发器的时钟接外部计数脉冲 CP第二位触发器的时钟接第一位触发器的 Q 输出第三位触发器的时钟接第二位触发器的 Q 输出。在加法计数器中规律是“高位触发器在低位触发器由 1 变为 0 时翻转”。对于下降沿触发的触发器若将低位 Q 直接作为高位的时钟当低位从 1 翻转到 0 时低位 Q 输出产生下降沿恰好触发高位翻转实现二进制加法规律 000→001→010→011→100→101→110→111→000。若触发器是上升沿触发则需要将低位 Q′反相输出端作为高位的时钟。因为低位从 1 变 0 时其 Q′端由 0 变 1产生上升沿同样可以触发高位翻转。3.2 异步二进制减法计数器减法计数器的状态按照 000→111→110→101→100→011→010→001→000 的规律递减。对于下降沿触发的触发器构成的异步减法计数器高位触发器的时钟应接低位的 Q′输出。因为减法计数时低位从 0 变到 1 的瞬间其 Q′端由 1 变 0产生下降沿正好触发高位翻转。也就是说对于同一边沿触发方式的触发器加法和减法计数器的区别仅在于级间时钟信号的取自不同加法计数器取前级的 Q减法计数器取前级的 Q′对下降沿触发而言若触发器为上升沿触发则取相反。异步二进制计数器用 n 个触发器最多能实现模 2 的 n 次方的计数。例如 4 个触发器构成模 16 计数器输出 Q3Q2Q1Q0 从 0000 累加到 1111 后再回到 0000。3.3 异步十进制计数器异步十进制计数器在二进制计数器的基础上增加反馈逻辑使计数状态跳过 1010 到 1111 六个无效状态实现 0 到 9 的循环。最经典的异步十进制计数器是 74LS90二-五-十进制异步计数器。74LS90 内部包含一个独立的二分频单元模 2和一个五分频单元模 5。将模 2 单元的输出作为模 5 单元的时钟即可构成 8421 BCD 码十进制计数器计数范围为 0000 到 1001若改变级联方式还可以构成 5421 码的十进制计数器。异步十进制计数器的内部反馈清零逻辑会在计数到 1010 状态时立即产生清零脉冲将计数器复位到 0000。由于反馈清零需要一个短暂的过渡状态异步清零方式的十进制计数器在工作中会瞬时经历 1010 状态这也是异步计数器的一个特点。3.4 异步计数器的特点与局限性异步计数器的优点是结构简单、级联方便、功耗较低在低速场合应用广泛。但它的缺点也很明显计数速度慢由于级间存在逐级传递延迟n 级计数器的总延迟约为 n 倍的单级触发器传输延迟最高工作频率随级数增加而降低。存在过渡毛刺各级触发器翻转时刻不一致译码输出端电平变化有先后容易产生竞争冒险在译码输出或与门输出上出现尖峰脉冲毛刺。状态过渡复杂在反馈清零的异步十进制计数器中会短暂出现无效状态对后续电路的抗干扰能力提出更高要求。因此在高速数字系统中通常采用同步计数器来满足工作频率和时序裕量的要求。4. 同步计数器4.1 同步计数器的结构原理同步计数器与异步计数器最本质的区别在于所有触发器由同一个时钟脉冲 CP 驱动因此各触发器的状态在同一个时钟有效边沿同时翻转不存在逐级传递延迟。各触发器的翻转与否完全由组合逻辑电路根据当前状态决定。同步计数器的设计核心是确定每个触发器输入端的组合逻辑即驱动方程。设计的一般步骤为根据计数要求写出状态转换表状态表由状态表写出各触发器的次态方程将次态方程与触发器的特征方程对照求出各触发器的驱动方程检查自启动能力必要时修改驱动方程或增加反馈逻辑根据驱动方程画出逻辑电路图。4.2 同步二进制加法计数器下面以 JK 触发器设计三位同步二进制加法计数器为例完整演示设计过程。第一步列状态表。三位二进制加法计数器的状态按照 000→001→010→011→100→101→110→111→000 转换。设三个触发器的输出为 Q2、Q1、Q0Q2 为高位各状态的次态如下表现态 Q2 Q1 Q0次态 Q2′ Q1′ Q0′0 0 00 0 10 0 10 1 00 1 00 1 10 1 11 0 01 0 01 0 11 0 11 1 01 1 01 1 11 1 10 0 0第二步写次态方程。由状态表可以归纳出各触发器次态与现态的关系。最低位 Q0 每个时钟都翻转其规律为Q0 次态等于 Q0 取反。中间位 Q1 在 Q0 为 1 时翻转最高位 Q2 在 Q1、Q0 都为 1 时翻转。于是得到Q0次态Q0′Q1次态Q1·Q0′Q1′·Q0Q2次态Q2·Q1·Q0′Q2′·Q1·Q0第三步对照 JK 触发器特征方程求驱动方程。JK 触发器特征方程为 Q次态J·Q′K′·Q。与上面次态方程逐项对照对于 Q0J01K01。对于 Q1比较可得 J1Q0K1Q0。对于 Q2比较可得 J2Q1·Q0K2Q1·Q0。第四步画电路。将三个 JK 触发器的时钟端接同一个 CPQ0 的 J、K 接高电平Q1 的 J、K 接 Q0Q2 的 J、K 接 Q1 与 Q0 的与运算结果。这样就得到三位同步二进制加法计数器。从驱动方程可以看出同步加法计数器的通用规律第 i 位触发器的 J、K 均等于比它低的所有位 Q 的与运算结果。因此扩展为更多位计数器时只需增加与门级数和输入端口即可。这种结构称为“并行进位同步计数器”是 74LS161 等集成计数器内部采用的基本方案。4.3 同步二进制减法计数器同步二进制减法计数器的状态按照 111→110→101→100→011→010→001→000→111 递减。其设计方法与加法计数器完全相同只是状态表不同。推导出的驱动方程为J0K01J1K1Q0′J2K2Q1′·Q0′减法计数器的通用规律是第 i 位触发器的 J、K 等于比它低的所有位的反相输出 Q′的与运算结果。这也是集成可逆计数器如 74LS191内部通过“加/减控制”切换组合逻辑的理论基础。4.4 同步可逆计数器可逆计数器既能做加法计数又能做减法计数通常通过一个加/减控制端如 U/D即 Up/Down来选择计数方向。其内部组合逻辑在加法规律和减法规律之间切换。设加/减控制信号为 M当 M0 时做加法计数驱动方程采用加法规律当 M1 时做减法计数驱动方程采用减法规律。第 i 位的驱动输入可统一写为J i K i M·低位全 0 的判定 M′·低位全 1 的判定实际上可逆计数器内部为每位都配备了一套“进位链”和“借位链”组合逻辑。加法计数时当低位全为 1 时产生进位本位翻转减法计数时当低位全为 0 时产生借位本位翻转。74LS191 是单时钟可逆计数器74LS192 是双时钟可逆计数器。4.5 同步十进制计数器同步十进制计数器BCD 计数器需要四位触发器但只使用 0000 到 1001 十个有效状态跳过 1010 到 1111 六个状态。以 JK 触发器设计的 8421 BCD 同步加法计数器为例其状态转换表为现态 Q3 Q2 Q1 Q0次态 Q3′ Q2′ Q1′ Q0′0 0 0 00 0 0 10 0 0 10 0 1 00 0 1 00 0 1 10 0 1 10 1 0 00 1 0 00 1 0 10 1 0 10 1 1 00 1 1 00 1 1 10 1 1 11 0 0 01 0 0 01 0 0 11 0 0 10 0 0 0同步十进制计数器的关键在于计数到 1001 后下一个脉冲不能进入 1010而必须回到 0000。这个“提前复位”动作在同步计数器中通过组合逻辑实现当状态为 1001 时最低位 Q0 保持翻转1 变 0Q1、Q2 保持 0 不变Q3 由 1 翻转为 0。由此可推导出各触发器的驱动方程J0K01J1Q3′·Q0K1Q0J2K2Q1·Q0J3Q2·Q1·Q0K3Q0同步十进制计数器因为所有触发器同步翻转输出端没有过渡毛刺或毛刺显著减少适合驱动数码管译码显示电路因此在数字钟、计数仪表中应用广泛。4.6 同步与异步计数器的对比比较项异步计数器同步计数器时钟连接各触发器时钟不同后级时钟由前级输出提供所有触发器共用同一时钟 CP翻转时刻逐级延迟不同时翻转时钟有效沿同时翻转计数速度慢随级数增加而下降快基本不受级数影响受组合逻辑延迟限制输出毛刺多存在竞争冒险少译码稳定电路复杂度简单无需组合逻辑需要进位/借位组合逻辑典型应用低速、简单分频高速、译码显示、数字钟5. 集成计数器5.1 集成计数器概述在工程实践中计数器很少用分立触发器搭建而是直接选用中规模集成计数器芯片。集成计数器把触发器、进位逻辑、清零/置数控制电路封装在一个芯片内用户只需外接少量元件即可实现二进制、十进制或任意进制计数。掌握集成计数器的功能表、引脚定义和控制逻辑是数字电路实验和工程项目的基本功。常见的集成计数器包括74LS160/161/162/163同步四位二进制/十进制计数器带同步/异步清零和置数、74LS190/191单时钟可逆计数器、74LS192/193双时钟可逆计数器、74LS90/92/93异步计数器等。下面逐一介绍。5.2 74LS160/161/162/163 系列这一系列是同步四位计数器引脚功能基本一致主要区别在于计数进制和清零方式74LS160同步十进制加法计数器BCD 码异步清零同步置数74LS161同步四位二进制加法计数器模 16异步清零同步置数74LS162同步十进制加法计数器同步清零同步置数74LS163同步四位二进制加法计数器同步清零同步置数。以最常用的 74LS161 为例其引脚和信号定义如下引脚/信号名称功能说明CLKCP时钟输入上升沿触发计数CLR清零RD异步清零低电平有效立即清零与时钟无关LOADLD置数同步置数低电平有效时钟上升沿将 D3D0 载入计数器ENP、ENT使能端两者同时为高电平时允许计数RCO进位输出进位输出计数到 1111 且 ENT 为高时输出高电平D3D0并行数据输入预置数输入端Q3Q0计数输出当前计数值74LS161 的功能表如下CLKCLRLOADENPENT功能×0×××异步清零↑10××同步置数载入 D3D0↑110×保持不计数↑11×0保持且 RCO 为 0↑1111加法计数需要特别注意的是异步清零与同步清零的区别异步清零的 CLR 低电平一旦出现计数器立即清零不需要等待时钟沿同步清零则必须等到下一个时钟有效沿才完成清零。这一区别在任意进制计数器设计中会直接影响反馈逻辑的接法和计数状态的取舍。5.3 74LS190/191 单时钟可逆计数器74LS190 是同步十进制可逆计数器74LS191 是同步四位二进制可逆计数器。两者都属于单时钟可逆计数器即加计数和减计数共用同一个时钟输入通过加/减控制端U/D标为“UP/DOWN”选择计数方向。当 U/D 为低电平时做加法计数为高电平时做减法计数。它们同样具有异步置数功能LOAD 低电平有效异步载入数据和使能端CTEN 低电平使能计数。74LS190/191 的进位/借位输出与时钟和终端状态有关在加法计数到最大状态、且时钟为低电平时输出一个负脉冲作为进位/借位指示。这类芯片适合构成可逆计数显示器和需要双向计数的应用如电梯楼层计数、位置检测等。5.4 74LS192/193 双时钟可逆计数器74LS192 是同步十进制双时钟可逆计数器74LS193 是同步四位二进制双时钟可逆计数器。“双时钟”指的是加计数和减计数分别使用独立的时钟输入端CPU加计数时钟和 CPD减计数时钟。当 CPU 端输入脉冲时做加法计数每计满一个循环CU 进位输出端产生一个负脉冲当 CPD 端输入脉冲时做减法计数每计满一个循环CD 借位输出端产生一个负脉冲。双时钟结构使芯片能方便地级联构成多级可逆计数器而且级间不需要额外的方向控制逻辑。74LS192/193 还提供异步清零CLR 高电平有效和异步置数LOAD 低电平有效功能。它们特别适合用于需要“加”和“减”独立计数的场合例如直流电机的正反转圈数统计、双向计数仪表等。5.5 74LS90 异步十进制计数器74LS90 是经典的异步二-五-十进制计数器。它内部包含一个二分频器和模 5 计数器通过外部连线可以灵活构成 8421 BCD 十进制计数器、5421 码十进制计数器或模 2、模 5 独立计数器。74LS90 有两个异步清零端 R0(1)、R0(2) 和两个异步置 9 端 R9(1)、R9(2)。当两个清零端同时为高电平且置 9 端至少一个为低电平时计数器清零当两个置 9 端同时为高电平时计数器置为 1001十进制 9。清零和置 9 均为异步操作与时钟无关。构成 8421 BCD 十进制计数器时将时钟 CPA 接外部计数脉冲QA 输出接时钟 CPB输出顺序为 QD QC QB QA计数范围为 0000 到 1001。74LS90 电路简单、价格低廉在低速计数和简单分频场合仍有应用。6. 任意进制计数器的设计6.1 任意进制计数器设计的意义集成计数器芯片的计数进制是固定的模 10 或模 16实际系统中经常需要其它进制例如数字钟需要 60 进制秒、分和 24 进制时频率计需要 7 进制、12 进制等。利用集成计数器加少量反馈逻辑把固定模的计数器改造成任意模 N 的计数器是数字电路设计的核心技能之一。常用的设计方法有两种清零法反馈清零法和置数法反馈置数法。下面分别讨论。6.2 清零法清零法的基本思路是让计数器从 0 开始正常计数当计数到某个预设状态时利用译码电路产生清零信号将计数器立即异步清零或当下一个时钟沿到来时同步清零复位为 0从而把计数长度截短为 N。异步清零法利用异步清零端当计数状态到达 N而不是 N1时通过与非门译码产生有效的清零信号使计数器瞬间回到 0因此状态 N 只存在极短时间不构成有效计数状态。异步清零法实现模 N 计数器的反馈条件是状态 N 的二进制编码中所有为 1 的输出端接入与非门与非门输出接异步清零端。例如用 74LS161 构成十进制模 10计数器74LS161 是异步清零当计数到 1010十进制 10时Q3 和 Q1 同时为 1将 Q3、Q1 接入与非门输出接 CLR 端。计数从 0000 到 1001 正常显示一旦进入 1010与非门输出低电平立即清零。由于 1010 状态转瞬即逝实际有效循环为十个状态。同步清零法利用同步清零端如 74LS162/163反馈条件取状态 N1。因为同步清零必须等到下一个时钟沿才生效所以当计数器到达状态 N1 时译码发出清零命令下一个时钟沿到来时回到 0恰好完整计数 N 个状态不存在过渡状态。同步清零法抗毛刺能力强是更推荐的设计方案。6.3 置数法置数法不一定要从 0 开始计数它可以利用置数功能从某个预置值开始计数。基本原理是当计数器计数到某个状态通常是最大状态或某个中间状态时通过译码产生置数信号在下一个时钟沿把另一个预置值载入计数器从而改变计数循环的长度。置数法又分为同步置数和异步置数。以同步置数如 74LS161 的 LOAD 端为例从 0 开始计数、到 N1 置数回 0即置数 D3D0 全接 0当计数到 N1 时产生置数信号下一个时钟沿回到 0。此时反馈条件取状态 N1计数循环包含 0 到 N1 共 N 个状态。从中间值开始计数例如用 74LS161 构成模 10 计数器可预置数到 01106从 6 计数到 111115再到进位输出后利用 RCO 置数回到 6。这种方案的有效状态为 6 到 15 共 10 个状态。置数法的优点是清零/预置状态稳定、没有过渡毛刺且可以灵活选择计数起点尤其适合需要从非零状态开始计数的系统。缺点是译码反馈电路相对复杂一些。6.4 级联扩展当单块计数器的计数容量不够时可以将多块计数器级联实现更大模的计数。级联方式主要有两种进位/借位级联将低级的进位输出RCO接高一级的使能端ENT/ENP或时钟端当低级计满一个循环时产生一个进位脉冲推动高级计数。这种级联方式类似异步计数器的行波传递级间会有一个触发器的延迟。同步级联将各块计数器接同一个时钟低位块的进位输出接高位块的使能端使高位块在低位块计满时才在下一个时钟沿计数。这是同步计数器如 74LS160/161推荐的级联方式各级输出时序对齐适合高速应用。级联后若要实现非 10 幂或非 2 幂的进制仍需配合清零法或置数法。例如数字钟的 60 进制计数器由一块模 10 计数器个位和一块模 6 计数器十位级联构成其中十位用清零法或置数法改造成模 6。6.5 任意进制计数器设计步骤总结确定计数容量 N 和所选集成计数器芯片查明芯片清零、置数的有效电平和作用方式同步/异步选定反馈方法清零法或置数法计算反馈译码状态编码根据反馈状态译码电路将对应输出端经逻辑门接入清零端或置数端若需要级联先确定各级位数分配再分别设计反馈逻辑画出完整电路图检查是否存在竞争冒险必要时增加消抖电路。7. 计数器的典型应用7.1 分频器分频器是计数器最基本的应用。一个模 N 计数器实质上就是一个 N 分频器每输入 N 个时钟脉冲输出端产生一个完整周期的变化或一个进位脉冲输出频率等于输入频率的 1/N。例如模 16 二进制计数器的最高位 Q3 输出频率为时钟频率的 1/16。若需要 10 分频则使用十进制计数器其进位输出或最高位翻转频率即为时钟频率的 1/10。在数字系统中分频器常用于从高频晶振产生低频时钟信号例如从 32768 Hz 晶振分频得到 1 Hz 秒脉冲。用多个计数器级联可以实现非整数分频比的组合。例如先用模 10 计数器做 10 分频再级联模 6 计数器总分为 60适合秒/分转换。7.2 定时电路计数器加上时钟源和比较器即可构成定时器。原理是设定一个初值和目标值计数器在时钟驱动下不断计数当计数值等于目标值时比较器输出有效信号触发相应动作。在实际芯片中定时器的核心就是一个计数器。例如 8051 微控制器的定时器/计数器模块可以通过设置工作方式、初值和溢出中断来实现精确定时。数字闹钟、微波炉定时器、洗衣机程序控制器等内部都包含这样的计数定时电路。7.3 序列信号发生器序列信号发生器用于产生特定的 0/1 序列广泛应用于通信系统的伪随机序列产生、数字系统自检等领域。计数器是序列信号发生器的重要组成部分通常由计数器加组合逻辑或数据选择器构成。例如要产生 8 位序列 01101001可以使用一个模 8 计数器将计数器的三个输出接到数据选择器的地址端按地址 000 到 111 的顺序把序列各位接到数据选择器的数据输入端。计数器在时钟驱动下循环输出地址数据选择器则按地址顺序输出预设序列从而在输出端得到周期性的 01101001 序列。7.4 频率计频率计的基本原理是“在单位时间内对输入信号进行计数”。其核心包括一个精确的时基信号通常由晶振经分频得到 1 秒闸门信号、一个主计数器、以及闸门控制电路。工作时1 秒闸门信号控制主计数器的使能端输入信号经放大整形后接到计数时钟端。在闸门打开期间计数器对输入信号脉冲计数闸门关闭后停止计数显示结果即为输入信号的频率单位 Hz。频率计中使用的计数器位数越高测量范围越大精度越高。7.5 数字钟数字钟是计数器应用的综合范例需要同时用到多种进制计数器秒和分的个位为 60 进制中的模 10 计数器秒和分的十位为模 6 计数器整体构成 60 进制时位构成 24 进制计数器或带上午/下午指示的 12 进制计数器。数字钟的框图如下晶振产生高频基频经过一系列分频器得到 1 Hz 秒脉冲秒脉冲驱动秒计数器秒计满 60 向分计数器进位分计满 60 向时计数器进位时计数器按 24 进制循环。各级计数器输出经译码器驱动七段数码管显示时间。7.6 其他应用计数器还广泛应用于电梯楼层控制可逆计数器记录当前楼层、里程表/转数表累计脉冲次数、数字电压表中的逐次比较控制、AD 转换器的转换次数控制、交通信号灯定时控制、生产过程计数包装计数、零件计数等。可以说几乎所有涉及“计数、定时、分频、顺序控制”的数字系统都离不开计数器。8. 设计实例详解8.1 实例一用 JK 触发器设计同步六进制计数器设计要求用 JK 触发器设计一个同步六进制加法计数器状态按照 000→001→010→011→100→101→000 循环要求能够自启动。第一步列状态表。三个触发器可以表示 8 个状态但实际只用 6 个有效状态000 到 101。状态转换表如下现态 Q2 Q1 Q0次态 Q2′ Q1′ Q0′0 0 00 0 10 0 10 1 00 1 00 1 10 1 11 0 01 0 01 0 11 0 10 0 0第二步求次态方程。由状态表可知Q0 在每个脉冲都翻转即 Q0次态Q0′Q1 在 Q0 为 1 且 Q2 为 0 时翻转Q2 在状态 011 时置 1、在状态 101 时清 0。整理得到Q0次态Q0′Q1次态Q1·Q0′Q1′·Q0·Q2′Q2次态Q2·Q1·Q0′Q2′·Q1·Q0第三步求驱动方程。与 JK 触发器特征方程逐位对照J0K01J1Q0·Q2′K1Q0J2Q1·Q0K2Q1·Q0第四步检查自启动。无效状态为 110 和 111。把 110 代入次态方程Q0 次态为 0Q1 次态1·0′0·1·0′1Q2 次态1·1·0′1′·1·01即 110 的次态为 111再把 111 代入Q0 次态 0Q1 次态1·1′0·1·1′0Q2 次态1·1·1′1′·1·10即 111 的次态为 000。可见 110→111→000最终都回到有效循环电路能够自启动。第五步画电路。三个 JK 触发器共用时钟 CP按驱动方程接好各个 J、K 端的组合逻辑即可。8.2 实例二用 74LS161 构成 60 进制计数器设计要求用两片 74LS161 设计一个 60 进制计数器例如数字钟的秒/分计数器。60 进制可以分解为“个位模 10”和“十位模 6”两级。具体方案如下个位模 10采用同步清零法或异步清零法。这里选择异步清零法让个位 74LS161 从 0000 计数当计数到 1010 时把 Q3 和 Q1 接入与非门输出接个位的 CLR 端使个位立即清零实现 0 到 9 的十进制计数。个位的进位输出 RCO在计数到 1111 时本应产生但十进制计数器到 1001 后即返回 0因此实际使用中常用译码电路在 1001 时产生进位接到十位的使能端。十位模 6十位 74LS161 从 0000 计数当计数到 0110十进制 6时把 Q2 和 Q1 接入与非门输出接十位的 CLR 端使十位立即清零实现 0 到 5 的模 6 计数。由于清零状态 0110 存在时间极短实际有效状态为 0000 到 0101共 6 个。级联关系个位计数满 10 产生一个进位脉冲送十位计数时钟或使能端。若采用同步级联个位的进位译码信号接十位的 ENP、ENT 端十位仅在个位计满 10、且自身使能有效时计数一次。总效果为两个计数器联合完成 00 到 59 的循环即 60 进制计数。输出译码显示各级 Q3Q0 输出分别接 BCD-七段译码器如 74LS48再驱动数码管即可直观显示计数结果。8.3 实例三可编程分频器设计要求设计一个分频比可在 1 到 16 之间编程设置的分频器。可编程分频器常用 74LS161 加置数法实现。将 74LS161 接成减法计数或采用预置数方式外部设定一个 4 位预置值 PP3P0计数过程中当计数器到达某个状态时利用置数端重新载入 P从而改变实际分频比。一种典型结构是使用 74LS161 的同步置数功能将数据输入端 D3D0 接一个可设置的预置值将进位输出 RCO 反相后接置数端 LOAD。当计数器计满 1111 时RCO 产生高电平经反相使 LOAD 变低在下一个时钟沿把预置值 P 载入。于是计数循环从 P 开始递增到 1111再回到 P循环长度为 16 减 P。输出分频比即为 16 减 P通过改变 P 的值即可在 1 到 16 之间编程设置分频比。这种可编程分频器在锁相环PLL频率合成器中是核心部件。现代频率合成器中的可变分频器就是基于计数器置数原理只不过集成度和工作频率更高。9. 常见问题与易错点9.1 异步清零与同步清零混淆这是初学者最常犯的错误。异步清零不受时钟控制清零信号一有效计数器立即归零同步清零必须等到时钟有效沿才归零。这个区别直接决定任意进制计数器中反馈状态应取 N 还是 N1异步清零取状态 N 译码反馈同步清零取状态 N1 译码反馈。如果搞反计数循环会多一个或少一个状态。9.2 反馈译码状态取错用异步清零法设计模 N 计数器时反馈译码状态是 N 的二进制编码而不是 N1。例如模 10 计数器的反馈状态是 1010不是 1001。若误取 1001计数器会在 9 时就清零实际变成模 9 计数器。9.3 清零/置数信号的有效电平弄反不同芯片的控制端有效电平不同74LS161 的 CLR 是低电平有效74LS192 的 CLR 是高电平有效74LS90 的清零端是高电平有效。设计时必须查清芯片手册否则电路完全不工作。9.4 级联时进位信号接错同步级联需要用进位输出接高位块的使能端ENT/ENP而不是直接接高位块的时钟端除非特意构成异步级联。若把 RCO 直接接高位块时钟则高位块会在低位块进位瞬间异步计数导致各块输出不同步整体工作频率下降。9.5 驱动方程推导错误在 JK 触发器计数器设计中推导驱动方程时必须严格与特征方程逐位对照注意 Q 和 Q′的系数。常见错误是把 J、K 的表达式写反或者漏掉某个变量。建议推导后用状态表代入验证全部有效状态的转换关系。9.6 自启动检查遗漏任何计数器设计完成后都要检查无效状态能否进入有效循环。若不能自启动电路在受到干扰进入无效状态后会“死锁”或进入错误的子循环必须修改设计。考试和实际设计中自启动检查都是必做步骤。9.7 竞争冒险与毛刺问题用译码输出做异步清零时状态 N 的短暂存在和清零回零过程可能产生毛刺若这个毛刺被后续电路捕捉会引起误动作。工程上常采用同步清零/置数方案、加输出锁存、或用格雷码计数等方式来抑制毛刺。10. 总结与学习建议计数器是数字电路从组合逻辑走向时序逻辑的第一个重要台阶也是后续学习寄存器、移位寄存器、存储器、状态机和微处理器的基础。本文系统梳理了计数器的基本概念、异步与同步计数器原理、集成计数器芯片的使用、任意进制计数器的设计方法以及典型应用。学习计数器的核心方法可以概括为一句话状态是根本方程是桥梁电路是目标。无论是分析已有计数器还是设计新计数器都要先明确状态转换规律再通过状态方程和特征方程求驱动方程最后落实到电路。对于集成计数器则要熟练掌握功能表和控制信号的时序关系。学习建议先动手用 JK 触发器在 Multisim、Proteus 等仿真软件中搭建一个三位二进制加法计数器观察各级输出波形分别用异步清零法和同步清零法把 74LS161 接成十进制计数器用示波器观察计数状态和毛刺差异完成“用 74LS90 构成 60 进制计数器”“用 74LS192 构成可逆计数器”等经典实验尝试设计一个带自启动的同步六进制计数器并与本文实例对照最后把计数器接入译码显示电路完成一个简易频率计或数字秒表项目。掌握计数器之后再学习移位寄存器构建的环形计数器、扭环形计数器约翰逊计数器以及格雷码计数器就能进一步理解编码方式与时序电路设计之间的关系为状态机设计打下坚实基础。