【正确答案】Module ALU
{
P,
Q,
Cin,
Cout,
SumOrDiff,
Sum
};
input [3:0] P;
input [3:0] Q;
input Cin;
input SumOrDiff; //加减控制信号
output [3:0] Sum;
output Cout;
wire [3:0] Q1;
assign Q1 = SunOrDiff ? Q:~Q; //第二个操作数
wire C0, C1, C2; //进位
FA FA0
(
.P(P[0]),
.Q(Q1[0]),
.Cin(Cin),
.Sum(Sum[0]),
.Cout(C0)
) ;
FA FA1
(
.P(P[1]),
.Q(Q1[1]),
.Cin(C0),
.Sum(Sum[1]),
.Cout(C1)
) ;
FA FA2
(
.P(P[2]),
.Q(Q1[2]),
.Cin(C1),
.Sum(Sum[2]),
.Cout(C2)
) ;
FA FA3
(
.P(P[3]),
.Q(Q1[3]),
.Cin(C2),
.Sum(Sum[3]),
.Cout(Cout)
) ;
Endmodule
【答案解析】