# 数字电路与系统：综合复习与知识联系

> 本文综合讨论数制与编码、组合逻辑函数、组合逻辑电路设计三章的知识联系，并列出典型分析步骤与综合练习。

## 1. 信息表示、逻辑描述与电路实现

数字电路的分析可分为信息表示、逻辑功能、电路实现和时序特性四个层次。

| 层次 | 研究内容 | 主要方法 | 必须说明的前提 |
| --- | --- | --- | --- |
| 表示 | 位串的数值与编码含义 | 位权、字长、补码、BCD、格雷码、校验码 | 符号约定、编码方式与字长 |
| 功能 | 输入与输出的逻辑关系 | 真值表、逻辑表达式、卡诺图 | 变量顺序、有效电平与允许输入 |
| 实现 | 逻辑功能的器件实现 | 门电路、加法器、比较器、译码器、MUX | 使能条件、输出极性、电平兼容与驱动能力 |
| 时序 | 输入变化过程中的输出行为 | 路径延迟、险象分析、选通 | 输入变化条件与采样时刻 |

同样的位串 `1001` 可以表示自然二进制无符号数 9、4 位补码数 -7、8421 BCD 的十进制数字 9，也可以是格雷码。**位串的数值解释以指定的编码规则为前提。**

## 2. 分析前提与符号约定

分析问题前，应明确以下条件：

1. **字长与范围**：n 位无符号数范围为 $0\sim2^n-1$；n 位整数补码范围为 $-2^{n-1}\sim2^{n-1}-1$。
2. **变量位序**：例如 $F(A,B,C)$ 默认 A 为索引的最高位，$m_5$ 对应 ABC=101。
3. **逻辑符号**：`+` 是逻辑或还是算术加法？逻辑式里的 $1+1=1$，算术里是 2。
4. **有效极性**：输出为 0 是“未选中”还是“被选中”？74138 的选中输出为低电平。
5. **题目模型**：是理想稳态逻辑，还是要分析实际传播延迟？

上述条件共同限定问题的含义；若前提不明确，计算结果可能与设计要求不符。

## 3. 补码表示与加减电路的联系

### 3.1 利用补码实现减法

n 位补码在模 $2^n$ 的位模式上进行运算：

$$A-B\equiv A+(2^n-B)\pmod{2^n}.$$

因此只需一个加法器和可控取反电路，就能构成加减单元。设模式 $M=0$ 为加，$M=1$ 为减：

$$B_i'=B_i\oplus M,\qquad C_0=M.$$

加法器计算：

$$S=A+(B\oplus\{n\{M\}\})+M\pmod{2^n}.$$

式中的花括号表示将 M 扩展至 n 位，再与 B 按位异或。

- M=0：B 不变，最低进位为 0，得到 A+B。
- M=1：B 按位取反，最低进位为 1，得到 A+反 B+1，即 A-B。

### 3.2 进位与有符号溢出的区别

进位讨论的是无符号位权；补码溢出讨论的是有符号结果能否用当前字长表示。

8 位例子：

| 运算 | 位模式计算 | 最终进位 | 有符号溢出 | 解释 |
| --- | --- | --- | --- | --- |
| 90+70 | 01011010+01000110=10100000 | 0 | 1 | 数学结果160超过127，位模式被解释为-96 |
| -1+1 | 11111111+00000001=1 00000000 | 1 | 0 | 结果为0，完全可表示 |

补码加法的溢出条件：

$$V=\overline{A_s\oplus B_s}\,(A_s\oplus S_s)=C_{n-1}\oplus C_n.$$

其中 $C_{n-1}$ 是进入符号位的进位，$C_n$ 是离开符号位的进位。

补码减法的条件：

$$V=(A_s\oplus B_s)(A_s\oplus S_s).$$

最终进位与结果符号位的简单比较不能作为通用的溢出判据。

## 4. BCD 编码与十进制加法修正

8421 BCD 用四位表示一个十进制数字，但四位二进制加法器按逢 16 进位。二者的进位规则不同。

对一个十进制位，首先计算：

$$T=A+B+C_{in},\quad 0\le A,B\le9,\quad C_{in}\in\{0,1\}.$$

设二进制加法器输出为 $C_4 S_3S_2S_1S_0$。是否需要十进制修正：

$$K=C_4+S_3S_2+S_3S_1.$$

当 K=1 时，对低四位加 0110 进行修正。四位二进制与一位十进制的进位基数分别为16和10，两者相差6，因此修正常数为6。

例：8+7+1=16。第一次结果为 `1 0000`，K=1，低四位 `0000+0110=0110`，十进制进位为1，输出BCD `0001 0110`，即十进制16。

注意：**十进制进位是 K。** 不能只取第二个修正加法器的进位；上例第二级没有进位，但仍然需要向十位送1。

非法输入1010至1111是否可作为无关项，必须看系统是否保证它们不会出现。若要报告输入错误，就不能把它们随意当 X。

## 5. 逻辑函数与不同实现结构的联系

使用三输入多数表决函数作统一例子。至少两个输入为1时输出1：

$$F(A,B,C)=AB+AC+BC=\Sigma m(3,5,6,7).$$

### 5.1 从真值表获得标准式

| A | B | C | m编号 | F |
| --- | --- | --- | --- | --- |
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 2 | 0 |
| 0 | 1 | 1 | 3 | 1 |
| 1 | 0 | 0 | 4 | 0 |
| 1 | 0 | 1 | 5 | 1 |
| 1 | 1 | 0 | 6 | 1 |
| 1 | 1 | 1 | 7 | 1 |

标准与或式为：

$$F=\bar A BC+A\bar BC+AB\bar C+ABC.$$

在卡诺图中，利用允许重叠的二格圈可得 AB、AC、BC。有效覆盖应包含全部规定1，且不包含任何规定0。

### 5.2 用基本门实现

三个二输入与门分别得到 AB、AC、BC，再用或门合并。若限制只能用 NAND 门，可用德摩根定律：

$$F=\overline{\overline{AB}\cdot\overline{AC}\cdot\overline{BC}}.$$

由三个二输入 NAND 和一个三输入 NAND 实现；要区分逻辑级数、输入数量和具体芯片内门的数量。

### 5.3 用74138实现

把 A、B、C 按最高到最低位分别接 A2、A1、A0，并满足芯片使能条件。74138 的输出是低有效：

$$\bar Y_i=\overline{m_i}\quad\text{（芯片已使能时）}.$$

所以把低有效的第3、5、6、7路接 NAND：

$$F=\overline{\bar Y_3\bar Y_5\bar Y_6\bar Y_7}=m_3+m_5+m_6+m_7.$$

若直接接普通 OR 门，则不能得到所需函数。部分电路图以 Y3 命名低有效引脚，并用小圆圈标明取反；因此应结合逻辑符号和功能表判断输出极性。

### 5.4 用4选1MUX实现

选择 A、B 作为地址，把剩余变量 C 留在数据端。逐个固定地址：

| AB | 原函数剩余形式 | 数据端 |
| --- | --- | --- |
| 00 | 0 | D0=0 |
| 01 | C | D1=C |
| 10 | C | D2=C |
| 11 | 1 | D3=1 |

相应的功能分解式为：$F=\bar A\bar B D_0+\bar AB D_1+A\bar B D_2+AB D_3$。每个数据端对应地址固定后的子函数，不能把 D0 至 D3 当成4个待求的任意常量。

### 5.5 实现结构的选择依据

- 输入变量少、函数简单：直接用门可能最直观。
- 同时有多个输出、需要许多最小项：译码器可能易于共享。
- 固定地址后剩余子函数简单：MUX 可能节省额外逻辑。
- 还需考虑使能、有效极性、负载、封装内资源和路径延迟。

代数最简式不一定对应给定器件条件下的最少资源，也不能保证异步输入变化过程中不存在险象。

## 6. 格雷码、卡诺图与险象之间的关系

格雷码、卡诺图与静态逻辑险象均涉及单比特变化，但各自的研究对象不同：

| 场景 | 只改变一位的意义 |
| --- | --- |
| 反射格雷码 | 相邻码字汉明距离为1，能降低相邻状态转移的多位不同时变风险 |
| 卡诺图 | 行列按00、01、11、10排列，让几何相邻对应只差一个变量 |
| 静态逻辑险象 | 在单输入变化、不同路径存在延迟的条件下，稳态本应不变却短暂翻转 |

格雷码不意味着任何两码字都只差一位，也不意味着真实编码传感器完全不需要同步、去抖和采样设计。

例：$F=AB+\bar A C$。当 B=C=1 时，稳态 F 恒为1。若 A 改变，两条路径可能一条先关闭、另一条尚未打开，短暂输出0。

加入共识项：

$$F'=AB+\bar AC+BC.$$

逻辑上 F'=F；物理上在 B=C=1 时 BC 保持导通，为单输入 A 的切换提供连续覆盖。这说明逻辑等价的表达式，其门级实现的动态行为可以不同。

此方法针对适当实现中的静态逻辑险象；多输入同时变化产生的功能险象不一定能靠添加冗余项消除，应结合输入编码、选通或采样时序处理。

## 7. 分析与设计步骤

### 数制或编码题

明确编码 → 明确字长与符号 → 转换/运算 → 数值反算 → 检查范围和误差。

### 函数题

定义变量 → 固定位序 → 列真值表 → 写标准式 → 化简 → 用真值表核对等价。

### 电路设计题

文字需求 → 输入输出与极性 → 模块分解 → 芯片功能表 → 接线 → 穷举或代表性验证 → 延迟与电气检查。

### 险象题

先确定实现表达式或电路 → 指定哪些输入变化 → 比较初末稳定输出 → 检查路径/覆盖 → 区分逻辑与功能险象 → 选择对应措施。

## 8. 综合练习

1. 把十进制13.625转换成二进制和十六进制，并反算验证。
2. `1001` 为什么不能在没有说明时直接读作9？至少列出两种数值解释。
3. 8位补码90+70有无进位和溢出？分别说明。
4. 8位补码-1+1为什么出现进位却不溢出？
5. 8+7+1的BCD结果是什么？为什么第二级修正加法器的进位不能独立代表十进制进位？
6. 写出多数表决函数的最小项编号和最大项编号。
7. 用4选1MUX实现多数表决函数，A、B作地址，各数据端接什么？
8. 用低有效译码器实现上述函数，应合并哪些输出、用什么门？
9. 卡诺图相邻两格对应000和010，为什么不是必须“二进制数相差1”？
10. 无关项的设置需要满足哪些系统前提？
11. $AB+\bar AC$ 在什么条件下可能出现静态1险象？写出共识项。
12. 一个门的高电平输出保证值为2.7V，下一级高电平最低要求为3.0V，仅从高电平条件看能否保证可靠连接？

## 9. 参考解析

1. $13=8+4+1$，$0.625=1/2+1/8$，所以 $(13.625)_{10}=(1101.101)_2=(D.A)_{16}$。十六进制小数A代表10个1/16，即0.625。
2. 无符号自然二进制是9；4位补码是-7。若是BCD，其含义是单个十进制数字9。含义由编码规则决定。
3. 数学结果160超过8位补码上限127。结果位模式10100000，有符号解释为-96；C=0，V=1。
4. 11111111+00000001=1 00000000，保留8位是0。真实结果0在范围内，所以C=1而V=0。
5. BCD为0001 0110。首次二进制加法已有C4=1；低四位0000加0110不产生新进位，但十进制仍需向十位进1，所以十进制进位取K。
6. $F=\Sigma m(3,5,6,7)=\Pi M(0,1,2,4)$，变量顺序为ABC且A为最高位。
7. D0=0、D1=C、D2=C、D3=1。
8. 已使能且地址位序正确时，用 NAND 合并低有效的第3、5、6、7路。
9. 卡诺图相邻要求汉明距离为1，即只有一个变量不同。000和010只差中间一位，数值相差2不影响逻辑相邻。
10. X表示在所设计系统的允许输入条件下不要求指定输出，可以作为0或1帮助化简。如果该输入可能发生且系统对其输出有要求，就不能当X。
11. B=C=1且A变化，可能因两路径延迟而短暂降为0。加入BC；在适当两级与或实现及单输入变化条件下形成连续覆盖。
12. 不能保证。$NM_H=V_{OH(min)}-V_{IH(min)}=2.7-3.0=-0.3V$，不满足可靠逻辑高的保证条件，还应检查低电平与驱动电流等条件。

## 10. 参考资料索引

- 数制、补码、编码：第一章90页课件，对应笔记中的原PDF页段索引。
- 函数表达、化简、卡诺图：第二章140页课件，对应笔记中的原PDF页段索引。
- 模块实现、电气与险象：第三章151页课件，对应笔记中的原PDF页段索引。
- 本文跨章例题是补充教学例子；各章文件保留更细的来源页码和针对课件简略表述的辨析。

综合分析应能够明确输入位串的含义，建立完整的逻辑关系，选择适当的实现结构，并说明结果的适用条件与限制。
