implement a Verilog gate level model for 64-bit Ripple Carry Adder and 32/64-bit twos complement
Gate level implementation for the following components: - RC_ADD_SUB_64 - TWOSCOMP64 - TWOSCOMP32
This commit is contained in:
parent
3801d523de
commit
bb7e172316
19
logic.v
19
logic.v
@ -20,7 +20,9 @@ output [63:0] Y;
|
|||||||
//input list
|
//input list
|
||||||
input [63:0] A;
|
input [63:0] A;
|
||||||
|
|
||||||
// TBD
|
wire _CO;
|
||||||
|
|
||||||
|
RC_ADD_SUB_64 twoscomp64_sub(.Y(Y), .CO(_CO), .A(64'b0), .B(A), .SnA(1'b1));
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
@ -31,7 +33,20 @@ output [31:0] Y;
|
|||||||
//input list
|
//input list
|
||||||
input [31:0] A;
|
input [31:0] A;
|
||||||
|
|
||||||
// TBD
|
// inverted bits
|
||||||
|
// wire A_inv[31:0];
|
||||||
|
|
||||||
|
//genvar i;
|
||||||
|
//generate
|
||||||
|
// for (i = 0; i < 32; i = i + 1)
|
||||||
|
// begin : inv32_gen_loop
|
||||||
|
// not (A_inv[i], A[i]);
|
||||||
|
// end
|
||||||
|
//endgenerate
|
||||||
|
|
||||||
|
wire _CO;
|
||||||
|
|
||||||
|
RC_ADD_SUB_32 twoscomp32_sub(.Y(Y), .CO(_CO), .A(0), .B(A), .SnA(1'b1));
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
|
@ -29,7 +29,19 @@ input [63:0] A;
|
|||||||
input [63:0] B;
|
input [63:0] B;
|
||||||
input SnA;
|
input SnA;
|
||||||
|
|
||||||
// TBD
|
// carry-in bits for each 1-bit full adder
|
||||||
|
wire C[0:64];
|
||||||
|
buf (C[0], SnA);
|
||||||
|
|
||||||
|
genvar i;
|
||||||
|
generate
|
||||||
|
for (i = 0; i < 64; i = i + 1)
|
||||||
|
begin : add64_gen_loop
|
||||||
|
FULL_ADDER add64_inst(Y[i], C[i+1], A[i], B[i] ^ SnA, C[i]);
|
||||||
|
end
|
||||||
|
endgenerate
|
||||||
|
|
||||||
|
buf (CO, C[64]);
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
@ -50,11 +62,10 @@ genvar i;
|
|||||||
generate
|
generate
|
||||||
for (i = 0; i < 32; i = i + 1)
|
for (i = 0; i < 32; i = i + 1)
|
||||||
begin : add32_gen_loop
|
begin : add32_gen_loop
|
||||||
FULL_ADDER add_inst(Y[i], C[i+1], A[i], B[i] ^ SnA, C[i]);
|
FULL_ADDER add32_inst(Y[i], C[i+1], A[i], B[i] ^ SnA, C[i]);
|
||||||
end
|
end
|
||||||
endgenerate
|
endgenerate
|
||||||
|
|
||||||
//assign CO = C[32];
|
|
||||||
buf (CO, C[32]);
|
buf (CO, C[32]);
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
Loading…
x
Reference in New Issue
Block a user