位超前进位加法器的verilog实现.docx
- 文档编号:15907690
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:8
- 大小:56.54KB
位超前进位加法器的verilog实现.docx
《位超前进位加法器的verilog实现.docx》由会员分享,可在线阅读,更多相关《位超前进位加法器的verilog实现.docx(8页珍藏版)》请在冰点文库上搜索。
HarbinInstituteofTechnology
verilog实验报告
(1)
设计题目:
16位超前进位加法器
班级:
姓名:
学号:
哈尔滨工业大学
2015年6月
一、功能描述
加法运算是最基本的运算,所有其他基本算术运算都是以加法运算为基础。
但因为加法运算存在进位问题,使得某一位计算结果的得出和所有低于它的位相关,因此,为了减少进位传输所耗的时间,提高计算速度,我们可以采用超前进位加法器,它是利用输入信号来预先产生高位进位信号,从而减少进位从低位到高位的传递时间。
超前进位加法器,不同于串行进位加法器,对于每一位的结果是否有进位,不需要等前一位的进位结果计算出来,而是只要输入A,B到来就可以经过一些列的逻辑运算同时计算出各位是否有进位。
理论上讲无论多少位的加法器都可以设计成为超前进位加法器,但是当位数很大的时候,超前进位加法器的逻辑会变得异常复杂,而失去了使用的意义,所以大多数超前进位加法器做到4位,而多于4位的要求,就用多个超前进位加法器级联实现,所以本设计要进行16位的加法运算,我们可以将其分成四组,组内采用超前进位,组间采用串行进位,既提高了运算速度,又不至于采用过多的门数。
二、设计方案
1.设计原理
首先做两个传递函数;进位产生函数Gi和进位传送函数
Gi=AiBi
Pi=Ai^Bi
当Gi=1时会产生进位,而当Pi=1时会使进位输入传到输出。
根据全加器原理,第i位的进位及和的输出可表示为
Ci=Gi+PiCi-1
Si=Pi^Ci-1
由此可得各位的进位输出表达式
C1=G1+P1C0
C2=G2+P2G1+P2P1C0
C3=G3+P3G2+P3P2G1+P3P2P1C0
C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0
…
这样经过函数Pi和函数Qi产生一级时间延迟,经过计算C产生一级时延迟,则A,B输入一旦产生即可算出结果。
2.设计思路
进行16位超前进位加法器设计时由于位数太多如果采用全部超前进位则电路的逻辑结构极其复杂并且电路的规模会很大可以考虑用4个4位超前进位加法器来实现16位超前进位加法器的设计。
三、关键代码
1.首先我们进行四位超前进位加法器的设计,由设计方案中所述的算法,定义一个名为fulladder4的模块,该模块中的关键代码如下:
assignp0=a[0]^b[0],
p1=a[1]^b[1],
p2=a[2]^b[2],
p3=a[3]^b[3];
assigng0=a[0]&b[0],
g1=a[1]&b[1],
g2=a[2]&b[2],
g3=a[3]&b[3];
assignc1=g0|(p0&c_in),
c2=g1|(p1&g0)|(p1&p0&g0)|(p2&p1&p0&c_in),
c3=g2|(p2&g1)|(p2&p1&g0)|(p3&p2&p1&p0&c_in),
c4=g3|(p3&g2)|(p3&p2&g1)|(p3&p2&p1&g0)|(p3&p2&p1&p0&c_in);
assignsum[0]=p0^c_in,
sum[1]=p1^c1,
sum[2]=p2^c2,
sum[3]=p3^c3;
assignc_out=c4;
2.我们定义名为fulladder16的16位超前进位加法器,主要是通过例化四位超前进位加法器得到,关键代码如下:
fulladder4i1(sum[3:
0],c3,a[3:
0],b[3:
0],c_in);
fulladder4i2(sum[7:
4],c7,a[7:
4],b[7:
4],c3);
fulladder4i3(sum[11:
8],c11,a[11:
8],b[11:
8],c7);
fulladder4i4(sum[15:
12],c15,a[15:
12],b[15:
12],c11);
assignc_out=c15;
3.编写测试脚本文件,由于我们不可能将所有可能的输入一一列举,但是我们可以输入一些具有代表性的数据,例如我们可以让每四位数产生级间进位,观察结果是否正确,激励文件关键代码:
initial
begin
a=5;b=4;c_in=0;
#5a=2;b=6;c_in=1;
#5a=4'b1101;b=4'b0011;c_in=0;
#5a=8'b1101_0011;b=8'b0110_0001;c_in=1;
#5a=12'b0101_1100_0101;b=12'b1100_0000_0101;c_in=0;
#5a=16'b1011_0001_1100_1010;b=16'b1100_0000_0011_0000;c_in=1;
end
四、仿真与验证
通过modelsim进行仿真,仿真时间设为30ps,波形图结果如下,从数据我们可知该系统实现了功能。
仿真结果:
0a=0000000000000101,b=0000000000000100,c_in=0
sum=0000000000001001,c_out=0
5a=0000000000000010,b=0000000000000110,c_in=1
sum=0000000000001001,c_out=0
10a=0000000000001101,b=0000000000000011,c_in=0
sum=0000000000010000,c_out=0
15a=0000000011010011,b=0000000001100001,c_in=1
sum=0000000100110101,c_out=0
20a=0000010111000101,b=0000110000000101,c_in=0
sum=0001000111001010,c_out=0
25a=1011000111001010,b=1100000000110000,c_in=1
sum=0111000111111011,c_out=1
仿真波形图如下:
从该图中可以更直观地验证结果。
五、结论
通过对16位超前进位加法器进行功能仿真,本设计达到了预定设计的目的,实现了利用verilog语言设计16位超前进位加法器这样一个简单的数字电路,但在验证时,我们只是测试观察了有限的输入,因此可靠性不强。
更加可靠的验证方法有待于进一步的研究。
附录1
16位超前进位加法器的verilog代码:
modulefulladder16(sum,c_out,a,b,c_in);
output[15:
0]sum;
outputc_out;
input[15:
0]a,b;
inputc_in;
wirec3,c7,c11,c15;
fulladder4i1(sum[3:
0],c3,a[3:
0],b[3:
0],c_in);
fulladder4i2(sum[7:
4],c7,a[7:
4],b[7:
4],c3);
fulladder4i3(sum[11:
8],c11,a[11:
8],b[11:
8],c7);
fulladder4i4(sum[15:
12],c15,a[15:
12],b[15:
12],c11);
assignc_out=c15;
endmodule
modulefulladder4(sum,c_out,a,b,c_in);
output[3:
0]sum;
outputc_out;
input[3:
0]a,b;
inputc_in;
wirep0,g0,p1,g1,p2,g2,p3,g3;
wirec1,c2,c3,c4;
assignp0=a[0]^b[0],
p1=a[1]^b[1],
p2=a[2]^b[2],
p3=a[3]^b[3];
assigng0=a[0]&b[0],
g1=a[1]&b[1],
g2=a[2]&b[2],
g3=a[3]&b[3];
assignc1=g0|(p0&c_in),
c2=g1|(p1&g0)|(p1&p0&g0)|(p2&p1&p0&c_in),
c3=g2|(p2&g1)|(p2&p1&g0)|(p3&p2&p1&p0&c_in),
c4=g3|(p3&g2)|(p3&p2&g1)|(p3&p2&p1&g0)|(p3&p2&p1&p0&c_in);
assignsum[0]=p0^c_in,
sum[1]=p1^c1,
sum[2]=p2^c2,
sum[3]=p3^c3;
assignc_out=c4;
endmodule
附录2
激励块代码如下:
moduletop;
reg[15:
0]a,b;
regc_in;
wire[15:
0]sum;
wirec_out;
fulladder16adder(.sum(sum),.c_out(c_out),.a(a),.b(b),.c_in(c_in));
initial
begin
a=5;b=4;c_in=0;
#5a=2;b=6;c_in=1;
#5a=4'b1101;b=4'b0011;c_in=0;
#5a=8'b1101_0011;b=8'b0110_0001;c_in=1;
#5a=12'b0101_1100_0101;b=12'b1100_0000_0101;c_in=0;
#5a=16'b1011_0001_1100_1010;b=16'b1100_0000_0011_0000;c_in=1;
end
endmodule
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超前 进位 加法器 verilog 实现