组合电路的设计就是根据逻辑功能的要求,设计出实现该功能的最优逻辑电路。从采用的器件来看,可以分为小规模集成电路(SSI)、中规模集成电路(MSI)和大规模集成电路(LSI)的组合电路的设计。前面介绍的逻辑函数简化方法,追求的目标是最少门数,这是在小规模集成电路的条件下最经济的指标。这些方法是数字电路逻辑设计的基础,是比较成熟的方法,本节仍以追求逻辑门数最少为目标来讨论逻辑设计。而对于中大规模集成电路,追求最少门数将不再成为最优设计的指标,而转为追求集成块数的减少,这将在后面讨论。
用 SSI, 即用基本逻辑门电路设计组合电路时,其一般步骤是:
(1) 列真值表。给出的设计要求,通常是用文字描述的具有一定因果的一个事件。这时必须运用逻辑抽象的方法,抽象成一个逻辑问题。即将起因作为逻辑变量,将结果定为输出函数;然后对逻辑赋值,即规定 0、1 分别表示变量与函数的不同状态;最后做出真值表。
(2) 根据真值表,写出逻辑函数标准表达式。
(3)将逻辑函数进行简化或变换。如果限定设计必须使用某种类型门电路,还须进行相应的变换,写出与使用的逻辑门相对应的最简表达式。
(4) 按简化逻辑表达式绘制逻辑电路图。
(5) 选择逻辑门进行装配、调试。
但还存在几个实际问题:
(1)输入变量的形式。输入变量有两种形式,一种是既提供原变量也提供反变量,称双轨输入;另一种是只提供原变量形式,而无反变量形式,称单轨输入。
(2) 多输出函数的设计。
(3) 采用 SSI 芯片时的设计。
(4) 指定门类型时的设计。
本节也将对这些情况分别作相应的介绍。
3.3.1 由设计要求列真值表
Section titled “3.3.1 由设计要求列真值表”关键是确定逻辑变量、逻辑函数,以及定义变量值与函数值分别代表的状态。
有一火灾报警系统,设有烟感、温感和紫外光感 3 种不同类型的火灾探测器。为了防止误报警,只有当其中两种或两种以上的探测器发出火灾探测信号时,报警系统才产生报警控制信号。作出真值表。
解
首先确定逻辑变量是烟感、温感和紫外光感3种火灾探测器,分别用符号A、B、C表示,它们的含义如下:
A = 1 text 烟感探测器发出火灾探测信号B = 1 text 温感探测器发出火灾探测信号C = 1 text 紫外光感探测器发出火灾探测信号逻辑函数就是报警控制信号,用 F 表示,产生报警时 F=1。
然后按一定规律(通常采用自然二进制码规律)取输入变量的组合,确定每个组合下函数 F 的值,得到真值表如表 3.3.1 所示。
表3.3.1 例3.3.1的真值表
| 组合序号i | 输入ABC | 输出F |
| 0 | 0 0 0 | 0 |
| 1 | 0 0 1 | 0 |
| 2 | 0 1 0 | 0 |
| 3 | 0 1 1 | 1 |
| 4 | 1 0 0 | 0 |
| 5 | 1 0 1 | 1 |
| 6 | 1 1 ,0 | 1 |
| 7 | 1 1 1 | 1 |
由真值表可见,只有当其中两种或两种以上的探测器发出火灾探测信号时,报警系统才产生报警控制信号, F=1。
由真值表不难写出函数的表达式,得到最简式。
3.3.2 逻辑函数的两级门实现
Section titled “3.3.2 逻辑函数的两级门实现”在允许双轨输入时,可采用两级门电路来实现。
1. 两级与非门电路的实现
Section titled “1. 两级与非门电路的实现”对于最简与或式,一定可用两级与非门电路实现。这时只需将函数的最简与或式两次取非,根据反演律,即可得到两级与非表达式。例如:
F (A, B, … , M, N) = A B + C D + … + M N = overline A B + C D + … + M N = overline A B · overline C D · … · overline M N根据表达式画出逻辑图如图 3.3.1 所示,即为两级与非电路,因此两级与非电路的设计,就是求函数的最简与或式,再经两次取反变换成与非-与非式。
试用两级与非门实现下面的函数:
F (A, B, C, D) = ∑ m (0, 1, 4, 5, 8, 9, 1 0, 1 1, 1 4, 1 5)解
首先作函数的卡诺图,如图 3.3.2(a) 所示。由卡诺图化简得到最简与或式:

将该式两次取反,便得与非-与非式:
F (A, B, C, D) = overline A overline B + overline A overline C + A C = overline overline A overline B · overline overline A overline C · overline A C按上述与非-与非式作出逻辑图,如图 3.3.2(b)所示。

(a)

(b)
图3.3.2 例3.3.2的卡诺图与逻辑图
2. 两级或非门电路的实现
Section titled “2. 两级或非门电路的实现”对于最简或与式,一定可用两级或非门电路实现。由函数的或与表达式,运用反演律就可以得到两级或非式。例如:
r l F (A, B, … , M, N) & = (A + B) (C + D) … (M + N) = overline (A + B) (C + D) … (M + N) & = overline A + B + overline C + D + … + overline M + N根据表达式画出电路图,如图 3.3.3 所示,即为两级或非门电路。所以,两级或非电路的设计是求函数的最简或与式,再两次取非变换成或非-或非式。
对于例3.3.2 的函数,若用或非门实现,首先简化求得最简或与式,如图 3.3.4(a) 所示,则
r l F (A, B, C, D) & = (A + overline C) (overline A + overline B + C) & = overline A + overline C + overline A + overline B + C按照上式绘制逻辑图,如图 3.3.4)所示。它和图 3.3.2(b)所示。它和图 3.3.2(b)比较,可见该函数用或非门实现,使用门数更少,电路更简单。因此,有下列结论:同一函数,既可用与非门,也可用或非门实现,复杂度可能有区别,实际中应根据已有器件、复杂度要求进行选择。



3.3.3 逻辑函数的三级门实现
Section titled “3.3.3 逻辑函数的三级门实现”在单轨输入,即输入信号源不提供反变量时,只能由电路本身提供所需的反变量。最简单的方法是对每一个输入原变量增加一个非门,产生所需的反变量,这样在两级门的基础上构成了三级门电路,如图 3.3.5 所示。有几个输入变量就需要几个非门,显然是不经济的,需要采用适当的方法来节省器件,常用代数法和阻塞法。下面介绍阻塞法。

1. 阻塞逻辑
Section titled “1. 阻塞逻辑”卡诺图有两个特殊的方格: 全 1 格和全 0 格,又称 1 重心和 0 重心,如图 3.3.6 中的 111 格和 000 格。化简函数为最简与或式时,卡诺图中所有的圈对应的乘积项共有以下 4 种类型:
(1) 凡是包含 1 重心的圈都是用原变量标注;
(2) 凡是包含 0 重心的圈都是用反变量标注;
(3) 两个重心都不包含的圈,其标注既有原变量又有反变量;
(4) 两个重心都包含的圈只有一个,即恒为 1。
所以,可根据需要圈合并圈。

当需要用原变量标注时,在化简时,就围绕1重心来圈,如三级门设计中,输入全为原变量,当然希望围绕1重心来圈。而实际围绕1重心来圈时,有时将0方格也圈入,所以要设法将圈入的0方格扣除,这种扣除不是像普通代数中的用减法扣除,而是用被扣除的最小项的非 overlinemᵢ 乘之来扣除,这就是阻塞逻辑,因为 overlinemᵢ 在其相应输入组合下值为0,禁止了积项的输出,使积项受 overlinemᵢ 控制。
如图 3.3.6(a)所示,需将圈入的0方格 m₇ 扣除,根据阻塞逻辑,将积项乘 overlinem₇ 。这一结论的正确性,可利用卡诺图来证明。由卡诺图的运算规则,可得到图 3.3.6(F(A,B,C) = A · overlinem₇ 。这一结论的正确性,可利用卡诺图来证明。由卡诺图的运算规则,可得到图3.3.6(b),图中阻塞圈用虚线画出,以示区别,则
F (A, B, C) = F _ 1 · F _ 2 = A · overline m _ 7 = A · overline A B C即完成从 F₁ 中扣除了 m₇ 的操作。
对于积项 A · overlineABC ,由两部分因子构成:一部分因子为原变量形式,称为头部因子;另一部分因子为带“非”号形式,称为尾因子。
这个例子说明:头部因子与尾部因子的积体现在卡诺图上,就是在头部因子决定的合并圈中扣除尾部因子决定的合并圈所得的结果。换句话说,为使积项用原变量标注而绕1重心圈时,圈入的0格的扣除,就相当于乘以一个尾因子。所以阻塞逻辑就是利用扣除0格的方法,使积项受尾因子控制。故尾因子也称阻塞项、禁止项。
当然阻塞圈还可以扩大,对结果没有影响,如图 3.3.7 所示。

由此可知:
(1) 阻塞圈可大可小,小可以到某个最小项,大可超过头部因子的合并圈。
(2) 为保证尾因子的“非”内不再有非,阻塞圈也应包含 1 重心。
(3)大的阻塞圈可以使变量少,但究竟选大还是选小,应考虑此阻塞圈(尾因子)的公用程度。
2. 用阻塞法设计三级与非电路
Section titled “2. 用阻塞法设计三级与非电路”阻塞法设计三级与非电路的方法要点如下:
(1) 画圈时尽量围绕 1 重心,使积项用原变量标注,这时可以将某些 0 格圈入。
(2) 将圈进的 0 格阻塞掉,阻塞圈必须包含 1 重心,阻塞圈内可以不全是 0 格,扣除的 1 格以后补上。
(3) 圈各积项的阻塞圈时,应尽可能为各积项所公用。
(4) 用最少的积项圈及最少的阻塞圈覆盖全部 1 格。
下面举例说明。
设输入没有反变量,用三级与非门实现函数:
F (A, B, C, D) = ∑ m (1, 2, 3, 4, 6, 9, 1 2, 1 4, 1 5)
解
作函数卡诺图,如图 3.3.8所示。圈 m₁ 、 m₃ 和 m₉,但是多了4个0方格,应加以阻塞,需要两个阻塞圈。该积项的阻塞圈如图 3.3.8中虚线所示,即为 D,但是多了4个0方格,应加以阻塞,需要两个阻塞圈。该积项的阻塞圈如图3.3.8中虚线所示,即为 overlineBD 和 overlineAC,为使阻塞圈也包含1重心,不得不阻塞掉1方格 m₁5 。对于阻塞因子 overlineAC,虽然还可以选择两个方格,即为 overlineACD,但考虑和其他积项公用,选取 overlineAC 而不用 overlineACD,得出合并积项 DoverlineBDoverlineAC 。
为了圈最小项 m₂ 和 m₆ ,也要围绕1重心8个方格得积项 C ,并需扣除3个0方格,为使阻塞圈也包含1重心,不得不阻塞掉1方格 m₁4 。阻塞圈与前一积项相同,仍然是 overlineBD 和 overlineAC ,得合并积项 CoverlineBDoverlineAC 。
在圈最小项 m₄ 、 m₁2 和 m₁4 时,围绕 1 重心 8 个方格得积项 B,并需要一个阻塞圈 overlineBD 扣除 3 个 0 方格,得合并积项 BoverlineBD 。
获得上述3个积项后,还剩下最小项 m₁5 没有被包含,则圈 ∑ (14,15) ,得积项 ABC ,全部最小项已被包含,函数的表达式为
r l F (A, B, C, D) & = D overline B D overline A C + C overline B D overline A C + B overline B D + A B C & = overline D · overline B D · overline A C · overline C · overline B D · overline A C · overline B · overline B D · overline A B C根据表达式绘出逻辑图,如图 3.3.9 所示。

设输入只有原变量而无反变量,试用最少的三级与非门实现函数:
F (A, B, C, D) = ∏ M (3, 6, 7, 8, 1 2, 1 5)解
作函数卡诺图,如图 3.3.10 而围绕1重心来圈的积项圈只有一个,即两个重心都包含的圈只有1个,需将所有的方格圈在一起,因此首先必须先圈该积项圈(图 3.3.10中未画出来,以便看清楚),该积项圈的头部因子为1,这时多圈了所有的6个0方格,应加以阻塞,需要3个阻塞圈。该积项的阻塞圈如图 3.3.10中虚线所示,即为 m₀ 而围绕1重心来圈的积项圈只有一个,即两个重心都包含的圈只有1个,需将所有的方格圈在一起,因此首先必须先圈该积项圈(图3.3.10中未画出来,以便看清楚),该积项圈的头部因子为1,这时多圈了所有的6个0方格,应加以阻塞,需要3个阻塞圈。该积项的阻塞圈如图3.3.10中虚线所示,即为 overlineA 、 overlineCD 和 overlineBC,为使阻塞圈也包含1重心,不得不阻塞掉5个1方格 m₉ 、 m₁0 、 m₁1 、 m₁3 、 m₁4,得出合并积项 overlineAoverlineCDoverlineBC,已覆盖5个1方格 m₀ 、 m₁ 、 m₂ 、 m₄ 、 m₅ 。为了圈最小项 m₉ 、 m₁1 、 m₁3,也要围绕1重心4个方格得积项AD,并需扣除1重心的0方格,阻塞圈与前一积项相同,仍然是 overlineBC,得合并积项AD overlineBC 。
在圈最小项 m₁0 和 m₁4 时,围绕 1 重心 4 个方格得积项 AC,需扣除 1 重心的 0 方格,阻塞圈与前一积项相同,仍然是 overlineCD ,得合并积项 ACoverlineCD 。
至此全部最小项已被包含,函数的表达式为
F = overline A overline C D overline B C + A D overline B C + A C overline C D根据表达式绘出逻辑图,如图 3.3.11 所示。


3. 用阻塞法设计三级或非电路
Section titled “3. 用阻塞法设计三级或非电路”用阻塞法设计三级或非电路的过程与三级与非电路是相似的,只是圈0方格,阻塞掉1方格,均绕0重心圈,目的是覆盖全部0格。
阻塞原理如图 3.3.12 所示,则
F (A, B, C, D) = F _ 1 + F _ 2 = C + D + overline A + B + C + D
下面举例说明三级或非电路设计过程。
在输入不提供反变量情况下用三级或非门实现函数:
F (A, B, C, D) = ∑ m (0, 2, 4, 7, 8, 1 0, 1 2, 1 4, 1 5)解
作函数的卡诺图,如图 3.3.13)所示,圈画合并圈和阻塞圈如图 3.3.13(a)所示,圈画合并圈和阻塞圈如图3.3.13(a)所示,则合并项 C+overlineC+D 覆盖最大项 M₁ 、 M₅ 、 M₉ 、 M₁3,合并项 B+overlineB+D 覆盖 M₁ 、 M₃ 、 M₉ 、 M₁1,合并项 A+D+overlineB+D+overlineC+D 覆盖 M₆ 。全部最大项都被覆盖,则得表达式为
r l F (A, B, C, D) & = (C + overline C + D) (B + overline B + D) (A + D + overline B + D + overline C + D) & = overline C + overline C + D + overline B + B + D + overline A + D + overline B + D + overline C + D由表达式绘出三级或非电路的逻辑图,如图 3.3.13(b)所示。

(a)

(b)
图 3.3.13 三级或非卡诺图与逻辑图
3.3.4 组合电路实际设计中的几个问题
Section titled “3.3.4 组合电路实际设计中的几个问题”1. 多输出函数的设计
Section titled “1. 多输出函数的设计”前面所讨论的都是只有一个输出函数的组合电路,实际中常遇到多输出函数的电路,即对应一种输入组合下,有多个函数输出,如编码器、译码器、全加器等。多输出函数电路的设计以单输出函数设计为基础,但目的是达到总体电路的简化,而不是局部简化,所以设计原则为:
尽可能利用公用项,虽然每个函数表达式可能不是最简的,但由于利用公用项,可使总体电路所用的门数减少,电路最简单。
例如,用与非门实现下列多输出函数:
r l & F _ 1 (A, B, C) = ∑ m (0, 2, 3) & F _ 2 (A, B, C) = ∑ m (3, 6, 7) & F _ 3 (A, B, C) = ∑ m (3, 4, 5, 6, 7)先将 F₁ 、 F₂ 、 F₃ 按单输出函数分别进行简化,对应的卡诺图如图 3.3.14 所示,则表达式为

由于在 F₂ 和 F₃ 的卡诺图上,存在相同的圈 ∑ m(3,7) (以连线示出),说明 F₂ 和 F₃ 有公用积项 BC ,即 overlineBC 与非门可为 F₂, F₃ 公用,省去一个与非门,这样在允许双轨入时,同时实现这3个函数共需7个与非门。
现在试着改圈法,找公用项。若将 F₁ 的圈 ∑ m(2,3) 改成孤立的最小项 m₃,另一最小项 m₂ 被圈 ∑ m(0,2) 包含,同时 F₂ 的圈 ∑ m(3,7) 也改成孤立的最小项 m₃,另一最小项 m₇ 包含在圈 ∑ m(6,7) 中,F₃ 的 ∑ m(3,7) 也作同样修改,如图 3.3.15 所示。则 F₁、F₂ 和 F₃ 的两个不同的圈改成一个相同的圈,使总体卡诺图不同的圈数减少一个。由于一个圈对应一个与非门 (单变量除外), 因此总体电路的门数也将减少一个,说明此改法可取。

由图 3.3.15得函数的表达式为
l F _ 1 (A, B, C) = overline A overline C + overline A B C F _ 2 (A, B, C) = A B + overline A B C F _ 3 (A, B, C) = A + overline A B C其逻辑电路图如图 3.3.16 所示,共需 6 个与非门,虽然从单个函数看,电路变复杂了 (因为增加一个输入端), 但总体电路却因减少一个与非门和一个输入端而变得简单。
由此可得多输出函数的设计步骤:
(1) 用卡诺图分别对每个函数进行化简,并用箭头连线表示出所有的公用圈。
(2) 从各个函数相同最小项出发,试图改变原来圈法,以求得更多的公用圈。
原则:若改圈法后能使总圈数减少(指不同圈),则改;若使总圈数增加,则不改;若总圈数不变,则取大的合并圈,使变量输入端减少。这一工作可重复进行多次。注意:单个变量的圈不用修改。
(3) 写出多输出函数的表达式,并绘出逻辑图。
下面再看一个例子。
用与非门实现下列多输出函数。
r l & : F _ 1 (A, B, C, D) = ∑ m (2, 4, 5, 1 0, 1 1, 1 3) & F _ 2 (A, B, C, D) = ∑ m (4, 1 0, 1 1, 1 2, 1 3) & F _ 3 (A, B, C, D) = ∑ m (2, 3, 7, 1 0, 1 1, 1 2) & F _ 4 (A, B, C, D) = ∑ m (0, 1, 4, 5, 8, 9, 1 0, 1 1, 1 2, 1 3)圈画卡诺图如图 3.3.17所示。图中虚线圈所示的3个圈 m₅, m₁2, m₁3 表示将 F₁ 的 ∑ m(5,13) 圈与 F₂ 圈改小的情况,但这种修改,总圈数不变,而合并圈变小,故是不可取的,最后化简结果如图 3.3.17实线圈所示。∑ m(12,13) 圈改小的情况,但这种修改,总圈数不变,而合并圈变小,故是不可取的,最后化简结果如图3.3.17实线圈所示。


由图 3.3.17写出各函数的表达式如下:
F _ 1 (A, B, C, D) = overline A B overline C overline D + A overline B C + overline B C overline D + B overline C DF _ 2 (A, B, C, D) = overline A B overline C overline D + A B overline C + A overline B CF _ 3 (A, B, C, D) = A B overline C overline D + A overline B C + overline B C overline D + overline A C DF _ 4 (A, B, C, D) = overline C + A overline B C其逻辑电路图如图 3.3.18 所示,共需用 11 个逻辑门, 36 个输入端。

多输出电路的设计不仅适用于小规模集成电路,对于大规模集成电路也具有应用价值。
上述介绍的逻辑设计方法是一种传统的、以门电路为基本单元的设计方法,是电路设计的基本方法,在实际设计中还应结合所使用的器件灵活应用。
2. 采用 SSI 芯片时的设计
Section titled “2. 采用 SSI 芯片时的设计”在用 SSI 芯片实现逻辑函数时,由于芯片中封装的逻辑门数及每个门的输入端数是一定的,还须将函数表达式变换成与芯片种类相适应的形式,目的是使所用的芯片数目最少。表 3.3.2 列出了几种常用的 74LS 系列芯片,如 74LS00 有 4 个两输入端与非门,74LS10 有 3 个三输入端与非门。
表 3.3.2 几种 74LS 系列器件
| 型号 | 器件名称 |
| 74LS00 | 二输入端四与非门 |
| 74LS01 | 二输入端四与非门(OC) |
| 74LS02 | 二输入端四或非门 |
| 74LS04 | 六非门 |
| 74LS10 | 三输入端三与非门 |
| 74LS12 | 三输入端三与非门(OC) |
| 74LS27 | 三输入端三或非门 |
| 74LS32 | 二输入端四或门 |
| 74LS386 | 二输入端四异或门 |
试用 74LS00 实现下列函数:
F (A, B, C, D) = ∑ m (2, 3, 6, 7, 8, 9, 1 0, 1 1, 1 2, 1 3)解
由卡诺图得到最简与或式为
F (A, B, C, D) = A overline B + A overline C + overline A C若用两级与非门实现,需要 4 个与非门,但有一个与非门需要 3 个输入端。由于所使用的芯片每门只有两个输入端,对上式作如下变换:
r l F (A, B, C, D) & = A overline B + A overline C + overline A C = A (overline B + overline C) + overline A C = A overline B overline C + overline A C & = overline A · overline B overline C · overline A C其逻辑图如图 3.3.19 所示,用了 4 个二输入与非门,即一片 74LS00。

- 指定门类型的设计(与非、或非、与或非等不同表达式的转换)
如果限定设计必须使用某种类型(例如与或非门)门电路,还必须进行相应的变换。逻辑函数表达式不同形式间的转换,在实际设计数字系统时十分有用,应该熟悉,下面将讨论这方面的内容。
(1) 与或表达式转为与非-与非表达式
在前面两级与非门电路的实现时,已经讲过。只要将最简与或式两次求反,再使用摩根定理,就可得到与非-与非表达式。
将 F(A,B,C,D)=ABoverlineD+AC+AoverlineCD+AD 变为最简与非-与非形式。
解
用卡诺图法将 F 化简为
F (A, B, C, D) = A B + A C + A D再对 F 两次求反,得
F (A, B, C, D) = overline overline F = overline overline A C + B C + C D = overline overline A C · overline overline B C · overline overline C D(2) 或与表达式变换为或非-或非表达式
在前面两级或非门电路的实现时,已经讲过。只要将最简或与式两次求反,再使用摩根定理,就可得到或非-或非表达式。
将函数 F(A,B,C,D)=(overlineA+overlineB)(overlineA+overlineC+D)(A+C)(B+overlineC) 变成或非-或非表达式。
解
求 F 的对偶式 F'(A, B, C, D) = overlineA overlineB + overlineA overlineC D + AC + B overlineC
r l F ^ prime (A, B, C, D) & = overline A overline B + overline A overline C D + A C + B overline C & = overline A overline B + A C + B overline C求 F' 的对偶式,得最简或与式: F(A, B, C, D) = (overlineA + overlineB)(A + C)(B + overlineC)
对 F 两次求反,得
r l F (A, B, C, D) & = overline (overline A + overline B) (A + C) (B + overline C) & = overline overline A + overline B + overline A + C + overline B + overline C(3) 与或表达式变换为与或非表达式
变换方法如下:
① 作卡诺图,用圈 0 的方法先求反函数 overlineF 的最简与或表达式;
② 再对 overlineF 求反,直接可得函数 F 的与或非表达式。
求 F(A,B,C)=overlineAoverlineBoverlineC+AoverlineB+AC+overlineBC 的与或非表达式。
解
在函数的卡诺图中,圈 0 可得其反函数 overlineF 的表达式,如图 3.3.20 所示。
overline F (A, B, C) = overline A B + B overline C再对 overlineF 求反,可得:
F (A, B, C) = overline A B + B overline C(4) 与或表达式变换为或与表达式

在卡诺图上圈 0 格得到最简或与表达式在第 1 章已经讲过。
(5) 与或表达式转为或非-或非表达式
图3.3.20 例3.3.10的卡诺图
先将与或式变为最简或与式,再两次取反,用摩根定理转为或非-或非式。这两步的具体操作见前面(4)和(2)。
下面举例说明这几个实际问题综合在一起的情况。
设输入不提供反变量,试用一片 74LS00 和一片 74LS386(异或门)实现全减器。
解
涉及单轨输入、多输出函数、指定芯片及指定门的问题。
首先做出全减器的真值表,如表3.3.3所示。其中输入变量 Aᵢ 为被减数,Bᵢ 为减数,Cᵢ-1 为低位的借位;输出函数 Dᵢ 是全减器的差,Cᵢ 是向高位借位。得出函数的表达式
r l D _ i (A _ i, B _ i, C _ i - 1) & = overline A _ i B _ i overline C _ i - 1 + overline A _ i overline B _ i C _ i - 1 + A _ i overline B _ i overline C _ i - 1 + A _ i B _ i C _ i - 1 & = overline C _ i - 1 (A _ i overline B _ i + overline A _ i B _ i) + C _ i - 1 (overline A _ i overline B _ i + A _ i B _ i) & = overline C _ i - 1 (A _ i oplus B _ i) + C _ i - 1 (overline A _ i oplus B _ i) & = A _ i oplus B _ i oplus C _ i - 1为了使两个函数公用门,Cᵢ 可变换成
r l C _ i (A _ i, B _ i, C _ i - 1) & = overline A _ i overline B _ i C _ i - 1 + overline A _ i B _ i overline C _ i - 1 + overline A _ i B _ i C _ i - 1 + A _ i B _ i C _ i - 1 & = overline A _ i (overline B _ i C _ i - 1 + B _ i overline C _ i - 1) + B _ i C _ i - 1 & = overline A _ i (B _ i oplus C _ i - 1) + B _ i C _ i - 1其逻辑图如图 3.3.21 所示,使用 4 个与非门、两个异或门,用一片 74LS00 和一片 74LS386 即可。
表 3.3.3 全减器真值表
| Aᵢ | Bᵢ | Cᵢ - 1 | Dᵢ | Cᵢ |
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 0 |
| 1 | 1 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 | 1 |

3.3.5 组合电路设计实例
Section titled “3.3.5 组合电路设计实例”下面通过几个例子来说明如何应用前面介绍的方法设计常用的组合电路,同时了解几个常用组合电路的功能。
用或非门设计一个 8421BCD 码的四舍五入电路。
解
设 8421BCD 码用变量 A、B、C、D 表示,输出用 F 表示,可得真值表如表 3.3.4 所示。
表 3.3.4 四舍五入电路真值表
| A | B | C | D | F |
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 1 | 0 |
| 0 | 0 | 1 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 0 | 1 | 1 | 0 | 1 |
| 0 | 1 | 1 | 1 | 1 |
| 1 | 0 | 0 | 0 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 0 | 1 | 0 | × |
| 1 | 0 | 1 | 1 | × |
| 1 | 1 | 0 | 0 | × |
| 1 | 1 | 0 | 1 | × |
| 1 | 1 | 1 | 0 | × |
| 1 | 1 | 1 | 1 | × |
化简得 F 的最简或与表达式:
F (A, B, C, D) = (A + B) (A + C + D)其电路图如图 3.3.20 所示,可用一片 74LS27(3 个三输入或非门) 实现。
半加器、全加器的设计。
解
① 半加器
半加器是能实现两个1位二进制数相加求得和数及向高位进位的逻辑电路。设被加数、加数用变量 A, B 表示,求得的和、向高位进位用变量 S, C 表示,可得真值表3.3.5。
(a)
(b)

表 3.3.5 半加器真值表
| A | B | S | C |
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
写出输出函数表达式:
l S (A, B) = overline A B + A overline B = A oplus B C (A, B) = A B用异或门及与门实现的电路如图 3.3.23) 所示,图 3.3.23(a) 所示,图 3.3.23(b) 是其逻辑符号。


全加器是实现两个 1 位二进制数及低位来的进位相加(即将 3 个 1 位二进制数相加),求得和数及向高位进位的逻辑电路。
根据全加器的功能,可得真值表 3.3.6,其中 Aᵢ 、 Bᵢ 分别代表第 i 位的被加数、加数,Cᵢ-1 代表低位向本位的进位,Sᵢ 代表本位和,Cᵢ 代表向高位的进位。
表 3.3.6 全加器真值表
| Aᵢ | Bᵢ | Cᵢ-1 | Sᵢ | Cᵢ |
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
化简与变换得出输出和 Sᵢ 与进位 Cᵢ 表达式。
l S _ i (A _ i, B _ i, C _ i - 1) = A _ i oplus B _ i oplus C _ i - 1 C _ i (A _ i, B _ i, C _ i - 1) = (A _ i oplus B _ i) C _ i - 1 + A _ i B _ i用异或门和与或非门实现的逻辑图如图 3.3.24) 所示,图 3.3.24(a) 所示,图 3.3.24(b) 是其逻辑符号。


一个全加器只能实现 1 位二进制加法,若是实现多位二进制相加,需要多个全加器。图 3.3.25 是用 4 个全加器实现两个 4 位数相加的连接图。

用同或门、与非门及或非门设计 1 个 2 位二进制数码比较器。
解
第一步:列真值表。
设比较的两个二进制数为 A = A₁A₀, B = B₁B₀ ,比较的结果有 A > B 、 A = B 、 A < B 3种情况,分别用 F₁, F₂, F₃ 表示。则 A > B, F₁ = 1; A = B, F₂ = 1; A < B, F₃ = 1 ,可作出真值表3.3.7。
表 3.3.7 比较器真值表
| A₁ | A₀ | B₁ | B₀ | F₁ | F₂ | F₃ |
| 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| 0 | 0 | 0 | 1 | 0 | 0 | 1 |
| 0 | 0 | 1 | 0 | 0 | 0 | 1 |
| 0 | 0 | 1 | 1 | 0 | 0 | 1 |
| 0 | 1 | 0 | 0 | 1 | 0 | 0 |
| 0 | 1 | 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 0 | 0 | 1 |
| 0 | 1 | 1 | 1 | 0 | 0 | 1 |
| 1 | 0 | 0 | 0 | 1 | 0 | 0 |
| 1 | 0 | 0 | 1 | 1 | 0 | 0 |
| 1 | 0 | 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 | 0 | 0 |
| 1 | 1 | 0 | 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 0 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 | 0 | 1 | 0 |
第二步:作卡诺图,对函数进行简化,并作相应的变换。
函数的卡诺图如图 3.3.26 所示。因要求用同或门、与非门及或非门实现,由卡诺图化简和变换:

F₁ 表达式意义很明显,即两个数比较,高位大的一定大,式中第一项为 1, 使 F₁=1 ; 若高位相同比低位,低位大的则大,式中第二项为 1, 使 F₁=1 。
对 F₂ 作如下变换:
r l F _ 2 (A _ 1, A _ 0, B _ 1, B _ 0) & = overline A _ 1 overline A _ 0 overline B _ 1 overline B _ 0 + overline A _ 1 A _ 0 overline B _ 1 B _ 0 + A _ 1 overline A _ 0 B _ 1 overline B _ 0 + A _ 1 A _ 0 B _ 1 B _ 0 & = overline A _ 1 overline B _ 1 (overline A _ 0 overline B _ 0 + A _ 0 B _ 0) + A _ 1 B _ 1 (overline A _ 0 overline B _ 0 + A _ 0 dot B _ 0) & = overline A _ 1 overline B _ 1 (A _ 0 odot B _ 0) + A _ 1 B _ 1 (A _ 0 odot B _ 0) & = (A _ 1 odot B _ 1) (A _ 0 odot B _ 0)该式表明,只有两个数的对应位都相同,F₂ 才为1,表示两数相等。
函数 F₃ 的变换和 F₁ 类似,即
r l F _ 3 (A _ 1, A _ 0, B _ 1, B _ 0) & = overline A _ 1 B _ 1 + overline A _ 1 overline A _ 0 overline B _ 1 B _ 0 + A _ 1 overline A _ 0 B _ 1 B _ 0 & = overline A _ 1 B _ 1 + overline A _ 0 B _ 0 (overline A _ 1 overline B _ 1 + A _ 1 B _ 1) & = overline A _ 1 B _ 1 + overline A _ 0 B _ 0 (A _ 1 odot B _ 1)F₃ 说明两数进行比较,高位小的一定小,高位相同时低位小的一定小。
并且由真值表还可看出 3 个输出函数之间的关系:
F _ 2 = overline F _ 1 + F _ 3第三步:作逻辑电路图,如图 3.3.27 所示。

由此例的两位数比较,找出了比较器的规律,可以推广至 N 位数比较。如 4 位二进制数比较的表达式为
r l & F _ 1 (A > B) = A _ 3 overline B _ 3 + A _ 2 overline B _ 2 (A _ 3 odot B _ 3) + A _ 1 overline B _ 1 (A _ 3 odot B _ 3) (A _ 2 odot B _ 2) & + A _ 0 overline B _ 0 (A _ 3 odot B _ 3) (A _ 2 odot B _ 2) (A _ 1 odot B _ 1) & F _ 2 (A = B) = (A _ 3 odot B _ 3) (A _ 2 odot B _ 2) (A _ 1 odot B _ 1) (A _ 0 odot B _ 0) & F _ 3 (A < B) = overline A _ 3 B _ 3 + overline A _ 2 B _ 2 (A _ 3 odot B _ 3) + overline A _ 1 B _ 1 (A _ 3 odot B _ 3) (A _ 2 odot B _ 2) & + overline A _ 0 B _ 0 (A _ 3 odot B _ 3) (A _ 2 odot B _ 2) (A _ 1 odot B _ 1)试用全加器及与非门设计一个 1 位 8421BCD 码加法器。
解
第一步:作真值表。
一位 8421BCD 码由 4 位二进制码构成,所以 1 位 8421BCD 码加法可用 4 个全加器完成。但两个 4 位二进制数相加是“逢十六进一”, 而两个 1 位 BCD 码相加却是“逢十进一”, 两者在进位时相差 6 (即 0110), 又由于 8421BCD 码只用 0000~1001 前 10 种编码表示 0~9 这 10 个数,因此当和数大于 9 (1001) 或向高位有进位时,必须对结果进行修正,加修正项 (即 0110)。如下例所示:
c ctext textcircled1&4&+ 3 arrowhline&7 c c&0 1 0 0&+ 0 0 1 1hline&0 1 1 1因为和为 7<9,所以全加器的结果 0111 与 8421BCD 码一致。
c ctext textcircled2&6&+ 7 arrowhline&1 3 c c&0 1 1 0&+ 0 1 1 1hline&1 1 0 1因为和为 13 > 9,所以结果 1101 与 8421 BCD 码不一致,须加 6 修正。
r l text 即: & 1 1 0 1 & + 0 1 1 0 hline & 1 0 0 1 1现在的结果是“13”的8421BCD码。
c ctext textcircled3&8&+ 9 arrowhline&1 7 c c&1 0 0 0&+ 1 0 0 1hline&1 0 0 0 1因为有进位,所以结果 10001 与 8421BCD 码不一致,须加 6 修正。
即:10001
+ 0110
10111现在的结果是“17”的 8421BCD 码。
现在只需列出加“6”修正电路的真值表即可。其输入是二进制数加法的结果,输出是8421BCD码,如表3.3.8所示,这是一个五变量输入(变量 C_(b) 是二进制加法进位)的5个输出函数的真值表。由于两个用8421BCD码表示的十进制数相加且考虑到低位来的进位时,其和最大为19,故输入变量组合10100~11111不会出现,为任意项。
表 3.3.8 加“6”修正电路真值表
| 十进制数 | 二进制加法结果 | 8421BCD | 说明 | ||||||||
| C_b | S₈ | S₄ | S₂ | S₁ | C | Y₈ | Y₄ | Y₂ | Y₁ | ||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 无须修正 |
| 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | |
| 2 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | |
| 3 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | |
| 4 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | |
| 5 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | |
| 6 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | |
| 7 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | |
| 8 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | |
| 9 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | |
| 10 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 需加0110修正 |
| 11 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | |
| 12 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | |
| 13 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | |
| 14 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | |
| 15 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | |
| 16 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | |
| 17 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | |
| 18 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | |
| 19 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | |
第二步:写出输出函数表达式,并化简。
正规的作法是做出 5 个输出函数的五变量卡诺图,再进行简化,很烦琐。在此通过分析真值表的规律,可简便地得到输出函数表达式。
首先从真值表可见,当输出 C=0 时,无须修正,当 C=1 时,需要修正,所以 C 就是加 “6” 修正的标志,需要先求出 C 的表达式。
由真值表发现,当 C_(b)=1 时, C=1; 当 C_(b)=0 时,C=∑ m(10,11,12,13,14,15),所以
r l C (C _ b, S _ 8, S _ 4, S _ 2, S _ 1) & = C _ b + overline C _ b ∑ m (1 0, 1 1, 1 2, 1 3, 1 4, 1 5) & = C _ b + ∑ m (1 0, 1 1, 1 2, 1 3, 1 4, 1 5) & = C _ b + S _ 8 S _ 4 + S _ 8 S _ 2 arrow text 用卡诺图化简 ∑ m (1 0, 1 1, 1 2, 1 3, 1 4, 1 5)其次,所谓加“6”修正就是将二进制加法结果加上0110即可得到其余4个输出函数,故需要全加器来实现0110与 S₈ 、 S₄ 、 S₂ 、 S₁ 相加。由函数C来控制0110的加入,C=1,加0110(0110中的两个1来自C);C=0,则不加。因为最低位 S₁ 恒加0, S₁ 就是 Y₁ ,无须用全加器,故共需3个全加器,以实现对 S₈ 、 S₄ 、 S₂ 的修正,得到 Y₈ 、 Y₄ 、 Y₂ 。
第三步:绘制逻辑图如图 3.3.28 所示。

1 位 8421BCD 码加法器由 3 部分组成: 第一部分是 4 位全加器,以实现对两个输入的 8421BCD 码及低位来的进位进行二进制加法; 第二部分是用与非门实现输出 C 的电路; 第三部分是加“6”修正电路。
由此例可知,组合电路的设计不一定都采用前面介绍的传统设计方法,应根据具体题目灵活设计,使设计和实现简单,这种方法更适合 MSI 电路。