`timescale 1ns/1ns

module encoder_83(
   input      [7:0]       I   ,
   input                  EI  ,
   
   output wire [2:0]      Y   ,
   output wire            GS  ,
   output wire            EO    
);
wire [8:0] temp;
reg gs ,eo;
reg [2:0] y;
assign temp={EI,I[7:0]};
always @(*)
begin
casex(temp)
9'b0_????_????:begin y=3'B000;gs=1'b0;eo=1'b0;   end
9'b1_0000_0000:begin y=3'B000;gs=1'b0;eo=1'b1;   end
9'b1_1???_????:begin y=3'B111;gs=1'b1;eo=1'b0;   end
9'b1_01??_????:begin y=3'B110;gs=1'b1;eo=1'b0;   end
9'b1_001?_????:begin y=3'B101;gs=1'b1;eo=1'b0;   end
9'b1_0001_????:begin y=3'B100;gs=1'b1;eo=1'b0;   end
9'b1_0000_1???:begin y=3'B011;gs=1'b1;eo=1'b0;   end
9'b1_0000_01??:begin y=3'B010;gs=1'b1;eo=1'b0;   end
9'b1_0000_001?:begin y=3'B001;gs=1'b1;eo=1'b0;  end
9'b1_0000_0001:begin y=3'B000;gs=1'b1;eo=1'b0;   end


endcase
end

assign  Y=y;
assign GS=gs;
assign EO=eo;
endmodule