数字电路 - 代码与语言
This post is not yet available in English. Showing the original version.
November 5, 2025
Table of Contents
Table of Contents
编码、译码和选择
编码,译码和选择这三个电路都是组合逻辑电路里的标准模块,就像乐高里的标准零件一样,用处非常大。
编码 (器) - 把分散变集中
1. 核心思想是什么?
- 问题:想象一下你的键盘有104个按键,如果每个按键都单独连一根线到电脑主板,那得多少根线?太浪费了!
- 编码器的作用:就是用少量的几根线来表示大量的输入状态。它把每一个输入信号(比如你按下的某个键)转换成一个唯一的二进制代码。
- 一句话总结:多输入 -> 少输出,给每个输入一个“代号”。
2. 普通编码器
- 例子:数字
0-9对应7段数码管的显示。- 输入: D₀, D₁, …, D₉ (10个输入,代表你想显示哪个数字)。
- 输出: a, b, c, d, e, f, g (7个输出,控制数码管的哪几段亮)。
- 比如,当输入
D₁有效时(你想显示数字1),输出端b和c就要有效(让这两段亮起来)。 - 我们可以为每一段写出逻辑表达式,比如
a段在显示 0, 2, 3, 5, 6, 7, 8, 9 时都会亮,所以它的逻辑就是:a = D₀ + D₂ + D₃ + D₅ + D₆ + D₇ + D₈ + D₉
3. 优先编码器 (Priority Encoder) - 解决“冲突”
-
问题:如果普通编码器有多个输入同时有效(比如你不小心同时按下了
A和S键),输出的二进制码就会混乱,不知道该听谁的。 -
优先编码器的作用:它为所有输入信号设定了一个优先级。当有多个输入同时有效时,它只理会优先级最高的那个,并输出它的二进制代码。
-
看懂紧凑真值表 :

X代表“无关项 (Don’t Care)”,意思是“我不在乎这个输入是0还是1”。- 比如表格里
D₃的优先级最高。只要D₃=1,不管D₂,D₁,D₀是什么,输出就是D₃的编码11(假设编码是 A₁A₀)。 V(Valid) 是一个有效位,通常用来表示“当前有没有任何一个输入是有效的”。
译码 (器) - 把代号变回信号
1. 核心思想是什么?
- 译码是编码的逆过程。
- 问题:电脑给你一个二进制代码(比如学号
011),你怎么用这个代码准确地找到对应的那个人(比如3号同学)? - 译码器的作用:将输入的少量二进制代码,转换成大量的、唯一的输出信号。它把输入的“代号”翻译成具体的指令或位置。
- 一句话总结:少输入 -> 多输出,根据代号激活唯一一个目标。
2. 它是如何工作的?
-
一个
n输入的译码器,最多可以有2ⁿ个输出。 -
本质:译码器就是一个最小项生成器。每一个输出引脚都对应一个唯一的输入组合(即一个最小项)。
-
例子:3-8译码器

- 有3个输入 (A₂, A₁, A₀) 和8个输出 (D₀ - D₇)。
- 当输入为
101(二进制的5) 时,只有输出引脚D₅会被激活(比如变为高电平1),其他所有输出都保持无效(低电平0)。
3. 译码器的妙用
-
用小译码器搭大译码器:就像 PPT 里展示的,可以用两个2-4译码器和一个1-2译码器(或使能端)来搭建一个3-8译码器。这是层次化设计思想的体现。
-
实现任何组合逻辑函数:这是译码器一个非常强大的功能!
-
因为译码器能产生所有最小项,所以任何一个可以写成“最小项之和”的函数,都可以用一个译码器 + 一个或门来实现。
-
例子:实现1位全加器

- 和
S = Σm(1, 2, 4, 7) - 进位
C = Σm(3, 5, 6, 7) - 我们只需要把译码器的
D₁, D₂, D₄, D₇这四个输出接到一个或门,这个或门的输出就是S。同理,把D₃, D₅, D₆, D₇接到另一个或门,输出就是C。
- 和
-
选择 (器) / 多路复用器 (MUX) - 多选一的开关
1. 核心思想是什么?
- 问题:你家里有多台设备(电视、电脑、游戏机),但只有一个音响。你希望通过一个开关来决定,当前是哪台设备的声音从音响里播放出来。
- 选择器的作用:它就像一个数据选择开关。它有很多路“数据输入”,几根“选择输入”,和一路“输出”。“选择输入”的二进制值决定了哪一路“数据输入”会被连接到唯一的“输出”上。
- 一句话总结:根据选择信号,从多个输入中选一个送到输出。
2. 它是如何工作的?
-
一个
2ⁿ输入的 MUX,需要n根选择线。 -
例子:2-1 MUX

- 有2路数据输入 (I₀, I₁),1根选择线 (S),1路输出 (Y)。
- 逻辑表达式是:
Y = S'·I₀ + S·I₁ - 当
S=0,Y = 1·I₀ + 0·I₁ = I₀,输出接通 I₀。 - 当
S=1,Y = 0·I₀ + 1·I₁ = I₁,输出接通 I₁。
-
紧凑真值表
- 这种真值表更直观,直接写出当选择信号
S为某个值时,输出Y等于哪个输入。
- 这种真值表更直观,直接写出当选择信号
| S | Y |
|---|---|
| 0 | I₀ |
| 1 | I₁ |
3. 选择器的妙用
- 实现组合逻辑函数:和译码器一样,选择器也可以用来实现任何组合逻辑函数,而且有时候更灵活、更省成本。
- 基本思路 (以3变量函数 F (A, B, C) 为例):
- 用一个 4-1 MUX。
- 把变量
A和B接到 MUX 的选择端S₁和S₀。 - 根据 A, B 的取值 (00, 01, 10, 11),看函数 F 与剩下的变量
C是什么关系 (0,1,C还是C')。 - 把这个关系(
0,1,C或C')连接到对应的 MUX 数据输入端 (I₀, I₁, I₂, I₃)。
- 这种方法非常巧妙,可以大大减少电路的复杂性。
关系
- 编码器:多变少,负责“压缩信息”。
- 译码器:少变多,负责“解释信息”。
- 选择器 (MUX):多选一,负责“切换信息”。
这三个都是数字系统里不可或缺的基础模块。搞懂了它们各自的使命和工作原理,很多复杂的电路问题都能迎刃而解。