---
title: 数字电路笔记
date: 2025-01-20 15:00:00
descriptionHTML: '纯情男大自用数字电路基础笔记'
tags:
- 笔记
- 数字电路
sidebar: true
readingTime: true
hidden: false
recommend: true
---
# 数字电路笔记
## 资料下载
#### Markdown源码版本
- **文件名**:数字电路基础.md
- **下载链接**:[点击下载源码版本](https://github.com/handsomezhuzhu/other_note/raw/main/数字电路/数字电路基础.md)
#### PDF版本
- **文件名**:数字电路基础.pdf
- **下载链接**:[点击下载PDF版本](https://github.com/handsomezhuzhu/other_note/raw/main/数字电路/数字电路基础.pdf)
## 完整笔记
## 一、逻辑代数定律和计算规则
| 定律/规则名称 | 表达式 | 解释 |
| --------- | ----------------------------------------------------------------------------------- | ------------------- |
| 恒等律 | $A + 0 = A$
$A \cdot 1 = A$ | 任何变量与0相加或与1相乘等于自身 |
| 零律 | $A + 1 = 1$
$A \cdot 0 = 0$ | 任何变量与1相加或与0相乘等于1或0 |
| 幂等律 | $A + A = A$
$A \cdot A = A$ | 任何变量与自身相加或相乘等于自身 |
| 互补律 | $A + \overline{A} = 1$
$A \cdot \overline{A} = 0$ | 任何变量与其补码相加等于1,相乘等于0 |
| **交换律** | | |
| 加法交换律 | $A + B = B + A$ | 加法运算的交换律 |
| 乘法交换律 | $A \cdot B = B \cdot A$ | 乘法运算的交换律 |
| **结合律** | | |
| 加法结合律 | $(A + B) + C = A + (B + C)$ | 加法运算的结合律 |
| 乘法结合律 | $(A \cdot B) \cdot C = A \cdot (B \cdot C)$ | 乘法运算的结合律 |
| **分配律** | | |
| 乘法分配律 | $A \cdot (B + C) = A \cdot B + A \cdot C$ | 乘法对加法的分配律 |
| 加法分配律 | $A + (B \cdot C) = (A + B) \cdot (A + C)$ | 加法对乘法的分配律 |
| **吸收律** | | |
| 吸收律1 | $A + A \cdot B = A$ | 吸收律的第一种形式 |
| 吸收律2 | $A \cdot (A + B) = A$ | 吸收律的第二种形式 |
| **德摩根定律** | | |
| 德摩根定律1 | $\overline{A + B} = \overline{A} \cdot \overline{B}$ | 逻辑加法的德摩根定律 |
| 德摩根定律2 | $\overline{A \cdot B} = \overline{A} + \overline{B}$ | 逻辑乘法的德摩根定律 |
| **简化定律** | | |
| 简化定律1 | $A + \overline{A} \cdot B = A + B$ | 简化逻辑表达式 |
| 简化定律2 | $A \cdot (\overline{A} + B) = A \cdot B$ | 简化逻辑表达式 |
| **共识定律** | | |
| 共识定律 (积之和形式) | $AB + \overline{A}C + BC = AB + \overline{A}C$ | 较难,常用于逻辑化简。项 `BC` 是 `AB` 和 `A`C 的共识项,是冗余的。 |
| 共识定律 (和之积形式) | $(A+B)(\overline{A}+C)(B+C) = (A+B)(\overline{A}+C)$ | 较难,常用于逻辑化简。项 `(B+C)` 是 `(A+B)` 和 `(A`+C) 的共识项,是冗余的。|
| **反演定律** | | |
| 反演定律 | $A = \overline{\overline{A}}$ | 变量的双重否定等于自身 |
### 推导过程
1. **基本定律**
- **恒等律**:$A + 0 = A$ 和 $A \cdot 1 = A$ 是逻辑代数的基本定义。
- **零律**:$A + 1 = 1$ 和 $A \cdot 0 = 0$ 也是逻辑代数的基本定义。
- **幂等律**:$A + A = A$ 和 $A \cdot A = A$ 是因为逻辑加法和乘法运算的特性。
- **互补律**:$A + \overline{A} = 1$ 和 $A \cdot \overline{A} = 0$ 是逻辑变量和其补码的定义。
2. **交换律**
- **加法交换律**:$A + B = B + A$ 是逻辑加法的交换特性。
- **乘法交换律**:$A \cdot B = B \cdot A$ 是逻辑乘法的交换特性。
3. **结合律**
- **加法结合律**:$(A + B) + C = A + (B + C)$ 是逻辑加法的结合特性。
- **乘法结合律**:$(A \cdot B) \cdot C = A \cdot (B \cdot C)$ 是逻辑乘法的结合特性。
4. **分配律**
- **乘法分配律**:$A \cdot (B + C) = A \cdot B + A \cdot C$ 是逻辑乘法对加法的分配特性。
- **加法分配律**:$A + (B \cdot C) = (A + B) \cdot (A + C)$ 是逻辑加法对乘法的分配特性。
5. **吸收律**
- **吸收律1**:$A + A \cdot B = A$ 可以从 $A + A \cdot B = A \cdot (1 + B) = A \cdot 1 = A$ 推导得出。
- **吸收律2**:$A \cdot (A + B) = A$ 可以从 $A \cdot (A + B) = A \cdot A + A \cdot B = A + A \cdot B = A$ 推导得出。
6. **德摩根定律**
- **德摩根定律1**:$\overline{A + B} = \overline{A} \cdot \overline{B}$ 是逻辑加法的德摩根定律。
- **德摩根定律2**:$\overline{A \cdot B} = \overline{A} + \overline{B}$ 是逻辑乘法的德摩根定律。
7. **简化定律**
- **简化定律1**:$A + \overline{A} \cdot B = A + B$ 可以从 $A + \overline{A} \cdot B = (A + \overline{A}) \cdot (A + B) = 1 \cdot (A + B) = A + B$ 推导得出。
- **简化定律2**:$A \cdot (\overline{A} + B) = A \cdot B$ 可以从 $A \cdot (\overline{A} + B) = A \cdot \overline{A} + A \cdot B = 0 + A \cdot B = A \cdot B$ 推导得出。
8. **共识定律**
- **共识定律**:$(A + B) \cdot (\overline{A} + C) = (A + B) \cdot (\overline{A} + C) \cdot (B + C)$ 可以从 $(A + B) \cdot (\overline{A} + C) = (A + B) \cdot (\overline{A} + C) \cdot (B + C)$ 推导得出,因为 $(A + B) \cdot (\overline{A} + C) \leq (B + C)$。
9. **反演定律**
- **反演定律**:$A = \overline{\overline{A}}$ 是逻辑变量的双重否定特性。
---
## 二、基本门电路
### 1. 非门
$$
Y = \overline{A}
$$
### 2. 与门
$$
Y = A \cdot B
$$
**真值表:**
| 输入 A | 输入 B | 输出 Y |
| --- | --- | --- |
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
### 3. 或门
$$
Y = A + B
$$
**真值表:**
| 输入 A | 输入 B | 输出 Y |
| --- | --- | --- |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
### 4. 与非门
与非门是“与门”和“非门”的结合。
$$
Y = \overline{A \cdot B}
$$
**真值表:**
| 输入 A | 输入 B | 输出 Y |
|:---:|:---:|:---:|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
### 5. 或非门
或非门是“或门”和“非门”的结合。
$$
Y = \overline{A + B}
$$
**真值表:**
| 输入 A | 输入 B | 输出 Y |
|:---:|:---:|:---:|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 0 |
### 6. 异或门
当两个输入不相同时,输出为高电平(1);当两个输入相同时,输出为低电平(0)。这也被称为“半加器”的求和逻辑。
**逻辑表达式:**
$$
Y = A \oplus B
$$
**真值表:**
| 输入 A | 输入 B | 输出 Y |
|:---:|:---:|:---:|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
---
## 三、编码
### 1. 原码、反码和补码
为了在二进制系统中表示正负数,我们通常会使用最高位作为**符号位**。
* 符号位为 **0** 代表**正数**。
* 符号位为 **1** 代表**负数**。
#### **原码**
* **规则**: 符号位 + 数值的绝对值的二进制表示。
* **正数**: 符号位为0,其余位表示数值。
* 例如,$+12$ 的原码是 **00001100**。
* **负数**: 符号位为1,其余位表示数值。
* 例如,$-12$ 的原码是 **10001100**。
* **缺点**:
1. 零的表示不唯一:$+0$ 是 **00000000**,$-0$ 是 **10000000**。
2. 进行加减法运算时,需要单独处理符号位,硬件实现复杂。
#### **反码**
反码的出现是为了简化减法运算。
* **规则**:
* **正数**的反码与其原码**相同**。
* **负数**的反码是在其**原码**的基础上,**符号位不变**,其余各位**按位取反**。
* **示例**:
* $+12$ 的原码是 `00001100`,其反码也是 **00001100**。
* $-12$ 的原码是 `10001100`,其反码是 **11110011** (符号位1不变,后面7位 `0001100` 按位取反得到 `1110011`)。
* **缺点**:
* 仍然存在“双零”问题:$+0$ 的反码是 **00000000**,$-0$ 的反码是 **11111111**。
* 跨零运算会产生循环进位问题。
#### **补码**
补码是现代计算机系统中最常用的有符号数表示法,它解决了原码和反码的缺点。
* **规则**:
* **正数**的补码与其原码**相同**。
* **负数**的补码是其**反码加 1**。
* **求负数补码的方式**:
* 从其原码的**最低位(最右边)**向左找,找到的**第一个 1** 保持不变,这个 1 **左边**的所有位(不含符号位)按位取反,符号位仍为1。
* **示例**:
* $+12$ 的补码是 **00001100**。
* $-12$ 的补码求法:
1. 原码: `10001100`
2. 反码: `11110011`
3. 加 1: `11110011 + 1` = **11110100**。
* **优点**:
1. **零的表示唯一**: **00000000**。
2. **简化运算**: 可以将减法运算转换为加法运算。例如,计算 $A - B$ 等同于计算 $A + (-B)$ 的补码。
3. 对于一个 $n$ 位的补码系统,其表示范围为 $[-2^{n-1}, 2^{n-1}-1]$。例如,8位补码的范围是 $[-128, 127]$。
**总结表格 (以 ±12 为例)**
| 值 | 原码 | 反码 | 补码 |
|:---:|:---:|:---:|:---:|
| +12 | 00001100 | 00001100 | 00001100 |
| -12 | 10001100 | 11110011 | 11110100 |
### 2. BCD 码
BCD码是用**二进制**来表示**十进制**数的一种编码方式。它与直接将十进制数转换为二进制数不同。
* **规则**: 用 **4 位二进制数**来表示一位十进制数(0-9)。最常用的是 **8421 BCD 码**,其中各位的权值从高到低分别是 8、4、2、1。
* **特点**:
* 它介于二进制和十进制之间,便于人机交互(如数码管显示、计算器)。
* 运算比纯二进制复杂,但比直接处理十进制字符简单。
* 由于用4位二进制表示一位十进制数,所以 `1010` 到 `1111` 这 6 个码是无效或非法的。
**BCD 码对照表**
| 十进制 | BCD 码 |
|:---:|:---:|
| 0 | 0000 |
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 6 | 0110 |
| 7 | 0111 |
| 8 | 1000 |
| 9 | 1001 |
**示例**:
将十进制数 **129** 转换为 BCD 码。
1. 将每一位十进制数分开:`1`、`2`、`9`。
2. 将每一位分别转换为对应的4位BCD码:
* $1 \rightarrow 0001$
* $2 \rightarrow 0010$
* $9 \rightarrow 1001$
3. 将它们组合起来:
$$
(129)_{10} = (0001 \ 0010 \ 1001)_{\text{BCD}}
$$
**对比**: 如果将 (129)₁₀ 直接转换为纯二进制,结果是 **10000001**。这与它的 BCD 码是完全不同的。
---
## 四、加法器、编码器、译码器、选择器、比较器
---
## 五、触发器
### 1. RS 触发器
最基本的触发器,但存在一个不确定状态,在实际应用中较少直接使用。
* **输入**: $S$ (Set, 置位), $R$ (Reset, 复位)
* **输出**: $Q$ (状态输出), $\overline{Q}$ (反向输出)
#### **功能表**
这张表描述了在不同输入下,下一个状态 $Q_{n+1}$ 是什么。
| $S$ | $R$ | $Q_{n+1}$ | 功能 |
|:---:|:---:|:---:|:---|
| 0 | 0 | $Q_n$ | 保持 |
| 0 | 1 | 0 | 复位/置0 |
| 1 | 0 | 1 | 置位/置1|
| 1 | 1 | **?** | **禁止/不定** |
#### **特性方程**
$$
Q_{n+1} = S + \overline{R}Q_n \quad (\text{约束条件: } S \cdot R = 0)
$$
#### **激励表**
这张表在电路设计时非常有用,它回答了“为了让状态从 $Q_n$ 变为 $Q_{n+1}$,输入 $S$ 和 $R$ 应该是什么?”。(X表示Don't Care,即0或1均可)
| $Q_n$ | $Q_{n+1}$ | $S$ | $R$ |
|:---:|:---:|:---:|:---:|
| 0 | 0 | 0 | X |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | X | 0 |
### 2. JK 触发器
JK 触发器是 RS 触发器的改进版,它解决了 RS 触发器的“禁止”状态问题,是最通用的触发器。
* **输入**: $J$ (功能类似 $S$), $K$ (功能类似 $R$)
* **输出**: $Q$, $\overline{Q}$
#### **功能表**
| $J$ | $K$ | $Q_{n+1}$ | 功能 |
|:---:|:---:|:---:|:---|
| 0 | 0 | $Q_n$ | 保持 |
| 0 | 1 | 0 | 复0 |
| 1 | 0 | 1 | 置1 |
| 1 | 1 | $\overline{Q_n}$ | **翻转 ** |
*JK触发器将RS触发器的禁止状态(1,1输入)变成了一个非常有用的**翻转**功能。*
#### **特性方程**
$$
Q_{n+1} = J\overline{Q_n} + \overline{K}Q_n
$$
#### **激励表**
| $Q_n$ | $Q_{n+1}$ | $J$ | $K$ |
|:---:|:---:|:---:|:---:|
| 0 | 0 | 0 | X |
| 0 | 1 | 1 | X |
| 1 | 0 | X | 1 |
| 1 | 1 | X | 0 |
### 3. D 触发器
D 触发器的功能非常直接:在时钟脉冲到来时,将输入 $D$ 的值传递给输出 $Q$。它常被用作数据锁存器或移位寄存器的基本单元。
* **输入**: $D$ (Data)
* **输出**: $Q$, $\overline{Q}$
#### **功能表**
| $D$ | $Q_{n+1}$ | 功能 |
|:---:|:---:|:---|
| 0 | 0 | 置0 |
| 1 | 1 | 置1 |
*无论当前状态 $Q_n$ 是什么,下一个状态 $Q_{n+1}$ 都等于时钟边沿到来时的 $D$ 输入值。*
#### **特性方程 **
$$
Q_{n+1} = D
$$
#### **激励表 **
| $Q_n$ | $Q_{n+1}$ | $D$ |
|:---:|:---:|:---:|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
### 4. T 触发器
T 触发器是一个翻转触发器。当输入 $T=1$ 时,状态翻转;当 $T=0$ 时,状态保持不变。它常用于构建计数器。
* **输入**: $T$
* **输出**: $Q$, $\overline{Q}$
#### **功能表**
| $T$ | $Q_{n+1}$ | 功能 |
|:---:|:---:|:---|
| 0 | $Q_n$ | 保持 |
| 1 | $\overline{Q_n}$ | 翻转 |
#### **特性方程**
$$
Q_{n+1} = T \oplus Q_n = T\overline{Q_n} + \overline{T}Q_n
$$
#### **激励表**
| $Q_n$ | $Q_{n+1}$ | $T$ |
|:---:|:---:|:---:|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |