全加器模块例化实现4位加法器
一、 实验目的
用模块例化方式,用4个全加器实现一个四位加法器
掌握模块例化的方法,了解进位与二进制数加法的操作流程,用小的逻辑单元组合成大的逻辑单元,理解加法器的构造。
二、 实验内容
1. 实验流程
① 分析实验目的,本次实验用模块例化的方式,用4个全加器实现四位加法器,关键在于规划好四个全加器的进位关系和输出。
② 每个全加器模块,输入本位的两个加数以及来自低位的进位,输出本位的计算结果和向高位的进位
③ 由于最高位可能有进位,故四位加法器计算的结果应该有五位数。
④ 综上在top文件中应当输入两个4位向量,表示两个加数,输出一个5位向量,表示计算结果,在top.v文件中还需要调用4个全加器,用来进行每位的加法,由于每个全加器会有向高位的进位,故还需要定义变量用来传递进位信息。
⑤ 根据实验分析写代码并上板实验。
2. Verilog代码分析
(1) Design source(.v文件):
top.v:
module fourbitadder(
input [3:0]X,
input [3:0]Y,
output [4:0]R
);
wire [2:0]a;//存储进位
onebitfulladder r0(.A(X[0]),
.B(Y[0]),
.Cin(0),
.S(R[0]),
.Co(a[0])
);
onebitfulladder r1(.A(X[1]),
.B(Y[1]),
.Cin(a[0]),
.S(R[1]),
.Co(a[1])
);
onebitfulladder r2(.A(X[2]),
.B(Y[2]),
.Cin(a[1]),
.S(R[2]),
.Co(a[2])
);
onebitfulladder r3(.A(X[3]),
.B(Y[3]),
.Cin(a[2]),
.S(R[3]),
.Co(R[4])
);
Endmodule
一位全加器:
module onebitfulladder(
input A,
input B,
input Cin,
output S,
output Co
);
assign{Co,S}=A+B+Cin;
endmodule
.v分析:
Ⅰtop.v文件:
① input两个四位向量X,Y表示两个加数,通过拨动开关可以控制相加的两数的实际大小。