问答题 用本章讲述的模块FA编写执行加法和减法的4位ALU的结构模型。
【正确答案】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
【答案解析】