码迷,mamicode.com
首页 > 其他好文 > 详细

加法器

时间:2018-01-19 22:24:36      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:class   逻辑   nbsp   输出   设计   意义   lookahead   产生   而且   

 

 

计算机里的加减乘除四则运算,最基本的就是加法运算,其余三种运算都可以通过加法运算来实现

 

I. 半加器 (Half Adder)

考虑一位二进制加法运算,如果不考虑进位的话,我们可以得到如下真值表

技术分享图片

A,B表示输入,C(Carry)表示进位,S(Sum)表示结果

可以得到:

技术分享图片

 

用逻辑门来实现:

技术分享图片

II. 全加器 (Full Adder)

有了半加器以后我们发现,这种加法器并不能实现多位数的加法,因此诞生了有进位的全加器。和半加器不一样,一个全加器有三个输入(A,B和低位进位)和两个输出(和以及进位输出)。

列出真值表:

技术分享图片

 

 可以得到:

技术分享图片

 

技术分享图片

 逻辑门实现:

技术分享图片

III 纹波进位加法器 (Ripple Carry Adder)

将n个全加器级联起来,就是一个n位的加法器,这就是逐级进位加法器。

技术分享图片

考虑到门电路中的电场状态改变需要时间,如果输入电平发生了变化,那么输出电平需要一段时间后才会响应,当然这段时间很小,小到了纳秒级别。因此,这种加法器有个缺点:每一位的进位输入依赖于上一位的进位输出,只有前一位的进位信号稳定后,这一位的全加器的运算才是有意义的。如果位数n很大的话,整个加法器会变慢,最后会限制CPU主频的提高。

IV超前进位加法器 (Carry-lookahead Adder)

既然级联一位的加法器算有这样的缺点,那就干脆直接设计一个位数足够大的加法器!

我们列出2位的全加器的真值表:

技术分享图片

 

 我们看到,随着n增大,真值表的行数是指数级别增长的。即使位数仅仅只有2,真值表的行数都达到了32,人工求解布尔表达式变得很困难。但是理论上,这样的全加器的确存在,而且实际上,有一个更优雅的设计方法。

再次考虑上面讲到的全加器,不再以级联的方式获得进位输入,而是直接根据输入,设计电路得到合适的进位,这样设计出来的加法器叫做超前进位加法器。

技术分享图片

 

 

 其中,每一级的进位可以由当前的两个位产生(generate),技术分享图片;或者由上一级传递(propagate)的进位 技术分享图片 和当前输入累加导致的,技术分享图片,因此下一级的进位是技术分享图片

因此,得到关于2位超前进位加法器的布尔表达式:

技术分享图片技术分享图片技术分享图片

 

技术分享图片

技术分享图片

 

 

 考虑到集成电路的面积,成本,功耗,散热等因素,超前进位加法器的位数一般不会过大。一般将几个超前进位加法器(如8位,16位)级联起来,得到位数够宽的加法器。

 

 

链接:https://www.zhihu.com/question/29707696/answer/114610705
来源:知乎

加法器

标签:class   逻辑   nbsp   输出   设计   意义   lookahead   产生   而且   

原文地址:https://www.cnblogs.com/mlgjb/p/8318927.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!