数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器

数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器
半加器+半加法和全加法是算术运算电路中的基本单元,它们是完成1位二进制相加的一种组合逻辑电路。

一、半加器

半加器不考虑低位进位来的进位值,只有两个输入,两个输出。由一个与门和异或门构成.
真值表:
数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器_第1张图片
在这里插入图片描述
在这里插入图片描述

  1. verilog 数据流级描述:
//半加器模块
module adder_half(  input		wire	a,
					input		wire	b,
					output	    reg		sum,
					output	    reg		cout);
	always @(*)
	begin
		sum = a ^ b;
		cout = a & b;
	end
endmodule
  1. RTL电路
    数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器_第2张图片

二、全加器

当多位数相加时,半加器可用于最低位求和,并给出进位数。第二位的相加有两个待加数和,还有一个来自前面低位送来的进位数。这三个数相加,得出本位和数(全加和数)和进位数。这种就是“全加"
真值表:
数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器_第3张图片
在这里插入图片描述
在这里插入图片描述
或者Ci=AiBi+(Ai+Bi)Ci-1![在这里插入图片描述](https://img-blog.csdnimg.cn/20190615163154326.png

这两种表达式的电路图对应如下,功能一样:
数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器_第4张图片

  1. verilog代码实现一(用两个半加器和一个或门实现一个全加器)结构性描述
//full_adder
module adder_full(a,b,cin,,cout,sum);
input a,b,cin;
output cout,sum;

wire w1,w2,w3;
    adder_half u1(.a(a),.b(b),.sum(w1),.cout(w2));
    adder_half u2(.a(cin),.b(w1),.sum(sum),.cout(w3));
assign cout = w2 | w3;
endmodule
  1. verilog代码实现二行为级描述
//full_adder
module adder_full(a,b,cin,,cout,sum);
input a,b,cin;
output cout,sum;

	assign {cout,sum} = a+b+cin;
 
endmodule
  1. 结构性描述的RTL电路
    数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器_第5张图片
    行为级描述的RTL电路
    数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器_第6张图片
  2. 对于多位输入的全加器
    例如八位全加器用verilog实现:
//8bit_full_adder
module adder_full(a,b,cin,,cout,sum);
input [7:0]a,b;
input cin;
output [7:0]sum;
output cout;

	assign {cout,sum} = a+b+cin;
 
endmodule

RTL电路图:
数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器_第7张图片

之前用八位全加器实现了八位串行的全加器,缺点相当明显,即加法器的延时过高,电路的工作频率低。 此类进位输出,像波浪一样,依次从低位到高位传递, 最终产生结果的加法器,也因此得名为行波进位加法器(Ripple-Carry Adder,RCA)。
如下面的四位全加器
数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器_第8张图片
其关键路径如图中红线所示:则其延迟时间为(T+T)*4+T=9T。假设经过一个门电路的延迟时间为T。
对于一个n bit的行波加法器,其延时为(T+T)*n+T=(2n+1)T。

三、超前进位加法器

  1. 超前进位加法器 (Carry-Lookahead Adder,CLA)是高速加法器,每一级进位有附加的组合电路产生。高位的运算不需要地位的等待,因此速度很高。
    考虑每一级的进位:
    数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器_第9张图片
    则对于4 bit的加法器,每个进位如下,可以看出,每个进位都不需要等待地位,直接计算可以得到。由此我们得到了提前计算进位输出的方法, 用这样的方法实现了加法器就被称为超前进位加法器
    数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器_第10张图片
  2. 其组合电路如下:
    数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器_第11张图片
    进位延时只有三个门的延时,加上最后一级全加器的延时,最多四个延时时间。
    数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器_第12张图片

四、行波进位加法器与超前进位加法器比较

数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器_第13张图片
对于较大位数的加法器,如32位的加法器。如果采用行波进位的方式,我们已经分析过需要(32*2+1)= 65级的门延迟, 那如果采用超前进位的方式,理想情况下也只需要四级的门延迟,但可惜的是, 这也只是一个理想。因为要实现32位的完全的超前进位,电路就会变得非常的复杂。 因此通常的实现方法, 是采用多个小规模的超前进位加法器拼接而成一个较大的加法器,例如,用4个8-bit的超前进位加法器连接成32-bit加法器。

参考资料:https://www.jianshu.com/p/6ce9cad8b467

你可能感兴趣的:(数字电路基础)