httpswwwcheggcomhomeworkhelpDigitalSystemsDesignUsingVerilog

https://www.chegg.com/homework-help/Digital-Systems-Design-Using-Verilog-1st-edition-chapter-4-problem-3P-solution-9781305445413

Can someone explain this answer for me?

Solution

module CarryLookAheadAdder_16bit(
input [15:0] A,B,
input Cin,
output [15:0] Sum,
output Cout
);

wire c4,c8,c12;
CarryLookAheadAdder_4bit CL0(A[3:0],B[3:0],Cin,Sum[3:0],c4);
CarryLookAheadAdder_4bit CL1(A[7:4],B[7:4],c4,Sum[7:4],c8);
CarryLookAheadAdder_4bit CL2(A[11:8],B[11:8],c8,Sum[11:8],c12);
CarryLookAheadAdder_4bit CL3(A[15:12],B[15:12],c12,Sum[15:12],Cout);
endmodule

for 4bit:

module CarryLookAheadAdder_4bit(
input [3:0] A,B,
input Cin,
output [3:0] Sum,
output Cout
);
wire [4:1] carry;

CarryLookAheadGenrator_4bit b0(.carry(carry[4:1]),.A(A[3:0]),.B(B[3:0]),.carry_in(Cin));
FullAdder fa0(.s(Sum[0]),.a(A[0]), .b(B[0]),.cin(Cin));
FullAdder fa1(.s(Sum[1]),.a(A[1]), .b(B[1]),.cin(carry[1]));
FullAdder fa2(.s(Sum[2]),.a(A[2]), .b(B[2]),.cin(carry[2]));
FullAdder fa3(.s(Sum[3]),.a(A[3]), .b(B[3]),.cin(carry[3]));
assign carry_out = carry[4];

endmodule

CarryLookAheadGenrator:

module CarryLookAheadGenrator_4bit(
input [3:0] A,B,
   input carry_in,
output [3:0] carry
);
wire [3:0] gen, prp;
HalfAdder u3_half_adder(.a(A[0]),.b(B[0]),.s(prp[0]),.c(gen[0]));
HalfAdder u4_half_adder(.a(A[1]),.b(B[1]),.s(prp[1]),.c(gen[1]));
HalfAdder u5_half_adder(.a(A[2]),.b(B[2]),.s(prp[2]),.c(gen[2]));
HalfAdder u6_half_adder(.a(A[3]),.b(B[3]),.s(prp[3]),.c(gen[3]));
assign carry[0] = gen[0] | (prp[0] & carry_in);
assign carry[1] = gen[1] | prp[1] & (gen[0] | (prp[0] & carry_in));
assign carry[2] = gen[2] | prp[2] & (gen[1] | prp[1] & (gen[0] | (prp[0] & carry_in)));
assign carry[3] = gen[3] | prp[3] & (gen[2] | prp[2] & (gen[1] | prp[1] & (gen[0] | (prp[0] & carry_in))));   
endmodule

for full adder:

module FullAdder(
input a,b,cin,
output s,cout
);
wire w_sum1;
wire w_carry1;
wire w_carry2;

HalfAdder u1_half_adder
(
.a(a),
.b(b),
.s(w_sum1),
.c(w_carry1)
);
HalfAdder u2_half_adder
(
.a(w_sum1),
.b(cin),
.s(s),
.c(w_carry2)
);
assign cout=w_carry1|w_carry2;
endmodule

for half Adder:

module HalfAdder(
input a,b,
output s,c
);

assign s= a^b;
assign c= a & b;
endmodule

 https://www.chegg.com/homework-help/Digital-Systems-Design-Using-Verilog-1st-edition-chapter-4-problem-3P-solution-9781305445413 Can someone explain this answe
 https://www.chegg.com/homework-help/Digital-Systems-Design-Using-Verilog-1st-edition-chapter-4-problem-3P-solution-9781305445413 Can someone explain this answe

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site