//----------------------------------------------------------------------
// IAS0150 - Homework #2. Truth table of the example task.
//----------------------------------------------------------------------
// (C) Peeter Ellervee - 2026 - Tallinn
//----------------------------------------------------------------------
module fs_table (input x1, x2, x3, x4, output y1, y2, y3, y4);
  logic [1:4] out_word;
  always_comb
    case ({x1,x2,x3,x4}) 
      4'b0000 : out_word = 4'b1z00;
      4'b0001 : out_word = 4'b01z0;
      4'b0010 : out_word = 4'b11z1;
      4'b0011 : out_word = 4'b0z01;
      4'b0100 : out_word = 4'b1110;
      4'b0101 : out_word = 4'b1010;
      4'b0110 : out_word = 4'bz111;
      4'b0111 : out_word = 4'b01z0;
      4'b1000 : out_word = 4'b0011;
      4'b1001 : out_word = 4'bz10z;
      4'b1010 : out_word = 4'bz0z1;
      4'b1011 : out_word = 4'b1001;
      4'b1100 : out_word = 4'b11z0;
      4'b1101 : out_word = 4'b0z10;
      4'b1110 : out_word = 4'bz000;
      default : out_word = 4'b1011;
    endcase
  assign {y1,y2,y3,y4} = out_word;
endmodule
