Skip to content
点操作加法器

点操作加法器

image

点操作串联和级联1

八位加法器点操作电路设计与仿真2

八位的话9个输入输出端口

最后一个直接G7:-1就是进位

image=-

p2:-1

image
PG6:5接反

20251201-vmware-949

image

image

image

image

image

image

11111111,00000011

预测s0一条曲线变化

image

设置数值为 31 (0001 1111)

设置数值为 0 (0000 0000)

输入 CIN:保持 vpulse (0 \rightarrow 1)

这个测试的核心逻辑是:

  • 当 CIN = 0 时31+0+0=3131 + 0 + 0 = 31

    • 二进制结果:0001 1111
  • 当 CIN = 1 时31+0+1=3231 + 0 + 1 = 32

    • 二进制结果:0010 0000

当你点击运行后,你应该看到 ​6 条曲线发生跳变,其他的保持静止。

  1. S0 (Bit 0) : 101 \rightarrow 0 (翻转↓)

    • 解释1+0+1=101+0+1=10,留0进1。
  2. S1 (Bit 1) : 101 \rightarrow 0 (翻转↓)

    • 解释:接收到进位,继续进位。
  3. S2 (Bit 2) : 101 \rightarrow 0 (翻转↓)

  4. S3 (Bit 3) : 101 \rightarrow 0 (翻转↓)

  5. S4 (Bit 4) : 101 \rightarrow 0 (翻转↓)

  6. S5 (Bit 5) : 010 \rightarrow 1 (翻转↑ ​关键变化)

    • 解释​:原本 A5=0, B5=0,结果是0。但下面的进位像多米诺骨牌一样一路传到了这里,0+0+1=10+0+1=1进位在这里被“消化”了,没有继续往上传。
  7. S6 (Bit 6) : 000 \rightarrow 0 (死线,不变)

    • 解释:进位没传上来。
  8. S7 (Bit 7) : 000 \rightarrow 0 (死线,不变)

  9. COUT: 000 \rightarrow 0 (死线,不变)

image

正确

image
8bit

image

image


  1. 点操作串联和级联

    对于 8位 的情况,它们之间的延时差距​并不大(甚至在某些布局布线糟糕的情况下,并行版可能还不如级联版快)。

    但如果你把这个逻辑应用到你最终目标的 64位 上,差距就是​天壤之别

    下面我用​逻辑级数(Logic Depth) ​——即信号需要穿过多少层门电路——来量化对比。假设一个“点操作节点”的延时为 ​1个单位(1T)

    1. 8位时的对比(差距微小)

    • 方案 A:1个 8-bit 全并行 (Full Parallel Tree)

      • 核心原理:树形结构,log28=3\log_2 8 = 3 层。
      • 路径:预处理 \to 3级点操作 \to 求和。
      • 核心延时:3T
    • 方案 B:4个 2-bit 级联 (Cascaded 2-bit)

      • 核心原理:串行结构,信号要依次穿过 4 个块。
      • 路径:预处理 \to 4级点操作 \to 求和。
      • 核心延时:4T

    结论: 在 8 位时,​3T vs 4T​,性能提升只有 25% 左右。你可能感觉不到明显的优势,甚至觉得画全并行树太累了,不划算。


    2. 64位时的对比(差距巨大)

    这才是你需要做并行点操作的真正原因。假设我们要扩展到 64 位:

    • 方案 A:1个 64-bit 全并行 (Full Parallel Tree)

      • 核心原理:依然是树形结构,log264=6\log_2 64 = 6 层。
      • 计算公式:层数只增加了 3 层。
      • 核心延时:6T
    • 方案 B:32个 2-bit 级联 (Cascaded 2-bit)

      • 核心原理:信号要依次穿过 32 个块。
      • 计算公式:64÷2=3264 \div 2 = 32 级。
      • 核心延时:32T

    结论: 在 64 位时,​6T vs 32T​,并行方案比级联方案​快 5 倍以上


    3. 为什么会这样?

    • 级联(Ripple/Cascaded): 延时是 线性增长 (Linear, O(N)O(N)) 的。

      • 位数翻倍,时间就翻倍。
      • 就像排队传话,人越多传得越慢。
    • 点操作树(Parallel Prefix): 延时是 对数增长 (Logarithmic, O(logN)O(\log N)) 的。

      • 位数翻倍,时间只增加固定的一点点(1个单位)。
      • 就像公司发广播,10个人和1000个人听到消息的时间几乎是一样的。
     ↩︎
  2. 八位加法器点操作电路设计与仿真

    1. 电路图

    • 静态点操作

    image
    点操作运算

    在并行加法器中,为了加速进位链的传递,我们不直接等待前一位的进位,而是预先计算两个信号:

    • gig_{i} (Generate - 生成信号) :

      • 公式: gi=aibig_{i} = a_i \cdot b_i
      • 含义: 如果第 ii 位的两个输入 aabb 都是 1,那么无论低位是否有进位,第 ii 位一定会向高位生成一个进位。
    • pip_{i} (Propagate - 传播信号) :

      • 公式: pi=ai+bip_{i} = a_i + b_i (或者 aibia_i \oplus b_i
      • 含义: 如果第 ii 位中至少有一个是 1,那么低位传来的进位可以穿过这一位,传播到更高位。

    2.进位产生和传播电路

    核心操作:Dot Operator

    这是并行前缀加法器的数学核心。它通过结合律将小范围的 P/G 信号合并成大范围的 P/G 信号。

    A. 组传播信号 (Pi:jP_{i:j}​)

    • 公式: Pi:j=Pi:kPk1:jP_{i:j} = P_{i:k} \cdot P_{k-1:j}
    • 原理: 要想让进位从位置 jj 一路传播穿过到位置 ii(跨度 i:ji:j),进位必须能穿过“低半部分(k1:jk-1:j)” 并且 穿过“高半部分(i:ki:k)”。所以是逻辑关系。

    B. 组生成信号 (Gi:jG_{i:j})

    • 公式: Gi:j=Gi:k+Pi:kGk1:jG_{i:j} = G_{i:k} + P_{i:k} \cdot G_{k-1:j}

    • 原理: 在范围 i:ji:j 内,产生进位有两种情况:

      1. 高半部分自己生成了进位: 即 Gi:kG_{i:k} 为 1(不需要管低位)。
      2. 低半部分生成了进位,并且被高半部分传播了出去: 即 Gk1:jG_{k-1:j} 为 1(低位生成),且 Pi:kP_{i:k} 为 1(高位允许通过)。
      • 这两种情况是​(OR)的关系。

    • 静态点操作加法器电路

    image
    并行前缀加法器(Parallel

    20251201-vmware-949
    8bit

    1. 测试电路

    image
    8bit

    image
    8bit

    设置数值为 255 (1111 1111)

    设置数值为 0 (0000 0000)

    输入 CIN:保持 vpulse (0 \rightarrow 1)

    点击运行后,应该看到 9 条曲线发生跳变,其他的保持静止。

    预测 S0-S7,COUT 全部翻转

    image
    8bit

    image
    8bit

    设置数值为 31 (0001 1111)

    设置数值为 0 (0000 0000)

    输入 CIN:保持 vpulse (0 \rightarrow 1)

    点击运行后,应该看到 6 条曲线发生跳变,其他的保持静止。

    3. 仿真结论

    1. 设计原理与架构验证

    本次设计成功实现了一个基于静态点操作(Static Dot Operator)的 8 位并行前缀加法器。

    • 核心逻辑:电路采用了预计算技术,利用 gi=aibig_i = a_i \cdot b_ipi=ai+bip_i = a_i + b_i 提前获取每一位的生成与传播状态。
    • 点操作(Dot Operator)应用:通过引入“黑点”操作符(\bullet),利用公式 Pi:j=Pi:kPk1:jP_{i:j} = P_{i:k} \cdot P_{k-1:j}Gi:j=Gi:k+Pi:kGk1:jG_{i:j} = G_{i:k} + P_{i:k} \cdot G_{k-1:j},成功将传统的串行进位链转化为并行的树状结构。这种结构利用逻辑运算的​结合律,有效缩短了关键路径的逻辑深度。

    2. 仿真功能验证

    通过 Cadence Virtuoso 平台对电路进行了瞬态仿真,针对两种极端的进位传播场景进行了验证,结果与理论预测完全一致:

    • ​**最长路径/全进位测试 (A=255,B=0,Cin:01A=255, B=0, C_{in}: 0 \to 1**​ )

      • 测试场景:输入 A=11111111A=11111111, B=00000000B=00000000。此时所有位的传播信号 pip_i 均为 1,进位通道全开。
      • 结果分析:当 CinC_{in} 由 0 跳变为 1 时,运算结果由 255 (0_1111111120\_11111111_2) 变为 256 (1_0000000021\_00000000_2)。
      • 波形表现​:仿真波形显示 ​S0-S7 全部由高电平翻转为低电平​,同时 ​COUT 由低电平翻转为高电平​。共 9 条曲线 发生跳变。
      • 结论:该测试证明了加法器的进位链能够从最低位(LSB)完整、正确地传播至最高位(MSB)及进位输出端,验证了最坏情况下的逻辑正确性。
    • ​**部分进位测试 (A=31,B=0,Cin:01A=31, B=0, C_{in}: 0 \to 1**​ )

      • 测试场景:输入 A=00011111A=00011111, B=00000000B=00000000。低 5 位为 1,高 3 位为 0。
      • 结果分析:当 CinC_{in} 由 0 跳变为 1 时,运算结果由 31 (0_0001111120\_00011111_2) 变为 32 (0_0010000020\_00100000_2)。
      • 波形表现​:仿真显示 ​S0-S4 (低 5 位) 由高变低​,​S5 由低变高​,而 S6、S7 和 COUT 保持静止。共 6 条曲线 发生跳变。
      • 结论:该测试验证了点操作网络在处理局部进位时的准确性,证明电路能正确地在中间位终止进位传播。
     ↩︎