题解 | #优先编码器Ⅰ#
优先编码器Ⅰ
https://www.nowcoder.com/practice/a7068b8f4c824d6a9592f691990b21de
`timescale 1ns/1ns module encoder_83( input [7:0] I , input EI , output wire [2:0] Y , output wire GS , output wire EO ); reg [3:0] Y_reg; reg GS_reg; reg EO_reg; assign Y = Y_reg; assign GS= GS_reg; assign EO=EO_reg; always@(I,EI) begin if(EI == 1'b0) begin Y_reg <= 3'b000; GS_reg <= 1'b0; EO_reg <= 1'b0; end else casez(I) 8'b0000_0000:begin Y_reg <= 3'b000; GS_reg<= 1'b0; EO_reg<= 1'b1; end 8'b1???_????:begin Y_reg <= 3'b111; GS_reg<= 1'b1; EO_reg<= 1'b0; end 8'b01??_????:begin Y_reg <= 3'b110; GS_reg<= 1'b1; EO_reg<= 1'b0; end 8'b001?_????:begin Y_reg <= 3'b101; GS_reg<= 1'b1; EO_reg<= 1'b0; end 8'b0001_????:begin Y_reg <= 3'b100; GS_reg<= 1'b1; EO_reg<= 1'b0; end 8'b0000_1???:begin Y_reg <= 3'b011; GS_reg<= 1'b1; EO_reg<= 1'b0; end 8'b0000_01??:begin Y_reg <= 3'b010; GS_reg<= 1'b1; EO_reg<= 1'b0; end 8'b0000_001?:begin Y_reg <= 3'b001; GS_reg<= 1'b1; EO_reg<= 1'b0; end 8'b0000_0001:begin Y_reg <= 3'b000; GS_reg<= 1'b1; EO_reg<= 1'b0; end endcase end endmodule