Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
input [3:0] a;
input [3:0] b;
output carry_out;
input select_input;
wire c1,c2,c3,x1,x2,x3,x4;
xor xor1(x1,select_input,b[0]);
xor xor2(x2,select_input,b[1]);
xor xor3(x3,select_input,b[2]);
xor xor4(x4,select_input,b[3]);
endmodule
output sum;
output carry_out;
input a;
input b;
input c_in;
wire s1,s2,s3;
xor x1(s1,a,b);
xor x2(sum,s1,c_in);
and a1(s2,a,b);
and a2(s3,c_in,s1);
or o1(carry_out,s3,s2);
endmodule
input [3:0] a;
input [3:0] b;
output carry_out;
input select_input;
assign
{carry_out,sum}=a+{b[3]^select_input,b[2]^select_input,b[1]^sel
ect_input,b[0]^select_input}+select_input; endmodule
module add_sub_4(sum,carry_out,a,b,select_input);
input [3:0]a,b;
input select_input;
output [3:0]sum;
output carry_out;
reg carry_out;
reg [3:0]sum;
reg [4:0]temp;
begin
temp=a+b;
sum=temp[3:0];
carry_out=temp[4];
end
else if (select_input==1)
begin
temp=a-b;
sum=temp[3:0];
carry_out=temp[4];
end
end
endmodule
reg select_input;
reg [3:0]a;
reg [3:0]b;
wire [3:0]sum;
wire carry_out;
adder_sub_4 a1(sum,carry_out,a,b,select_input);
initial
begin
#10 $finish;
end
initial
begin
end
endmodule
SIMULATION RESULTS : -
$time a=0001 b=0010 select_input=0 sum=0011 cout=0