<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>加法器</title>
	<atom:link href="https://www.aitaocui.cn/tag/177866/feed" rel="self" type="application/rss+xml" />
	<link>https://www.aitaocui.cn</link>
	<description>翡翠玉石爱好者聚集地</description>
	<lastBuildDate>Wed, 23 Nov 2022 04:47:06 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.1</generator>

<image>
	<url>https://www.aitaocui.cn/wp-content/uploads/2022/11/taocui.png</url>
	<title>加法器</title>
	<link>https://www.aitaocui.cn</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>加法器(产生数的和的装置)</title>
		<link>https://www.aitaocui.cn/article/281432.html</link>
					<comments>https://www.aitaocui.cn/article/281432.html#respond</comments>
		
		<dc:creator><![CDATA[那谁]]></dc:creator>
		<pubDate>Wed, 23 Nov 2022 04:47:06 +0000</pubDate>
				<category><![CDATA[百科]]></category>
		<category><![CDATA[加法器]]></category>
		<guid isPermaLink="false">https://www.aitaocui.cn/?p=281432</guid>

					<description><![CDATA[加法器是产生数的和的装置。加数和被加数为输入，和数与进位为输出的装置为半加器。若加数、被加数与低位的进位数为输入，而和数与进位为输出则为全加器。常用作计算机算术逻辑部件，执行逻辑操...]]></description>
										<content:encoded><![CDATA[</p>
<article>
<p>加法器是产生数的和的装置。加数和被加数为输入，和数与进位为输出的装置为半加器。若加数、被加数与低位的进位数为输入，而和数与进位为输出则为全加器。常用作计算机算术逻辑部件，执行逻辑操作、移位与指令调用。在电子学中，加法器是一种数位电路，其可进行数字的加法计算。三码，主要的加法器是以二进制作运算。由于负数可用二的补数来表示，所以加减器也就不那么必要。</p>
</article>
<p><img decoding="async" src="https://www.aitaocui.cn/wp-content/uploads/2022/08/20220828_630b432c3e39c.gif" /></p>
<article>
<h1>基本方法</h1>
<p>可以看出，上法是将32位的加法1位1位串行进行的，要缩短进行的时间，就应设法使上叙进行过程并行化。</p>
<div></div>
<p>逐位进位加法器，在每一位的计算时，都在等待前一位的进位。那么不妨预先考虑进位输入的所有可能，对于二进制加法来说，就是0与1两种可能，并提前计算出若干位针对这两种可能性的结果。等到前一位的进位来到时，可以通过一个双路开关选出输出结果。这就是进位选择加法器的思想。</p>
<p>提前计算多少位的数据为宜？同为32位的情况：线形进位选择加法器，方法是分N级，每级计算32/N位；平方根进位选择加法器，考虑到使两个路径（1，提前计算出若干位针对这两种可能性的结果的路径，2，上一位的进位通过前面的结构的路径）的延时达到相等或是近似。方法，或是2345666即第一级相加2位，第二级3位，第三级4位，第四级5位，第五级6位，第六级6位，第七级6位；或是345677即第一级相加3位，第二级4位，第三级5位，第四级6位，第五级7位，第六级7位。</p>
<p>进一步分析加法进行的机制，可以使加法器的结构进一步并行化。</p>
<p>令G=AB，P=A⊕B，则COUT（G，P）=G+PCIN，S（G，P）=P⊕CIN。由此，A，B，CIN，S，COUT五者的关系，变为了G，P，CIN，S，COUT五者的关系。</p>
<p>再定义点运算（·），（G，P）·（G’，P’）=（G+PG’,PP’），可以分解（G3：2,P3：2）=（G3，P3）·（G2，P2）。点运算服从结合律，但不符合交换律。</p>
<p>点运算只与G，P有关而与CIN无关，也就是可以通过只对前面若干位G，P进行点运算计算，就能得到第N位的GN：M，PN：M值，当取M为0时，获得的GN：0，PN：0即可与初使的CIN一起代入COUT（G，P）=G+PCIN，S（G，P）=P⊕CIN，得到此位的COUT，S；而每一位的G，P值又只与该位的A，B值即输入值有关，所以在开始进行运算后，就能并行的得到每一位的G，P值。</p>
<p>以上分析产生了超前进位加法器的思想：三步运算，1，由输入的A，B算出每一位的G，P；2，由各位的G，P算出每一位的GN：0，PN：0；3，由每一位的GN：0，PN：0与CIN算出每一位的COUT，S。其中第1，3步显然是可以并行处理的，计算的主要复杂度集中在了第2步。</p>
<p>第2步的并行化，也就是实现GN：0，PN：0的点运算分解的并行化。</p>
<h1>工作原理</h1>
<p>设一个n位的加法器的第i位输入为ai、bi、ci，输出si和ci+1，其中ci是低位来的进位，ci+1（i=n-1，n-2，…，1，0）是向高位的进位，c0是整个加法器的进位输入，而cn是整个加法器的进位输出。则和</p>
<div></div>
<p>si=aiii+ibii+iici+aibici，(1)</p>
<p>进位ci+1=aibi+aici+bici，(2)</p>
<p>令gi=aibi，(3)</p>
<p>pi=ai+bi，(4)</p>
<p>则ci+1=gi+pici，(5)</p>
<p>只要aibi=1，就会产生向i+1位的进位，称g为进位产生函数；同样，只要ai+bi=1，就会把ci传递到i+1位，所以称p为进位传递函数。把式(5)展开，得到ci+1=gi+pigi-1+pipi-1gi-2+…+pipi-1…p1g0+pipi-1…p0c0(6)。</p>
<p>随着位数的增加式(6)会加长，但总保持三个逻辑级的深度，因此形成进位的延迟是与位数无关的常数。一旦进位（c1~cn-1）算出以后，和也就可由式（1）得出。</p>
<p>使用上述公式来并行产生所有进位的加法器就是超前进位加法器。产生gi和pi需要一级门延迟，ci需要两级，si需要两级，总共需要五级门延迟。与串联加法器（一般要2n级门延迟）相比，（特别是n比较大的时候）超前进位加法器的延迟时间大大缩短了。</p>
<h1>类型</h1>
<div></div>
<p>以单位元的加法器来说，有两种基本的类型：半加器和全加器</p>
<p>，半加器有两个输入和两个输出，输入可以标识为A、B或X、Y，输出通常标识为合S和进制C。A和B经XOR运算后即为S，经AND运算后即为C。</p>
<p>全加器引入了进制值的输入，以计算较大的数。为区分全加器的两个进制线，在输入端的记作Ci或Cin，在输出端的则记作Co或Cout。半加器简写为H.A.，全加器简写为F.A.。</p>
<p>半加器：半加器的电路图半加器有两个二进制的输入，其将输入的值相加，并输出结果到和（Sum）和进制（Carry）。半加器虽能产生进制值，但半加器本身并不能处理进制值。</p>
<p>全加器：全加器三个二进制的输入，其中一个是进制值的输入，所以全加器可以处理进制值。全加器可以用两个半加器组合而成。</p>
<p>注意，进制输出端的最末个OR闸，也可用XOR闸来代替，且无需更改其余的部分。因为OR闸和XOR闸只有当输入皆为1时才有差别，而这个可能性已不存在。</p>
<h1>结构设计</h1>
<div></div>
<p>直接使用式(6)形成的电路是不规则的，并且需要长线驱动，需要大驱动信号和大扇入门。当位数较多时，这种实现方式不太现实。</p>
<p>可以改进超前进位电路，使其具有规则性。对于一个n位（n&gt;4）的加法器，按4位一组的形式对其分组，组内实行超前进位，组间也实行超前进位。相应地超前进位逻辑需要分级，级的数目L=Log4(n)。如图1所示，第m(0～n-1)位的g,p可以表示为：g4k+j=a4k+jb4k+j，p4k+j=a4k+j+b4k+j；k为(m/4)的商，代表组的位置；j为余数，代表该位在该组中的位置。各个4位CLA的组进位产生函数G4k+3,4k=g4k+3+p4k+3g4k+2+p4k+3p4k+2g4k+1+p4k+3p4k+2p4k+1g4k；组进位传递函数P4k+3,4k=p4k+3p4k+2p4k+1p4k；组进位C4k+4=G4k+3,4k+P4k+3,4kc4k。</p>
<p>每个4位的CLA模块分别计算各组内每一位的p、g和组间的P、G，第二级LACG（lookaheadcarrygenerator）根据各组（包含第一级LACG逻辑）的P、G和c0计算出各组间的进位C4k+4，同样，第三级LACG则根据第二级的P、G和c0计算出向高4组的进位C16k+16，依此类推。计算出的所有组进位都要送回各个4位的CLA模块，并行算出每一位的和。</p>
<p>改造后，CLA的延时包括：用式(3)和式(4)产生pi和gi的1级门延时；用超前进位电路产生所有进位的2(2L-1)级门延时；用(1)式计算si的2级门延时。于是总的延时为：</p>
<p>Delay(CLAadder)=1+4Log4(n)(7)</p>
<p>与简单的串联加法器相比，超前进位加法器需要较多的逻辑电路来产生进位位。但它的延迟时间的数量级为log4(n)。当n较大时，速度的改进是很明显的。</p>
<h1>逻辑优化</h1>
<p>逻辑优化设计的主要目的是减少信号的翻转活动，它通过将电路的逻辑功能尽可能的分解、优化，减少逻辑深度，减少信号假翻转，从而使翻转活动最小，减小电路的功耗。</p>
<p>令gsi=ai⊙bi，则式（1）可以改写为si=gsi⊙ci，先考察第一组CLA</p>
<p>s0=gs0⊙c0(8)</p>
<p>s1=gs1⊙c1=gs1⊙(g0+p0c0)(9)</p>
<p>s2=gs2⊙c2=gs2⊙(g1+p1g0+p1p0c0)(10)</p>
<p>s3=gs3⊙c3=gs3⊙(g2+p2g1+p2p1g0+p2p1p0c0)(11)</p>
<p>因为g,p的值只有“00”、“01”、“11”这三种组合，结合布尔代数性质A⊙0=、A⊙1=A可知，s3的值最终可以归结为3个表达式：gs3,3和(gs3⊙c0)，同样，s2值的3个表达式为gs2,2和(gs2⊙c0)，s1为gs1,1和(gs1⊙c0)。于是式(8)至式(11)就可以化为</p>
<p>s0=c0(gs0)+0(0)(12)</p>
<p>s1=c0(gs1⊙p0)+0(gs1⊙g0)(13)</p>
<p>s2=c0(gs2⊙(g1+p1p0))+0(gs2⊙(g1+p1g0))(14)</p>
<p>s3=c0(gs3⊙(g2+p2g1+p2p1p0))</p>
<p>+0(gs3⊙(g2+p2g1+p2p1g0))(15)</p>
<p>其他组，如s4~s7、s8~s11等，情况和s0~s3一样。</p>
<p>逻辑改造后，在进位产生逻辑上可以减少一些不必要的翻转，减少了节点开关活动率，并且可以重复利用g,p积之和的相同部分，达到路径平衡的效果，可以有效地消除假翻转（glitch），同时与门和或门的最大扇入都减少了一个，较大程度地减小了功耗。</p>
<h1>设计优化</h1>
<p>逻辑改造后，电路也应该相应地进行优化设计，因为如果用普通的门电路来实现式(12)~(15)的逻辑，晶体管数目（面积）会增加。另外，在电路级也可以采用减少节点翻转和寄生电容的方法来降低功耗。</p>
<div></div>
<p>式(12)~(15)中多处要用到同或门，设计中，我们用基于旁路的静态逻辑实现产生gs的同或门，如图2。旁路逻辑通过由附加管形成的旁路，可以把“串并交错”的电路结构简化为单一的串或者并的形式。它的电路和版图都有很好的规整性，并且可以减小寄生电容。</p>
<p>是两种同或门N块版图不同部分的比较，（b）是基于旁路逻辑实现的，与（a）相比，少了一条金属连线和两个金属接触，使版图变得十分规整，扩散区不会被隔断。在拓扑上，两条分支用公共的漏区，达到最少的接触孔和金属互连，比“串并”和“并串”的晶体管配置方式规整，且寄生电容小。</p>
<p>加法器电路上的延迟值</p>
<p>旁路逻辑不能实现传输门，因而不能用传输门实现同或和异或，但是容易证明，三态门在速度和功耗方面都比传输门优越。参照传输门的结合方式，我们用两个三态反相器和一个反相器实现了同或门。</p>
<p>实现了式(13)括号内的两个同或逻辑，平均只需要1级门延时，而用普通门实现的“与非或与非”形式的同或门需要2级或3级门延时。由上面的同或门设计得到启发，根据形如式(13)的逻辑，设计了一个10管单元utiandor2。</p>
<p>该单元电路实现s=c0CK+0CKN，只要把式(12)~(15)中的括号部分从CK和CKN输入，输出就相应得到了s0~s3。仅当CKN=时，电路(a)两边均是三态反相器，构成图5（b）的同或门，两个反相器交替导通，s=c0⊙CK；当CKN=CK（发生几率比较大），左边P管和右边N管，或者左边N管和右边P管交替导通，输出s=CK，从而屏蔽了c0的变化。</p>
<p>考察第一组4位CLA中的进位产生逻辑最复杂的s3，参考式（15），当g2,g1,g0均为0，p2,p1,p0均为1时，s3=gs3⊙c0，显然这是一种特殊情况，即低位各位都不产生进位，但可以传递进位时，直接把c0传至高位与gs同或即可产生和。c0在各位和生成逻辑的最后一级才加入，可以消除过早加入带来的不必要的翻转。左右两块交替导通，只存在下拉或上拉延时，有类似动态电路延迟小的优点。仅用了10个晶体管，比常规门实现的积之和节省8个。</p>
</article>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aitaocui.cn/article/281432.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
