博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
加法器
阅读量:6420 次
发布时间:2019-06-23

本文共 1140 字,大约阅读时间需要 3 分钟。

  • 基本单元:全加器
    • 假设全加器的延迟是1,占用的面积也是1。  

    

  • 行波进位加法器(Ripple Carry Adder)
    • 结构类似于我们拿笔在纸上做加法的方法。从最低位开始做加法,将进位结果送到下一级做和。由于本级的求和需要等待前一级的进位结果才可以得到,所以对于两个N-bit的求和。即使有N个一位的全加器,也需要N个延迟。
    • 不妨考虑m个n-bit的加数求和,采用树形结构。占用面积:m*n,时间延迟:n*log2(m)
    • 上面没有考虑每两个加数的进位,事实上,采用树形结构,第一次求和加法器的位数是n,输出的结果是n+1,最后一次加法的位数就是n+log2(m)。进位产生的多出来的位数就是1/2*log2(m)。故实际的延迟应该是n*log2(m)+1/2*log2(m)*log2(m)

    

 

  • 超前进位加法器(Carry Look-Ahead, CLA)
    • 事实上,在以下两种情况中,Ci=1:
    1. Ai和Bi都为1
    2. Ai和Bi有一个为1,且Ci-1为1
  • 则第i位的求和电路可以用下图实现:

    • 对应的表达式如下:

    • 递归后有:

    • 由此可见,每一级的进位仅与输入信号有关,无需等待前一级的进位而可以根据输入信号直接产生,这就是超前进位的原理。
    • 延迟分析:产生P和G仅需要一个单位的延迟,得到C之后的求和得到S也只需要一个单位的延迟。最大的延迟发生在上例的C4,即P3P2P1P0C0,如果使用二输入与门或者或门的话,延迟为log2(n),n为两个加数的bit位数。所以时间复杂度为O(log2(n)),小于行波进位加法器的O(n)。相应的,资源消耗为n*log2(n)。对于m个加数,延迟为log2(m)*log2(n)
    • 注意,上面的延迟也没有计算最高位进位的影响,而是默认每个加数从头到尾都是n位。

 

  • 进位存储加法器(Carry Save Adder, CSA)
    • 在有多个加数的时候,我们可以先加前两个,再加第三个,如此循环。也可以两两配对做加法,然后得到的加数再两两配对。这种算法的时间消耗主要是每次得到求和结果时进位需要从后往前累加,而在多个加数时,其实我们可以把本级的进位存储下来,作为运算结果到下一级求和,而不必立刻求和。

    • 由上图可知,完整的进位存储加法器,先用进位存储的方法计算每位的部分和以及进位结果,对于m个加数,延时为m-2。在最后阶段对着两部分求和得到最后的结果,注意,此处的延迟不是log2(n),因为每经过一级CSA,就多了一位进位,最后的延迟应该是log2(m-2+n)。所以使用进位存储加法器计算m个加数,时间复杂度为O(m+log2(m+n))  

 

转载于:https://www.cnblogs.com/huhou/p/3965487.html

你可能感兴趣的文章
jQuery插件之验证控件jquery.validate.js
查看>>
[经验]无线鼠标和无线键盘真的不能用了?——雷柏的重生之路~
查看>>
【转】plist涉及到沙盒的一个问题
查看>>
GNU make manual 翻译( 一百四十五)
查看>>
重构之美-走在Web标准化设计的路上[复杂表单]3 9 Update
查看>>
重构之美-跨越Web标准,触碰语义网[开门见山:Microformat]
查看>>
git入门与实践【转】
查看>>
WPF 虚拟键盘
查看>>
储存卡无法打开专家教您怎么数据恢复
查看>>
彼得原理
查看>>
如何利用【百度地图API】,制作房产酒店地图?(下)——结合自己的数据库...
查看>>
[20171113]修改表结构删除列相关问题3.txt
查看>>
特征选择
查看>>
在Winform程序中设置管理员权限及为用户组添加写入权限
查看>>
多能互补提速 加快我国能源转型和现代能源体系建设
查看>>
Redis开发运维实践高可用和集群架构与实践(二)
查看>>
程序员的常见“谎话”:对,这是一个已知 Bug
查看>>
如何侦查SQL执行状态
查看>>
CentOS 7 命令行如何连接无线网络
查看>>
Ubuntu 12.04上享用新版本Linux的功能
查看>>