No, you can add all the operations in the same file. Let´s say:
Code:
module ALU (
input [1:0] OP ,
input CLK,
input [7:0] A,
input [7:0] B,
output reg [7:0] OUT
);
wire [7:0] MUX [0:3];
assign MUX[0] = A + B;
assign MUX[1] = A - B;
assign MUX[2] = A ^ B;
assign MUX[3] = A & B;
always@(posedge CLK)
begin
OUT <= MUX[OP]
end
I made the code withou testing (I have no ISE in this machine), but it should work.
But you *can* use several independent operations to make a bigger component, it is up to you. When to use a bigger component or when use several small modules? I suggest thinking in ICs. For example, If you think you should have one IC for add, one IC for sub, etc., you should use several small modules. If you think you can make an IC with add, sub, xor, and, then you should make one single module. Got it?
Also, you can add the test bench in the same file as well. You just have to be sure to assign the correct module as top level (not the simulation module)