Add files via upload
diff --git a/verilog/rtl/my_alu.v b/verilog/rtl/my_alu.v
new file mode 100644
index 0000000..c644f9b
--- /dev/null
+++ b/verilog/rtl/my_alu.v
@@ -0,0 +1,28 @@
+module my_alu(
+ input [7:0] A,B, // ALU 8-bit Inputs
+ input [1:0] ALU_Sel,// ALU Selection
+ output [7:0] ALU_Out, // ALU 8-bit Output
+ output CarryOut // Carry Out Flag
+ );
+ reg [8:0] ALU_Result;
+
+ assign ALU_Out = ALU_Result[7:0]; // ALU out
+ assign CarryOut = ALU_Result[8];
+
+ always @(*)
+ begin
+ case(ALU_Sel)
+ 2'b00: // Addition
+ ALU_Result = A + B ;
+ 2'b01: // Subtraction
+ ALU_Result = A - B ;
+ 2'b10: // and
+ ALU_Result = A & B;
+ 2'b11: // or
+ ALU_Result = A | B;
+
+ default: ALU_Result = A + B ;
+ endcase
+end
+
+endmodule
\ No newline at end of file
diff --git a/verilog/rtl/my_alu_xor.v b/verilog/rtl/my_alu_xor.v
new file mode 100644
index 0000000..7e9e5da
--- /dev/null
+++ b/verilog/rtl/my_alu_xor.v
@@ -0,0 +1,72 @@
+module my_alu_xor(
+input clk,
+input [7:0] A0,B0,A1,B1, // ALU 8-bit Inputs
+input [1:0] ALU_Sel1,ALU_Sel2,// ALU Selection
+output [7:0] ALU_Out1,ALU_Out2, // ALU 8-bit Output
+output CarryOut1,CarryOut2, // Carry Out Flag
+output [7:0] x,
+output y
+);
+
+my_alu alu_1(
+.A (A0),
+.B (B0),
+.ALU_Sel (ALU_Sel1),
+.ALU_Out (ALU_Out1),
+.CarryOut (CarryOut1)
+);
+
+my_alu alu_2(
+.A (A1),
+.B (B1),
+.ALU_Sel (ALU_Sel2),
+.ALU_Out (ALU_Out2),
+.CarryOut (CarryOut2)
+);
+
+
+assign x[7:0] = ALU_Out1[7:0] ^ ALU_Out2[7:0];
+assign y = CarryOut1 ^ CarryOut2;
+always @(*)
+begin
+if (x!=0)
+$display ("Faulty ALU");
+else
+$display ("ALU is right");
+if (y!=0)
+$display ("Faulty Carry");
+else
+$display ("Carry is right");
+end
+
+
+endmodule
+
+module my_alu(
+input [7:0] A,B, // ALU 8-bit Inputs
+input [1:0] ALU_Sel,// ALU Selection
+output [7:0] ALU_Out, // ALU 8-bit Output
+output CarryOut // Carry Out Flag
+);
+reg [8:0] ALU_Result;
+
+assign ALU_Out = ALU_Result[7:0]; // ALU out
+assign CarryOut = ALU_Result[8];
+
+always @(*)
+begin
+case(ALU_Sel)
+2'b00: // Addition
+ALU_Result = A + B ;
+2'b01: // Subtraction
+ALU_Result = A - B ;
+2'b10: // and
+ALU_Result = A & B;
+2'b11: // or
+ALU_Result = A | B;
+
+default: ALU_Result = A + B ;
+endcase
+end
+
+endmodule
\ No newline at end of file