加法器的优化
4-bit加法器,在实现中,我们是用四个全加器,构成了这个四位的加法器,当把这个加法器的输入都准备好时,其实只有最右边的这个全加器的三个输入都准备好了,左边这三个全加器,它的进位输入都还没有产生,等最右边全加器将进位的输出,传接到下一个全加器后,下一个全加器才可以开始运算,进而产生新的进位输出,这样进位输出,像波浪一样,依次从低位到高位传递,这样的加法器,也因此得名为行波进位加法器(Ripple-Carry Adder , RCA),这个加法器,从结构上来看,低位全加器的进位输出,都连接到高一位全加器的进位输入,它的优点是电路布局简单,设计方便,只要设计好全加器,连接起来就构成了多位的加法器,缺点是高位的运算必须等待低位的运算完成,这样造成了整个加法器的延迟时间很长。
4-bit RCA的门电路,所有的从输入到输出的电路连接中,经过的门数最多的一条路径(延迟最长的路径),也称为关键路径,输入信号进入到这块电路之后,在连接线上传递需要花时间,称为线延迟,经过各种门,需要花时间,称为门延迟,在进行设计原理分析时,我们主要关注门延迟,如果把每一个门延迟都记为T,首先在每个全加器内部,都要经过2T个延迟,还要加上最开始的这一个门延迟,对于四位的行波进位加法器,一共是9个门延迟,如果是N位的行波进位加法器,就是一共2N+1个门延迟,这样对于32位的行波进位加法器,一共是65个门延迟,性能与实际使用的加法器差距较大。
加法器的优化思路
主要问题:高位的运算必须等待低位的“进位输出信号”
超前进位加法器(Carry-Lookahead Adder , CLA), 一个四位的超前进位加法器,仍然由四个全加器构成,但是每个全加器的进位输入不是来自前一级的加法器,而是来自一个统一的超前进位逻辑。对于每一个进位,只需要三级门延迟就可以计算出来,然后进入到全加器中,最后一级全加器还需要1级门延迟才可以计算出对应的信号,因此对于超前进位加法器总的延迟时间为4级的门延迟。超前进位加法器的门延迟与加法的位宽度是没有关系的,如果进一步拓宽加法器的位数,则电路变得非常复杂。
如果采用完全的超前进位,理想的总延迟时间为4级门延迟,实际上电路过于复杂,难以实现。
通常的实现方法是采用多个小规模的超前进位加法器拼接而成一个较大的加法器,例如采用4个8-bit的超前进位加法器连接成32-bit加法器。