题解 | #优先编码器Ⅰ#
优先编码器Ⅰ
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 [2:0] Y_r;
reg GS_r;
reg EO_r;
always @(*)(1444584) begin
if(EI == 1'b0) begin
Y_r = 3'd0;
GS_r = 1'b0;
EO_r = 1'b0;
end
else begin
casez(I)
8'b00000000: begin
Y_r = 3'b000;
GS_r = 1'b0;
EO_r = 1'b1;
end
8'b1???????:begin
Y_r = 3'b111;
GS_r = 1'b1;
EO_r = 1'b0;
end
8'b01??????:begin
Y_r = 3'b110;
GS_r = 1'b1;
EO_r = 1'b0;
end
8'b001?????:begin
Y_r = 3'b101;
GS_r = 1'b1;
EO_r = 1'b0;
end
8'b0001????:begin
Y_r = 3'b100;
GS_r = 1'b1;
EO_r = 1'b0;
end
8'b00001???:begin
Y_r = 3'b011;
GS_r = 1'b1;
EO_r = 1'b0;
end
8'b000001??:begin
Y_r = 3'b010;
GS_r = 1'b1;
EO_r = 1'b0;
end
8'b0000001?:begin
Y_r = 3'b001;
GS_r = 1'b1;
EO_r = 1'b0;
end
8'b00000001:begin
Y_r = 3'b000;
GS_r = 1'b1;
EO_r = 1'b0;
end
default: begin
Y_r = 3'b000;
GS_r = 1'b0;
EO_r = 1'b1;
end
endcase
end
end
assign Y = Y_r;
assign GS = GS_r;
assign EO = EO_r;
endmodule
