资源描述:
《四位超前进位加法器》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、四位超前进位加法器1.实验目的练习在Modesim下编写Verilog程序,熟悉Modelsim运行过程,并学会用Verilog语言编写一个四位超前进位加法器。2.实验要求编写一个四位的具有超前进位功能的程序实现超前进位加法;并且编写一测试程序来测试该模块。3.实验内容及步骤•3.1实验内容编写四位超前进位加法器程序及测试程序•3.2本次所实现的功能描述输入两个四位二进制数和一个二进制数进位输入,输出一个二进制结果和一个二进制数进位输出•3.3具体步骤如下:1.打开Modelsim软件,建立工程,键入工
2、程名后,再在下面路径添加一个自己的文件夹。在工程下建立两个文件分别为功能模块文件和测试激励模块文件。2.双击模块文件进入文件后编写代码。3.保存文件,编译,如果程序出错对程序则进行修改。然后再编译,编译成功后进行仿真。4•单击运行并添加波形,观察仿真结果是否符合事先的设计。若不符合,则继续修改代码直至符合事先的设计要求。源程序:moduleadd4(a,b,cin,cout,sum);input[3:0]a,b;inputc_in;output[3:0]sum;outputc_out;wire[2:0]
3、c;wire[3:0]p;wire[3:0]g;wire[9:0]k;xor(p[0],a[0],b[0]);xor(p[l],a[l],b[l]);xor(pE2],a⑵,b⑵);xor(p[3],a[3],b[3]);and(g[0],a[0],b[0]);and(g[l],a[l],b[l]);and(g[2],a[2],b[2]);and(g[3],a⑶,b[3]);and(k[0],p[0],c_in);or(c[0],k[0],g[0]);and(k[l],p[l],g[0]);and(k[
4、2],k[l],c_in);or(c[l],g[l],k[l],k[2]);and(k[3],p⑵,g[l]);and(k[4],k[3],g[0]):and(k[5],k[4],c_in);or(c[2],g[2],k[3],k[4],k[5]);and(k[6],p[3],g[2]);and(k[7],k[6],g[l]);and(k[8],k[7],g[0]);and(k[9],k[8],c_in);or(c_out,g[3],k[6],k[7],k⑻,k⑼);xor(sum[0],p[0],c_
5、in);xor(sum[l],p[l],c[0]);xor(sum[2],p[2],c[l]);xor(sum[3],p[3],c[2]);endmodule测试程序:moduleadder_th;reg[3:0]a,b;regc_in;wire[3:0]sum;wirec_out;integeri,j;add_4fO(・a(a),・b(b),・c_in(c_in),・sum(sum),・c_out(c_out));always#5cin=^cin;initialbegina=4,bO;b二4'bO;c
6、in=rbO;i-0;j二0;endinitialbeginfor(i二0;i<16;i二i+1)for(j=0;j<16;j=j+l)begin#5a=i;b=j;endendinitialbegin$monitor($time,,za=%d,b=%d,c_in=%bsum=%d,c_out=%b“,a,b,c_in,sum,c_out);endcndmodulc测试输岀结果:测试波形:1305a=15,b=15,c_in=1131Oa=15,b=15,c_in=01315a=15,b=15zc_in
7、=11320a=15>15.c_in=01325a=15.b=15,c_in=11330a=15,b=15zc_in=01335a=15,b=15,c_in=11340a=15.b=15zc_in=01345a=15,b=15,c_in=11350a=15,b=15zc_in=01355a=15,b=15,c_in=11360a=15,b=15,c_in=01365a=15zb=15,c_in=11370a=15,b=15,c_in=01375a=15,b=15zc_in=11380a=15>15.c_
8、in=01385a=15.b=15,c_in=11390a=15zb=15zc_in=01395a=15,b=15,c_in=11400a=15.b=15zc_in=01405a=15,b=15,c_in=1141Oa=15,b=15zc_in=01415a=15.b=15,c_in=11420a=15,b=15,c_in=01425*15zb=15,c_in=11430a=15,b=15,c_in=01435a=15,b=15zc_in=