`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