PREVIEW
Full Adder

Full Adder

Arithmetic signal_cellular_alt_2_bar Intermediate schedule 18 min

Interactive Circuit

全加器

概述

  • 用途:全加器是一种数字组合电路,执行三个二进制位的加法运算:两个输入位和一个进位输入位。它产生一个和位和一个进位输出位,实现多位二进制加法。
  • 符号:全加器表示为一个标有"FA"的矩形方块,具有三个输入(A、B 和 Carry-in)和两个输出(Sum 和 Carry-out)。
  • DigiSim.io 中的角色:作为数字电路中算术运算的关键构建模块,组合成阵列后可实现任意位宽的加法运算。

full adder component

功能描述

逻辑行为

全加器将三个二进制输入(A、B 和 Carry-in)相加,生成两个输出:Sum(结果位)和 Carry-out(溢出位)。

真值表

Input A Input B Carry In Sum Carry Out
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

布尔表达式

  • Sum (S) = A ⊕ B ⊕ Cin(三个输入的异或)
  • Carry Out (Cout) = (A · B) + (Cin · (A ⊕ B))

输入和输出

  • 输入
    • Input A:1位第一二进制输入。
    • Input B:1位第二二进制输入。
    • Carry In (Cin):1位来自前一次加法的进位输入。
  • 输出
    • Sum (S):1位和输出,表示三个输入相加的结果。
    • Carry Out (Cout):1位进位输出,当和超过1时表示溢出。

可配置参数

  • 传播延迟:输入变化后输出改变所需的时间。DigiSim.io 在事件驱动仿真器中模拟此延迟。

DigiSim.io 中的可视化表示

全加器显示为一个矩形方块,左侧有输入(A、B 和 Cin),右侧有输出(Sum 和 Cout)。它有清晰的标签标识为全加器。当连接到电路中时,该组件通过连接线的颜色变化直观地指示其引脚的逻辑状态。

教育价值

核心概念

  • 二进制算术:演示带进位的二进制加法基本过程。
  • 组合逻辑:展示如何从基本逻辑门构建复杂运算。
  • 多位运算:说明如何将单位组件组合用于多位运算。
  • 进位传播:介绍算术运算中进位位的概念。

学习目标

  • 理解包含进位生成和传播的二进制加法原理。
  • 学习全加器如何通过加入进位输入来扩展半加器。
  • 认识如何级联多个全加器以创建多位加法器。
  • 应用全加器设计ALU和计算器等算术电路。
  • 理解布尔表达式与算术运算之间的关系。

使用场景

  • 多位加法:级联多个全加器以实现任意位宽的二进制数加法。
  • 行波进位加法器:将全加器串联创建n位加法器。
  • 二进制减法:通过反转输入使用全加器实现二进制补码减法。
  • ALU 实现:在算术逻辑单元中构建加法功能。
  • 计数器设计:在二进制计数器实现中使用全加器。

技术说明

  • 全加器可以使用两个半加器和一个OR门构建。
  • 级联全加器中的进位传播引入的延迟随位宽增加,这成为行波进位加法器中的性能瓶颈。
  • 对于需要更高性能的多位加法器,使用超前进位或选择进位等替代架构来减轻进位传播延迟。
  • 全加器的关键路径通常经过进位生成逻辑,使进位传播成为加法器速度的限制因素。

特性

  • 传播延迟
    • Sum:典型 15-25ns(取决于技术)
    • Carry Out:典型 10-20ns
  • 功耗:中等
  • 扇出:典型 10-50 个门(取决于技术)
  • 门数量:典型实现需要5个基本门(2个XOR、2个AND、1个OR)
  • 电路复杂度:中等
  • 噪声裕度:中到高(取决于实现技术)

实现方法

  1. 使用半加器

    • 两个半加器和一个OR门
    • 第一个半加器将A和B相加,第二个将该和与Cin相加
    • OR门合并两个半加器的进位
  2. 使用基本逻辑门

    • 直接使用XOR、AND和OR门实现
    • 优化实现可以减少门数
  3. 晶体管级实现

    • CMOS:使用互补MOSFET
    • TTL:使用双极结型晶体管
    • 针对速度、功耗或面积进行优化
  4. 集成电路

    • 可在74xx系列逻辑族中使用(例如74283 4位全加器)
    • 通常是更大算术组件的一部分
  5. FPGA/CPLD 实现

    • 可使用专用加法器逻辑或查找表(LUT)
    • 通常由综合工具优化

电路实现

使用半加器

graph LR
    InputA[Input A] --> HA1[Half Adder 1]
    InputB[Input B] --> HA1
    
    HA1 -->|Sum1| HA2[Half Adder 2]
    CinPin[Carry In] --> HA2
    
    HA1 -->|Carry1| OrGate[OR Gate]
    HA2 -->|Carry2| OrGate
    
    HA2 -->|Sum| SumOut[Sum Output]
    OrGate --> CoutPin[Carry Out]

使用基本门

graph TB
    InputA[Input A] --> XorGate1[XOR Gate]
    InputB[Input B] --> XorGate1
    XorGate1 --> XorGate2[XOR Gate]
    CinPin[Carry In] --> XorGate2
    XorGate2 --> SumOut[Sum]
    
    InputA --> AndGate1[AND Gate]
    InputB --> AndGate1
    
    XorGate1 --> AndGate2[AND Gate]
    CinPin --> AndGate2
    
    AndGate1 --> OrGate[OR Gate]
    AndGate2 --> OrGate
    OrGate --> CoutPin[Carry Out]

应用

  1. 多位二进制加法

    • 级联形成行波进位加法器
    • 用于算术逻辑单元(ALU)
    • CPU中整数算术的关键组件
  2. 减法电路

    • 与反转输入和进位输入设为1配合使用
    • 构成二进制补码减法的基础
  3. 算术逻辑单元(ALU)

    • CPU算术运算的核心组件
    • 用于加法、减法及相关运算
  4. 地址计算

    • 用于存储器地址计算
    • 用于程序计数器递增
  5. 计数器和增量器

    • 用于数字计数器
    • 用于状态机
  6. 数字信号处理

    • 用于乘累加运算
    • 数字滤波器中的组件
  7. 错误检测/纠正

    • 用于奇偶校验和校验和计算
    • CRC和ECC电路中的组件

局限性

  1. 进位传播延迟

    • 在级联(行波进位)实现中,进位必须逐级传播
    • 可能限制多位加法器的性能
    • 超前进位加法器等更快架构可解决此限制
  2. 功耗

    • 由于门数增加,功耗高于半加器
    • 在高速或大位宽加法器中可能较为显著

相关组件

  • 半加器:没有进位输入的更简单版本
  • 行波进位加法器:多个全加器串联连接
  • 超前进位加法器:具有更快进位传播的高级加法器
  • 选择进位加法器:使用多条结果路径优化速度的加法器
  • 跳跃进位加法器:使用跳跃逻辑改善进位传播的加法器
  • 二进制计数器:使用加法器进行计数的时序电路
  • 算术逻辑单元(ALU):集成加法器进行算术运算

school 学习路径

arrow_back 前置知识

arrow_forward 下一步

help_outline 常见问题

什么是全加器?

全加器将三个比特相加:两个操作数比特(A,B)加上来自前一级的进位输入(Cin),产生和与进位输出。

如何构建多位加法器?

将全加器链接在一起,每个进位输出连接到下一级的进位输入。这就构成了行波进位加法器。

play_arrow 运行在线电路

查看其他组件