`timescale 1ns/1ns

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


assign GS=(EI == 0 || (EI == 1 && I == 0)) ? 1'b0 : 1'b1;

assign EO=(EI==1 && I==0) ? 1 :0;

assign Y = ((EI == 0) || (EI == 1 && I == 0)) ? 3'b000 
        :(EI && I[7]) ? 3'b111 
        :(EI && I[6]) ? 3'b110
        :(EI && I[5]) ? 3'b101
        :(EI && I[4]) ? 3'b100
        :(EI && I[3]) ? 3'b011
        :(EI && I[2]) ? 3'b010
        :(EI && I[1]) ? 3'b001
        : 3'b000;

endmodule

EI是标志按下还是没按下的标志信号

重点是Y的优先级比较写法