考研数电·零基础讲义 · 第 09 讲(下)|译码器
学完这一讲,你能读懂 3 线-8 线译码器 74HC138 的功能表和三个片选端,会用两片 74HC138 扩展成 4 线-16 线译码器,会用 74HC138 加与非门实现任意三变量逻辑函数(这是大题高频考法),并认识驱动数码管的 BCD-七段显示译码器。预计用时 2~2.5 小时。
本讲地图#
- 译码是编码的反操作:输入一个二进制代码,让对应的那一根输出线"亮起来"。
- 74HC138:3 个地址输入、8 个低电平有效输出、3 个片选端;输出恰好是全部最小项的"非",所以又叫最小项译码器。
- 两大用法:①扩展(片选端当额外地址);②实现逻辑函数("最小项 + 与非门")。
- 显示译码器:把 BCD 码翻译成七段数码管的亮灭信号。
- 华师怎么考:考纲点名"译码器"。"用 74HC138 和门电路实现某函数""用两片扩展"是典型大题;功能表、片选条件是常见填空。
- 教材对应:第 4 章 4.4.2 节(译码器),4.5 节例 4.5.2 及"用译码器设计组合电路"部分。
前置知识#
- 最小项mi的编号和写法,Y=∑m(⋯)(见第 03 讲)。
- 摩根定理:X⋅Y⋅Z=X+Y+Z(见第 02 讲下)。
- 低电平有效、使能端、编码器的概念(见第 09 讲上)。
一、译码是什么#
1.1 大白话:银行叫号屏#
上一讲的编码器是"给病人发号码牌"。译码器正好反过来,像银行的叫号屏:系统送来一个号码(比如 101),屏幕就把 5 号窗口的灯点亮,其余窗口都不亮。
译码器(Decoder):输入n位二进制代码,输出2n根线;输入是几,就只让第几根输出线有效。
3 位代码有 8 种,所以有 3 线-8 线译码器;2 位代码对应 2 线-4 线译码器;4 位对应 4 线-16 线。
1.2 译码器用在哪里#
- 存储器的地址译码:计算机里有很多块存储芯片,CPU 送出一个地址,译码器根据地址的高几位"选中"其中一块芯片,其余芯片都不响应。第 22 讲(下)存储器容量扩展时会再见到它。
- 键盘、指示灯扫描:用 3 根线轮流点亮 8 个指示灯中的一个。
- 组合逻辑设计:因为它输出全部最小项,可以拼出任意函数(本讲第四节)。
- 数码显示:广义的译码器还包括把 BCD 码"翻译"成七段亮灭信号的显示译码器(本讲第七节)。
一句话:凡是"根据一个代码,从很多对象中挑出一个"的场合,都用得到译码器。
1.3 先自己设计一个 2 线-4 线译码器#
题目:输入A1A0,输出Y0∼Y3(高电平有效)。输入是几,Y几=1。
真值表:
| A1 |
A0 |
Y0 |
Y1 |
Y2 |
Y3 |
| 0 |
0 |
1 |
0 |
0 |
0 |
| 0 |
1 |
0 |
1 |
0 |
0 |
| 1 |
0 |
0 |
0 |
1 |
0 |
| 1 |
1 |
0 |
0 |
0 |
1 |
写式:每个输出只在一行为 1,所以它就是那一行的最小项:
Y0=A1A0=m0,Y1=A1A0=m1,Y2=A1A0=m2,Y3=A1A0=m3
画图:两个非门得到A1、A0,再用 4 个 2 输入与门。
重要发现:二进制译码器的每个输出就是一个最小项。这一点是后面"用译码器实现任意函数"的根基,请记牢。
如果输出改成低电平有效,把与门换成与非门即可:Y0′=m0,以此类推。
二、3 线-8 线译码器 74HC138#
2.1 引脚一个一个认#
图 1:74HC138 逻辑框图。地址A2A1A0依次取 000~111,被选中的输出变为低电平(动画循环播放)
| 引脚 |
读法 |
作用 |
| A2A1A0 |
A 二、A 一、A 零 |
地址输入(代码输入),A2是最高位 |
| Y0′∼Y7′ |
Y 零非~Y 七非 |
8 个输出,低电平有效:被选中的那根输出 0,其余输出 1 |
| S1 |
S 一 |
片选(使能)端,高电平有效 |
| S2′、S3′ |
S 二非、S 三非 |
片选端,低电平有效 |
片选条件(三个条件同时满足芯片才工作):
S1=1且S2′=0且S3′=0
教材把后两个合写成S2′+S3′=0(两个都为 0,它们的"或"才是 0)。只要有一个条件不满足,芯片就被禁止,8 个输出全部为 1。
大白话:三个片选端就像银行开门要三把钥匙——一把要"插上"(S1=1),两把要"拔掉"(S2′=S3′=0),缺一不可。
2.2 功能表(教材表 4.4.5)#
| S1 |
S2′+S3′ |
A2 |
A1 |
A0 |
Y0′ |
Y1′ |
Y2′ |
Y3′ |
Y4′ |
Y5′ |
Y6′ |
Y7′ |
| 0 |
× |
× |
× |
× |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
| × |
1 |
× |
× |
× |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
| 1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
| 1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
| 1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
| 1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
| 1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
| 1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
| 1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
| 1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
2.3 逐行拆解#
- 前两行:片选不满足,芯片禁止,输出全 1。
- 后八行:芯片工作。地址是几(把A2A1A0当二进制数),就是第几个输出为 0。比如A2A1A0=101(即 5),只有Y5′=0。
- 工作时任何时刻有且只有一个输出为 0。
2.4 逻辑式:输出 = 最小项的非#
芯片工作时(教材记作S=1),
Yi′=mi(i=0,1,⋯,7)
例如Y0′=A2A1A0=m0,Y5′=A2A1A0=m5。8 个输出正好给出了 3 个变量的全部 8 个最小项(取反形式),所以叫最小项译码器。
2.5 片选在芯片内部是怎么实现的#
教材的内部逻辑图里,三个片选端先进入一个门GS,产生内部使能信号
S=S1⋅S2′+S3′
只有S=1时,8 个与非门才把地址"翻译"出来;S=0时 8 个与非门的输出都被强制为 1。所以S1像一个"总开关",S2′、S3′像两个"急停按钮",任何一个急停按下(为 1),芯片就停。
2.6 例题 1:读 74HC138#
题目:(1)S1=1,S2′=S3′=0,A2A1A0=011,哪个输出为 0?(2)S1=1,S2′=0,S3′=1,A2A1A0=011呢?
解:(1)片选满足,011 = 3,只有Y3′=0,其余为 1。(2)S3′=1,片选不满足,8 个输出全为 1。
2.7 易错点 ⚠️#
- 三个片选端的有效电平不一样:S1高有效,S2′、S3′低有效。最常见的错误是把S1也接 0。
- 地址的高低位:A2是最高位。A2A1A0=100是 4,选中Y4′,不是Y1′。
- 输出低电平有效:被选中的是 0,不是 1。
三、扩展:两片 74HC138 组成 4 线-16 线译码器#
3.1 大白话:两层楼的叫号屏#
一块叫号屏只有 8 个窗口。16 个窗口怎么办?装两块屏,一楼管 0~7 号,二楼管 8~15 号。号码的最高位D3决定"去哪层楼":D3=0一楼的屏工作,D3=1二楼的屏工作。低三位D2D1D0在本层选窗口。
关键在于:用片选端当作第 4 根地址线。
3.2 连接方法(教材例 4.5.2)#
- 两片的A2A1A0都接D2D1D0。
- 片(1)(管 0~7):S1接 1,S2′、S3′都接D3。于是D3=0时片(1) 工作,D3=1时片(1) 禁止。
- 片(2)(管 8~15):S1接D3,S2′、S3′接 0。于是D3=1时片(2) 工作,D3=0时片(2) 禁止。
- 片(1) 的Y0′∼Y7′作Z0′∼Z7′,片(2) 的Y0′∼Y7′作Z8′∼Z15′。
妙处在于利用了"S1高有效、S2′低有效"这个差别:同一根D3,对一片是"开门",对另一片就是"关门",不需要额外的非门。
3.3 例题 2:验证#
题目:D3D2D1D0=1011,哪个输出为 0?
解:D3=1,片(1) 的S2′=S3′=1,禁止,输出全 1;片(2) 的S1=1,S2′=S3′=0,工作,A2A1A0=011选中片(2) 的Y3′,即Z3+8′=Z11′=0。1011 正是 11,正确。
以上接法已用程序对 16 种输入全部核对:每种输入都恰好只有对应编号的输出为 0。
3.4 易错点 ⚠️#
- 不要两片都用S1接D3——那样两片会同时工作或同时禁止。
- 更大的扩展(5 线-32 线)需要 4 片 74HC138,再用一片译码器(比如另一片 74HC138 当 2 线-4 线用)把最高两位D4D3译成 4 个片选信号,分别接到 4 片的低电平片选端。见自测练习第 6 题。
四、用 74HC138 实现逻辑函数(重点)#
4.1 大白话:最小项"零件库"#
第 03 讲说过:任何逻辑函数都能写成最小项之和。74HC138 工作时一下子提供了全部 8 个最小项(只是取了反)。就像一个"零件库",函数需要哪几个最小项,就把对应的输出线挑出来,再用一个门"合"起来。
4.2 为什么是"与非门"#
设函数Y=m1+m3+m5。利用"两次取反不变"和摩根定理:
Y=m1+m3+m5=m1⋅m3⋅m5=Y1′⋅Y3′⋅Y5′
逐行拆解:
- 第一个等号:两次取反,值不变;
- 第二个等号:摩根定理把"和的非"变成"非的积";
- 第三个等号:mi正好就是 74HC138 的输出Yi′。
结论:把函数包含的最小项对应的Yi′接到一个与非门上,与非门的输出就是Y。
4.3 标准步骤#
- 把函数化成最小项之和的形式Y=∑m(⋯)(不要化简!要展开);
- 变量按顺序接地址:最高位变量接A2,依次接A1、A0;
- 片选接成工作状态:S1=1,S2′=S3′=0;
- 把∑m中各编号对应的Yi′接到一个多输入与非门,输出即为Y;
- 写出表达式Y=Yi′⋅Yj′⋯,并验证。
4.4 例题 3:实现Y=AB+BC#
第 1 步:展开成最小项。 缺哪个变量就乘上"(该变量 + 它的非)":
AB=AB(C+C)=ABC+ABC=m5+m4
BC=(A+A)BC=ABC+ABC=m7+m3
所以Y=∑m(3,4,5,7)。(最小项编号按ABC的二进制:ABC是 101 = 5。)
第 2 步:A接A2,B接A1,C接A0。
第 3 步:S1=1,S2′=S3′=0。
第 4 步:Y3′、Y4′、Y5′、Y7′接一个 4 输入与非门:
Y=Y3′⋅Y4′⋅Y5′⋅Y7′
第 5 步:验证一行:ABC=100时,只有Y4′=0,与非门有一个输入为 0,输出 1;而原式AB+BC=1⋅1+0=1,一致。ABC=010时只有Y2′=0,但Y2′没接进与非门,与非门四个输入全是 1,输出 0;原式0+0=0,一致。8 行已全部用程序核对。
4.5 例题 4:一片 74HC138 实现全加器(多输出函数)#
题目:用一片 74HC138 和与非门实现 1 位全加器(输入A、B、CI,输出和S、进位CO)。
第 1 步:全加器真值表(第 08 讲例 2 已列过,第 11 讲还会细讲)给出:
S=∑m(1,2,4,7),CO=∑m(3,5,6,7)
(S在输入有奇数个 1 时为 1;CO在至少两个 1 时为 1。)
第 2 步:A→A2,B→A1,CI→A0;片选接工作状态。
第 3 步:
S=Y1′Y2′Y4′Y7′,CO=Y3′Y5′Y6′Y7′
注意Y7′ 同时接到两个与非门——一根输出线可以给多个门用。这就是译码器做"多输出函数"的优势:一片芯片 + 每个输出一个与非门,就搞定了。
图 2:一片 74HC138 加两个 4 输入与非门实现全加器。橙线接S,绿线接CO
4.6 能力边界#
- 一片 74HC138 有 3 个地址端,能实现任意不超过 3 个变量的函数(每个输出一个与非门)。
- 4 个变量的函数要用 4 线-16 线译码器(比如两片 74HC138 扩展)+ 与非门。
- 如果函数的最小项很多(比如 6 个),可以改用"非函数":Y只含剩下的 2 个最小项,用与门:Y=Yi′⋅Yj′(i、j是Y 不含的最小项)。原理:Y=mi+mj=mi⋅mj。
4.7 例题 5:四变量函数——用两片 74HC138#
题目:用 74HC138 和与非门实现Y=∑m(0,5,10,15)(变量ABCD,A为最高位)。
思路:4 个变量需要 16 个最小项,一片只有 8 个,所以先按第三节把两片接成 4 线-16 线译码器:A接片(1) 的S2′、S3′和片(2) 的S1;B、C、D接两片的A2A1A0;片(1) 的S1接 1,片(2) 的S2′、S3′接 0。
找最小项在哪一片:
- m0、m5的编号小于 8,在片(1):分别是片(1) 的Y0′、Y5′;
- m10、m15在片(2):编号减 8 得 2、7,是片(2) 的Y2′、Y7′。
合成:
Y=Y0(1)′⋅Y5(1)′⋅Y2(2)′⋅Y7(2)′
验证一行:ABCD=1010(10)时,A=1片(2) 工作,BCD=010选中片(2) 的Y2′=0,与非门输出 1;原函数含m10,一致。16 行已用程序核对。
换个角度看这个函数:m0=0000、m5=0101、m10=1010、m15=1111,正好是"高两位AB等于低两位CD",即Y=(A⊙C)(B⊙D)。用译码器做这种"不好化简"的函数,完全不用动脑筋化简,这就是它的好处。
4.8 易错点 ⚠️#
- 一定要先展开成最小项,不能直接拿化简式去接。
- 变量接地址端的顺序决定了最小项编号的含义;如果把C接A2,编号就全变了。答卷上要写清"A→A2,B→A1,C→A0"。
- 输出是低电平有效,所以合成用与非门;如果用的译码器输出是高电平有效(原码mi),合成就用或门。
五、译码器当"数据分配器"用#
5.1 大白话:快递分拣员#
数据选择器(第 10 讲)是"多选一",数据分配器正好相反——把一路数据按地址送到多路中的某一路,像快递分拣员按地址把包裹扔进对应的筐。
5.2 接法#
把S1当作数据输入D,S2′=S3′=0,A2A1A0当作"送往哪一路"的地址。例如地址为 101:
- D=1时芯片工作,Y5′=0;
- D=0时芯片禁止,Y5′=1。
所以Y5′=D,数据以反码形式从地址指定的那一根线送出去,其他线一直是 1。(已用程序核对。)
六、二-十进制译码器 74HC42(了解)#
它把 4 位 BCD 码A3A2A1A0(0000~1001)译成 10 个低电平输出Y0′∼Y9′。对于 1010~1111 这 6 个伪码(不是合法 BCD),10 个输出都是 1,即"拒绝翻译",教材称之为拒绝伪码的功能。
七、显示译码器:让数码管显示数字#
7.1 七段数码管#
数码管由 7 段可以发光的线段 a、b、c、d、e、f、g 拼成"日"字形(有的再加一个小数点)。点亮不同的段就显示不同的数字,比如 1 只亮 b、c 两段,8 七段全亮。
图 3:七段数码管各段的名称,依次显示 BCD 码 0000~1001 对应的数字(动画循环播放)
半导体(LED)数码管每段是一个发光二极管,分两种接法:
| 类型 |
公共端 |
某段点亮需要 |
| 共阴极 |
7 个 LED 的阴极连在一起接地 |
该段输入高电平 |
| 共阳极 |
7 个 LED 的阳极连在一起接电源 |
该段输入低电平 |
7.2 BCD-七段显示译码器的真值表(共阴极,1 = 亮,摘自教材表 4.4.7 的 0~9 部分)#
| 数字 |
A3A2A1A0 |
a |
b |
c |
d |
e |
f |
g |
| 0 |
0000 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
| 1 |
0001 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
| 2 |
0010 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
| 3 |
0011 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
| 4 |
0100 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
| 5 |
0101 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
| 6 |
0110 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
| 7 |
0111 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
| 8 |
1000 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
| 9 |
1001 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
逐行拆解:怎么自己推出一行?画一个"日"字,想象要显示的数字,看哪些段要亮。例如"4":右上 b、右下 c、左上 f、中间 g 亮,a、d、e 不亮,所以 abcdefg = 0110011。
注意教材这张表里,"6"不亮 a 段(没有顶上那一横),"9"不亮 d 段(没有底下那一横)。不同芯片的 6、9 字形可能不同,考试以题目给的表为准。
对每一段,以A3A2A1A0为变量、把 1010~1111 作为无关项或按芯片规定填写,就能用卡诺图化简出Ya∼Yg的式子。教材给出的结果之一是
Ya=A3A2A1A0+A3A1+A2A0
("圈 0 再取反"得到。可以代入检验:输入 0001 时括号内第一项为 1,Ya=0,"1"不亮 a 段,正确;在 0~9 上逐一核对均与上表一致。)
7.3 7448 的三个附加控制端(了解)#
教材介绍的 BCD-七段译码器 7448(驱动共阴极数码管)有三个低电平有效的附加端:
- 灯测试LT′:LT′=0时七段全亮,用来检查数码管有没有坏段。
- 灭零输入RBI′:RBI′=0且输入为 0000 时,不显示 0(熄灭),用来去掉多余的前导零,比如把"00013.700"显示成"13.7"。
- 灭灯输入/灭零输出BI′/RBO′:作输入时BI′=0使全部段熄灭;作输出时RBO′=0表示"本位的 0 已被熄灭",可以接到下一位的RBI′,实现多位联动灭零。
八、译码器题目的常见问法(考前看一眼)#
- 读功能表:给片选和地址,问哪个输出为 0。先查片选三个条件,再看地址。
- 说明某端作用:S1、S2′、S3′是片选(使能)端,用于禁止芯片或扩展;Yi′是最小项的非。
- 扩展:两片 4 线-16 线,利用S1与S2′有效电平相反,最高位直接接片选,不加非门。
- 实现函数:展开最小项 → 写接法 → 写Y=⋯ → 验证。四个字诀:"展、接、与非、验"。
- 分析题:给一个"74HC138 + 与非门"的电路,反过来写出Y=∑m(⋯),再化简、说功能(比如认出它是全加器、比较器)。
- 显示译码:会根据字形写某数字的 abcdefg,分清共阴、共阳。
答题时把"变量 → 地址端"的对应关系、片选端的接法写在图旁边,阅卷老师才好给分。
速记卡#
| 项目 |
要点 |
| 译码器 |
n位代码 → 2n根线,输入是几就选中第几根 |
| 74HC138 |
3 线-8 线;输出Yi′=mi,低电平有效 |
| 片选条件 |
S1=1且S2′=S3′=0;否则输出全 1 |
| 4 线-16 线 |
片(1):S1=1,S2′=S3′=D3;片(2):S1=D3,S2′=S3′=0 |
| 实现函数 |
展开成∑m → 变量接A2A1A0 → 对应Yi′接与非门 |
| 多输出 |
一片 138 + 每个输出一个与非门;同一根Yi′可共用 |
| 数据分配器 |
S1接数据,地址选路,输出为数据的反码 |
| 74HC42 |
BCD 译码,拒绝伪码 |
| 七段 |
共阴:1 亮;共阳:0 亮;abcdefg 顺序:上、右上、右下、下、左下、左上、中 |
| 7448 |
LT′灯测试,RBI′灭零输入,BI′/RBO′灭灯/灭零输出 |
自测练习#
1. 74HC138 中S1=1、S2′=S3′=0、A2A1A0=110,写出 8 个输出。若改为S1=0呢?
答案与提示
110 = 6,Y6′=0,其余为 1,即Y0′∼Y7′=11111101。S1=0时全为 1。
2. 用一片 74HC138 和一个与非门实现Y=AB+ABC,写出最小项和接法。
答案与提示
AB=ABC+ABC=m2+m3,ABC=m5,所以Y=∑m(2,3,5)。A→A2,B→A1,C→A0,片选接工作状态,Y=Y2′Y3′Y5′。已穷举核对。
3. 用一片 74HC138 实现三变量多输出函数:Z1=AC+ABC+ABC,Z2=BC+ABC。
答案与提示
Z1=∑m(3,4,5,6),Z1=Y3′Y4′Y5′Y6′;Z2=∑m(1,3,7),Z2=Y1′Y3′Y7′。Y3′两个门共用。已用程序核对最小项。
4. 用 74HC138 实现"三位二进制数ABC能被 3 整除(含 0)时输出 1"。若不用与非门而用与门,怎么接?
答案与提示
能被 3 整除:0、3、6,Y=∑m(0,3,6)=Y0′Y3′Y6′。用与门:Y不含的最小项是 1、2、4、5、7,Y=Y1′Y2′Y4′Y5′Y7′(5 输入与门)。显然与非门更省。
5. 两片 74HC138 按本讲第三节接成 4 线-16 线译码器,输入D3D2D1D0=0110时哪片工作、哪个输出为 0?
答案与提示
D3=0,片(1) 工作(S2′=S3′=0,S1=1),片(2) 的S1=0被禁止。片(1) 地址 110 = 6,Z6′=0。
6.(华师真题风格)用 74HC138 组成 5 线-32 线译码器,最少需要几片?说明连接思路。
答案与提示
输出 32 根,每片 8 根,需 4 片作输出;最高两位D4D3需要译成 4 个片选信号,可再用 1 片 74HC138(A2接 0,A1A0接D4D3,只用Y0′∼Y3′),共 5 片。4 片输出级的A2A1A0都接D2D1D0,S1=1、S3′=0,各自的S2′分别接片选级的Y0′∼Y3′。已用程序对 32 种输入核对。(若允许加少量门,也可以用 4 片 74HC138 加门电路组合片选,思路不唯一。)
7. 共阳极数码管要显示"7",a~g 各段应加什么电平?
答案与提示
"7"亮 a、b、c,共阳极点亮要低电平:a、b、c 为 0,d、e、f、g 为 1,即 abcdefg = 0001111。
下一讲预告#
第 10 讲讲"多选一"的数据选择器 74HC151/74HC153,并用它实现逻辑函数——包括 2026 回忆题第 5 题的完整解法。
👉 点击进入下一讲:第10讲|数据选择器
评论
还没有评论。 来写第一条。