先行进位加法器教材

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四32 位先行进位加法器

一、功能概述

串行进位加法器延时很大,每级的输出结果都要等上一级的进位到来才可以求和算出结果,这次实验对普通全加器进行改良,改良为先行

进位加法器。

先行进位加法器,各级的进位彼此是独立产生,只与输入数据A, B 和C_in 有关,将各级间的进位级联传播给去掉了,这样就可以减小进位产生的延时。每个等式与只有三级延迟的电路对应,第一级延迟对应进位产生信号和进位传递信号,后两级延迟对应上面的积之和。通过这种进位方式实现的加法器称为超前进位加法器。因为各个进位是并行产生的,所以是一种并行进位加法器。

二、实验原理

1、设二进制加法器第i位为A i, B i,输出为S,进位输入为C i, 进位输

出为C i+i,则有:

S=A i ㊉B i ㊉C i

(1-1)

C i+1 =A i * B i+ A i *C i+ B i*C i =A i * B i+(A i+B i)* C i

(1-2)令G i = A i * B i , P i = A i+B i,贝y C i+1= G i+ P i *C i

当A i和B i都为1时,G i = 1 ,产生进位C i+i = 1

当A i和B i有一个为1时,P i = 1,传递进位C i+i= C i

因此G i定义为进位产生信号,P i定义为进位传递信号。G i的优先级比P i 高,也就是说:当G i = 1时(当然此时也有P i = 1),无条件产生进位,而不管C i 是多少;当G i=0 而P i=1 时,进位输出为C i,跟C i之前的逻辑有关。

下面推导 4 位超前进位加法器。设 4 位加数和被加数为 A 和B,进位输入为C in,进位输出为C out,对于第i位的进位产生G i = A i •B i,进位传递P i=A i+B i , i=0,1,2,3。于是这各级进位输出,递归的展开Ci,有:

C0 = C in

G=G o + P o •C o

C2=G 1 + P1 •C 1 = G 1 + P1 •G 0 + P1 •P o ?C o

C3=G 2 + P

2 •C 2 = G2 + P

2, G 1 + P2 •P1 •G o +

P2 •P1 •P o •C o

C4=G 3 + P3 •C 3 = G3 + P3, G 2 + P3 •P2 •G 1 +

P3 •P 2 •P1 •G o + P 3 P2 •P1

P o •C o (1-3)

C out=C4

由此可以看出,各级的进位彼此独立产生,只与输入数据Ai、Bi 和Cin 有关。

2、接口说明

序号 接口信号名称

方向

说明

备注

1 A[31:0] I 输入数据

2 B[31:0] I 输入数据

3 S[31:0] O 加法结果

4

count

O

最高位进位

3、结构框图

三、实验方案

方案一:分为两个模块:1个4位add_4和1个add_32,其中add_32 调用4个add_4.

首先设计4位超前进位加法器:

框图如下:

设计好四位的之后,开始调用四位的实现

32位的

方案二:分为五个模块:(1)计算传播值和产生值模块:

|

L —

7 \

4位 ^28 4

C^4 4位 - 4位

CLA

CLA

A

15~12 B 15~12 A

11~8 B

11~8 A

7~4 B 7-4 A

3~o B 3~0

1

4位L CLA

C 12 4位 CLA

4位 CLA

C4

<-l 4位 CLA

1 F 1 r

卄* g x1 p x1 C 16

g x1

g x0 P

x0

C s2

4位 BCLA

pg

r 5 CLA CLA 9~16

g m4 P m4

g m7 P m7

P m6 g

m5 p

m5

4位 BCLA

A

31~28 B 31~28 A

27~24 B 27~24 A

23~20 B

23~20 A

19~16 B 19~16

1~8

g

m0 P mO

16 位

1 f f S

7~4

gm2Pm2

4位 BCLA

mlPm1

* * S

i5~i2 g m3

P m3

1 T S3~0

模块

(2)超前进位模块:cla 模块

(3)加法求和模块:sum 模块

(4)求和并按输出a,b,c_in 分组:bit_slice 模块

(5)32 位超前进位加法器总模块:cla_32 总框图:

四、验证方案:

对32 位的两个输入赋值:

当a=32'b1000_0001_0111_1011_1101_1001_1101_1000;

b=32'b0111_1000_ 0001_ 1000_ 1100_ 0111_ 0101_ 0001;

c_in=1'b0;

结果:s=32'b1111

1001;

_1001 _1001 _0100 _1010 _0001 _0010_

当a=32'b1000_0001_

1000;

0111_ 1011_ 1101_ 1001_ 1101_

0001;

b=32'b0111_1000_

0001_ 1000_ 1100_ 0111_ 0101_

c_in=1'b1;

结果:s=32'b1111 _1001 _1001 _0100 _1010 _0001 _0010_ 1010; 来对波形进行观察,看波形是否正确。

五、实验代码:

方案一:(1)add_32 模块顶层模块:

(2) 4位add_4模块

方案二:(1) cla_32顶层模块:

module cla_32(a,b,c_in,s,count ); input [31:0] a,b;

input c_in;

相关文档
最新文档