加法器种类介绍

news2024/11/28 3:51:57

二进制加法器

二进制加法器接收加数A和B,以及进位Ci,输出和S,以及进位输出Co.二进制加法器的真值表如下:

逻辑表达式:

S = A ⊕ B ⊕ C i S=A⊕B⊕C_i S=ABCi

C o = A B + B C i + A C i C_o=AB+BC_i+AC_i Co=AB+BCi+ACi

从实现的角度,可以将S和Co定义为一些中间信号:

  • G = A B G=AB G=AB:进位产生(generate)为1时,保证 C o = 1 C_o=1 Co=1
  • D = A ˉ ⋅ B ˉ D=\bar{A}⋅\bar{B} D=AˉBˉ:进位取消(delet)为1时,保证 C o = 0 C_o=0 Co=0
  • P = A ⊕ B P=A⊕B P=AB:进位传播(propagate)为1时,保证 C o = C i C_o=C_i Co=Ci

上面的几个变量均和 C i C_i Ci无关,可以将逻辑表达式写为这些值的函数:

C o ( G , P ) = G + P C i C_o(G,P)=G+PC_i Co(G,P)=G+PCi

S ( G , P ) = P ⊕ C i S(G,P)=P⊕C_i S(G,P)=PCi

二进制全加器的一个特性是,输入反向的话,输出也反向,可以通过逻辑表达式观察得到:

在这里插入图片描述

逐位进位加法器

也叫行波进位加法器。通过把N个二进制全加器(FA)串联起来得到。

在这里插入图片描述

对于某些输入信号,不会发生行波进位传递,而对于另一些信号,进位需要从最低有效位波动到最高位,这样一条路径称为 关键路径(critical path),关键路径的延时定义为最坏情况下的延时。在最坏情况下的延时可以写为:

t a d d e r = ( N − 1 ) t c a r r y + t s u m t_{adder}=(N−1)t_{carry}+t_{sum} tadder=(N1)tcarry+tsum

其中, t c a r r y t_{carry} tcarry C i C_i Ci C o C_o Co的延时, t s u m t_{sum} tsum C i C_i Ci S S S的延时。

静态CMOS加法器

如果直接用CMOS实现上面的二进制全加器,将会消耗36个管子,而实际上可以通过将逻辑表达式变形,来使得“和”与“进位产生”电路共享某些逻辑:

C o = A B + B C i + A C i C_o=AB+BC_i+AC_i Co=AB+BCi+ACi

S = A B C i + C o ˉ ( A + B + C i ) S=ABC_i+\bar{C_o}(A+B+C_i) S=ABCi+Coˉ(A+B+Ci)

从真值表很容易验证这与之前的式子等价。并且只需要28管:

在这里插入图片描述

上面电路用到了一个小技巧,就是将 C i C_i Ci关键信号放在靠近输出端,可以避免内部节点充放电等待 C i C_i Ci信号的到来,改善输出的延时。

缺陷

  • 进位产生与和产生电路中堆叠了很多PMOS管
  • C o C_o Co信号的本征负载电容很大,包括两个扩散电容,6个栅极电容加上布线电容。
  • 在进位产生电路中经过了两个反向级,如果进位链输出的负载很小,两级逻辑引起额外的延时。
  • 和的产生要求一个额外的逻辑级

延时优化:利用全加器的反向特性,输入反向输出也反向,可以在加法器链中引入输入反向的全加器:

图中的所有全加器的进位输出都不需要加反相器,这样大大减少了进位链的延时。

镜像加法器(mirror adder)

镜像加法器的特点:

  • 基于G,D,P变量
  • 取消了进位反向门
  • PDN和PUN不再是对偶的CMOS结构,而是对称结构。
  • 只消耗24个晶体管
  • 只有在进位产生电路的管子需要优化尺寸改善速度,求和电路的晶体管都可以使用最小尺寸。关键点在于使 C o C_o Co处电容最小。

G = A B , D = A ˉ ⋅ B ˉ , P = A ⊕ B (与 A + B 等价) C o ( G , P ) = G + P C i , S = A B C i + C o ‾ ( A + B + C i ) G=AB,\\ D=\bar{A}⋅\bar{B},\\ P = A\oplus B (与A+B等价)\\ C_o(G,P) = G + PC_i,\\ S = ABC_i+\overline{C_o}(A+B+C_i) G=ABD=AˉBˉP=AB(与A+B等价)Co(G,P)=G+PCiS=ABCi+Co(A+B+Ci)

可以分析一下镜像加法器的工作方式,实际上镜像加法器的进位电路巧妙利用了进位产生,消除和传播:

  • 当A=B=1时,G=1,表示进位产生,此时通过PDN的两个串联NMOS可以将输出拉低,得到Co的反向信号,并且此时PUN不导通;

  • 当A=B=0时,D=1,表示进位消除,此时通过PUN的两个串联PMOS可以将输出拉高,得到Co的反向信号;并且此时PDN不导通;

  • 当A和B不全为1时,P=1,表示进位传播。PUN和PDN都部分导通(输入为A和B的PMOS和NMOS都有一个导通),上拉还是下拉取决于进位输入 C i C_i Ci,与公式中的 P C i PC_i PCi相匹配,并且输出 C o C_o Co的反向信号。

  • 对于和电路也可以同样分析。

镜像加法器的版图

传输门型加法器

使用传输门来构建和与进位电路,特点是它的和与进位输出具有近似的延时也是24管

G = A B , D = A ˉ ⋅ B ˉ , P = A ⊕ B (与 A + B 等价) C o ( G , P ) = G + P C i , S ( G , P ) = P ⊕ C i G=AB,\\ D=\bar{A}⋅\bar{B},\\ P = A\oplus B (与A+B等价)\\ C_o(G,P) = G + PC_i,\\ S(G,P) = P\oplus C_i G=ABD=AˉBˉP=AB(与A+B等价)Co(G,P)=G+PCiS(G,P)=PCi

需要注意的是,在Co的产生电路中,用到了一个变换:

C o = P ˉ ⋅ A ˉ + P ⋅ C i ˉ ‾ = P C i + A C i + A P ˉ = P C i + A ⋅ A ⊙ B = P C i + A B Co=\overline{\bar{P}⋅\bar{A}+P⋅\bar{C_i}}=PC_i+AC_i+A\bar{P}=PC_i+A⋅A⊙B=PC_i+AB Co=PˉAˉ+PCiˉ=PCi+ACi+APˉ=PCi+AAB=PCi+AB

曼彻斯特进位链加法器

在传输门加法器中,进位电路可以进行优化,比如可以使用进位消除和产生信号来控制进位电路(下左图):
在这里插入图片描述

此外,使用动态逻辑可以更加简化,传输门也只需要使用单管,并且不需要进位取消电路。如上面右图。在预充电(ϕ=0)时,输出节点充到VDD,表示Co=0;求值时,根据G和Ci信号决定有无进位产生。下图是曼彻斯特进位链的构造:

在这里插入图片描述

上图中加法器进位链在最坏情况下的延时模型可模拟为线性RC网络。其延时为:

t p = 0.69 ∑ i = 1 N C i ( ∑ j = 1 i R j ) = 0.69 N ( N + 1 ) 2 R C t_p=0.69∑_{i=1}^NC_i(∑_{j=1}^iR_j)=0.69\frac{N(N+1)}{2}RC tp=0.69i=1NCi(j=1iRj)=0.692N(N+1)RC

版图
在这里插入图片描述

进位旁路加法器(Carry-Bypass Adder)

旁路进位加法器又叫进位跳跃加法器(carry-skip adder) :

在这里插入图片描述

基本思路是增加一条进位旁路,通过进位选择信号 B P = P 0 P 1 … P n BP=P_0P_1…P_n BP=P0P1Pn信号来选择进位输出是否直接选择最底层的进位进行输出。进而加快加法器。

曼彻斯特进位链实现的旁路加法器
在这里插入图片描述

从上图中可以发现,当BP为高时,直接输出进位输入,而BP不为高时,则输出由中间的某些G信号决定,与Ci无关。这一性质可以极大加速加法器链,因为若干个这样的模块串联在一起时,实际上各个模块的进位电路中直到选择器之前的部分都可以并行地执行,而无需等待上级进位信号。

下面来计算旁路加法器的传播延时。首先对于N级的旁路进位加法器,假设其被划分为(N/M)个等长的旁路,每个旁路含有M位:

在这里插入图片描述

上图中灰色部分为关键路径。其延时可以表示为:

t p = t s e t u p + M t c a r r y + ( N M − 1 ) t b y p a s s + ( M − 1 ) t c a r r y + t s u m t_p=t_{setup}+Mt_{carry}+(\frac{N}{M}−1)t_{bypass}+(M−1)t_{carry}+t_{sum} tp=tsetup+Mtcarry+(MN1)tbypass+(M1)tcarry+tsum

可以看到,虽然旁路加法器的延时仍然关于N呈线性关系,但斜率除以了一个M,但是多了几个常数项,所以反映到下图的延时和级数N的关系曲线中就会发现,当N比较大时旁路加法器优于逐位进位,但N比较小(4-8)时,反而比逐位进位差。
在这里插入图片描述

线性进位选择加法器(Linera Cary-Select Adder)

线性进位选择加法器其实跟上面的旁路加法器类似,但是旁路加法器可以工作的一个条件是进位链中要使用G信号或者D信号来保证不选择旁路时加法器链的输出也跟输入进位Ci无关。因此旁路加法器需要额外的BP信号(每级P相与)配合进位产生信号G来控制进位链。另外一种方法是使用线性进位选择加法器,其工作更加简单粗暴,为了使得加法器链的进位输出跟输入解耦,直接考虑进位输入的两种可能值,提前计算两种可能结果,等到输入进位到来直接根据进位值选择哪条路径输出即可,这意味着同时实现了0和1进位输入的两个进位路径:

在这里插入图片描述

付出的代价是一个额外的进位路径和一个多路开关,大概等于逐位进位结构的30%。可以推导进位选择加法器的传播延时为:

t p = t s e t u p + M t c a r r y + ( N M ) t m u x + t s u m t_p=t_{setup}+Mt_{carry}+(\frac{N}{M})t_{mux}+t_{sum} tp=tsetup+Mtcarry+(MN)tmux+tsum

可见其传播延时仍然关于N呈线性关系。

平方根进位选择加法器(Square-Root Carry-Select Adder)

在上面的线性选择加法器中,每级分配相同的全加器,因此每级的延时都相同,每级进位链的结果在上一级的多路开关信号到来前已经稳定下来,可见在后面的几级在时刻5已经完成,但每级等待的时间越来越长,如图:

在这里插入图片描述

如果能够使后级不需要等待前一级多路开关的信号,而是在刚求完本级就正好接受到前级信号,就能消除这个等待时间:

在这里插入图片描述

上图就是平方根进位选择加法器,其与线性选择加法器的区别只在于每级的位数逐级递增。通过这种方式,每级在计算完本级的进位结果的同时上一级的多路开关信号正好到来。假设总共含有P级,第一级为M位。则有

N = M + ( M + 1 ) + ( M + 2 ) + ⋯ + ( M + P − 1 ) = p 2 2 + P ( M − 1 2 ) N=M+(M+1)+(M+2)+⋯+(M+P−1)=\frac{p^2}{2}+P(M−\frac{1}{2}) N=M+(M+1)+(M+2)++(M+P1)=2p2+P(M21)

如果M<<N,如M=2,N=64,则第一项起主要作用,则有 N = P 2 2 N=\frac{P^2}{2} N=2P2, P = 2 N P=\sqrt{2N} P=2N 因此其传播延时可写为:

t p = t s e t u p + M t c a r r y + ( 2 N ) t m u x + t s u m t_p=t_{setup}+Mt_{carry}+(\sqrt{2N})t_{mux}+t_{sum} tp=tsetup+Mtcarry+(2N )tmux+tsum

从公式可以看到,由于此处的M是初级的位数,一般都比线性选择加法器的小,延时并且跟根号2N呈线性关系,所以反应到延时和级数曲线中,平方根进位选择加法器跟纵轴交点要小于线性选择,且当N比较大时斜率远小于线性选择加法器:
在这里插入图片描述

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

a. 单一超前进位加法器

上面的选择和旁路加法器虽然能减少延时,但逐级进位效应仍然存在。超前进位加法器解决了这一问题。其基本思想是:N位加法器的每一位上都有下面的关系:

C o , k = f ( A k , B k , C o , k − 1 ) = G k + P k C o , k − 1 C_{o,k}=f(A_k,B_k,C_{o,k−1})=G_k+P_kC_{o,k−1} Co,k=f(Ak,Bk,Co,k1)=Gk+PkCo,k1

通过展开 C o , k − 1 C_{o,k−1} Co,k1,一直展开到第一级可以彻底消除每级进位的前一级的依赖,代价是实现加法器的逻辑逐级增加:

在这里插入图片描述

下面是一个四级超前进位加法的实现,利用了对偶性(类似镜像加法器):

在这里插入图片描述

局限:单一超前进位加法器只在N比较小(<5)时使用,实际上的延时还是随位数线性增加的,这主要由下面的因素决定:

  • 大的扇入使得在N较大时极慢
  • 如果用较为简单的门实现,则需要多个逻辑层次,也会增加延时
  • 某些信号的扇出常常过度增加,使得加法器更慢,例如G0和P0信号出现在后面的每级中,导致线电容较大

b. 对数超前进位加法器

将进位传播和进位产生组织成递归的树状结构:
在这里插入图片描述

在上面的公式中,进位传播被分解成两位的子组合 G i : j , P i : j G_{i:j},P_{i:j} Gi:j,Pi:j称之为块进位产生块进位传播信号。引入一个新的布尔运算,称之为点操作(⋅):

( G , P ) ⋅ ( G ′ , P ′ ) = ( G + P G ′ , P P ′ ) (G,P)⋅(G',P')=(G+PG',PP') (G,P)(G,P)=(G+PG,PP)

利用这个操作可以分解 ( G i : j , P i : j ) = ( G i : k , P i : k ) ⋅ ( G k − 1 : j , P k − 1 : j ) (G_{i:j},P_{i:j})=(G_{i:k},P_{i:k})⋅(G_{k−1:j},P_{k−1:j}) (Gi:j,Pi:j)=(Gi:k,Pi:k)(Gk1:j,Pk1:j),点操作服从结合律,不服从交换律。利用点操作的结合律,可以构成一个树结构来计算所有2i−1个位置上的进位,并且只需要 l o g 2 ( N ) log_2(N) log2(N)就可计算出来。因此对数加法器可以将传播延时降低到 l o g 2 ( N ) log_2(N) log2(N)。下面是基于点操作的基2 kogge-Stone草签仅为对数加法器原理图。其中白色小方格表示建立P和G信号,黑点表示点操作,菱形表示和产生。

在这里插入图片描述

对于N=16的情形,整个加法器需要49个逻辑门。

动态逻辑实现加法器

下面是用动态多米诺逻辑实现的加法器进位产生和传播信号电路。
在这里插入图片描述

以及多米诺逻辑实现的点操作电路:

在这里插入图片描述

还需要配套的求和电路:

在这里插入图片描述

其中 S i 0 = a i ⊕ b i ‾ , S i 1 = a i ⊕ b i S^0_i=\overline{a_i⊕b_i},S^1_i=a_i⊕b_i Si0=aibi,Si1=aibi.上图中的保持器是重要的,因为前面两级多米诺逻辑违反了多米诺的设计规则:两个动态门串联在一起而没有在中间插入反相器。如果用同一个时钟求值,则会第二个门的输出可能会有毛刺。

总结

各类加法器传播延时和面积与级数的关系图:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/590537.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

好兄弟,一天面了4家公司,堪称Offer收割机...

好兄弟一天面了4家公司&#xff0c;堪称Offer收割机… 面试感受 先说一个字 是真的 “ 累 ” 安排的太满的后果可能就是一天只吃一顿饭&#xff0c;一直奔波在路上 不扯这个了&#xff0c;给大家说说面试吧&#xff0c;我工作大概两年多的时间&#xff0c;大家可以参考下 在…

开关电源DCDC并联均流输出8V(XL4015)-2011年全国电赛题

2011年全国电赛题-开关电源模块并联供电系统&#xff0c;两路XL4015芯片做DCDC模块输出8V&#xff0c;采用主从均流法&#xff0c;可实现多种比例精确分配电流&#xff0c;效率在80%以上。 题目 设计并制作一个由两个额定输出功率均为 16W 的 8V DC/DC 模块构成的并联供电系统…

【事务】@Transactional 注解参数详解

文章目录 前言一、参数详解1.1、isolation&#xff08;事务隔离级别&#xff09;1.2、propagation&#xff08;事务传播机制&#xff09;1.3、readOnly&#xff08;事务读写性&#xff09;1.4、noRollbackFor 和 noRollbackForClassName&#xff08;遇到时不回滚&#xff09;1.…

PHPMySQL基础(四):模拟登录Login功能案例

PHP&MySQL基础&#xff08;一&#xff09;:创建数据库并通过PHP进行连接_长风沛雨的博客-CSDN博客 PHP&MySQL基础&#xff08;二&#xff09;:通过PHP对MySQL进行增、删、改、查_长风沛雨的博客-CSDN博客 PHP&MySQL基础&#xff08;三&#xff09;:处理查询SQL返…

敏捷指标: 评估计划的进展

作者 | Will Hayes, Patrick Place, and Keith Korzec ——卡耐基梅隆大学 度量标准有助于实现一个运作良好的系统&#xff0c;评判现有流程的绩效。在项目交付契约功能时能够对其性能进行监督。本文探讨了在一个复杂的信息物理系统的迭代、增量交付过程中&#xff0c;政府项目…

Django从Models 10分钟建立一套RestfulApi

简介 Django是一套完善而强大的web开发框架, 结合Django Restframework我们可以非常快的搭建一套后台的api, 该api主要特点: 标准的Restful接口, 支持增删改查 每个模型分列表和详情两种接口, 列表GET获取列表/POST新建,详情接口GET获取详情/PUT修改/DELETE删除所有接口自带权…

DJ4-5 基本分段存储管理方式

目录 4.5.1 分段式存储管理方式的引入 4.5.2 分段式存储管理的基本原理 一、分段 二、段表 三、地址变换机构 4.5.3 段的共享和保护 一、分页共享 二、分段共享 4.5.4 段页式存储管理 一、段页式存储管理的引入 二、段页式存储管理 三、地址变换机构 四、评价…

小明找前缀100000(假)

题目背景 小明最近上课天天睡觉&#xff0c;于是啥都不会。 一天&#xff0c;老师终于点兵点将点到他回答问题&#xff0c;你能帮他渡过难关吗&#xff1f; 现在老师给了小明 n 个由 0、1 构成的字符串&#xff0c;然后有 m 次询问&#xff0c; 每次询问给出一个由 0、1 构…

【医学图像】图像分割系列.3 (uncertainty)

介绍几篇使用不确定性引导的医学图像分割论文&#xff1a;UA-MT&#xff08;MICCAI2019&#xff09;&#xff0c;SSL4MIS&#xff08;MICCAI2021&#xff09;&#xff0c;UG-MCL&#xff08;AIIM2022&#xff09;. Uncertainty-aware Self-ensembling Model for Semi-supervise…

3-网络初识-协议

1.概念 协议&#xff0c;网络协议的简称&#xff0c;网络协议是网络通信&#xff08;即网络数据传输&#xff09;经过的所有网络设备都必须共同遵从的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定&#xff0c;计算机之间才能相互通信交流。通常由三…

Android系统中的Binder通信机制分析(6)- Binder通信机制详解

声明 其实对于Android系统Binder通信的机制早就有分析的想法&#xff0c;记得2019年6、7月份Mr.Deng离职期间约定一起对其进行研究的&#xff0c;但因为我个人问题没能实施这个计划&#xff0c;留下些许遗憾…文中参考了很多书籍及博客内容&#xff0c;可能涉及的比较多先不具…

SER5 5500U 黑苹果系统安装教程

注意事项&#xff1a; 安装黑苹果系统需要一定的技术和操作经验&#xff0c;而且存在一定的风险&#xff0c;安装前请注意备硬盘内的数据&#xff0c;以免数据丢失&#xff0c;不推荐普通用户进行尝试&#xff0c;本系统及引导由黑果小兵独家制作&#xff0c;更多黑苹果教程百度…

安装CHATGPT保姆级教程(windows版)

ai包链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1tKuG4OfkewlDRU292vx8mw?pwdtw8t 提取码&#xff1a;tw8t 一、安装篇 安装python&#xff0c;使用软件包中的python安装程序安装后检查是否安装成功&#xff0c;cmd窗口运行命令&#xff1a; python –vers…

【九章斩题录】C/C++:替换空格(JZ5)

精品题解 &#x1f525; 《九章斩题录》 &#x1f448; 猛戳订阅 &#x1f4dc; 目录&#xff1a; JZ5 - 替换空格 「 法一 」暴力美学 「 法二 」另开数组 「 法三 」反向替换&#xff08;利用 rfind replace&#xff09; 「 整活 」不用C&#xff0c;Python 一行代码搞…

C#基本语法

关键字 标识符命名规则 标识符中只能出现英文字母、数字、下划线&#xff0c;以及这几种字符&#xff0c;不能出现诸如"空格&#xff0c;&#xff01;"等这些字符&#xff1b;标识符名称只能以下划线&#xff0c;字母以及打头&#xff0c;不可以用数字作为标识符名…

企业如何运用CRM实现企业数字化战略布局

随着数字化时代的到来&#xff0c;越来越多的企业开始意识到数字化转型的重要性&#xff0c;而CRM&#xff08;客户关系管理&#xff09;系统则是企业数字化战略布局中的重要一环&#xff0c;也逐渐受到越来越多企业的关注。 那么&#xff0c;企业如何运用CRM实现数字化战略布局…

自动化测试实战(一)12306火车票网站自动登录工具

还记得2011年春运&#xff0c;12306火车票预订网站经常崩溃无法登录吗。 今天我们就开发一个12306网站自动登录软件。 帮助您轻松订票 Web的原理就是&#xff0c;浏览器发送一个Request给Web服务器&#xff0c;Web服务器处理完这个请求之后发送一个HTTP Response给浏览器。 如…

Mybatis源码细节探究:MappedStatement和Cache对象对照关系研究

给自己的每日一句 不从恶人的计谋&#xff0c;不站罪人的道路&#xff0c;不坐亵慢人的座位&#xff0c;惟喜爱耶和华的律法&#xff0c;昼夜思想&#xff0c;这人便为有福&#xff01;他要像一棵树栽在溪水旁&#xff0c;按时候结果子&#xff0c;叶子也不枯干。凡他所做的尽…

《面试1v1》类加载过程

我是 javapub&#xff0c;一名 Markdown 程序员从&#x1f468;‍&#x1f4bb;&#xff0c;八股文种子选手。 面试官&#xff1a; 你了解Java的类加载过程吗?跟我聊聊classes是如何加载到JVM中的。 候选人&#xff1a; Java的类加载过程由加载、验证、准备、解析和初始化5个…

5月底了,现在不想着跳槽可就晚了

前两天跟朋友感慨&#xff0c;今年的铜三铁四、裁员、疫情导致好多人都没拿到offer!现在已经5月底了&#xff0c;具体金九银十只剩下三个月。 对于想跳槽的职场人来说&#xff0c;绝对要从现在开始做准备了。这时候&#xff0c;很多高薪技术岗、管理岗的缺口和市场需求也出来了…