You are on page 1of 2

ALU 8-bit (Behavioral modeling)

module alu(cout,out,s0,s1,s2,a,b);
input [7:0]a,b;
input s0,s1,s2;
output reg [7:0]out;
output reg cout;
always @(a or b or s0 or s1 or s2)
begin
if (s0==1'b0 & s1==1'b0 & s2==1'b0)
begin
{cout,out}=a+b;
end
else if (s0==1'b0 & s1==1'b0 & s2==1'b1)
out=a+ ~b +1;
else if (s0==1'b0 & s1==1'b1 & s2==1'b0)
out=a^b;
else if (s0==1'b0 & s1==1'b1 & s2==1'b1)
out=a&b;
else if (s0==1'b1 & s1==1'b0 & s2==1'b0)
out=a|b;
else if (s0==1'b1 & s1==1'b0 & s2==1'b1)
out=~a;
else if (s0==1'b1 & s1==1'b1 & s2==1'b0)
out=a<<1;
else if (s0==1'b1 & s1==1'b1 & s2==1'b1)
out=a>>1;
end
endmodule
module alustimulus;
reg [7:0]a,b;
reg s0,s1,s2;
wire [7:0]out;
wire cout;
alu ALU(cout,out,s0,s1,s2,a,b);
initial
begin
$monitor($time,"a=%b, b=%b, s0=%b, s1=%b, s2=%b,out=%b,cout=%b",a,b,s0,s1,s2,cout,out);
end
initial
begin
a=8'b10101010; b=8'b11111111; s0=1'b0; s1=1'b0; s2=1'b0;
#50 a=8'b10101010; b=8'b11111111; s0=1'b0; s1=1'b0; s2=1'b1;
#50 a=8'b10101010; b=8'b11111111; s0=1'b0; s1=1'b1; s2=1'b0;
#50 a=8'b10101010; b=8'b11111111; s0=1'b0; s1=1'b1; s2=1'b1;
#50 a=8'b10101010; b=8'b11111111; s0=1'b1; s1=1'b0; s2=1'b0;
#50 a=8'b10101010; b=8'b11111111; s0=1'b1; s1=1'b0; s2=1'b1;
#50 a=8'b10101010; b=8'b11111111; s0=1'b1; s1=1'b1; s2=1'b0;
#50 a=8'b10101010; b=8'b11111111; s0=1'b1; s1=1'b1; s2=1'b1;
#50 $finish;
end
endmodule
Observation

You might also like