`timescale 1ns/1ns

module encoder_83(
   input      [7:0]       I   ,
   input                  EI  ,
   
   output reg [2:0]      Y   ,
   output reg            GS  ,
   output reg            EO    
);

always @(*) begin
  if ( ~EI ) begin
    Y  = 'b0;
    GS = 'd0;
    EO = 'd0;
  end
  else begin
    casex(I)
        'b00000000: begin Y= 'd0; EO = 'd1; GS = 'd0; end
        'b1xxxxxxx: begin Y= 'd7; EO = 'd0; GS = 'd1; end
        'b01xxxxxx: begin Y= 'd6; EO = 'd0; GS = 'd1; end
        'b001xxxxx: begin Y= 'd5; EO = 'd0; GS = 'd1; end
        'b0001xxxx: begin Y= 'd4; EO = 'd0; GS = 'd1; end
        'b00001xxx: begin Y= 'd3; EO = 'd0; GS = 'd1; end
        'b000001xx: begin Y= 'd2; EO = 'd0; GS = 'd1; end
        'b0000001x: begin Y= 'd1; EO = 'd0; GS = 'd1; end
        'b00000001: begin Y= 'd0; EO = 'd0; GS = 'd1; end
//        default :begin Y= 'd0; EO = 'd0; GS = 'd1; end
    endcase
  end
end
endmodule

重点在于casex和case的区别,使用x态所以需要casex