Professional Documents
Culture Documents
module fullAdder(
output [3:0] out ,
output crOut ,
input [3:0] in0 ,
input [3:0] in1 ,
input crIn );
wire [4:0] sum ;
assign sum = in0 + in1 + crIn ;
assign out = sum[3:0] ;
assign crOut = sum[4] ;
endmodule
module bigAdder(
output [15:0] out ,
output crOut ,
input [15:0] in0 ,
input [15:0] in1 ,
input crIn );
wire [15:0] sum ;
wire c1 ;
wire c2 ;
wire c3 ;
fullAdder modul1(.out(sum[3:0]),
.crOut(c1),
.in0(in0[3:0]),
.in1(in1[3:0]),
.crIn(crIn)
),
modul2(.out(sum[7:4]),
.crOut(c2),
.in0(in0[7:4]),
.in1(in1[7:4]),
.crIn(c1)
),
modul3(.out(sum[11:8]),
.crOut(c3),
.in0(in0[11:8]),
.in1(in1[11:8]),
.crIn(c2)
),
modul4(.out(sum[15:12]),
.crOut(crOut),
.in0(in0[15:12]),
.in1(in1[15:12]),
.crIn(c3)
);
assign out = sum[15:0];
endmodule
//test module
module testBigAdder;
reg [15:0] out;
reg [15:0] in0;
reg [15:0] in1;
reg crIn=0;
reg clk;
wire [15:0] sum;
initial begin
clk = 0 ;
forever #1 clk = ~clk;
end
initial begin
in1 = 16'b1000010100010101;
in0 = 16'b1000000000000000;
#2 in1 = 16'b0000000000000001;
in0 = 16'b1000000000000000;
#2 in1 = 16'b0010000000000000;
in0 = 16'b0011000000000000;
#2 in1 = 16'b0010000000000000;
in0 = 16'b0011000000000000;
$stop ;
end
bigAdder dut(sum,crOut,in0,in1,crIn);
endmodule