# 数字电路学习笔记(第1-3章)
> 学习教材:《Digital Design》(Mano 6th Edition) / 《数字电子技术基础》(阎石 第五版)
> 学习时间:2026年6月-7月
> 学习方式:苏格拉底式对话教学
---
## 第一章:数字系统与二进制数
### 1.1 数字系统基础
**核心概念**
- **离散信息 vs 连续信息**:数字系统处理离散的、跳变的信号
- **二进制表示**:0和1对应低电平(LOW)和高电平(HIGH)
- **为什么用二进制**:
- 物理实现简单(晶体管作为开关:导通/截止)
- 抗干扰能力强(只需区分两个状态)
- 可靠性高
**类比理解**
- 光开关(开/关)vs 调光器(连续调节)
- 划痕的CD仍能播放,划痕的黑胶唱片会有噪音
---
### 1.2 二进制数系统
**位置记数法**
- 二进制:基数为2,每个位置代表2的幂次
- 公式:(aₙaₙ₋₁...a₁a₀)₂ = aₙ×2ⁿ + aₙ₋₁×2ⁿ⁻¹ + ... + a₁×2¹ + a₀×2⁰
**示例**
- (1011)₂ = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8 + 0 + 2 + 1 = 11₁₀
- (26)₁₀ → 26÷2=13余0, 13÷2=6余1, 6÷2=3余0, 3÷2=1余1, 1÷2=0余1 → (11010)₂
**关键要点**
- 最右边的位是2⁰ = 1(权重最小)
- 转换时注意使用下标标记进制:(101)₂ ≠ (101)₁₀
---
### 1.3 数制转换
**快速转换技巧**
**二进制 ↔ 八进制**
- 3个二进制位 = 1个八进制位(因为8 = 2³)
- 示例:(11010110)₂ = (011)(010)(110)₂ = (326)₈
**二进制 ↔ 十六进制**
- 4个二进制位 = 1个十六进制位(因为16 = 2⁴)
- 示例:(10110101)₂ = (1011)(0101)₂ = (B5)₁₆
- 十六进制使用:0-9, A(10), B(11), C(12), D(13), E(14), F(15)
**小数转换**
- 整数部分:除以基数取余数(从下往上读)
- 小数部分:乘以基数取整数(从上往下读)
- 示例:(0.625)₁₀ → 0.625×2=1.25(取1), 0.25×2=0.5(取0), 0.5×2=1.0(取1) → (0.101)₂
---
### 1.4 补码运算
**1's补码(反码)**
- 方法:所有位取反(0→1, 1→0)
- 示例:(1011)₂ 的反码 = (0100)₂
**2's补码(补码)**
- 方法:1's补码 + 1
- 示例:(1011)₂ 的补码 = (0100)₂ + 1 = (0101)₂
**为什么用2's补码**
- 可以用**加法器实现减法**:A - B = A + (2's补码 of B)
- 只有**一个零**(1's补码有+0和-0两种表示)
- 硬件实现最简单
**补码减法示例**
```
计算 9 - 4(4位二进制):
9 = (1001)₂
4 = (0100)₂ → 2's补码 = (1011)₂ + 1 = (1100)₂
1001
+ 1100
------
10101 ← 舍弃最高位进位
= 0101 = 5₁₀ ✓
```
---
### 1.5 带符号二进制数
**2's补码表示法(工业标准)**
- 最高位(MSB)是符号位:0=正数,1=负数
- n位补码表示范围:-2ⁿ⁻¹ 到 2ⁿ⁻¹ - 1
- 4位补码范围:-8 到 +7
- 8位补码范围:-128 到 +127
**表示负数**
- 方法:取正数的2's补码
- 示例:-5(8位)= 2's补码(00000101) = (11111011)₂
**溢出检测**
- 两个正数相加得到负数 → 溢出
- 两个负数相加得到正数 → 溢出
- 正数+负数 → 不会溢出
---
### 1.6 二进制编码
**BCD码(Binary Coded Decimal)**
- 用4位二进制表示一位十进制数字
- 示例:(359)₁₀ = (0011 0101 1001)BCD
- 应用:计算器、数字钟表(便于显示)
- 注意:1010-1111(10-15)在BCD中不使用
**格雷码(Gray Code)**
- 相邻两个数只有1位不同
- 序列:000 → 001 → 011 → 010 → 110 → 111 → 101 → 100
- 应用:旋转编码器、减少切换错误
**ASCII码**
- 7位字符编码(通常扩展为8位)
- 'A' = 65₁₀ = (01000001)₂
- '0' = 48₁₀ = (00110000)₂
- 字母和数字编码不同
**奇偶校验位**
- 偶校验:使1的个数为偶数
- 奇校验:使1的个数为奇数
- 示例:数据1011010,偶校验位=1(使总共4个1,偶数)
---
### 1.7 存储与寄存器
**基本单位**
- 1 bit = 一个二进制位
- 1 nibble = 4 bits
- 1 byte = 8 bits
- 1 word = 取决于系统(通常16/32/64位)
**存储容量**
- 1 KB = 2¹⁰ bytes = 1,024 bytes(不是1000!)
- 1 MB = 2²⁰ bytes ≈ 100万字节
- 1 GB = 2³⁰ bytes ≈ 10亿字节
---
## 第二章:布尔代数与逻辑门
### 2.1 布尔代数基础
**基本运算**
- **AND(与)**:A·B 或 AB,全1才1
- **OR(或)**:A+B,有1就1
- **NOT(非)**:A' 或 Ā,取反
**基本公理**
```
恒等律:A·1 = A, A+0 = A
零律: A·0 = 0, A+1 = 1
幂等律:A·A = A, A+A = A
互补律:A·A' = 0, A+A' = 1
```
**重要定理**
```
吸收律:A + AB = A
A + A'B = A + B
德摩根定理:
(A·B)' = A' + B' (与非 = 或)
(A+B)' = A'·B' (或非 = 与)
```
---
### 2.2 布尔函数表示
**真值表**
- 列出所有输入组合及对应输出
- n个变量 → 2ⁿ行
**示例:两输入异或(XOR)**
| A | B | F |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
---
### 2.3 标准形式
**最小项(Minterm)与SOP(积之和)**
- 找输出为**1**的行
- 每行写一个乘积项:输入为1写原变量,为0写反变量
- 所有乘积项相加
**示例**
```
真值表:
A B | F
0 0 | 0
0 1 | 1 ← A'B
1 0 | 1 ← AB'
1 1 | 0
SOP表达式:F = A'B + AB'(这就是XOR)
符号表示:F = Σm(1, 3)
```
**最大项(Maxterm)与POS(和之积)**
- 找输出为**0**的行
- 每行写一个求和项:输入为0写原变量,为1写反变量
- 所有求和项相乘
---
### 2.4 逻辑门
**基本门**
- **AND门**:所有输入为1时输出1
- **OR门**:任一输入为1时输出1
- **NOT门(反相器)**:输出与输入相反
**通用门**
- **NAND门(与非)**:AND的输出取反
- **NOR门(或非)**:OR的输出取反
- **为什么叫"通用门"**:可以单独用NAND或NOR实现任何逻辑函数
**常用门**
- **XOR(异或)**:A⊕B = A'B + AB'(两输入**不同**时输出1)
- **XNOR(同或)**:A⊙B = A'B' + AB(两输入**相同**时输出1)
**记忆技巧**
```
XOR = 排斥相同 = 不同才是1
0⊕0=0, 0⊕1=1, 1⊕0=1, 1⊕1=0
XNOR = 欢迎相同 = 相同才是1
0⊙0=1, 0⊙1=0, 1⊙0=0, 1⊙1=1
```
---
### 2.5 CMOS技术
**CMOS = Complementary Metal-Oxide-Semiconductor(互补金属氧化物半导体)**
**两种晶体管**
- **NMOS**:输入为1时导通,输入为0时断开(下拉网络,接地GND)
- **PMOS**:输入为0时导通,输入为1时断开(上拉网络,接VDD)
- 关键:行为**互补**
**CMOS NOT门**
```
VDD (电源)
|
PMOS ← A
|
├─→ 输出
|
NMOS ← A
|
GND (地)
A=0: PMOS导通, NMOS断开 → 输出接VDD → 输出=1
A=1: PMOS断开, NMOS导通 → 输出接GND → 输出=0
```
**CMOS优点**
1. **超低静态功耗**:稳定时PMOS和NMOS不会同时导通,无直通电流
2. **高集成度**:一颗芯片可容纳几十亿晶体管
3. **抗干扰强**:噪声容限好
**为什么NAND是基础门**
- NAND门 = 4个晶体管(2 PMOS + 2 NMOS)
- AND门 = NAND + NOT = 6个晶体管
- NAND更简单、更快、更省电
---
### 2.6 集成电路发展
| 类型 | 全称 | 门数量 | 例子 |
|------|------|--------|------|
| SSI | Small Scale Integration | < 12个门 | 7400系列逻辑门芯片 |
| MSI | Medium Scale Integration | 12-100个门 | 加法器、计数器 |
| LSI | Large Scale Integration | 100-10,000个门 | 简单微处理器 |
| VLSI | Very Large Scale Integration | > 10,000个门 | 现代CPU(几十亿晶体管) |
**摩尔定律**:每18-24个月,芯片上的晶体管数量翻一番
---
## 第三章:门级最小化(卡诺图)
### 3.1 为什么需要卡诺图
**问题**
- 用代数方法化简布尔表达式需要记忆大量定理
- 不直观,容易出错
- 难以判断是否已经最简
**卡诺图的价值**
- 把抽象的代数推导变成**"看图圈圈"**的直观操作
- 机械化的最小化流程
- 保证得到最简结果
---
### 3.2 卡诺图核心原理
**化简规则**
> **圈相邻的1,消掉"变化"的变量,保留"不变"的变量**
**保留变量的规则**
- 该变量在圈内恒为**1** → 写原变量(如A)
- 该变量在圈内恒为**0** → 写反变量(如A')
- 该变量在圈内有0有1 → 不写(被消掉了)
**圈的大小与化简效果**
- 圈2个格子 → 消掉1个变量
- 圈4个格子 → 消掉2个变量
- 圈8个格子 → 消掉3个变量
- **能圈大就别圈小**
---
### 3.3 格雷码排列
**为什么不按正常二进制排列?**
- 正常二进制:00 → 01 → 10 → 11(从01到10变了两位)
- 格雷码:00 → 01 → 11 → 10(相邻只变一位)
**格雷码保证了逻辑相邻**
- 只有**一个变量不同**的格子才能圈在一起
- 物理相邻 = 逻辑相邻
**三变量卡诺图**
```
BC
A 00 01 11 10 ← 注意是格雷码排列
┌───┬───┬───┬───┐
0 │ 0 │ 1 │ 3 │ 2 │
├───┼───┼───┼───┤
1 │ 4 │ 5 │ 7 │ 6 │
└───┴───┴───┴───┘
```
---
### 3.4 卷绕相邻(关键概念)
**卡诺图是首尾相连的**
- 最左列和最右列相邻
- 最上行和最下行相邻
- 把卡诺图想象成一个**圆柱体**(左右卷起来)或**圆环面**(上下左右都卷起来)
**示例:三变量卷绕**
```
BC
A 00 01 11 10
┌───┬───┬───┬───┐
0 │ 1 │ 0 │ 0 │ 1 │ ← 最左和最右相邻
├───┼───┼───┼───┤
1 │ 1 │ 0 │ 0 │ 1 │ ← 可以圈成一个大圈
└───┴───┴───┴───┘
这四个1可以圈成一个大圈:
A=0,BC=00 和 A=0,BC=10 和 A=1,BC=00 和 A=1,BC=10
观察:A变化(消掉),B=0(不变),C变化(消掉)
结果:F = B'
```
**易错点**
- 忘记卷绕会导致圈成多个小圈,无法达到最简
---
### 3.5 四变量卡诺图
**结构**
```
CD
AB 00 01 11 10
┌────┬───┬───┬───┐
00 │ m0 │m1 │m3 │m2 │
├────┼───┼───┼───┤
01 │ m4 │m5 │m7 │m6 │
├────┼───┼───┼───┤
11 │m12 │m13│m15│m14│
├────┼───┼───┼───┤
10 │ m8 │m9 │m11│m10│
└────┴───┴───┴───┘
```
**相邻规则**
- 行标和列标都是格雷码:00 → 01 → 11 → 10
- **左右边界相邻**:CD=00列 和 CD=10列
- **上下边界相邻**:AB=00行 和 AB=10行
- **四个角不相邻**(会变两个bit)
**判断相邻的方法**
写出两个格子的完整坐标(ABCD),检查是否**只有1个bit不同**
---
### 3.6 卡诺图化简步骤
**标准流程**
1. 根据函数定义在卡诺图中填1
2. 找出所有的1,优先圈最大的圈(8格 > 4格 > 2格)
3. 每个1至少被一个圈覆盖
4. 圈可以重叠
5. 每个圈写出对应的乘积项
6. 所有乘积项相加得到最简SOP表达式
**化简实例**
```
F(A,B,C,D) = Σm(1, 3, 4, 6, 9, 11, 12, 14)
CD
AB 00 01 11 10
┌────┬───┬───┬───┐
00 │ │ 1 │ 1 │ │ m1, m3
├────┼───┼───┼───┤
01 │ 1 │ │ │ 1 │ m4, m6
├────┼───┼───┼───┤
11 │ 1 │ │ │ 1 │ m12, m14
├────┼───┼───┼───┤
10 │ │ 1 │ 1 │ │ m9, m11
└────┴───┴───┴───┘
圈1:m1,m3,m9,m11(上下卷绕,4格)
B=0,D=1 → B'D
圈2:m4,m6,m12,m14(左右两列,可合并)
B=1,D=0 → BD'
最简结果:F = B'D + BD'
(这就是 XOR 函数:B⊕D)
```
---
### 3.7 无关项(Don't Care Conditions)
**什么是无关项**
- 某些输入组合**永远不会出现**,或者**输出无关紧要**
- 在卡诺图中用 **X** 标记
- 可以**自由选择**把X当成0或1
**核心策略**
> **哪个X能帮你扩大圈,就把它当成1;用不上的X就当成0忽略**
**典型应用:BCD码**
- BCD用4位表示0-9,所以1010-1111(10-15)永远不会出现
- 这6个位置都是无关项
**示例:BCD大于5检测器**
```
要求:输入BCD码,当值>5时输出1
必须为1:m6,m7,m8,m9(代表6,7,8,9)
无关项:m10,m11,m12,m13,m14,m15
CD
AB 00 01 11 10
┌────┬───┬───┬───┐
00 │ 0 │ 0 │ 0 │ 0 │
├────┼───┼───┼───┤
01 │ 0 │ 0 │ 1 │ 1 │ m6,m7
├────┼───┼───┼───┤
11 │ X │ X │ X │ X │ m12-m15(无关项)
├────┼───┼───┼───┤
10 │ 1 │ 1 │ X │ X │ m8,m9,m10,m11
└────┴───┴───┴───┘
圈1:m6,m7,m14,m15(利用m14,m15扩大圈)
→ BC
圈2:m8,m9,m10,m11(利用m10,m11扩大圈)
→ AB'
最简结果:F = BC + AB'
```
**无关项的价值**
- 不用无关项:可能需要更多圈,表达式更复杂
- 利用无关项:圈更大,表达式更简洁
- **不是所有X都要当成1**,只选择有用的
---
## 学习总结
### 已掌握的核心技能
✅ **第一章**
- 二进制、八进制、十六进制之间的转换
- 2's补码运算和带符号数表示
- 各种二进制编码(BCD、格雷码、ASCII)
- 理解为什么计算机使用二进制
✅ **第二章**
- 布尔代数定理和化简技巧
- 真值表、SOP/POS表达式的相互转换
- 逻辑门的功能和符号
- CMOS电路的工作原理
- XOR和XNOR的区别
✅ **第三章**
- 卡诺图的画法和化简规则
- 格雷码排列的原理
- 卷绕相邻的识别和应用
- 四变量卡诺图的完整化简流程
- 无关项的利用技巧
### 下一步学习方向
📚 **第三章剩余内容**
- POS形式的卡诺图化简
- 五变量卡诺图
- 奎因-麦克拉斯基方法(代数化简法)
📚 **第四章预告:组合逻辑电路**
- 加法器、减法器设计
- 编码器、译码器
- 多路复用器、多路分解器
- 组合电路的系统设计方法
---
## 学习心得
这三章的学习让我理解了:
1. **数字电路的物理基础**:为什么用二进制、补码如何让硬件更简单
2. **抽象层次的力量**:从晶体管 → 逻辑门 → 布尔代数 → 卡诺图,每一层都在简化问题
3. **工程思维**:不仅要"能做",还要"做得简单"——最少的门、最短的延迟、最低的功耗
最大的收获是**卡诺图**:把抽象的布尔代数变成了直观的图形操作,这种"可视化简化"的思想在工程中非常重要。
---
> 学习笔记整理于 2026年7月
> 继续努力,向第四章进发!💪
评论 (0)