Add files via upload
diff --git a/verilog/rtl/my_alu_xor.v b/verilog/rtl/my_alu_xor.v
new file mode 100644
index 0000000..f5893b2
--- /dev/null
+++ b/verilog/rtl/my_alu_xor.v
@@ -0,0 +1,76 @@
+`default_nettype none
+module my_alu_xor(
+//`ifdef USE_POWER_PINS
+//	 inout vccd1,	// User area 1 1.8V supply
+//         inout vssd1,	// User area 1 digital ground
+// `endif
+	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 ("Fault detected");
+		else
+			$display ("sucess");
+	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
+
+
+`default_nettype wire