随着集成电路的不断发展,在单个芯片上集成的电子元件数目越来越多,形成了中、大规模(LSI)和超大规模集成电路(VLSI)。
SSI: 10 门以下。器件集成: 如逻辑门或触发器。
MSI:100 门以下。逻辑器件集成:如比较器、编码器、译码器、数据选择器、数据分配器等
LSI:1000门以下。数字系统的集成:如存储器、单片机、微处理器等。
VLSI: 1 000 门以上。
MSI、LSI 的特点:
(1) 通用性、兼容性及扩展功能较强,其名称仅代表主要用途,不是全部用途。
(2) 外接元件少。可靠性高、体积小、功耗低、使用方便。
(3)MSI、LSI 封装在一个标准化的外壳内,对内部电路的了解是次要的,关心的是外部功能,通过查器件手册中的引脚图、逻辑符号、功能表,了解其逻辑功能。
(4) 用 MSI、LSI 进行设计时,和选用的器件有关。
有时选用不同的器件都可实现电路功能,就需比较,以芯片数最少、最经济为目标。
因此要求:①熟悉芯片的功能和使用方法;②会灵活使用。
下面介绍几种常用的中大规模集成电路及其应用。
3.5.1 集成数码比较器
Section titled “3.5.1 集成数码比较器”在计算机和许多数字系统中,经常需要对两个数进行比较,能对两组同样位数的二进制数进行数值比较且判断其大小的逻辑电路称为数码比较器。
1. 基本功能
Section titled “1. 基本功能”TTL 中规模集成 4 位数码比较器 74LS85 的内部电路如图 3.5.1) 所示,图 3.5.1(a) 所示,图 3.5.1(b) 为其逻辑符号。其中 a₃, a₂, a₁, a₀ 和 b₃, b₂, b₁, b₀ 分别代表被比较的两个 4 位二进制数,输出端有 3 个,分别为 A < B, A = B, A > B,另有 3 个级联输入端 a < b, a = b, a > b,作用是扩展功能,下面分别用 S', E', G' 表示。
由电路图 3.5.1 (a) 可推出表达式为
r l A > B & = overline a _ 3 b _ 3 + overline a _ 2 b _ 2 D _ 3 + overline a _ 1 b _ 1 D _ 3 D _ 2 + overline a _ 0 b _ 0 D _ 3 D _ 2 D _ 1 + S ^ prime D _ 3 D _ 2 D _ 1 D _ 0 + E ^ prime D _ 3 D _ 2 D _ 1 D _ 0 & = (overline A < B) + overline A = B A < B & = overline a _ 3 overline b _ 3 + a _ 2 overline b _ 2 D _ 3 + a _ 1 overline b _ 1 D _ 3 D _ 2 + a _ 0 overline b _ 0 D _ 3 D _ 2 D _ 1 + G ^ prime D _ 3 D _ 2 D _ 1 D _ 0 + E ^ prime D _ 3 D _ 2 D _ 1 D _ 0 & = (overline A > B) + overline A = B A = B & = D _ 3 D _ 2 D _ 1 D _ 0 E ^ prime式中: D₃ = overlinea₃oplus b₃ = a₃odot b₃
D _ 2 = overline a _ 2 oplus b _ 2 = a _ 2 odot b _ 2 D _ 1 = overline a _ 1 oplus b _ 1 = a _ 1 odot b _ 1 D _ 0 = overline a _ 0 oplus b _ 0 = a _ 0 odot b _ 0
其功能表如表 3.5.1 所示,分析可知: ①从高位开始比较,高位相同时,才比较低位; ②比较结果和级联输入有关,当 4 位均相等时,看 S^(prime), E^(prime), G^(prime) 的级联输入; ③只有当 A = B,且 G^(prime) = S^(prime) = 0 , E^(prime) = 1 时,相等输出才为 1。所以只比较 4 位数时,G^(prime), S^(prime) 均接地,E^(prime) 接高电平。
表 3.5.1 比较器功能表
| 比较输入 | 级联输入 | 输出 | |||||||
| a₃ b₃ | a₂ b₂ | a₁ b₁ | a₀ b₀ | G' | S' | E' | A>B | AAB | A=B |
| a₃ >b₃ | × | × | × | × | × | × | 1 | 0 | 0 |
| a₃ < b₃ | × | × | × | × | × | × | 0 | 1 | 0 |
| a₃ = b₃ | a₂ >b₂ | × | × | × | × | × | 1 | 0 | 0 |
| a₃ = b₃ | a₂ < b₂ | × | × | × | × | × | 0 | 1 | 0 |
| a₃ = b₃ | a₂ = b₂ | a₁ >b₁ | × | × | × | × | 1 | 0 | 0 |
| a₃ = b₃ | a₂ = b₂ | a₁ < b₁ | × | × | × | × | 0 | 1 | 0 |
| a₃ = b₃ | a₂ = b₂ | a₁ = b₁ | a₀ >b₀ | × | × | × | 1 | 0 | 0 |
| a₃ = b₃ | a₂ = b₂ | a₁ = b₁ | a₀ < b₀ | × | × | × | 0 | 1 | 0 |
| a₃ = b₃ | a₂ = b₂ | a₁ = b₁ | a₀ = b₀ | 1 | 0 | 0 | 1 | 0 | 0 |
| a₃ = b₃ | a₂ = b₂ | a₁ = b₁ | a₀ = b₀ | 0 | 1 | 0 | 0 | 1 | 0 |
| a₃ = b₃ | a₂ = b₂ | a₁ = b₁ | a₀ = b₀ | 0 | 0 | 1 | 0 | 0 | 1 |
2. 功能扩展
Section titled “2. 功能扩展”(1) 单片扩展(自扩展)
Section titled “(1) 单片扩展(自扩展)”利用级联输入端可将一片4位比较器74LS85扩展成5位比较器,将 G^(prime) 、 S^(prime) 作为最低位比较输入端,即 a₀ 接 G^(prime), b₀ 接 S^(prime), E^(prime) 不用,必须接地,这时只能对5位二进制数进行大小的比较,比较相等的输出端不用。
其实当5位数相等时,因为 A > B = overlineS^(prime), A < B = overlineG^(prime) ,所以两个输出 A > B, A < B 同时为0或1。
(2) 多片扩展
Section titled “(2) 多片扩展”当比较的位数超过五位时,须将多片 74LS85 进行级联,有串行级联和并行级联两种方式。
① 串行级联
Section titled “① 串行级联”图 3.5.2 所示的是由两片 4 位比较器组成 8 位数码比较器的串行级联图。输入信号同时加到两个比较器的比较输入端,低位片Ⅱ的输出接到高位片Ⅰ的级联输入端,比较结果由高位片Ⅰ的输出端输出。需要注意低位片Ⅱ的级联输入端必须 G' = S' = 0, E' = 1 ,否则当两数相等时输出端“ A = B'' ≠ 1 。由此得出结论:在一个比较电路中,接最低位的比较器片子必须接成 4 位比较器,以保证相等的结果能正确输出。

同理可将 3 片或多片 4 位比较器串行级联,来比较多位的二进制数。串行级联电路简单,但显然级数越多,速度越慢。
② 并行级联
Section titled “② 并行级联”即树形结构,图 3.5.3 是两个 24 位二进制数进行比较的并行级联图。共用了 6 片 4 位比较器,片 2 至片 5 接成 5 位比较器,片 1 接成 4 位比较器。片 2~5 的输出端“A>B”和 “A<B”分别接至片 6 的比较输入端,注意高位出接高位入,低位出接低位入。片 1 的 3 个输出端接片 6 的级联输入端,比较结果由片 6 的输出端输出。显然输出结果仍决定于最高位。例如,a₂3 > b₂3,片 5 的输出“A>B”=1, “A<B”=0, 即片 6 的 a₃ > b₃,因此输出“A>B”=1, 输出“A<B”和“A=B”都为 0。
并行级联的特点是速度快,只需经两级芯片的延迟就可得到输出。此例也可6片串行级联,但速度慢。因此在组成多位比较器时,常采用并行级联。

用数码比较器构成用 8421BCD 码表示的 1 位十进制数的四舍五入电路。
解
用 1 片 4 位比较器即能实现上述功能。
设 8421BCD 码为 A₃ A₂ A₁ A₀ ,当其小于或等于 4(即 0100)时电路输出 F 为 0,否则输出 F 为 1。将 4 位 BCD 码接于比较器的 a₃ ∼ a₀ 端,而将 0100 接于 b₃ ∼ b₀ 端,输出“A > B”端作为判别输出端 F,如图 3.5.4 所示。

3.5.2 编码器与优先编码器
Section titled “3.5.2 编码器与优先编码器”将所要处理的信息或数据赋予二进制代码的过程称为编码,实现编码功能的电路称为
编码器(Encoder),如图 3.5.5所示。由于 n 位二进制代码有 2ⁿ 个取值组合,可以表示 2ⁿ 种信息,所以输出 n 位代码的编码器可有 m≤slant 2ⁿ 个输入信号端,故编码器输入端比输出端多。
按照输出的代码种类不同,可分为二进制编码器 (m=2ⁿ) 和二-十进制编码器 (m<

2ⁿ ); 按是否有优先权编码,可分为普通编码器和优先编码器(Priority Encoder)。
1. 普通二-十进制编码器
Section titled “1. 普通二-十进制编码器”C304 是一个 8421BCD 码的编码器,其逻辑电路如图 3.5.6 所示。写出其输出函数 D、B、C、A 的表达式为
l D = 8 + 9 C = 4 + 5 + 6 + 7 B = 2 + 3 + 6 + 7 A = 1 + 3 + 5 + 7 + 9作出这 4 个函数的真值表,如表 3.5.2 所示。
表 3.5.2 编码器真值表
| 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | D | C | B | A |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 |
| 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
| 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
| 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |

电路有 9 条输入线,每条输入线可以接收一个代表十进制符号的信号; 有 4 条输出线,组成二进制码。由真值表可知,某条输入线上有信号 1, 电路就输出与该十进制数相应的二进制码。例如,第三线上有信号 1, DCBA 输出编码 0011; 而当 1~9 线都没有信号时,即是 0, DCBA 输出 0000。因此该电路是 8421BCD 码编码器。
该编码器对输入线是有限制的,在任何时刻只允许有一条输入线上有信号,否则编码器输出发生混乱。
2. 优先编码器
Section titled “2. 优先编码器”优先编码器各个输入端的优先权是不同的,若几个输入同时有信号到来,输出端给出优先权较高的那个输入信号所对应的代码。
(1) 基本功能
Section titled “(1) 基本功能”74148 是 8 线-3 线优先编码器,图 3.5.7 是其逻辑电路及引脚图。图中 overlineI₀ ∼ overlineI₇ 分别代表十进制数 0~7,角标越大,优先权越高, overlineST 是使能输入端; overlineY₂ ∼ overlineY₀ 为编码输出端, Yₛ 是使能输出端, overlineY_(EX) 是扩展输出端,此两端都用于扩展编码器功能。输入信号是低电平有效,输出为 3 位二进制反码,表 3.5.3 为其功能表。
由功能表可见,当 overlineI₇=0 时,不管其他端有无信号,输出只对 overlineI₇ 编码,即 overlineY₂overlineY₁overlineY₀=000 ; 当 overlineI₇=1,overlineI₆=0,其他端任意,输出按 overlineI₆ 编码得 overlineY₂overlineY₁overlineY₀=001,其余类推。


(b)

(c)
图 3.5.7 优先编码器 74148 原理图、国标符号和简化符号
表 3.5.3 优先编码器 74148 功能表
| overlineST | overlineI₀ | overlineI₁ | overlineI₂ | overlineI₃ | overlineI₄ | overlineI₅ | overlineI₆ | overlineI₇ | overlineY₂ | overlineY₁ | overlineY₀ | overlineY_(EX) | Y_S |
| 1 | × | × | × | × | × | × | × | × | 1 | 1 | 1 | 1 | 1 |
| 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| 0 | × | × | × | × | × | × | × | 0 | 0 | 0 | 0 | 0 | 1 |
| 0 | × | × | × | × | × | × | 0 | 1 | 0 | 0 | 1 | 0 | 1 |
| 0 | × | × | × | × | × | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
| 0 | × | × | × | × | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
| 0 | × | × | × | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 |
| 0 | × | × | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 |
| 0 | × | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
| 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
进一步分析,当使能输入端 overlineST=0 时,编码器正常工作; overlineST=1 时,输出均为 1, 编码器不工作。
Yₛ 为使能输出端,由电路图可知:
Y _ s = overline ST · overline I _ 0 · overline I _ 1 · overline I _ 2 · overline I _ 3 · overline I _ 4 · overline I _ 5 · overline I _ 6 · overline I _ 7可见,当 overlineST=0 时,只有 overlineI₀∼overlineI₇ 均为1(无信号输入)情况下,才使 Yₛ=0 。所以若两片串接应用时,应将高位片的 Yₛ 和低位片的 overlineST 相连,在高位片无信号输入时,启动低位片正常工作。
扩展输出端 overlineY_(EX) 的表达式为
overline Y _ EX = overline ST (I _ 0 + I _ 1 + I _ 2 + I _ 3 + I _ 4 + I _ 5 + I _ 6 + I _ 7)当 overlineSoverlineT=Q 时,只要输入端有信号存在,则 overlineY_(EX)=0 。因此, overlineY_(EX) 的低电平表示该片编码器有输入信号;相反, overlineY_(EX)=1 表示无输入信号。利用这一标志,在多片编码器串接应用中可作输出位的扩展端。
根据逻辑图和功能表,写出3位编码输出表达式:
r l overline Y _ 0 & = overline ST (I _ 1 overline I _ 2 overline I _ 4 overline I _ 6 + I _ 3 overline I _ 4 overline I _ 6 + I _ 5 overline I _ 6 I _ 7) overline Y _ 1 & = overline ST (I _ 2 overline I _ 4 overline I _ 5 + I _ 3 overline I _ 4 overline I _ 5 + I _ 6 + I _ 7) overline Y _ 2 & = overline ST (I _ 4 + I _ 5 + I _ 6 + I _ 7)(2) 功能扩展
Section titled “(2) 功能扩展”用两片 74148 可扩展成 16 线-4 线的优先编码器,如图 3.5.8 所示。编码器输入信号为 overlineI₀ ∼ overlineI₁5 ,低电平有效,而且 overlineI₁5 优先权最高, overlineI₀ 最低;编码器输出 F₃ 、 F₂ 、 F₁ 、 F₀ 为 4 位二进制反码。
接法:①Ⅰ片的 overlineST 作为这个扩展的16线-4线编码器的使能输入端, Ⅱ片的 Yₛ 作为16线-4线编码器的使能输出端,两片的 overlineY_(EX) 相与作为16线-4线的扩展输出端 F_(EX) ; ②Ⅰ片的使能输出 Yₛ 接至Ⅱ片 overlineST 端; ③Ⅰ片扩展输出 overlineY_(EX) 作为4位码最高位 F₃ 输出,两片对应位 overlineY₂ ∼ overlineY₀ 相与作为低3位 F₂ ∼ F₀ 输出。
工作过程:① I 片 overlineST=0 ,允许编码。当 overlineI₁5∼overlineI₈ 中有信号时,I 片正常编码,由于 I 片 Yₛ=1 ,则 II 片 overlineST=1 禁止编码,II 片输出全为 1,不影响 I 片的编码,且 I 片 overlineY_(EX)=0 (即最高位),此时输出 F₃∼ F₀ 就是 I 片有效输入的优先编码。② I 片 overlineI₁5∼overlineI₈ 均无信号输入时, Yₛ=0 ,II 片允许编码,当 overlineI₇∼overlineI₀ 中有信号时,II 片正常编码,I 片除了 overlineY_(EX)=1 (即最高位),其余输出为1,不影响Ⅱ片的编码,此时输出 F₃∼ F₀ 就是Ⅱ片有效输入的优先编码。例如,overlineI₁5=overlineI₁4=1,overlineI₁3=0,其余输入任意,I片编码输出 overlineY₂∼overlineY₀=010,且I片的 overlineY_(EX)=0,同时由于片I的 Y_(S)=1,则Ⅱ片不工作,输出 F₃F₂F₁F₀=0010 是 overlineI₁3 的编码。故完成了16线-4线优先编码器的功能。

(3) 应用
用一片 74148 和外加门构成 8421BCD 码编码器。
解
8421BCD码编码器需要10个输入和4个输出,而74148只有8个输入和3个输出,利用使能输入端 overlineST 扩展输入端,如图 3.5.9所示。

当输入 overlineA₈ 或 overlineA₉ 为低电平时(即有8或9十进制数输入),两输入端与非门出1使74148编码器禁止编码,对 overlineA₈ 或 overlineA₉ 进行编码;当输入 overlineA₈ 和 overlineA₉ 均为高电平时,74148编码器正常工作,对 overlineA₀∼overlineA₇ 进行编码。
3.5.3 译码器
Section titled “3.5.3 译码器”译码是编码的逆操作,是将每个代码所代表的信息翻译过来,还原成相应的输出信息。实现译码功能的逻辑电路称为译码器 (Decoder), 图 3.5.10 为其框图,满足关系式: m ≤slant 2ⁿ 。常用的译码器有二进制译码器 ( m = 2ⁿ )、二-十进制译码器 ( m < 2ⁿ ) 和数字显示译码器 3 种。

1. 二进制译码器
Section titled “1. 二进制译码器”二进制译码器满足关系式: m=2ⁿ ,即完全译码,输出是输入变量的各种组合,因此一个输出对应一个最小项,又称为最小项译码器。若输出是1有效,称为高电平译码,一个输出就是一个最小项;若输出是0有效,称为低电平译码,一个输出对应一个最小项的非。
(1) 基本功能
Section titled “(1) 基本功能”图 3.5.11 是一个 2 线 -4 线的译码器电路,输入是两位二进制码,有 4 条输出线。

由逻辑图写出输出表达式:
F _ 0 (B, A) = overline B overline A, F _ 1 (B, A) = overline B A, F _ 2 (B, A) = B overline A, F (B, A) _ 3 = B A可见输出就是4个最小项,其真值表如表3.5.4所示。对应每个输入状态,仅有一个输出为1,其余皆为0,是高电平译码。例如,当输入BA=00时,仅 F₀=1 ,即 F₀ 是输入代码00的译码输出,因而实现了译码器功能。
表 3.5.4 2 线-4 线译码器功能表
| B | A | F₀ | F₁ | F₂ | F₃ |
| 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 | 0 | 1 |
图 3.5.12 所示为一种 TTL74LS138 3 线-8 线译码器,输入为 3 位二进制数 A₂ 、 A₁ 、 A₀ ,输出有 8 个,由图 3.5.12(a) 写出输出表达式:
overline Y _ i = overline S _ A S _ B S _ C m _ i = overline S _ A overline S _ B + overline S _ C m _ i (i = 0 ∼ 7)当 S_(A)=1,overlineS_(B)=overlineS_(C)=0 时, overlineYᵢ=overlinemᵢ,i=0∼7 ,即每个输出是输入变量所对应的最小项的非,是低电平译码。为了功能扩展,还设有使能输入端 S_(A) 、 overlineS_(B) 、 overlineS_(C) ,只有当 S_(A)=1,overlineS_(B)=overlineS_(C)=0 时,译码器工作,否则译码器不实现译码,输出全为1。表3.5.5是其功能表。

(a)

(b)
图3.5.12 3线-8线译码器的逻辑图及其符号
表 3.5.5 3 线-8 线译码器功能表
| 输入 | 输出 | |||||||||||
| S_A | overlineS_B+overlineS_C | A₂ | A₁ | A₀ | overlineY₀ | overlineY₁ | overlineY₂ | overlineY₃ | overlineY₄ | overlineY₅ | overlineY₆ | overlineY₇ |
| 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) 功能扩展
Section titled “(2) 功能扩展”在中规模译码器中,一般都设置有使能端。使能端有两个用途:其一是作选通脉冲输入端,消除冒险脉冲的发生;其二是用于功能扩展。
① 串行扩展
Section titled “① 串行扩展”用 3 线 -8 线译码器组成 4 线 -16 线译码器。
解
显然一片 3 线 -8 线译码器不够,必须两片,连接如图 3.5.13 所示。输入 4 位码为 DCBA, 片 I 的 overlineS_(C) 和片 II 的 overlineS_(B) 连在一起作为外部使能端。由于片 I 的 overlineS_(B) 与片 II 的 S_(A) 并接在一起,作为最高位 D 的输入端,当 D=0 时,片 I 正常译码,而片 II 被禁止译码,overlineY₀∼overlineY₇ 有信号输出,overlineY₈∼overlineY₁5 均为 1。当 D=1 时,片 I 被禁止译码,片 II 正常译码,overlineY₈∼overlineY₁5 有信号输出,overlineY₀∼overlineY₇ 均为 1, 从而实现了 4 线 -16 线译码器功能,使能端可用于进一步扩展,否则接地,保证正常工作。

所以扩展方法:Ⅰ根据输出线数确定需要的最少片数,Ⅱ连接时,同名地址端相连作低位输入,高位输入接使能端,保证每次只有一片处于工作状态,其余处于禁止状态。
② 并行扩展(树形结构)
用 3 线 -8 线译码器组成 6 线 -64 线译码器。
解
由输出线数可知,至少需要8片3线-8线译码器,这时使能端本身已经不能完成高位控制了,常采用树形结构扩展,再加1片译码器对高3位译码,其8个输出分别控制其余8片的使能端,选择其中一个工作,连接如图 3.5.14所示。
(3) 应用
Section titled “(3) 应用”① 在存储器中的应用
Section titled “① 在存储器中的应用”用做地址译码器或指令译码器,输入为地址代码,输出为存储单元的地址,n 位地址线可以寻址 2ⁿ 个单元。
用 3 线 -8 线译码器 74LS138 组成图 3.5.15 所示电路,说明 overlineY₀ 、 overlineY₁ 、 … 、 overlineY₇ 分别被译中时,相应的地址线 A₇ ∼ A₀ 的状态是什么?用十六进制数表示。若改用 10 位地址线 A₉ ∼ A₀ 和 74LS138 相连,且要求 overlineY₀ 、 overlineY₁ 、 … 、 overlineY₇ 被译中时, A₉ ∼ A₀ 的状态分别为 340H、341H、 … 、347H,电路连线应作何改动?画出相应的接线图。


解
74LS138 芯片要实现译码,要求 A₃ 、 A₆ 、 A₇ 为高电平,同时 A₄ 、 A₅ 为低电平,即地址线 A₇A₆A₅A₄A₃=11001 时芯片才能正常工作,此时输出通道的选择则取决于 A₂A₁A₀ 的状态,在 A₂A₁A₀=000 时,overlineY₀ 被译中,A₂A₁A₀=001 时,overlineY₁ 被译中,… , A₂A₁A₀=111 时,overlineY₇ 被译中。不难得到 overlineY₀ 、 overlineY₁ 、 … 、 overlineY₇ 分别被译中时,相应的地址线 A₇∼ A₀ 的状态应为 C8H、C9H、CAH、CBH、CCH、CDH、CEH、CFH。
要满足 overlineY₀ 、 overlineY₁ 、…、 overlineY₇ 被译中时,地址线 A₉∼ A₀ 的状态分别为340H、341H、…、347H,高7位的地址线 A₉A₈A₇A₆A₅A₄A₃ 应设定为1101000,电路的连线应保证 A₉ 、 A₈ 、 A₆ 为高电平, A₇ 、 A₅ 、 A₄ 、 A₃ 为低电平,可考虑采用图 3.5.16所示的连接。图中连接表明,当 A₉ 、 A₈ 、 A₆ 为高电平时, overlineS_(C)=0;A₇ 、 A₅ 、 A₄ 、 A₃ 为低电平时, overlineS_(B)=0,S_(A)=1 。在使能端条件满足的条件下, A₂A₁A₀=000 时, overlineY₀ 被译中, A₂A₁A₀=001 时, overlineY₁ 被译中,…, A₂A₁A₀=111 时, overlineY₇ 被译中。

② 作数据分配器
Section titled “② 作数据分配器”具有使能端的译码器,可将数据按要求分配到不同地址的通道上去。如图 3.5.17 所示,其中 overlineYᵢ 为输出,地址输入作控制信号,决定此时将输入数据 D 分配到哪一路输出。

令 S = S_(A) · overlineoverlineS_(B) + overlineS_(C) ,则 overlineYᵢ = overlineS · mᵢ ,若使能 S_(A) = 1 ,可得 overlineYᵢ = overlineD · mᵢ 。
显然当 mᵢ=1 时, overlineYᵢ=D 。
即选中哪一路,输入数据 D 就送到哪一路,而其余路保持 1。
③ 作函数发生器
因为译码器的输出分别对应一个最小项(高电平译码)或一个最小项的非(低电平译码),所以附加适当门,可实现任意函数。
特点: 方法简单,无须简化,工作可靠。
用 3 线 -8 线译码器实现函数 F(A,B,C)=∑ m(0,3,4,7) 。
解
3 线-8 线译码器实现函数如图 3.5.18 所示。

由图可得: F(A,B,C)=overlineY₀Y₃Y₄Y₇=Y₀+Y₃+Y₄+Y₇=m₀+m₃+m₄+m₇=∑ m(0,3,4,7) 。
2. 二-十进制译码器(4线-10线译码器)
Section titled “2. 二-十进制译码器(4线-10线译码器)”(1) 基本功能
4 线-10 线译码器可由 4 线-16 线译码器构成,也有专用的 4 线-10 线译码器。
图 3.5.19 为 CMOS 型 (C301) BCD 十进制译码器的逻辑电路图,它只有 4 位 BCD 码输入端,无使能端,输出为高电平译码,功能表如表 3.5.6 所示。由电路图可以直接写出表达式:

表 3.5.6 4 线-10 线译码器功能表
| 输入 | 输出 | ||||||||||||
| D | C | B | A | f₀ | f₁ | f₂ | f₃ | f₄ | f₅ | f₆ | f₇ | f₈ | f₉ |
| 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
可见输出 f₀ ∼ f₇ 为对应的最小项, f₈ 和 f₉ 则利用了 10~15 这 6 个任意项化简而来。
(2) 功能扩展
Section titled “(2) 功能扩展”BCD十进制译码器可以构成带有使能端的3线-8线译码器,只需将最高位输入端 D 当做使能端,输出端 f₈, f₉ 不用即可。如图 3.5.20所示,当 D = 0 时,由 C, B, A 输入决定 f₀ ∼ f₇ 中某一个输出为1,其余输出为0;若 D = 1 ,则 f₀ ∼ f₇ 输出均为0,处于“禁止”状态。

3. 数字显示译码器
Section titled “3. 数字显示译码器”在数字系统中,常常需要将测量或数值运算结果用十进制数码显示出来,数字显示电路包括译码驱动电路和数码显示器,其框图如图 3.5.21 所示。
数字显示器有许多种不同类型的产品,如发光二极管、荧光数码管、液晶数字显示器等,由于显示器件和显示方式不同,其译码电路也不相同。下面介绍常用的七段荧光数码管显示器及其译码驱动电路。

(1) 七段荧光数码管
Section titled “(1) 七段荧光数码管”七段荧光数码管是分段式半导体显示器件,7个发光段就是7个发光二极管,它的PN结是由特殊的半导体材料磷砷化镓做成。当外加正向电压时,发光二极管可以将电能转化为光能,从而发出清晰悦目的光线。发光二极管显示电路有共阳极和共阴极两种连接方式:共阳极是将7个发光二极管的阳极接在一起并接到正电源上,阴极接到译码器的各输出端,哪个发光二极管的阴极为低电平哪一个发光管就亮;共阴极是将7个发光二极管的阴极联在一起并接地,阳极接到译码器的各输出端,哪一个阳极为高电平哪一个发光管就亮。若用共阴极电路,译码器的输出经输出驱动电路分别加到7个阳极上,当给其中某些段加上驱动信号时,则这些段发光,显示出相应的十进制数字。图 3.5.22(a) 是一种共阴极荧光数码管 BS201A(还带一个小数点),图(b)为其显示的十进制数。

(2) 译码驱动电路
Section titled “(2) 译码驱动电路”七段数码管工作时需要有分段式译码驱动电路相配合。下面介绍一种中规模二-十进制七段显示译码/驱动器74LS48,图 3.5.23是它的逻辑符号,其中 A₃, A₂, A₁, A₀ 为BCD码输入信号, Yₐ, Y_(b), Y_(c), Y_(d), Yₑ, Y_(f), Y_(g) 为译码器的7个输出(高电平有效),因为它驱动的是共阴极电路。为增加器件的功能,扩大器件的应用,在译码/驱动电路基础上又附加了辅助功能控制信号 overlineLT 、 overlineRBI 、 overlineBI / overlineRBO 。

74LS48 的功能列于表 3.5.7 中,可见,当辅助功能控制信号无效时,即表中 1~16 行,A₃、A₂、A₁、A₀ 输入一组二进制码,Yₐ ∼ Y_(g) 输出端有相应的输出,电路实现正常译码。如 A₃ A₂ A₁ A₀ = 0001,只有 Y_(b)、Y_(c) 输出 1, b、c 字段点燃,显示数字 1。由于已接有上拉电阻,使用时可将输出 Yₐ ∼ Y_(g) 直接驱动 BS201A 的输入。
下面介绍辅助功能控制信号 overlineLT 、 overlineRBI 、 overlineBI/overlineRBO 的作用。
① overlineBI 为熄灭信号。当 overlineBI = 0 时,不论 overlineLT 、 overlineRBI 及输入 A₃A₂A₁A₀ 为何值,输出 Yₐ ∼ Y_(g) 均为 0,使七段显示都处于熄灭状态,不显示数字,优先权最高。
② overlineLT 为试灯信号,用来检查七段显示器件是否能正常显示。当 overlineBI = 1, overlineLT = 0 时,不论输入 A₃A₂A₁A₀ 为何值,输出 Yₐ ∼ Y_(g) 均为1,使七段显示都点燃,优先权次之。
表 3.5.7 74LS48 功能表
| 输入 | overlineBI/overlineRBO | 输出 | |||||||||||
| overlineLT | overlineRBI | A₃ | A₂ | A₁ | A₀ | Yₐ | Y_b | Y_c | Y_d | Yₑ | Y_f | Y_g | |
| 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| 1 | × | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
| 1 | × | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
| 1 | × | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
| 1 | × | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
| 1 | × | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
| 1 | × | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
| 1 | × | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
| 1 | × | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 1 | × | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 |
| 1 | × | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
| 1 | × | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
| 1 | × | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 |
| 1 | × | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 |
| 1 | × | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
| 1 | × | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| × | × | × | × | × | × | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | × | × | × | × | × | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
③ overlineRBI 为灭0输入信号,当不希望0(例如小数点前后多余的0)显示出来时,可以用 overlineRBI 信号灭掉。当 overlineLT = 1, overlineRBI = 0 时,只有当输入 A₃A₂A₁A₀ = 0000 时, Yₐ ∼ Y_(g) 输出均为0,七段显示都熄灭,不显示数字0,而输入 A₃A₂A₁A₀ 为其他组合时能正常显示。故 overlineRBI = 0 ,只能熄灭0字,优先权最低。
④ overlineRBO 为灭0输出信号。当 overlineLT = 1, overlineRBI = 0 时,若输入 A₃A₂A₁A₀ = 0000 ,不仅本片灭0,而且输出 overlineRBO = 0 。这个0送到另一片七段译码器的 overlineRBI 端,可以使这两片的0都熄灭。
熄灭信号 overlineBI 和灭零输出信号 overlineRBO 是电路的同一点,故标示 overlineBI/overlineRBO,即该端口是双重功能的端口,既可作为输入信号 overlineBI 端口,又可作为输出信号 overlineRBO 端口。
将灭 0 输入 overlineRBI 与灭 0 输出 overlineRBO 配合使用,可实现多位数码显示系统的灭 0 控制。图 3.5.24 所示为灭 0 控制的连接方法。只需在整数部分把高位的 overlineRBO 与低位的 overlineRBI 相连,在小数部分将低位的 overlineRBO 与高位的 overlineRBI 相连,就可以把前后多余的 0 熄灭了。这样在整数部分,由于百位(片 I)的 overlineRBI=0 ,当百位输入 A₃A₂A₁A₀=0000 时,百位不会显示 0 字,如果十位(片 II)的输入 A₃A₂A₁A₀ 和百位输入 A₃A₂A₁A₀ 同时都为 0000 时,使得十位也处于灭0状态。若百位输入 A₃A₂A₁A₀≠ 0000 ,则片I输出 overlineRBO = 1 ,使片II overlineRBI = 1 ,则十位(片II)不会灭0。在小数部分,最低位1/1000位(片VI)的输入RBI接地,所以1/1000位显示器灭0,而当1/1000位的输入和1/100位(片V)的输入同时为0000时,则会实现1/1000和1/100同时灭“0”。例如当各片输入为002.800,由于 overlineRBO 和 overlineRBI 的配合,直接显示2.8。这样,既看起来清晰,又可以减少功耗。

3.5.4 数据选择器
Section titled “3.5.4 数据选择器”数据选择器(Multiplexer)又称多路选择器,简称MUX,它能够从多路输入数据中选择一路输出,选择哪一路由当时的控制信号决定,其功能类似于单刀多掷开关,如图 3.5.25所示。

1. 基本功能
Section titled “1. 基本功能”74LS151 是一种 TTL 型 8 选 1 数据选择器,如图 3.5.26 所示,其中 D₇ ∼ D₀ 为数据输入端,A₂, A₁, A₀ 为地址控制端,overlineST 为使能输入端,Y 和 W 为两个互补输出端。当 overlineST = 0 时,由图可写出输出的逻辑表达式为
r l Y & = overline A _ 2 overline A _ 1 overline A _ 0 D _ 0 + overline A _ 2 overline A _ 1 A _ 0 D _ 1 + overline A _ 2 A _ 1 overline A _ 0 D _ 2 + overline A _ 2 A _ 1 A _ 0 D _ 3 + A _ 2 overline A _ 1 overline A _ 0 D _ 4 + A _ 2 overline A _ 1 A _ 0 D _ 5 + & A _ 2 A _ 1 overline A _ 0 D _ 6 + A _ 2 A _ 1 A _ 0 D _ 7 = ∑_ i = 0 ^ 2 ^ 3 - 1 m _ i D _ i其中, mᵢ 为地址变量 A₂A₁A₀ 构成的最小项。
由上式可知,当 A₂A₁A₀=000 时, Y=D₀, A₂A₁A₀=001 时, Y=D₁ ,依此类推。即在 A₂A₁A₀ 的控制下,从 8 路数据中选择 1 路送至输出端。
当 overlineST=1 时,输出Y=0,处于禁止状态,表3.5.8是其功能表。同理,可推出 2ⁿ 选1数据选择器的输出表达式:
Y = ∑_ i = 0 ^ 2 ^ n - 1 m _ i D _ i其中,n 为地址端数, mᵢ 为地址变量构成的最小项。
表 3.5.8 74LS151 的功能表
| 使能输入 overlineST | 选择地址输入 | 数据输入 D₇ ∼ D₀ | 输出 | |||
| A₂ | A₁ | A₀ | Y | overlineW | ||
| 1 | ×. | × | × | × | 0 | 1 |
| 0 | 0 | 0 | 0 | D₇ ∼ D₀ | D₀ | overlineD₀ |
| 0 | 0 | 0 | 1 | D₇ ∼ D₀ | D₁ | overlineD₁ |
| 0 | 0 | 1 | 0 | D₇ ∼ D₀ | D₂ | overlineD₂ |
| 0 | 0 | 1 | 1 | D₇ ∼ D₀ | D₃ | overlineD₃ |
| 0 | 1 | 0 | 0 | D₇ ∼ D₀ | D₄ | overlineD₄ |
| 0 | 1 | 0 | 1 | D₇ ∼ D₀ | D₅ | overlineD₅ |
| 0 | 1 | 1 | 0 | D₇ ∼ D₀ | D₆ | overlineD₆ |
| 0 | 1 | 1 | 1 | D₇ ∼ D₀ | D₇ | overlineD₇ |

(a)

(b)
图3.5.26 8选1数据选择器逻辑图及逻辑符号
74LS153 是双 4 选 1 数据选择器,在一个芯片上集成了两个完全相同 4 选 1 数据选择器,如图 3.5.27 所示。其中 A₁, A₀ 为两个地址输入端,被两个选择器所共用,每个选择器各有一个使能输入端。表 3.5.9 是其功能表,对芯片中的任意一个都适用。
当 overlineST = 0 时,其输出表达式为 Y = ∑ᵢ=0³ mᵢ Dᵢ = m₀ D₀ + m₁ D₁ + m₂ D₂ + m₃ D₃ 。

(a)

(b)
图3.5.27 双4选1数据选择器
表 3.5.9 74LS153 功能表
| 使能输入 overlineST | 地址输入 | 数据输入 D₃ ∼ D₀ | 输出Y | |
| A₁ | A₀ | |||
| 1 | × | × | × | 0 |
| 0 | 0 | 0 | D₃ ∼ D₀ | D₀ |
| 0 | 0 | 1 | D₃ ∼ D₀ | D₁ |
| 0 | 1 | 0 | D₃ ∼ D₀ | D₂ |
| 0 | 1 | 1 | D₃ ∼ D₀ | D₃ |
2. 功能扩展
Section titled “2. 功能扩展”可以利用使能端或多片级联来扩展功能。
(1) 用使能端扩展
用双 4 选 1 数据选择器构成 8 选 1 数据选择器。
解
如图 3.5.28 所示,将双 4 选 1 数据选择器的使能端 overline1ST 和 overline2ST 通过一个反相器接在一起作地址的最高位 A₂ 。当 A₂=0 时,低位片 (1) 工作而高位片 (2) 不工作,Y₁ 按地址输入 000~011 选中数据 D₀∼ D₃ 中的某一个输出,此时 Y₂=0 ; 当 A₂=1 时,两片工作情况正好相反,此时 Y₂ 按地址输入 100~111 选中数据 D₄∼ D₇ 中的某一个输出,而 Y₁=0,故 8 选 1 数据选择器的输出 Y=Y₁+Y₂=Dᵢ(i=0∼7) 。

(2) 级联扩展(树形扩展)
Section titled “(2) 级联扩展(树形扩展)”图 3.5.29 是用 3 片双 4 选 1 数据选择器级联构成 16 选 1 数据选择器的连接图。第Ⅰ级用了 1 片双 4 选 1 数据选择器中的一个,它的 A₁A₀ 为高两位地址 A₃A₂ 的输入端,第Ⅱ级用了两片双 4 选 1 数据选择器,它们的 A₁A₀ 为低两位地址 A₁A₀ 的输入端,第Ⅱ级的 4 个输出送至第Ⅰ级相应的数据输入端。数据选择分为两步:①由低位地址 A₁A₀ 从输入的 16 路数据中选出 4 路数据;②再由高位地址 A₃A₂ 选出其中的一路数据输出。从而实现了 16 选 1 数据选择器的功能。

用 8 选 1MUX 构成 64 选 1MUX。
解
共需9片8选1MUX,片1~片8的同名地址端相连接低3位地址输入,片9的3位地址端接高3位地址输入,并将片1~片8的输出接至片9相应的数据输入端,即构成了64选1MUX,如图 3.5.30所示。

3. 数据选择器的应用
Section titled “3. 数据选择器的应用”数据选择器通用性较强,除了能从多路数据中选择输出信号外,还可以实现并行数据到串行数据的转换,作函数发生器等。
(1) 并-串转换电路
Section titled “(1) 并-串转换电路”在数字系统中,往往要求将并行输入的数据转换成串行数据输出,用数据选择器很容易完成这种转换。例如,将4位的并行数据送到4选1数据选择器的数据端上,然后在 A₁ 、 A₀ 地址输入端周期性顺序给出 00arrow01arrow10arrow11,则在输出端将输出串行数据,先是 D₀,而后是 D₁ 、 D₂ 、 D₃,之后又按该顺序不断重复,如图 3.5.31所示。

(2) 实现逻辑函数
Section titled “(2) 实现逻辑函数”2ⁿ 选1数据选择器的输出表达式如下:
Y = ∑_ i = 0 ^ 2 ^ n - 1 m _ i D _ i其中,n 为地址端数, mᵢ 对为地址变量对应的最小项。
将该表达式与 F = ∑ mᵢ 对比可见, Dᵢ 相当于最小项表达式中的系数,当 Dᵢ = 1 ,对应的最小项列入函数式, Dᵢ = 0 ,对应的最小项不列入函数式。所以将逻辑变量从数据选择器的地址端输入,而在数据端加上适当的 0 或 1,就可以实现逻辑函数。
① 逻辑变量数小于或者等于所选用 MUX 地址端数时,列出真值表,直接在 MUX 的数据输入端加上与真值表对应的值。
用 8 选 1 数据选择器实现三变量的奇校验函数。
解
其真值表见本章第 2 节表 3.2.1, 则在数据选择器的数据输入端加上与真值表对应的值,即 D₁=D₂=D₄=D₇=1,其余为 0, 如图 3.5.32 所示。则输出函数表达式为
F (A, B, C) = m _ 1 + m _ 2 + m _ 4 + m _ 7 = overline A overline B C + overline A B overline C + A overline B overline C + A B C
连接时注意:一是使能端,二是高低位,三是若变量数小于选用 MUX 地址端数时,不用的地址端和数据端均接地。如图 3.5.33 用 8 选 1 数据选择器实现异或函数和同或函数。

② 逻辑变量数 n 大于所选用数据选择器地址端数 m 时,首先选出 m 个变量从数据选择器地址端输入,其余 n - m 个变量只能从数据端输入,故 Dᵢ 不再是简单的 0 或 1 , 而是其余 n - m 个变量的函数。
例如,用 4 选 1 数据选择器实现三变量函数:
F (A, B, C) = overline A overline B overline C + overline A overline B C + A overline B overline C + A B C若选变量 A, B(也可以选其他任何两个变量)作地址变量,则从上述最小项表达式中提取地址变量最小项的公共因子,整理后如下:
F (A, B, C) = A overline B (C + overline C) + A overline B overline C + A B C = m _ 0 + m _ 2 overline C + m _ 3 C即得 4 选 1 数据选择器数据输入 D₃ ∼ D₀ 。 D₀ 为 m₀ 的系数, D₀ = 1, D₁ 为 m₁ 的系数, D₁ = 0 ;同理可得 D₂ = overlineC , D₃ = C₀, D₂, D₃ 是变量 C 的函数,其逻辑图如图 3.5.34 所示。

上例是代数法,更常用卡诺图法进行设计,简便直观。卡诺图法是按 m 个地址变量的组合将原卡诺图划分为 2^(m) 个区域,称为子卡诺图,由 2^(m) 个子卡诺图求出各个 Dᵢ 的值。必须先解决一个问题: 如何选择合适的地址变量? 所谓合适是指能使 Dᵢ 的表达式简单,电路实现经济。有两种方法:
一是选函数最简式中出现最多的变量作地址变量,它能使剩余变量组成的函数最简。
二是可先假设一种选法,在卡诺图上看一下它的子卡诺图情况,再决定是否这样选。
经常采用第一种方法,下面举例说明。
用4选1数据选择器实现函数:
F (A, B, C, D) = ∑ m (1, 2, 4, 9, 1 0, 1 1, 1 2, 1 4, 1 5)解
首先由函数的卡诺图求出最简式: F(A,B,C,D)=BoverlineCoverlineD+AC+overlineBoverlineCD+overlineBCoverlineD 。
统计变量出现的次数: A 为 1 次,B 为 3 次,C 为 4 次,D 为 3 次,所以选择 BC 或 CD 作地址变量均可,在此选 BC。
其次按 BC 组合将原卡诺图划分为 4 个子卡诺图,如图 3.5.35(a) 中虚线所示。子卡诺图是两维的 (两个变量), 故又称为降维卡诺图。各子卡诺图内所示的函数就是与其地址码 mᵢ 对应的数据输入 Dᵢ 。由于一个数据输入对应一个地址码,因此求 Dᵢ 时只能在相应的子卡诺图内化简。分别化简 4 个子卡诺图,见图中实线圈。标注这些圈的积项时去掉所有地址变量,即可得到各个 Dᵢ 的函数表达式: D₀ = D , D₁ = A + overlineD = overlineA D , D₂ = overlineD,其逻辑图如图 3.5.35(D₃ = A,其逻辑图如图 3.5.35(b) 所示,只附加一个与非门。

(a)

(b)
图3.5.35 例3.5.9的卡诺图与逻辑图
上述函数如果选用 AB 作地址变量,相应的子卡诺图、逻辑图如图 3.5.36 所示,各 Dᵢ 为: D₀ = overlineCD + CoverlineD, D₁ = overlineCoverlineD, D₂ = C + D = overlineoverlineCoverlineD, D₃ = C + overlineD = overlineoverlineCD,需加 5 个与非门。

(a)

(b)
图3.5.36 例3.5.9的另一方案
显然用 BC 作地址变量电路更简单,读者可自己验证用 CD 作地址变量电路也简单。当然数据输入 Dᵢ 函数表达式也可以用数据选择器来实现。
数据选择器实现函数与译码器实现函数相比,在一个芯片前提下,译码器必须外加门才能实现变量数不大于其输入端数的函数,不能实现变量数大于其输入端数的函数,但可同时实现多个函数;数据选择器不用外加门就能实现变量数不大于其地址端数的函数,在外加门时还能实现变量数大于其地址端数的函数,但只能实现一个函数。
3.5.5 数据分配器
Section titled “3.5.5 数据分配器”数据分配器(DMUX)的功能与数据选择器相反,将一个输入数据分配到多路输出中的某一路,从哪一路输出由当时的地址变量决定,也等效为单刀多掷开关,如图 3.5.37 所示,只是方向相反,故称 DMUX。

1. 基本功能
Section titled “1. 基本功能”74LS155 为 TTL 型双 1 线至 4 线数据分配器,这两个 1 线至 4 线数据分配器不完全相同,图 3.5.38) 是其中一个的逻辑原理图,图 3.5.36(a) 是其中一个的逻辑原理图,图 3.5.36(b) 为逻辑符号。图中 D 为数据输入端,A₁A₀ 为公用地址输入端, ST 为使能端,f₀ ∼ f₃ 为数据输出端。


由图 3.5.38(a) 可以看出,数据分配器的核心部分是一个 2 线至 4 线译码器,比译码器多了一个数据端,所以数据分配器是译码器加数据端构成。当 1 ST = 0 时,overlinef₀ ∼ overlinef₂ = 1,输出与输入无关,为禁止态; 当 1 ST = 1 时,写出输出表达式: overlinef₀ = overlineoverlineD m₀, overlinef₁ = overlineoverlineD m₁, overlinef₂ = overlineoverlineD m₂, overlinef₃ = overlineoverlineD m₃, mᵢ (i = 0 ∼ 3) 为地址变量 A₁ A₀ 的最小项,故 mᵢ = 1 时,则 overlinefᵢ = D,即根据地址不同,将 D 送到不同的输出端。其功能表如表 3.5.10(a)、(b) 所示。
表 3.5.10 数据分配器功能表
(a)
(b)
| 输入 | 输出 | |||||
| 1ST | 1A₁ | 1A₀ | overline1f₀ | overline1f₁ | overline1f₂ | overline1f₃ |
| 0 | × | × | 1 | 1 | 1 | 1 |
| 1 | 0 | 0 | overline1D | 1 | 1 | 1 |
| 1 | 0 | 1 | 1 | overline1D | 1 | 1 |
| 1 | 1 | 0 | 1 | 1 | overline1D | 1 |
| 1 | 1 | 1 | 1 | 1 | 1 | overline1D |
| 输入 | 输出 | |||||
| overline2ST | 2A₁ | 2A₀ | overline2f₀ | overline2f₁ | overline2f₂ | overline2f₃ |
| 1 | × | × | 1 | 1 | 1 | 1 |
| 0 | 0 | 0 | overline2D | 1 | 1 | 1 |
| 0 | 0 | 1 | 1 | overline2D | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | overline2D | 1 |
| 0 | 1 | 1 | 1 | 1 | 1 | overline2D |
2. 功能扩展
Section titled “2. 功能扩展”直接利用使能端进行扩展。如果将双1线至4线数据分配器的使能端1ST与 overline2ST 并接作为高位地址变量 A₂ 输入端,两个数据输入端并接作为数据输入,则可扩展为1线至8线
的分配器。
(1) 作译码器
Section titled “(1) 作译码器”由于数据分配器是译码器加数据端构成,若将数据输入端接地,则图 3.5.38(a)电路就变成2线至4线的译码器,令D=0,表3.5.10就变成译码器的功能表。反之,具有使能端的译码器也可用做数据分配器,将输入数据D从使能端输入即可,在译码器部分已有介绍。
使用一片 74LS155,请附加最少的门实现如下两输出函数(在给出的图 3.5.39 上完成设计,A 为高位)。

解
首先将 74LS155 双 1 线至 4 线数据分配器扩展为 1 线至 8 线分配器:将使能端 1ST 与 overline2ST 并接作为高位地址变量 A 输入端,两个数据输入端并接作为数据输入端 overlineD 。
然后将此1线至8线分配器变成3线至8线译码器: 将数据输入端 overlineD 接地。注意: 此时8条输出线(即8个最小项的非)的排列如图 3.5.40所示。
再将 F₁ 转换为最小项表达式为 F₁(A,B,C) = A· overlineB· C + overlineA· overlineB· overlineC +B· C = ∑ m (0,3,5,7),外加一个与非门即可实现; F₂ 转换为 F₂(A,B,C) = ∑ m(0,1,2,3,5,6,7) = M₄ = overlinem₄ 不用外加门,直接引出即可,如图 3.5.40所示。

(2) 多路分配器
Section titled “(2) 多路分配器”将数据选择器和数据分配器配合使用,就可以实现多路数据的传输。图 3.5.41 所示的是 8 路数据传输,受地址输入 ABC 的控制。例如,当 ABC=001 时,实现 D₁ arrow f₁ 的传输,在此强调指出,收、发两端的地址要严格同步。

3.5.6 奇偶校验与可靠性编码
Section titled “3.5.6 奇偶校验与可靠性编码”1. 奇偶校验码
Section titled “1. 奇偶校验码”(1) 基本功能
Section titled “(1) 基本功能”在数码的传送及存储过程中由于存在干扰,数码可能发生差错,如1变为0或0变为1。发现这些错误并将它们进行纠正,这就是纠错技术,这一技术已经广泛地应用到数据传输及计算机系统中。奇偶校验码是其中最基本的检错码,这种码具有一定的检错能力,但不能纠错。
奇偶校验码是在信息码之后,加一位校验位,使整个码组中1的个数为奇数或偶数,前者称为奇校验,后者称为偶校验。表3.5.11为8421BCD码的奇偶校验码。只要收发双方预先约定采用何种校验码,当传输中有差错便能很容易地判断出来。但若有两位同时有错是不能发现的,不过两位同时出错的概率很小,故奇偶校验码被广泛应用。常采用奇校验,因为它排除了全0的情况。奇偶校验单元的通用符号如图 3.5.42所示。
表 3.5.11 8421BCD 码的奇偶校验码
| 十进制数 | 8421BCD码(信息码) | 奇校验位 | 偶校验位 | |||
| 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 | 1 |
| 2 | 0 | 0 | 1 | 0 | 0 | 1 |
| 3 | 0 | 0 | 1 | 1 | 1 | 0 |
| 4 | 0 | 1 | 0 | 0 | 0 | 1 |
| 5 | 0 | 1 | 0 | 1 | 1 | 0 |
| 6 | 0 | 1 | 1 | 0 | 1 | 0 |
| 7 | 0 | 1 | 1 | 1 | 0 | 1 |
| 8 | 1 | 0 | 0 | 0 | 0 | 1 |
| 9 | 1 | 0 | 0 | 1 | 1 | 0 |


(a) 奇校验单元
(b) 偶校验单元
图 3.5.42 奇偶校验单元的通用符号
由于异或的性质:奇数个1异或结果为1,偶数个1异或结果为0。因此用异或门构成奇偶校验电路十分方便。图 3.5.43为8421BCD码发送端奇校验位产生电路和接收端奇校验电路,这是串行连接,当位数多时,还可采用并行(树形)结构。

由图 3.5.41可得:
l P = overline D oplus C oplus B oplus A F = D oplus C oplus B oplus A oplus P则 F = 0 表示传输有错误。
集成 9 位奇偶校验器 74LS280 的逻辑符号如图 3.5.44 所示,其中 A ∼ I 是输入端,Q_(E) 和 Q_(O) 是输出端,功能列于表 3.5.12 中。输出表达式为
r l & Q _ 0 = A oplus B oplus C oplus D oplus E oplus F oplus G oplus H oplus I & Q _ E = overline A oplus B oplus C oplus D oplus E oplus F oplus G oplus H oplus I
表 3.5.12 奇偶校验器功能表
| 输入A~I中1的个数 | Q_(O) | Q_(E) |
| 偶数 | 0 | 1 |
| 奇数 | 1 | 0 |
图3.5.44 74LS280的逻辑符号
74LS280 既适用于奇校验,也适用于偶校验;既可用于校验位的产生,也可用于奇偶性的校验。图 3.5.45 所示是利用 74LS280 对 8 位信息传输产生校验位与校验的电路。
(2) 功能扩展
Section titled “(2) 功能扩展”若用 74LS280 实现输入多于 9 位的奇偶校验,可用串行级联和并行级联的方式扩展,如图 3.5.46 所示。



(a) 25位奇校验

(b) 81位奇校验
图3.5.46 多位奇偶校验
2. 汉明码
Section titled “2. 汉明码”奇偶校验码只能检测出一位错,而不能纠正错误。汉明码是既具有检错功能又具有纠错功能的一种可靠性编码。汉明码校验的基础也是奇偶校验,但它是多重的奇偶校验码。
下面以 8421 汉明码为例来说明汉明码的编码方法及检错纠错原理。
(1) 汉明码的编码
Section titled “(1) 汉明码的编码”8421 汉明码是由 8421 码和 3 位校验位组成。设 8421 码为 I₄, I₃, I₂, I₁ ,3 位汉明校验位为 P₃, P₂, P₁ ,3 位校验位的位置分别设置在 2ⁱ 码位上, i = 0, 1, 2 。即 P₁ 置于 2⁰ = 1 码位上, P₂ 置于 2¹ = 2 码位上, P₃ 置于 2² = 4 码位。这样组成的 8421 汉明码的位序如下:
c c c c c c c 7 & 6 & 5 & 4 & 3 & 2 & 1 I _ 4 & I _ 3 & I _ 2 & P _ 3 & I _ 1 & P _ 2 & P _ 1其中 3 位校验码的编码方法如下:
首先将7位汉明码进行分组,因为用3位校验码,就分成3组进行奇偶校验。分组时,位序号所在的列中,先填写位序号对应的二进制码 (S₁ 为低位),如6是 110, S₃S₂S₁ = 110 ,然后,在1的位置上填写位序号对应的码元,如6对应 I₃ ,就在6列下 S₃, S₂ 行填写 I₃ ,如表3.5.13所示。分组结果3个校验位分别位于3个组,每一组写出校验位的生成表达式如下:
表 3.5.13 汉明码分组表
| 分组\位序号 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | |
| S₃ | I₄ | I₃ | I₂ | P₃ | ||||
| S₂ | I₄ | I₃ | I₁ | P₂ | ||||
| S₁ | I₄ | I₂ | I₁ | P₁ | ||||
根据上述规则写出 8421 汉明码如表 3.5.14 所示。
表 3.5.14 8421 汉明码
| N\位序号 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
| 2 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
| 3 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |
| 4 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
| 5 | 0 | 1 | 0 | 1 | 1 | 0 | 1 |
| 6 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
| 7 | 0 | 1 | 1 | 0 | 1 | 0 | 0 |
| 8 | 1 | 0 | 0 | 1 | 0 | 1 | 1 |
| 9 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
(2) 汉明码的校验
Section titled “(2) 汉明码的校验”发送端将汉明码发送出去后,若接收端收到以后不再满足上述 Pᵢ 表达式,则说明传输过程出了错,因此,接收端通过下列奇偶校验方程来判断。
l S _ 3 = I _ 4 oplus I _ 3 oplus I _ 2 oplus P _ 3 S _ 2 = I _ 4 oplus I _ 3 oplus I _ 1 oplus P _ 2 S _ 1 = I _ 4 oplus I _ 2 oplus I _ 1 oplus P _ 1如果收到的代码是正确的,则 S₃S₂S₁ = 000 ;如果收到的代码不正确,有一个错,则由 S₃, S₂, S₁ 所构成的二进制数指出错误位序号。
例如,发送端发出的 8421 汉明码为
c c c c c c c 7 & 6 & 5 & 4 & 3 & 2 & 1 0 & 1 & 0 & 1 & 0 & 1 & 0接收端收到的代码为
c c c c c c c 7 & 6 & 5 & 4 & 3 & 2 & 1 0 & 1 & 0 & 1 & 1 & 1 & 0则由校验方程得到 S₃S₂S₁=011 ,表明位序 3 出错,将第三位码 I₁ 修改,1 变为 0,即得到纠正。
这是因为从分组表可见 I₁ 序号是3,对应 S₃S₂S₁ 的二进制码是011,如果传输正确, Sᵢ 皆为0,一旦 I₁ 出错,则对应二进制码011中所有1的 Sᵢ 表达式 S₂, S₁ 均为1,故由 S₃S₂S₁ 的二进制码即可发现错误的位置。
表 3.5.15 汉明码校验位与最大信息位关系
| 校验位k | 总位数 2^(k)-1 | 最大信息位数n |
| 2 | 3 | 1 |
| 3 | 7 | 4 |
| 4 | 15 | 11 |
| 5 | 31 | 26 |
| 6 | 63 | 57 |
| 7 | 127 | 120 |
由上述分析可知,3位校验码形成的 S₃, S₂, S₁ 共给出 2³ = 8 种不同的状态,除了000表示正确外,其余7种状态分别指出7个码元的错误。因为包含了3位校验位,故3位校验位最多可校正4位信息位。
设有 k 位校验位,共 2^(k) 种组合,其中全0表示正确,出错组合数为 2^(k) - 1 ,即总位数为 2^(k) - 1 ,所以若信息位为 n 位,则 nₘax≤slant 2^k -1 - k ,表3.5.15给出汉明码校验位与最大信息位的关系。
随着校验位的增加,汉明码的检错、纠错能力也随之增强,它可以检出双位错、纠正一位错,也可以指出多位错、纠正双位错等,汉明码在计算机的信息传输中应用很广。
3.5.7 运算电路
Section titled “3.5.7 运算电路”1. 加法器
Section titled “1. 加法器”两个二进制数之间的算术运算无论是加、减、乘、除,目前在数字计算机中都是化做若干步加法运算进行的,因此加法器是构成算术运算器的基本单元。
加法器可由全加器构成,当有 n 位二进制数相加时就需 n 个全加器构成多位并行加法器。按照进位方式不同,常分为串行进位加法器和超前进位加法器两种。
(1) 串行进位加法器
Section titled “(1) 串行进位加法器”本章第 3 节图 3.3.25 为 4 位串行进位加法器的逻辑框图,这种加法器的构成比较简单,只需将 4 个全加器串联起来,低位全加器的进位输出连到相邻高位全加器的进位输入,最低位全加器的进位端 CI 应当接 0。
这种加法器虽然各位相加是并行的,但其进位信号是由低位向高位逐级传递的,因此运算速度较慢。但结构比较简单,在运算速度要求不高的情况下,仍可采用。
(2) 超前进位加法器
Section titled “(2) 超前进位加法器”为了提高运算速度,必须设法减小或消除由于进位信号逐级传递所耗费的时间,可以通过逻辑电路事先得出每一位全加器的进位信号,而无须再从最低位开始向高位逐位传递进位信号,采用这种结构的加法器叫超前进位加法器。下面以4位超前进位加法器为例来说明。
设两个加数 A 和 B, A = A₄ A₃ A₂ A₁ , B = B₄ B₃ B₂ B₁ 。
由前面逐位传递加法器可得到各位和与进位表达式为
r l r S _ 1 = A _ 1 oplus B _ 1 oplus C _ 0 & & C _ 1 = A _ 1 B _ 1 + C _ 0 (A _ 1 oplus B _ 1) S _ 2 = A _ 2 oplus B _ 2 oplus C _ 1 & & C _ 2 = A _ 2 B _ 2 + C _ 1 (A _ 2 oplus B _ 2) r l r S _ 3 = A _ 3 oplus B _ 3 oplus C _ 2 & & C _ 3 = A _ 3 B _ 3 + C _ 2 (A _ 3 oplus B _ 3) S _ 4 = A _ 4 oplus B _ 4 oplus C _ 3 & & C _ 4 = A _ 4 B _ 4 + C _ 3 (A _ 4 oplus B _ 4)在表达式中,设
G _ i = A _ i B _ i P _ i = A _ i oplus B _ iGᵢ 为进位生成项, Pᵢ 为进位传递项。则进位 Cᵢ 形成速度决定于积项 PᵢCᵢ-1 ,将进位表达式变换一下得
l C _ 1 = G _ 1 + P _ 1 C _ 0 C _ 2 = G _ 2 + P _ 2 C _ 1 = G _ 2 + P _ 2 G _ 1 + P _ 2 P _ 1 P _ 0 C _ 3 = G _ 3 + P _ 3 C _ 2 = G _ 3 + P _ 3 G _ 2 + P _ 3 P _ 2 G _ 1 + P _ 3 P _ 2 P _ 1 C _ 0 C _ 4 = G _ 4 + P _ 4 C _ 3 = G _ 4 + P _ 4 G _ 3 + P _ 4 P _ 3 G _ 2 + P _ 4 P _ 3 P _ 2 G _ 1 + P _ 4 P _ 3 P _ 2 P _ 1 C _ 0各位和的输出为
S _ i = P _ i oplus C _ i - 174LS283 4 位超前进位加法器就是基于这种逻辑结构制作的,其逻辑图示于图 3.5.47) 中,可知最多经过四级门就得到结果,图 3.5.47(a) 中,可知最多经过四级门就得到结果,图 3.5.47(b) 是其简化逻辑符号。

(a)

(b)
显然,进位传递时间的节省是以逻辑电路的复杂为代价换取的。因此当运算位数较多时常采用折中方法,即将 n 位分为若干组,组内采用超前进位,组间采用串行进位。例如实现两个16位二进制数相加,需用4片74LS2834位超前进位加法器串行级联,低位片的进位 C₃ 接到相邻高位片的 C_(-1) ,最低位片的 C_(-1) 接0即可。
(3) 应用
Section titled “(3) 应用”加法器除作二进制加法运算外,还可以广泛用于构成其他功能电路,如代码转换电路、减法器、十进制加法器等。
用 4 位加法器实现 8421BCD 码至余 3BCD 码的转换。
解
由于余 3BCD 码比相应的 8421BCD 多 3(0011), 只需将输入的 8421BCD 加 3 即可,用 1 片 4 位加法器就能实现,如图 3.5.48 所示。
试将两位 8421BCD 码转换为等值的二进制数。

解
两位8421BCD码转换为二进制数,比较简便的方法是利用权值来转换。设两位8421BCD码N的高位为 D₈^(prime)D₄^(prime)D₂^(prime)D₁^(prime),低位是
图3.5.48 代码转换电路
D₈D₄D₂D₁ ,则:
r l N & = (D _ 8 ^ prime × 8 + D _ 4 ^ prime × 4 + D _ 2 ^ prime × 2 + D _ 1 ^ prime) × 1 0 + D _ 8 × 8 + D _ 4 × 4 + D _ 2 × 2 + D _ 1 & = D _ 8 ^ prime × 8 0 + D _ 4 ^ prime × 4 0 + D _ 2 ^ prime × 2 0 + D _ 1 ^ prime × 1 0 + D _ 8 × 8 + D _ 4 × 4 + D _ 2 × 2 + D _ 1 & = D _ 8 ^ prime × (6 4 + 1 6) + D _ 4 ^ prime × (3 2 + 8) + D _ 2 ^ prime × (1 6 + 4) + D _ 1 ^ prime × (8 + 2) + D _ 8 × 8 + D _ 4 × 4 + D _ 2 × 2 + D _ 1 & = D _ 8 ^ prime × 2 ^ 6 + D _ 4 ^ prime × 2 ^ 5 + (D _ 8 ^ prime + D _ 2 ^ prime) × 2 ^ 4 + (D _ 4 ^ prime + D _ 1 ^ prime + D _ 8) × 2 ^ 3 + (D _ 2 ^ prime + D _ 4) × 2 ^ 2 + (D _ 1 ^ prime + D _ 2) × 2 + D _ 1由推导结果可知,按上式进行计算,将相加的进位加到高位上去,用两个4位加法器就可实现将两位8421BCD码转换为等值的二进制数,其逻辑连接图如图 3.5.49所示。

用 4 位二进制加法器构成 1 位 8421BCD 码加法器。
解
本章第3节例3.3.15是用全加器实现的,本题改用4位二进制加法器实现,原理相同,如图3.5.50所示。

2. 减法器
Section titled “2. 减法器”(1) 全减器
Section titled “(1) 全减器”本章第3节例3.3.11是用SSI芯片实现的全减器,其真值表见表3.3.3。实用中,为了简化系统结构,通常不另外设计减法器,而是将减法运算变为加法运算来处理,使运算器既能实现加法运算,又可实现减法运算。
由真值表得到 Dᵢ 和 Cᵢ 的表达式如下:
l D _ i = A _ i oplus B _ i oplus C _ i - 1 C _ i = overline A _ i B _ i + overline A _ i C _ i - 1 + B _ i C _ i - 1若以 overlineAᵢ 作为输入,则表达式为
l D _ i = overline A _ i oplus B _ i oplus C _ i - 1 C _ i = (overline A _ i oplus B _ i) C _ i - 1 + overline A _ i B _ i可见与全加器表达式形式相似,故可用全加器实现全减器,如图 3.5.51 所示。

在数字电路中,减法运算用补码的加法来完成,先介绍二进制数的表示方法。
(2) 二进制正、负数的表示法
Section titled “(2) 二进制正、负数的表示法”在数字系统中,数的符号是用 0 表示正号,1 表示负号。有符号的二进制数有 3 种表示法:原码、反码和补码。
3 种表示法对于正整数来说是一样的,即符号位为 0, 随后是二进制数的数值。例如 +18, 3 种表示均为 010010。
对于负数 3 种表示法不同。
原码:负数的符号位为1,随后是二进制数的绝对值。例如,-18的原码是110010。
反码:符号位为1,随后是将绝对值按位取反。也相当于将其对应的正数按位取反(连同符号位)。例如,-18的反码是+18(010010)的按位取反为101101。
补码:负数的补码是其反码加1。例如,-18的补码是101110。
求一个负数的补码也可按下述方法进行:对于其对应的正数(连同符号位),从最低位开始,保留所有的低位0不变;遇到第一个1时,保持这个1不变;以后各高位均取反:即1换0,0换1。
(3) 补码表示法的减法
Section titled “(3) 补码表示法的减法”对于减法运算:
(± A) - (+ B) = (± A) + (- B)将被减数和减数取补,将减法运算变成补码的加法运算,其运算结果为补码形式。
由于负数的补码的补(连同符号位)正是其对应的正数(绝对值),例如,-18的补码是101110,再一次取补(按位取反加1),则为010010,即是正数18,所以在减法运算中,若减数是负数,对负数的补码取补为正数,即减负等于加正。如下列运算:
(± A) - (- B) = (± A) + (B)因此,当两个补码表示的二进制数相减时,可对补码表示的减数再取补(连同符号位),减法运算变成加法运算,运算结果也是补码形式。
对于无符号数,上述减法也适用,图 3.5.52所示是两个4位正数相减A-B,对减数B取补(按位取反加1),将减法变成加法,用4位加法器完成。由于没有考虑符号位(A的符号是0,(-B)的符号是1),所以相加结果若 C₃=1,表示够减,输出 Σ₀∼Σ₃ 即为差值正数。若 C₃=0,表示不够减,输出为负数补码,将结果取补即为差的绝对值。

图 3.5.53 是可控的加减电路, M=1, 实现减法运算, M=0 实现加法运算。

另外,乘法和除法运算也可用加法器实现,具体实现可参考相关资料。
3. 算术逻辑单元 (Arithmetic-logic Unit, ALU)
Section titled “3. 算术逻辑单元 (Arithmetic-logic Unit, ALU)”数字系统中常把执行数值比较、加法和减法等算术运算、与、与非、或、或非、异或和移位等逻辑运算,以及逻辑运算和算术运算的混合运算的各种电路组合成一个电路,称为算术逻辑单元(ALU)或称多功能函数发生器,故算术逻辑单元(ALU)能够完成一系列的算术运算和逻辑运算。
74LS381是比较简单的双极型ALU,其功能如表3.5.16所示,引脚图如图 3.5.54所示。
表 3.5.16 74LS381 功能表
| 选择 | 算术/逻辑操作 | ||
| S₂ | S₁ | S₀ | |
| 0 | 0 | 0 | 清零 |
| 0 | 0 | 1 | B减A |
| 0 | 1 | 0 | A减B |
| 0 | 1 | 1 | A加B |
| 1 | 0 | 0 | A⊕B |
| 1 | 0 | 1 | A+B |
| 1 | 1 | 0 | A·B |
| 1 | 1 | 1 | 预置 |

该算术逻辑单元可以对两个4位数据 A 和 B 进行6种算术或逻辑运算,并有清零和预置功能。所谓清零是使各种数据输出端的状态为0,预置是使数据输出端处于预定的状态。输入信号 S₂ ∼ S₀ 可以选择8种不同的运算功能。进行算术运算时,其输出为二进制数;进行逻辑运算时,则为含一定意义的代码。进行预置操作时,预定的状态从 A₃, A₂, A₁, A₀ 端输入。
可以根据需要把若干片 4 位 ALU 与超前进位产生器连接,扩展 ALU 的位数。