IC学习笔记13——加法器

一、半加器

1.1 半加器逻辑功能

IC学习笔记13——加法器_第1张图片
如上图所示,其中A是被加数,B是加数,s是半加和数,Cout是进位数

1.2 半加器电路图

IC学习笔记13——加法器_第2张图片
如上图所示,可知半加器的和数和进位数的逻辑表达式如下:
Cout=A&B
S =A⊕B

二、全加器

2.1 全加器逻辑功能

IC学习笔记13——加法器_第3张图片
如上图所示,全加器与半加器相比,多了一位来自相邻低位来的进位数Cin

2.2 全加器电路图

IC学习笔记13——加法器_第4张图片
上图展示了一种全加器的电路图,从电路图可以得知全加器的和数和进位数逻辑表达式
S= A⊕B⊕Cin
Cout=(A⊕B) & cin + A&B

2.3 半加器组成全加器

全加器除了上面展示的电路图之外,还可以用两个半加器构成,电路图如下所示:
IC学习笔记13——加法器_第5张图片
使用代码描述如下,假如半加器模块为

                     module half_adder(
                                                    input   A,B,
                                                    output  s,cout
                                       );
                                        assign  cout=A&B;
                                        assign    s =A^B;
                     endmodule

全加器使用半加器模块如下所示

                    module full_adder(         
                                                     input   A,B,cin,
                                                     output   s,cout  
                                      );
                           
                           wire  s1,cout1; 
                           wire  cout2;
                           half_adder u1(.A(A),.B(B),.s(s1),.cout(cout1));
                           half_adder u2(.A(s1),.B(cin),.s(s),.cout(cout2));
                           assign    cout  =cout1|cout2;
                   endmodule

三、行波进位加法器

3.1 行波进位加法器电路图

对于多位数的相加我们使用行波进位加法器,也称串行进位加法器。只需要依次将低位全加器的进位输出端Cout接到高位全加器的进位端Cin,就可以构成行波进位加法器。
IC学习笔记13——加法器_第6张图片
如上图所示,展示的就是被加数1101和加数0110的行波进位加法器。
但是这种加法器有非常大的缺点就是运算速度很慢。在最不利的情况下,做一次加法运算需要经过4个全加器的传输延迟时间才能得到稳定可靠的运算结果。
但考虑到行波进位加法器的电路结构比较简单,因而在对运算速度要求不高的设备中,这种加法器仍不失为一种可取的电路。

3.2 行波进位加法器的延迟

IC学习笔记13——加法器_第7张图片 行波进位加法器的关键路径如上图红线所示,假设经过一个门电路的延迟时间为T,上图延迟时间为(T+T)*4+T=9T。对于一个n bit的行波进位加法器,其延迟(T+T)*n+T=(2n+1)*T。

四、超前进位加法器

4.1 超前进位加法器的原理

我们知道,加到第i位的进位输入信号是这两个加数第i位以下各位状态的函数,所以第i位的进位输入信号(Cin)i一定能由Ai-1Ai-2…A0和Bi-1Bi-2…B0唯一确定。根据这个原理,就可以通过逻辑电路事先得出每一位全加器的进位输入信号,而无需再从最低位开始向高位逐位传递进位信号了,这就有效提高了运算速度。
由全加器的真值表可以得知进位输入信号的产生有两种情况,第一种是AB=1,此时Cout=1第二种情况是A+B=1且Cin=1,也会产生Cout=1
那么两个多位数中第i位相加产生的进位输出Cout可以表示为

                   (Cout)i=AiBi+(Ai+Bi)(Cin)i

如果将AiBi定义为进位生成函数Gi,同时将(Ai+Bi)定义为传送函数Pi,上式就可以变为

                   (Cout)i=Gi+Pi(Cin)i

(cin)i可以表示成

                   (Cin)i=(Gi-1)+(Pi-1)(Cin)i-1

所以 (Cout)i可以表示成

                  (Cout)i=Gi+Pi(Cin)i
                         =Gi+Pi[(Gi-1)+(Pi-1)(Cin)i-1]
                         =Gi+Pi(Gi-1)+Pi(Pi-1)(Pi-2)+...+Pi(Pi-1)...P1G0+Pi(Pi-1)...P0(Cin)0

由全加器逻辑表达式第i位和Si的逻辑式为

                      Si=Ai⊕Bi⊕(Cin)i

4.2超前进位加法器的电路图

IC学习笔记13——加法器_第8张图片
由上图可知,完成两个4位数的加法最多只需要4级门电路的传输延时,相比行波进位加法器无疑是更加快速的,但是超前进位加法器运算时间的缩短是用增加电路复杂程度的代价换取的。当加法器的位数增加时,电路的复杂程度也随着急剧上升。

五、参考文献

数字电子技术基础第六版

你可能感兴趣的:(IC学习,学习)