`timescale 1ns/1ns

module encoder_0(
   input      [8:0]         I_n   ,
   
   output reg [3:0]         Y_n   
);
always@(*)begin
    // if(!I_n)begin
    //     Y_n=0;
    // end
    // else begin
    //     Y_n=(I_n[8]=1)?(Y_n=4'b1001)
    //         :((I_n[7]=1)?(Y_n=4'b1000)
    //         :((I_n[6]=1)?(Y_n=4'b0111)
    //         :((I_n[5]=1)?(Y_n=4'b0110)
    //         :((I_n[4]=1)?(Y_n=4'b0101)
    //         :((I_n[3]=1)?(Y_n=4'b0100)
    //         :((I_n[2]=1)?(Y_n=4'b0011)
    //         :((I_n[1]=1)?(Y_n=4'b0010)
    //         :((I_n[0]=1)?(Y_n=4'b0001)))))))))
    // end   // 运行的不成功,不太清楚问题出在哪
    casex(I_n)
    9'b1_1111_1111:Y_n=4'b1111;
    9'b0_xxxx_xxxx:Y_n=4'b0110;
    9'b1_0xxx_xxxx:Y_n=4'b0111;
    9'b1_10xx_xxxx:Y_n=4'b1000;
    9'b1_110x_xxxx:Y_n=4'b1001;
    9'b1_1110_xxxx:Y_n=4'b1010;
    9'b1_1111_0xxx:Y_n=4'b1011;
    9'b1_1111_10xx:Y_n=4'b1100;
    9'b1_1111_110x:Y_n=4'b1101;
    9'b1_1111_1110:Y_n=4'b1110;
    9'b1_1111_1111:Y_n=4'b1111;
    endcase
end
endmodule

额,用注释中的写法没有成功,不太清楚原因