您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>电子百科>半导体技术>半导体器件>

加法器原理(16位先行进位)

2010年03月08日 16:52 www.elecfans.com 作者:佚名 用户评论(0

加法器原理(16位先行进位)

   这个加法器写的是一波三折啊,昨天晚上花了两三个小时好不容易写完编译通过了,之后modelsim莫名其妙弹出一个对话框,我没看清就那么不小心一点,结果代码没了,惨痛啊。害的我今天早上又花了一上午的时间重写,结果又遇到了搞不清楚的编译问题。不过在重写的过程中,我还是发现昨天写的一些地方有问题,通过这次重写,我把verilog的语句并行理解的更加深刻了。下面总结一下原理和具体的实现。

原理

     进位的传递
     ci+1 = ai*bi+ai*ci+bi*ci
          = ai*bi+(ai+bi)*ci
          = gi+pi*ci
gi=ai*bi称为进位生成因子, 只要gi为1, 就有进位
pi=ai+bi称为进位传递因子, 只要pi为1, 就有把低位的进位向前传递
四位进位传递为例
  c1 = g0+(p0*c0)
  c2 = g1+(p1*g0)+(p1*p0*c0)
  c3 = g2+(p2*g1)+(p2*p1*g0)+(p2*p1*p0*c0)
  c4 = g3+(p3*g2)+(p3*p2*g1)+(p3*p2*p1*g0)+(p3*p2*p1*p0*c0)
只要低位有一个进位生成, 而且被传递, 则进位输出为1.

    对于16位先行加法器,采用4个4位先行进位加法器组成,块内并行,由于高位的块需要用到低位块的进位,快间仍然并行计算进位。方法是产生每块的进位传递因子和进位产生因子。

    块间进位传递因子: 每一位的传递因子都为1时才能传递
      P0 = p0*p1*p2*p3
    块间进位产生因子: 块内产生进位, 不考虑进位输入
      G0 = g3+(p3*g2)+(p3*p2*g1)+(p3*p2*p1*g0)

    块间进位的计算方法同上(只需要将p,g换成P,G就可以了)。

    16位加法器相当与16个半加器同时工作,而每个半加器输入的进位cin都有传递因子和生产因子通过最低进位c0得到,而这16歌进位也是同时得到的。这大大提高了加法器的速度,设一个与非门的延迟为T,先行进位加法器总的延迟11T=2T(产生组内p g)+2T(产生组间P G)+2T(产生组内进位)+2T(产生组间进位)+3T(计算全加)。注意依赖关系,组内p g依赖于操作数a b,组内进位依赖于p g,组间的PG依赖于组内的p g,组间的进位依赖于P G,而全加依赖于组内和组间的进位。

非常好我支持^.^

(26) 9.4%

不好我反对

(251) 90.6%

( 发表人:admin )

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!