加法器电路将两组N比特的操作数相加,并产生一组N比特的输出结果和一位进位输出(当产生的结果超过 N比特时,进位输出为1)。基本的加法电路是数字系统设计的基础之一,自从最早的数字工程开始后,无数的应用中都使用了加法电路。最简单的加法电路操作过程和人工算法是一样的,执行从“右到左”,从最低位到最高位的顺序。和其它任何处理一组二进制信号的电路一样,使用比特分段的方法可以很容易的设计出最简单的加法电路。将N比特二进制码加法的注意力转移到将一对比特相加,那么即使再复杂的设计都可以被分而制之了。一旦设计出可以相加任意一对比特的电路时,就可以通过将电路复制N次来构造出N比特的加法器。
下面所示的逻辑框图给出了在相加两组二进制码时可能遇到的八种情况。高亮的比特对以及相关的进位表示了比特分段加法电路必须处理三个输入(两个要相加的比特数和一个从前一级过来的进位)并产生两个输出(和比特以及进位比特)。在练习和实验项目中,你需要为不同的加法电路构造出真值表和具体电路。

如右图所示的比特分段电路的方框图,其称为全加器(FA)。全加器可以用来相加任何位数的比特位。下面的图显示了由8个独立的全加器比特分段电路组成的8比特加法电路。注意,为了画图更方便,比特分段框图中的输入和输出管脚进行了重新分配。

在8比特加法器中第一位产生的进位一定会在9比特和产生之前带入到所有高7位中去。将一比特分段上的进位信息传播到后面的比特分段上的必要性使得该加法器有一个名字-脉动进位加法器(RCA)。进位信息在每个比特段上处理严重的制约了RCA的运算速度。来看一个例子,一个8比特加法器将A=11111010和B=10001110相加,然后再将B操作数的最低位由0变为1。为了加法器所有9个比特可以显示正确的答案,从最低位产生的进位信息必须要传播通过所有8个全加器。如果每个全加器在输入改变后都需要1纳秒的时间来产生和并传递进位信息的话,那么一个8比特RCA就需要8纳秒来产生一个正确答案(8纳秒是最差情况,比如操作数的LSB改变需要所有8个输出都改变)。如果计算机中一个8比特加法器电路需要8纳秒,那么计算机的最大工作频率就是8纳秒的倒数,即125MHz。大部分的计算机现在都是32位的-一个使用32位RCA的32位加法操作需要32纳秒,那么计算机的操作频率就不会超过33MHz。对很多应用来说,这样的RCA实在是太慢了-这就要求出现更快的加法器。
注意到RCA最低位上的进位输入是直接连接到了地,这是因为任何加法器的最低位上进位输入必须是逻辑0。利用这一观察到的现象,就可以在LSB位置上不设置进位输入,从而构造出更简洁的比特分段电路。该电路就称为半加器(HA),这一简化功能的加法电路经常使用在最低位上。
超前进位加法器(CLA)通过使用不同的电路来确定进位信息,从而克服了RCA的速度限制。CLA使用更加简化的比特分段模型,所有的进位组成信息都保存在一个独立的电路中,该电路称为“进位传播/产生电路”(CPG)。CPG电路并行(即同时)的从所有比特分段中接收进位组成信息,并且同时将所有的进位输入信号打入到各比特分段中。由于所有比特位上的进位信息是同时确定的,那么加法结果就可以更快的产生。
由于CLA也要处理二进制码这样的一组信号,所以要再一次用到比特分段的方法。我们的目标就是重新检验二进制码的加法,并确定进位信息是如何产生和传播的,然后再在改进电路中开发新的技术。
下面的图给出了前面第一幅图相同的8个加法样例。注意到只有2个样例(3和7)中产生了进位输出。也要注意到,在4个样例中,进位信息被超前产生了并传播到了当前的比特位 ,甚至在当前比特位还没有产生进位的时候,其进位输出就已经产生了。

基于这样的观察,我们就可以定义与进位输出相关的两种中间信号:进位产生G和进位传播P。G在当前输入组合产生进位时就有效(比如两个操作数都为1),P在前面产生的进位传播进入当前比特对时有效(只要有一个比特位为1)。基于这样的讨论,CLA比特分段模型的真值表就可以完成了(这个留作你的练习)。
CLA比特分段模型使用P和G输出来代替进位输出位。注意在RCA中,第i位的进位输出,写作
,那么在CLA中就可以写作:
。由于在CLA中每一个比特分段的进位项(以P和G的形式)都来自于前一位,每位的进位项都可以写为:

再以文字形式表述一遍,最低为CLA比特分段的进位项可以根据如下方式组成:
0th stage:Cin连接到所有的进位输入上(C0)。
1st stage:如果第0位产生进位,那么Cin为1,如果进位传播到了第0位上,那么C0为1。
2nd stage:如果第1位产生进位,那么Cin为1,或者第0位产生进位并传播进入第1位,或是有进位传播进入第1位和第0位,那么C0为1 。
3rd stage:如果第2位产生进位信息,那么Cin为1,或是第一位产生进位并传播进入第2位,或是第0位产生进位并传播进入第1位和第2位,或是有进位传播进入第2、1和0位,那么C0为1 。
4th stage:对于所有位都采用上述的方法。
如下图所示,在CPG电路模块中可以搭建出每一位上的进位逻辑等式。一个完整的CLA加法器需要CLA比特分段模型和CPG电路。完整的CLA电路所含有的一个比特比RCA需要更多的设计工作量,但是由于CPG电路可以为每个CLA比特分段并行的驱动进位信息,它就避免了RCA上的额外的延迟。你在实验项目中 有机会设计并搭建出一个CLA电路。



