数字电子技术基础(七):加法器


两个二进制数之间的算术运算,无论是加减乘除,目前在数字计算机(数字系统)中都是化作若干次加法运算进行的。因此,加法器是构成算术运算器的基本单元。

一、1位加法器

1、半加器

如果不考虑有来自低位的进位输入,将两个一位二进制相加,称为半加。实现半加的电路为半加器。

半加器的真值表
在这里插入图片描述
A、B为输入,S为A、B相加的和,CO为进位输出。通过真值表,可以写出S和CO表达式:
S = A’B + AB’
CO = AB

Verilog 代码为:

// 一位半加器

module h_adder(
 input        A,		// 被加数
 input        B,		// 加数
 output       S,		// 和数
 output       CO		// 进位
 );
 
 assign CO = A & B;
 assign S = A ^ B;
 
 endmodule

因此一个半加器由一个异或门和一个与门构成

在这里插入图片描述

2、1位全加器

如果考虑有来自低位的进位输入,相当于将三个一位二进制相加,称为全加。实现全加的电路为全加器。
一位全加器真值表
在这里插入图片描述
在这里插入图片描述
可以看到,这时候的S和CO的逻辑表达式比较复杂,但是,我们可以用两个半加器和一个或门实现全加器。
先对两个输入ain、bin进行半加,进位输出c1,和数输出s1;再将s1与进位cin半加,得到最终的和数sum,和进位输出c2,再将c1与c2或上得到最终的进位输出co。
代码如下:

module f_adder(
	ain,
	bin,
	cin,
	cout,
	sum
);


input 	wire 		ain;
input 	wire	    bin;
input 	wire	    cin;
output 	wire		cout;
output 	wire		sum;

wire	SYNTHESIZED_WIRE_0;
wire	SYNTHESIZED_WIRE_1;
wire	SYNTHESIZED_WIRE_2;

h_adder	b2v_inst(
	.A(ain),
	.B(bin),
	.CO(SYNTHESIZED_WIRE_0),
	.S(SYNTHESIZED_WIRE_2));

h_adder	b2v_inst2(
	.A(SYNTHESIZED_WIRE_2),
	.B(cin),
	.CO(SYNTHESIZED_WIRE_1),
	.S(sum));
	
assign  cout = SYNTHESIZED_WIRE_0 | SYNTHESIZED_WIRE_1;


endmodule

3、n位串行进位加法器

n位串行进位加法器是用 n个全加器级联构成,这种电路的最大缺点是运行速度慢。

Verilog代码:n位串行进位全加器

4、超前进位加法器

这种加法器是用空间换时间的设计,这里不作介绍
在这里插入图片描述
在这里插入图片描述

  • 8
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值