1. 逻辑门
逻辑门是数字电路中用于执行基本逻辑运算的组件。每种逻辑门都有独特的功能和特性:
- 与门(AND Gate):
- 符号:
·或& - 功能:输出为 1 当且仅当所有输入均为 1。
- 符号:
- 或门(OR Gate):
- 符号:
+ - 功能:只需一个输入为 1,输出即为 1。
- 符号:
- 非门(NOT Gate):
- 符号:
¬或! - 功能:输出为输入的反转,
¬A或!A表示 A 的反转。
- 符号:
- 异或门(XOR Gate):
- 符号:
⊕ - 功能:输入不同(一个为 1,一个为 0)时,输出为 1;相同(两个都是 1 或两个都是 0)时,输出为 0。
- 符号:
- 与非门(NAND Gate):
- 符号:
¬(A · B)或↑ - 功能:与门的输出反向,即
A和B都为 1 时,输出为 0,否则为 1。
- 符号:
- 或非门(NOR Gate):
- 符号:
¬(A + B)或↓ - 功能:或门的输出反向,即
A和B都为 0 时,输出为 1,否则为 0。
- 符号:
- 同或门(XNOR Gate):
- 符号:
⊙或≡ - 功能:输入相同时(都为 1 或都为 0),输出为 1,否则输出为 0。
- 符号:
2. 全加器(Full Adder)
全加器是数字电路中进行二进制加法的基本单元。
- 输入:
A:第一个加数。B:第二个加数。Cin:进位输入。
- 输出:
S:和(Sum),表示当前位的结果。Cout:进位输出,表示是否需要进位到下一个位。
- 逻辑公式:
S = A ⊕ B ⊕ CinCout = (A · B) + (Cin · (A ⊕ B))
3. 多重分组全加器
前置概念
- 组内并行:
- 意思是在同一组内的多个任务可以同时进行,即多个处理单元或线程可以并行处理不同的数据。例如,在一个计算任务中,可以将数据分成多个部分,然后在多个处理器上同时处理每一部分。
- 组间串行:
- 意思是在不同组之间的任务执行是串行的。这意味着一组的计算结果需要在另一组开始执行之前完成。例如,计算 A 组的结果需要在 B 组开始之前完成。
分组加法
- 在进行较大位数的加法时,可以将加法任务分成多个较小的组(例如每组 4 位或 8 位),然后为每组分别使用全加器进行处理。这样可以提高电路的并行性和计算效率。
- 每个小组的进位由全加器处理,同时不同组之间的进位需要传递并进行处理。这通常需要额外的逻辑电路来管理进位的传递和计算。
4. 算术移位
- 算术左移:将所有位向左移动,最右侧补零,等于乘以 2 的 k 次方。对于无符号数和有符号数,效果是一样的。
- 算术右移:用于有符号数,根据符号位补充左侧,保持数的符号,可以理解为 C 语言中的右移操作符。对于正数,左侧补 0;对于负数,左侧补 1。
5. 溢出判定
溢出发生在运算超出数据类型表示范围的情况下。
- 有符号整数:
- 加法溢出:
(A > 0 && B > 0 && S < 0) || (A < 0 && B < 0 && S > 0) - 减法溢出:
(A < 0 && B > 0 && S > 0) || (A > 0 && B < 0 && S < 0)
- 加法溢出:
- 无符号整数:
- 加法溢出:
S < A || S < B - 减法溢出:
A < B
- 加法溢出:
6. ALU(算术逻辑单元)
ALU 是计算机的核心部件,负责所有算数和逻辑运算。
- 功能:
- 执行加法、减法、逻辑运算(与、或、非)等。
- 可以执行移位操作、乘法、除法和比较运算等(某些 ALU 还包括这些功能)。
- 组成:
- 多个逻辑门和运算单元、输入输出寄存器。
- 标志位:
- 利用状态寄存器的标志位来反馈运算结果(如零标志、进位标志、溢出标志等)。
7. 部分积乘法
部分积乘法是计算乘法的一种方法,通过逐位计算来形成结果。
- 步骤:
- 将乘数的每一位与被乘数相乘,生成部分积。
- 对部分积进行移位和累加。
- 部分积移除的位会移动到乘数中,乘数中已操作的位不再使用,直接移除。
8. ACC 和 MQ 在乘法中的作用
- ACC(累加器):
- 存储中间结果和部分积,最终乘积的结果。
- MQ(乘数寄存器):
- 存储乘数,用于与被乘数组合生成部分积。