Compare commits

...

6 Commits

Author SHA1 Message Date
f4a3e3bb8b
lab-03: clean up twos complement modules 2024-10-03 21:14:33 -07:00
f5b19ae9fc
lab-02: fix behavioral xor statement in RC_ADD_SUB modules 2024-10-03 20:25:36 -07:00
48bdad0e8b
lab-03: 64-bit Ripple Carry Adder and 32/64-bit twos complement 2024-10-03 20:21:30 -07:00
bb7e172316
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
2024-10-02 16:18:00 -07:00
3801d523de
implement a Verilog gate level model for ripple carry adder subtractor
Gate level implementation for the following components:
- FULL_ADDER
- HALF_ADDER
- RC_ADD_SUB_32
2024-10-01 20:42:02 -07:00
d1475b5a4f
implement a Verilog gate level model for ripple carry adder subtractor
Gate level implementation for the following components:
- FULL_ADDER
- HALF_ADDER
- RC_ADD_SUB_32
2024-10-01 11:01:17 -07:00
4 changed files with 41 additions and 10 deletions

View File

@ -23,6 +23,9 @@ module FULL_ADDER(S,CO,A,B, CI);
output S,CO;
input A,B, CI;
//TBD
wire Y, CO1, CO2;
HALF_ADDER ha1(.Y(Y), .C(CO1), .A(A), .B(B));
HALF_ADDER ha2(.Y(S), .C(CO2), .A(Y), .B(CI));
or (CO, CO1, CO2);
endmodule;
endmodule

View File

@ -22,6 +22,7 @@ module HALF_ADDER(Y,C,A,B);
output Y,C;
input A,B;
// TBD
xor digit(Y, A, B);
and carry(C, A, B);
endmodule;
endmodule

View File

@ -20,7 +20,7 @@ output [63:0] Y;
//input list
input [63:0] A;
// TBD
RC_ADD_SUB_64 twoscomp64_sub(.Y(Y), .A(64'b0), .B(A), .SnA(1'b1));
endmodule
@ -31,7 +31,7 @@ output [31:0] Y;
//input list
input [31:0] A;
// TBD
RC_ADD_SUB_32 twoscomp32_sub(.Y(Y), .A(0), .B(A), .SnA(1'b1));
endmodule
@ -143,4 +143,4 @@ input [1:0] I;
// TBD
endmodule
endmodule

View File

@ -29,7 +29,21 @@ input [63:0] A;
input [63:0] B;
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
wire B_xor;
xor (B_xor, B[i], SnA);
FULL_ADDER add64_inst(Y[i], C[i+1], A[i], B_xor, C[i]);
end
endgenerate
buf (CO, C[64]);
endmodule
@ -42,7 +56,20 @@ input [`DATA_INDEX_LIMIT:0] A;
input [`DATA_INDEX_LIMIT:0] B;
input SnA;
// TBD
// carry-in bits for each 1-bit full adder
wire C[0:32];
buf (C[0], SnA);
genvar i;
generate
for (i = 0; i < 32; i = i + 1)
begin : add32_gen_loop
wire B_xor;
xor (B_xor, B[i], SnA);
FULL_ADDER add32_inst(Y[i], C[i+1], A[i], B_xor, C[i]);
end
endgenerate
buf (CO, C[32]);
endmodule