跳至内容
点操作加法器

点操作加法器

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) : 1→01 \rightarrow 0 (翻转↓)

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

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

  4. ​S3 (Bit 3) : 1→01 \rightarrow 0 (翻转↓)

  5. ​S4 (Bit 4) : 1→01 \rightarrow 0 (翻转↓)

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

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

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

  9. ​COUT: 0→00 \rightarrow 0 (死线,不变)

‍

‍

‍

image

‍

正确

image
8bit

‍

‍

image

‍

‍

image

‍


  1. 点操作串联和级联

    ‍

    ‍

    ‍

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

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

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

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

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

      • 核心原理:树形结构,log⁡28=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)

      • 核心原理:依然是树形结构,log⁡264=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(log⁡N)O(\log N)​ ) 的。

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

    1. 电路图

    • 静态点操作

    image
    点操作运算

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

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

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

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

    ‍

    2.进位产生和传播电路

    核心操作:Dot Operator

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

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

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

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

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

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

      1. ​高半部分自己生成了进位: 即 Gi:kG_{i:k} 为 1(不需要管低位)。
      2. ​低半部分生成了进位,并且被高半部分传播了出去: 即 Gk−1: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=ai⋅big_i = a_i \cdot b_i 和 pi=ai+bip_i = a_i + b_i 提前获取每一位的生成与传播状态。
    • ​点操作(Dot Operator)应用:通过引入“黑点”操作符(∙\bullet),利用公式 Pi:j=Pi:k⋅Pk−1:jP_{i:j} = P_{i:k} \cdot P_{k-1:j} 和 Gi:j=Gi:k+Pi:k⋅Gk−1:jG_{i:j} = G_{i:k} + P_{i:k} \cdot G_{k-1:j},成功将传统的串行进位链转化为并行的树状结构。这种结构利用逻辑运算的​结合律,有效缩短了关键路径的逻辑深度。

    2. 仿真功能验证

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

    • ​**最长路径/全进位测试 (​A=255,B=0,Cin:0→1A=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:0→1A=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 条曲线 发生跳变。
      • ​结论:该测试验证了点操作网络在处理局部进位时的准确性,证明电路能正确地在中间位终止进位传播。
     ↩︎