// [1] Unsigned 8-bit Adder
// -----------------------------------
module v_adders_1(A, B, SUM);
input [7:0] A;
input [7:0] B;
output [7:0] SUM;
assign SUM = A + B;
endmodule
// [2] Unsigned 8-bit Adder with Carry In
// -----------------------------------------
module v_adders_2(A, B, CI, SUM);
input [7:0] A;
input [7:0] B;
input CI;
output [7:0] SUM;
assign SUM = A + B + CI;
endmodule
// [3] Unsigned 8-bit Adder with Carry Out
// -------------------------------------------------
module v_adders_3(A, B, SUM, CO);
input [7:0] A;
input [7:0] B;
output [7:0] SUM;
output CO;
wire [8:0] tmp;
assign tmp = A + B;
assign SUM = tmp [7:0];
assign CO = tmp [8];
endmodule
// [4] Unsigned 8-bit Adder with Carry In and Carry Out
// ------------------------------------------------------------------
module v_adders_4(A, B, CI, SUM, CO);
input CI;
input [7:0] A;
input [7:0] B;
output [7:0] SUM;
output CO;
wire [8:0] tmp;
assign tmp = A + B + CI;
assign SUM = tmp [7:0];
assign CO = tmp [8];
endmodule
// [5] Signed 8-bit Adder
// ----------------------------
module v_adders_5 (A,B,SUM);
input signed [7:0] A;
input signed [7:0] B;
output signed [7:0] SUM;
wire signed [7:0] SUM;
assign SUM = A + B;
endmodule
// [6] Unsigned 8-bit Subtractor
// ------------------------------------
module v_adders_6(A, B, RES);
input [7:0] A;
input [7:0] B;
output [7:0] RES;
assign RES = A - B;
endmodule
// [7] Unsigned 8-bit Adder/Subtractor
// --------------------------------------------
module v_adders_7(A, B, OPER, RES);
input OPER;
input [7:0] A;
input [7:0] B;
output [7:0] RES;
reg [7:0] RES;
always @(A or B or OPER)
begin
if (OPER==1'b0) RES = A + B;
else RES = A - B;
end
endmodule
// -----------------------------------
module v_adders_1(A, B, SUM);
input [7:0] A;
input [7:0] B;
output [7:0] SUM;
assign SUM = A + B;
endmodule
// [2] Unsigned 8-bit Adder with Carry In
// -----------------------------------------
module v_adders_2(A, B, CI, SUM);
input [7:0] A;
input [7:0] B;
input CI;
output [7:0] SUM;
assign SUM = A + B + CI;
endmodule
// [3] Unsigned 8-bit Adder with Carry Out
// -------------------------------------------------
module v_adders_3(A, B, SUM, CO);
input [7:0] A;
input [7:0] B;
output [7:0] SUM;
output CO;
wire [8:0] tmp;
assign tmp = A + B;
assign SUM = tmp [7:0];
assign CO = tmp [8];
endmodule
// [4] Unsigned 8-bit Adder with Carry In and Carry Out
// ------------------------------------------------------------------
module v_adders_4(A, B, CI, SUM, CO);
input CI;
input [7:0] A;
input [7:0] B;
output [7:0] SUM;
output CO;
wire [8:0] tmp;
assign tmp = A + B + CI;
assign SUM = tmp [7:0];
assign CO = tmp [8];
endmodule
// [5] Signed 8-bit Adder
// ----------------------------
module v_adders_5 (A,B,SUM);
input signed [7:0] A;
input signed [7:0] B;
output signed [7:0] SUM;
wire signed [7:0] SUM;
assign SUM = A + B;
endmodule
// [6] Unsigned 8-bit Subtractor
// ------------------------------------
module v_adders_6(A, B, RES);
input [7:0] A;
input [7:0] B;
output [7:0] RES;
assign RES = A - B;
endmodule
// [7] Unsigned 8-bit Adder/Subtractor
// --------------------------------------------
module v_adders_7(A, B, OPER, RES);
input OPER;
input [7:0] A;
input [7:0] B;
output [7:0] RES;
reg [7:0] RES;
always @(A or B or OPER)
begin
if (OPER==1'b0) RES = A + B;
else RES = A - B;
end
endmodule
No comments:
Post a Comment