第 156 篇

考研数电·零基础讲义 第16讲(下)|任意进制计数器:置零法、置数法、多片级联

约 19 分钟 6288 字 华南师范大学数字电子技术考研数电零基础讲义

考研数电·零基础讲义 · 第 16 讲(下)|任意进制计数器:置零法、置数法、多片级联 学完这一讲,你能用 74HC161/160 接成任意进制的计数器:会算该译哪个状态、该置什么数,分得清"过渡状态"和"稳定状态",会用两片芯片做大于 16 的进制,并能完整写出 2026 回忆题第 8 题(两片 74HC161 设计模 28 计数器)的四种解法。预计用时 120–150 分钟。

本讲地图

  • 核心问题:手里只有 N 进制芯片(161 是 16,160 是 10),要做 M 进制。
  • M < N(一片够用):置零法(复位法)、置数法(置位法)。关键是"异步置零译SMS_{M}⁠、同步置数译SiS_{i}"。
  • M > N(要多片):先分解M=N1×N2M=N_{1}\times N_{2}用并行/串行进位;或者先把两片接成一个大计数器,再整体置零、整体置数。
  • 华师怎么考:2026 回忆题第 8 题原题——"用两片 74HC161 设计模 28 计数器,用两种不同方法"。本讲第五节给出完整解答(整体置零、整体置数,再补充 7×4 分解法和"置入 228"法),每种都画了连接图并用 Python 逐拍模拟验证。
  • 教材对应:第 6 章 6.3.2 节"三、任意进制计数器的构成方法"(例 6.3.2、6.3.3、6.3.4)。

前置知识

  • 74HC161/160 的功能表:异步清零 RD‾\overline{R_{D}}⁠、同步置数 LD‾\overline{LD}⁠、EP/ET 使能、进位 C(见第 16 讲(中))。这一讲完全建立在它上面,没吃透请先回去看。
  • 二进制与十进制、BCD 码互换(见第 01 讲)。
  • 与非门:输入全 1 时输出 0(见第 02 讲)。
  • 状态转换图的画法(见第 14 讲)。

一、问题是什么:从 N 进制得到 M 进制

1.1 大白话

想象一个 16 格的环形跑道(161 的 16 个状态),你只想跑 12 格就回起点。办法有两个:

  • 置零法:跑到第 12 格时,瞬间传送回起点(清零)。第 12 格只踩了一脚就被传走了。
  • 置数法:在某一格提前举手,下一步不往前走,而是跳到指定的格子(置数)。

不管哪种,本质都是:在 N 个状态的循环里跳过 N−M 个状态,只留下 M 个。

1.2 两个关键前提(再强调一次)

对 74HC161/160:

功能 方式 后果
清零RD‾=0\overline{R_{D}}=0 异步:立即生效,不等时钟 被译码的那个状态只"闪一下"——过渡状态
置数LD‾=0\overline{LD}=0 同步:等下一个 CLK 上升沿 被译码的那个状态会完整保持一个时钟周期——稳定状态

整节课所有"该译哪个状态"的问题,都从这张表推出来。


二、置零法(复位法)

2.1 大白话

从 0 开始数,数到 M 的那一刻,用一个门电路"认出"这个状态(译码),输出低电平去拉RD‾\overline{R_{D}}⁠,计数器立刻回到 0。

2.2 原理(异步置零)

设计数器从S0S_{0}(全 0)开始,接收 M 个脉冲后进入SMS_{M}⁠。把SMS_{M}译码产生RD‾=0\overline{R_{D}}=0⁠,计数器立刻回到S0S_{0}⁠。

  • 稳定的循环:S0→S1→⋯→SM−1→S0S_{0}\to S_{1}\to\cdots\to S_{M-1}\to S_{0}⁠,正好 M 个;
  • SMS_{M}只在极短的瞬间出现(几十纳秒),不算在循环里,叫过渡状态。在状态转换图上通常用虚线画出它。

口诀:异步置零,译SMS_{M}⁠。

如果芯片是同步置零(例如 74LS162、74LS163),清零要等下一个时钟,就要译SM−1S_{M-1}⁠,而且SM−1S_{M-1}是稳定状态。

2.3 例题 1:74HC161 用置零法接成十二进制

解:

第 1 步,确定译码状态:异步置零,译SM=S12S_{M}=S_{12}⁠。12 的 4 位二进制是11001100⁠。

第 2 步,写译码式。11001100中为 1 的位是Q3Q_{3}⁠、Q2Q_{2}⁠,用与非门:

RD‾=Q3Q2‾\overline{R_{D}}=\overline{Q_{3}Q_{2}}

为什么只取"为 1 的位"就够了? 计数器从 0 往上数,在到达 12 之前(0~11),没有任何一个状态同时满足Q3=1Q_{3}=1且Q2=1Q_{2}=1(最小的是 12 本身)。所以"Q3Q2=11Q_{3}Q_{2}=11"第一次出现就一定是 12,不需要再把Q1‾\overline{Q_{1}}⁠、Q0‾\overline{Q_{0}}也接进去。这样门的输入少、电路简单。

第 3 步,其余接法:LD‾=1\overline{LD}=1(不用置数),EP=ET=1EP=ET=1⁠,D 端任意。

第 4 步,状态循环(Python 模拟):0→1→⋯→11→(12)→00\to1\to\cdots\to11\to(12)\to0⁠,稳定状态 12 个,12(⁠11001100⁠)是过渡状态。✔

2.4 置零法的缺点

  1. 可靠性差:置零信号随计数器被清零而立刻消失,持续时间极短。如果几个触发器复位速度有快有慢,慢的那个可能还没清完,信号就没了,导致出错。教材给出的改进办法是加一个 SR 锁存器,把置零信号"拉长"到和计数脉冲高电平一样宽。
  2. 进位输出不好取:循环里不包含 1111,芯片自带的 C 永远不会出现;而译码门的输出脉冲又太窄,不宜当进位信号,往往要从SM−1S_{M-1}另外译码。

⚠️ 易错点:异步置零译SMS_{M}⁠,不是 SM−1S_{M-1}⁠;同步置零才译SM−1S_{M-1}⁠。考试先看清芯片是哪种。


三、置数法(置位法)

3.1 大白话

在循环中的某个状态SiS_{i}提前"举手"(⁠LD‾=0\overline{LD}=0⁠),下一个时钟到来时,计数器不再加 1,而是直接跳到你预先放在D3D2D1D0D_{3}D_{2}D_{1}D_{0}上的那个数。跳过了中间若干个状态,就得到了想要的进制。

置数可以从任何状态开始、跳到任何状态,所以方案很灵活。

3.2 原理(同步置数,适用 161/160)

  • 从SiS_{i}译码产生LD‾=0\overline{LD}=0⁠;
  • 下一个 CLK 到来时置入数据DD⁠;
  • SiS_{i} 包含在稳定循环里(它完整停留了一个周期)。

如果置入的数是DD⁠、译码的状态是SiS_{i}(加法计数,D≤SiD\le S_{i}⁠),那么循环是D→D+1→⋯→Si→DD\to D+1\to\cdots\to S_{i}\to D⁠,状态个数为:

M=Si−D+1M=S_{i}-D+1

口诀:同步置数,译SiS_{i}⁠,个数 = 译码值 − 置入值 + 1。

对异步置数的芯片(如 74HC191/190),LD‾=0\overline{LD}=0一出现就立刻置入,所以要从Si+1S_{i+1}译码,Si+1S_{i+1}只是过渡状态。

3.3 例题 2:74HC161 用置数法接成十二进制(两种方案)

方案甲:置入 0000,译S11S_{11}

  • 由M=Si−D+1M=S_{i}-D+1得Si=M−1+D=11S_{i}=M-1+D=11⁠,即10111011⁠。
  • 为 1 的位:Q3Q_{3}⁠、Q1Q_{1}⁠、Q0Q_{0}⁠。在 0~10 中没有同时满足这三位为 1 的状态,所以LD‾=Q3Q1Q0‾\overline{LD}=\overline{Q_{3}Q_{1}Q_{0}}⁠。
  • D3D2D1D0=0000D_{3}D_{2}D_{1}D_{0}=0000⁠,RD‾=1\overline{R_{D}}=1⁠,EP=ET=1EP=ET=1⁠。
  • 循环:0→1→⋯→11→00\to1\to\cdots\to11\to0⁠,12 个稳定状态,没有过渡状态。✔

方案乙:用进位 C 置数,置入 0100

  • 让计数器正常数到 1111,此时 C=1。把 C 经反相器接LD‾\overline{LD}⁠:在 1111 时LD‾=0\overline{LD}=0⁠,下一拍置入DD⁠。
  • 要 12 个状态:D=15−12+1=4D=15-12+1=4⁠,即置入01000100⁠。
  • 循环:4→5→⋯→15→44\to5\to\cdots\to15\to4⁠,12 个状态。✔(Python 模拟核对)
  • 好处:不用自己搭译码门(只要一个反相器),而且 C 本身就是现成的进位输出。

3.4 例题 3:74HC160 接成六进制(教材例 6.3.2 的三种接法)

接法 译码 置入 循环 能否用 C 作进位
异步置零 01100110(6,过渡态)RD‾=Q2Q1‾\overline{R_{D}}=\overline{Q_{2}Q_{1}} — 0~5 不能(没有 1001)
同步置数 01010101(5)LD‾=Q2Q0‾\overline{LD}=\overline{Q_{2}Q_{0}} 0000 0~5 不能
同步置数 01000100(4)LD‾=Q2‾\overline{LD}=\overline{Q_{2}} 1001 0,1,2,3,4,9 能(1001 在循环里)

第三种接法很巧:从 4 跳到 9,循环0→1→2→3→4→9→00\to1\to2\to3\to4\to9\to0⁠,仍是 6 个状态,而 1001 在循环里,所以每圈 C 出现一次(三种都已用 Python 模拟核对)。

⚠️ 易错点:

  1. 同步置数译的是SiS_{i}⁠,循环里包含 SiS_{i}⁠;不要按置零法的习惯多加 1。
  2. 置数法的"六进制"不一定是 0~5,任意连续或跳跃的 6 个状态都行,看 D 和译码怎么配。
  3. 置入的数要接到D3∼D0D_{3}\sim D_{0}上(接 0 就是接地、接 1 就是接高电平),别忘了画。

四、M > N:多片组合

4.1 能分解时:M=N1×N2M=N_{1}\times N_{2}

如果 M 能拆成两个都不超过 N 的因数之积,就先把两片分别接成N1N_{1}进制和N2N_{2}进制,再用并行进位或串行进位连起来(第 16 讲(中)第五节)。

例如两片 160 直接并行进位 = 10×10 = 100 进制(教材例 6.3.3)。

注意:当某一片被改成了N1<NN_{1}<N进制时,它的状态循环里往往没有 1111(或 1001),芯片自带的 C 不会出现。这时要用自己的译码信号去控制下一片的 EP、ET(并行)或 CLK(串行)。第五节方法三就是这种情况。

4.2 不能分解或想更省事:整体置零、整体置数

整体置零:先把两片按最简单的方式(例如并行进位)接成N×NN\times N进制的"大计数器",计到 M 时译出RD‾=0\overline{R_{D}}=0⁠,两片同时清零。原理和一片的置零法完全一样,只是状态变成了两片合起来的数。

整体置数:同样先接成N×NN\times N进制,在选定状态译出LD‾=0\overline{LD}=0⁠,两片同时置入适当的数据。原理和一片的置数法一样。

当 M 是大于 N 的质数(如 29)时,只能用这两种方法;M 不是质数时当然也可以用。

4.3 关键一步:把十进制数换成"两片的状态"

这是最容易错的地方!

  • 两片 161 并行:整体是 8 位二进制,状态值 = 高位片 × 16 + 低位片。例如 28 = 1×16 + 12 → 高位片 0001、低位片 1100。
  • 两片 160 并行:整体是两位 BCD,状态值 = 高位片 × 10 + 低位片。例如 28 → 高位片 0010(2)、低位片 1000(8)。

同一个 28,用 161 和用 160 译码的位完全不同!

为书写方便,下面用QH3∼QH0Q_{H3}\sim Q_{H0}表示高位片(第 2 片)的输出,QL3∼QL0Q_{L3}\sim Q_{L0}表示低位片(第 1 片)的输出。


五、2026 回忆题第 8 题:两片 74HC161 设计模 28 计数器

2026 回忆题第 8 题:用两片 74HC161 设计模 28 计数器,用两种不同方法。

5.0 审题与准备

  • 74HC161 是十六进制,28 > 16,所以必须两片。
  • 28 = 4 × 7,能分解;也可以用整体置零、整体置数。题目要"两种不同方法",最稳妥的组合是整体置零 + 整体置数(教材正统方法),想多拿印象分可以再写分解法。
  • 两片先并行进位接成 256 进制:两片 CLK 接同一脉冲,低位片 EP=ET=1,低位片 C 接高位片 EP、ET。
  • 换算(161,状态值 = 高×16 + 低):
十进制 高位片QH3QH2QH1QH0Q_{H3}Q_{H2}Q_{H1}Q_{H0} 低位片QL3QL2QL1QL0Q_{L3}Q_{L2}Q_{L1}Q_{L0}
27 0001 1011
28 0001 1100

5.1 方法一:整体置零法(异步)

第 1 步:选译码状态。 74HC161 是异步置零,译SM=S28S_{M}=S_{28} = 0001 1100。

第 2 步:写译码式。 为 1 的位是QH0Q_{H0}⁠、QL3Q_{L3}⁠、QL2Q_{L2}⁠:

RD‾=QH0 QL3 QL2‾\overline{R_{D}}=\overline{Q_{H0}\,Q_{L3}\,Q_{L2}}

检查"只取为 1 的位"是否安全:在 0~27 中,高位片为 0001 的是 16~27,其低位片为 0000~1011,没有一个同时满足QL3=QL2=1Q_{L3}=Q_{L2}=1⁠;高位片为 0000 时QH0=0Q_{H0}=0⁠。所以这三位同时为 1 第一次出现就是 28。(Python 穷举确认 0~27 中没有满足这三位全 1 的状态。)

第 3 步:其余接法。 与非门 G 的输出同时接两片的RD‾\overline{R_{D}}⁠;两片LD‾=1\overline{LD}=1⁠;D 端不用;低位片 EP=ET=1;低位片 C 接高位片 EP、ET;CLK 共用。

方法一:整体置零法接成模 28 计数器 (1) 低位片 74HC161 RD LD EP ET CLK C Q0 D0 Q1 D1 Q2 D2 Q3 D3 1 1 1 (2) 高位片 74HC161 RD LD EP ET CLK C Q0 D0 Q1 D1 Q2 D2 Q3 D3 1 C(1) CLK 计数脉冲(两片共用) G Q2 Q3 Q0 28 时输出 0 译码状态 28 = 0001 1100(过渡态) D 端不用(任意)

图 1:方法一,整体置零法。G 认出 28(0001 1100)后立刻把两片同时清零

第 4 步:工作过程。 从 0 开始,低位片每拍加 1;低位片到 1111(15)时 C=1,下一拍高位片加 1、低位片回 0,整体变成 16;继续数到 27(0001 1011);再来一个脉冲进入 28(0001 1100),G 输出 0,立刻清零回到 0。

第 5 步:验证(Python 逐拍模拟)。 稳定循环0→1→⋯→27→00\to1\to\cdots\to27\to0⁠,共 28 个状态;28 是过渡状态。此外从 256 个可能的上电初态出发,全部都会进入这个循环(能自启动)。

第 6 步:说明不足。 置零信号极短,可靠性较差;循环中高位片不会出现 1111,两片的 C 都不能作进位输出。如果要一个宽度为一个时钟周期的进位信号,需另外从 27 译码。

5.2 方法二:整体置数法(同步)

第 1 步:选译码状态和置入值。 置入 0(两片 D 全接 0),由M=Si−D+1M=S_{i}-D+1得Si=27S_{i}=27 = 0001 1011。

第 2 步:写译码式。 为 1 的位是QH0Q_{H0}⁠、QL3Q_{L3}⁠、QL1Q_{L1}⁠、QL0Q_{L0}⁠:

LD‾=QH0 QL3 QL1 QL0‾\overline{LD}=\overline{Q_{H0}\,Q_{L3}\,Q_{L1}\,Q_{L0}}

检查:0~27 中满足这四位全为 1 的只有 27 本身(Python 穷举确认)。

第 3 步:其余接法。 与非门 G 的输出同时接两片的LD‾\overline{LD}⁠;两片D3D2D1D0=0000D_{3}D_{2}D_{1}D_{0}=0000⁠;两片RD‾=1\overline{R_{D}}=1⁠;并行进位与 CLK 接法同方法一。

方法二:整体置数法接成模 28 计数器 (1) 低位片 74HC161 RD LD EP ET CLK C Q0 D0 0 Q1 D1 0 Q2 D2 0 Q3 D3 0 1 1 1 (2) 高位片 74HC161 RD LD EP ET CLK C Q0 D0 0 Q1 D1 0 Q2 D2 0 Q3 D3 0 1 C(1) CLK 计数脉冲(两片共用) G Q0 Q1 Q3 Q0 27 时输出 0 译码状态 27 = 0001 1011(稳定态) 下一个 CLK↑ 两片同时置入 0000

图 2:方法二,整体置数法。G 认出 27(0001 1011),下一个时钟两片同时置入 0000

第 4 步:工作过程。 数到 27 时 G 输出 0,LD‾=0\overline{LD}=0⁠,但此时还不变;第 28 个脉冲的上升沿到来,两片同时装入 0000,回到 0。注意:在 27 时低位片是 1011,不是 1111,所以 C(1)=0、高位片在这一拍不会被"计数"打扰——不过就算 C(1)=1 也没关系,因为置数优先于计数。

第 5 步:验证。 稳定循环 0~27,共 28 个状态,没有过渡状态;从任意初态出发都能进入循环。

第 6 步:优点。 置数是同步的,LD‾=0\overline{LD}=0已稳定地保持了一整个周期,不存在置零法"信号太短"的问题;而且 G 的输出在 27 时为低、宽度正好一个时钟周期,可以直接作为进位输出(每 28 个脉冲一个负脉冲)。

5.3 方法三(补充):分解为 7 × 4

28 = 7 × 4。让低位片接成七进制、高位片接成四进制,再"并行"连起来:

低位片(七进制,0~6):同步置数,置入 0000,译S6S_{6} = 0110。为 1 的位QL2Q_{L2}⁠、QL1Q_{L1}⁠,在 0~5 中没有同时为 1 的,所以:

LDL‾=QL2QL1‾\overline{LD_{L}}=\overline{Q_{L2}Q_{L1}}

(这个与非门记作 G1。)

进位(低位片"满 6"时让高位片计一下):低位片永远到不了 1111,它的 C 用不上。改用 G1 的输出取反:

Y=QL2QL1Y=Q_{L2}Q_{L1}

(G1 后面接一个反相器 G2 就得到 Y。)

把 Y 接高位片的 EP 和 ET。只有低位片停在 6 的那一拍,Y=1,高位片才在下一个上升沿加 1——此时低位片同时被置回 0。

高位片(四进制,0~3):也用同步置数置 0。但要注意:高位片应在"自己是 3 并且低位片是 6"那一拍回 0(否则高位片一到 3 就立刻回 0,3 只停留一拍)。所以:

LDH‾=QH1QH0 Y‾=QH1QH0QL2QL1‾\overline{LD_{H}}=\overline{Q_{H1}Q_{H0}\,Y}=\overline{Q_{H1}Q_{H0}Q_{L2}Q_{L1}}

(这个三输入与非门记作 G3。)

两片RD‾=1\overline{R_{D}}=1⁠,D 全接 0,CLK 共用,低位片 EP=ET=1。

方法三:分解为 7×4,两片分别置数再并行连接 (1) 低位片 74HC161 RD LD EP ET CLK C Q0 D0 0 Q1 D1 0 Q2 D2 0 Q3 D3 0 1 1 1 (2) 高位片 74HC161 RD LD EP ET CLK C Q0 D0 0 Q1 D1 0 Q2 D2 0 Q3 D3 0 1 CLK 计数脉冲(两片共用) G1 Q1 Q2 G1 = (Q2Q1)′ → 低位片 LD,6 时置 0:七进制 G2 Y=Q2Q1 G3 Q0 Q1 G3:高位片=3 且低位片=6 时置 0:四进制 低位片 0~6(7 个),高位片 0~3(4 个) 总状态 7×4 = 28

图 3:方法三,低位片七进制、高位片四进制,G2 输出的 Y 起"进位使能"作用

验证(Python 逐拍模拟,记作"高位片,低位片"):

(0,0)→(0,1)→⋯→(0,6)→(1,0)→⋯→(1,6)→(2,0)→⋯→(3,6)→(0,0)(0,0)\to(0,1)\to\cdots\to(0,6)\to(1,0)\to\cdots\to(1,6)\to(2,0)\to\cdots\to(3,6)\to(0,0)

一共 4 × 7 = 28 个不同状态后回到起点,是模 28 计数器。✔ 注意:这种接法下两片合起来的 8 位并不是 0~27 的自然二进制(例如第 7 拍是"高 1、低 0"即 0001 0000),但作为计数器/分频器,它每 28 个脉冲循环一次,完全满足"模 28"。G3 的输出在 (3,6) 时为低,可作为进位输出。

5.4 方法四(补充):用进位 C 置数,置入 228

两片 161 并行进位是 256 进制。仿照例题 2 的方案乙:让它正常数到 255(两片都 1111),此时高位片 C(2)=1(因为C(2)=ET(2)⋅C(2)=ET(2)\cdot高位片全 1,而 ET(2)=C(1)=1)。把 C(2) 经反相器接两片的LD‾\overline{LD}⁠,下一拍置入:

D=256−28=228=1110 0100D=256-28=228=1110\ 0100

即高位片D3D2D1D0=1110D_{3}D_{2}D_{1}D_{0}=1110⁠,低位片D3D2D1D0=0100D_{3}D_{2}D_{1}D_{0}=0100⁠。

方法四(补充):用进位 C 反相作置数信号,置入 228 (1) 低位片 74HC161 RD LD EP ET CLK C Q0 D0 0 Q1 D1 0 Q2 D2 1 Q3 D3 0 1 1 1 (2) 高位片 74HC161 RD LD EP ET CLK C Q0 D0 0 Q1 D1 1 Q2 D2 1 Q3 D3 1 1 C(1) CLK 计数脉冲(两片共用) C(2) 整体到 255 时 C(2)=1 → LD=0 D:高位片 1110、低位片 0100 → 228 循环 228 ~ 255,共 28 个状态

图 4:方法四,C(2) 在 255 时为 1,反相后令两片同时置入 228

验证:循环228→229→⋯→255→228228\to229\to\cdots\to255\to228⁠,共 255 − 228 + 1 = 28 个状态。✔ 优点是一个译码门都不用,只要一个反相器;C(2) 本身就是现成的进位输出。小缺点:如果上电时计数器在 0~227 之间,要先数到 255 才进入循环(最多 228 拍,Python 从 0 出发正是第 228 拍到达 228),所以通常在开机时先用RD‾\overline{R_{D}}或置数把它放进循环。

5.5 四种方法对比

方法 译码 / 控制 稳定循环 过渡态 进位输出 评价
一 整体置零 RD‾=QH0QL3QL2‾\overline{R_{D}}=\overline{Q_{H0}Q_{L3}Q_{L2}} 0~27 28 需另译 27 简单,可靠性较差
二 整体置数 LD‾=QH0QL3QL1QL0‾\overline{LD}=\overline{Q_{H0}Q_{L3}Q_{L1}Q_{L0}}⁠,D=0 0~27 无 G 输出即可 推荐
三 7×4 G1、G2、G3 三个门 28 个 (高,低) 组合 无 G3 输出 门多,体现分解思想
四 置 228 C(2) 反相接LD‾\overline{LD} 228~255 无 C(2) 元件最少

以上四种接法全部用 Python 按 74HC161 功能表逐拍模拟过,循环长度都是 28(验算脚本 verify/16c-anymod.py)。

5.6 考场答题模板

写这类题,按下面的顺序写,步骤分一分不丢:

  1. 分析:161 为十六进制、异步清零、同步置数;28 > 16,需两片;先并行进位接成 256 进制。
  2. 方法一(整体置零):异步置零译S28S_{28} = 0001 1100,RD‾=QH0QL3QL2‾\overline{R_{D}}=\overline{Q_{H0}Q_{L3}Q_{L2}}⁠;说明 28 为过渡态,有效循环 0~27。画图。
  3. 方法二(整体置数):同步置数译S27S_{27} = 0001 1011,LD‾=QH0QL3QL1QL0‾\overline{LD}=\overline{Q_{H0}Q_{L3}Q_{L1}Q_{L0}}⁠,D 全 0;有效循环 0~27。画图。
  4. 每种方法都写一句状态循环(可画简化状态图:0 → 1 → … → 27 → 0,方法一在 27 后虚线经 28 回 0)。
  5. 画图时每个端子都要交代:RD‾\overline{R_{D}}⁠、LD‾\overline{LD}⁠、EP、ET、CLK、D 端、C,不用的端子接 1 或标"任意"。

六、易错点汇总 ⚠️

  1. 异步置零译SMS_{M}⁠,同步置数译SiS_{i}(⁠M=Si−D+1M=S_{i}-D+1⁠)。最常见的错误是把两者搞反。
  2. 两片 161 用 ×16 换算,两片 160 用 ×10(BCD)换算。用 160 做 28 要译 0010 1000(置数时译 27 = 0010 0111),不是 0001 1100。
  3. 整体置零/置数时,译码门输出要同时接两片;只接一片会出错。
  4. 只取"为 1 的位"作译码时,要确认在到达该状态之前没有别的状态也满足;不放心就把全部位(含取反的位)都接上。
  5. 片被改成小于 N 进制后,芯片自带的 C 可能永远不出现,进位要自己译。
  6. 不用的控制端(⁠RD‾\overline{R_{D}}⁠、LD‾\overline{LD}⁠、EP、ET)要接确定的电平,不能空着不画。

速记卡

场景 做法
161/160 异步置零 译SMS_{M}⁠;SMS_{M}为过渡态;可靠性差
74LS162/163 同步置零 译SM−1S_{M-1}
161/160 同步置数 译SiS_{i}⁠,置DD⁠,M=Si−D+1M=S_{i}-D+1⁠;无过渡态
191/190 异步置数 译Si+1S_{i+1}(过渡态)
用 C 置数(161) C 反相接LD‾\overline{LD}⁠,置D=16−MD=16-M(两片:256−M256-M⁠)
M = N1×N2 分别接成 N1、N2 进制,再并行/串行进位
M 为质数或任意 整体置零 / 整体置数
模 28(两片 161) 置零:RD‾=QH0QL3QL2‾\overline{R_{D}}=\overline{Q_{H0}Q_{L3}Q_{L2}}⁠;置数:LD‾=QH0QL3QL1QL0‾\overline{LD}=\overline{Q_{H0}Q_{L3}Q_{L1}Q_{L0}}⁠,D=0
换算 161:高×16+低;160:高×10+低(BCD)

自测练习

1. 一片 74HC161,LD‾=1\overline{LD}=1⁠、EP=ET=1EP=ET=1⁠,把Q3Q_{3}⁠、Q0Q_{0}接到一个两输入与非门,输出接RD‾\overline{R_{D}}⁠。这是几进制计数器?

答案与提示

Q3Q0=11Q_{3}Q_{0}=11第一次出现在 1001(9),异步清零,9 为过渡态,循环 0~8,九进制(Python 模拟确认)。

2. 用一片 74HC161 的进位 C 经反相器接LD‾\overline{LD}⁠,构成九进制计数器。D 端应接什么?循环是哪些状态?

答案与提示

D=16−9=7D=16-9=7⁠,即D3D2D1D0=0111D_{3}D_{2}D_{1}D_{0}=0111⁠。循环7→8→⋯→15→77\to8\to\cdots\to15\to7⁠,共 9 个状态。

3. 用两片 74HC161 以整体置数法(置入 0)构成五十进制计数器。写出LD‾\overline{LD}的表达式。

答案与提示

译S49S_{49}⁠:49 = 3×16 + 1 = 0011 0001。为 1 的位:QH1Q_{H1}⁠、QH0Q_{H0}⁠、QL0Q_{L0}⁠,0~49 中只有 49 满足这三位全 1(Python 确认)。LD‾=QH1QH0QL0‾\overline{LD}=\overline{Q_{H1}Q_{H0}Q_{L0}}⁠,两片 D 全接 0。

4. 用两片 74HC161 以整体置零法构成六十进制计数器。写出RD‾\overline{R_{D}}表达式,并指出过渡状态。

答案与提示

译S60S_{60}⁠:60 = 3×16 + 12 = 0011 1100。RD‾=QH1QH0QL3QL2‾\overline{R_{D}}=\overline{Q_{H1}Q_{H0}Q_{L3}Q_{L2}}⁠,过渡状态 60,有效循环 0~59(Python 模拟循环长度 60)。

5. 用两片 74HC160 构成二十九进制计数器(教材例 6.3.4 同型)。分别写出整体置零和整体置数(置入 0)时的译码式。

答案与提示

160 用 BCD 换算。整体置零译 29 = 0010 1001:RD‾=QH1QL3QL0‾\overline{R_{D}}=\overline{Q_{H1}Q_{L3}Q_{L0}}⁠;整体置数译 28 = 0010 1000:LD‾=QH1QL3‾\overline{LD}=\overline{Q_{H1}Q_{L3}}(0~28 中只有 28 满足这两位为 1)。两种接法 Python 模拟循环长度均为 29。

6. 74HC191 是异步置数的十六进制计数器。若要用"置入 0000"的方法接成十进制(加法计数),应从哪个状态译码?循环中有没有这个状态?

答案与提示

异步置数要从Si+1S_{i+1}译码:有效循环 0~9,应译 1010(10),LD‾=Q3Q1‾\overline{LD}=\overline{Q_{3}Q_{1}}⁠。1010 只是过渡状态,不在稳定循环中(模拟:循环 0~9,过渡态 10)。

7.(华师真题同型) 用两片 74HC161 设计一个模 28 计数器,要求用整体置数法,并使进位输出信号宽度为一个时钟周期。写出译码式,说明进位从哪里引出。

答案与提示

LD‾=QH0QL3QL1QL0‾\overline{LD}=\overline{Q_{H0}Q_{L3}Q_{L1}Q_{L0}}(译 27 = 0001 1011),两片 D 全 0。与非门输出在 27 期间为低电平,持续一个时钟周期,可直接作进位输出(低电平有效);也可以再加一个反相器得到高电平有效的进位脉冲。


下一讲预告

第 17 讲(上)我们把方向反过来:不再"分析"电路,而是从一句文字要求出发设计同步时序电路——逻辑抽象、画状态转换图、状态化简、状态分配。

👉 点击进入下一讲:第17讲(上)|同步时序电路设计:状态化简与编码

评论

还没有评论。 来写第一条。

留下一条评论

选填,不会公开

纯文本,链接会自动识别。